我正在努力学习zookeeper,但是所有的教程和解释对我来说都太抽象了,我清楚地知道它对我的生活有什么好处,或者,它只是另一个“很棒”的工具,但没有人会直接在现实生活中使用。
我知道zookeeper是一个“协调工具”,主人,工人,分配任务和一堆故障预防人员。然而,我有一个非常“天真”的现实世界的问题,不知道Zookeeper本身是否会帮助我解决它。
假设我有一个大文件,里面有很多行数字,如下所示:
1000
23213
3231
4213
..
目标/输出是生成另一个文件,其中包含对应行的平方。
1000^2
23213^2
...
实际上,我有一个实际的用例,我使用python flask server实现了这个用例,根据工作人员的请求分发工作,但是它太脆弱了。我也不能轻易地追踪失败。我想知道Zookeeper是不是解决办法。
任何一个ZookeeperMaven能帮我写一些例子代码,把这项工作分发到3台电脑上吗。最后,将数据发送回主机。
我完全理解使用map reduce或多线程来实现这一点一定非常简单,但我想知道是否可以使用zookeeper来展示“zookeeper是一个协调工具”的思想。
1条答案
按热度按时间wh6knrhe1#
使用zookeeper的一种常见方法是利用临时节点作为锁,以便创建分布式工作队列。
工作人员浏览zk中的一个列表,并尝试创建一个短暂的“锁”节点。如果尝试失败,则表示另一个工作进程已锁定该节点。如果尝试成功,worker可以执行该操作(在您的例子中是计算),然后编写一个新节点并删除旧节点。
临时锁的威力在于,如果工人因为任何原因死亡,那么连接就会断开,zk保证锁会自动消失。