我正在努力学习动物园管理员,但所有的教程和解释对我来说都过于抽象,清楚地看到它如何有益于我的生活,或者,它只是另一种“令人敬畏”的工具,但没有人会永远直接在现实生活中使用。
我理解zookeeper是一个“协调工具”,主人,工人,分配任务和一堆失败预防人员。但是,我有一个非常'天真'的现实世界问题,并想知道zookeeper本身是否会帮助我解决它。
假设我有一个包含许多行数的大文件,如下所示:
1000
23213
3231
4213
..
目标/输出是提出另一个文件,其中包含相应行的平方。
1000^2
23213^2
...
我实际上有一个真实的用例,我使用python-flask服务器实现,根据工作人员的请求分配工作,但它太脆弱了。我也无法轻易追踪失败。我想知道动物园管理员会不会成为解决方案。
任何动物园管理员专家都可以帮我写一些示例代码,将这项工作分发给3台计算机。最后,将数据发送回主人。
我完全理解使用map reduce或多线程来实现它必须非常容易,但我想知道是否可以使用zookeeper来表明“zookeeper是一个协调工具”的想法。
答案 0 :(得分:0)
使用Zookeeper的一种常用方法是利用临时节点作为锁,以创建分布式工作队列。
工作人员浏览ZK内的一个列表并尝试创建一个短暂的"锁定"节点。 如果尝试失败,则意味着另一个工作者已锁定该节点。 如果尝试成功,则工作人员可以执行操作(在您的情况下进行数学运算),然后编写新节点并删除旧节点。
短暂锁定的强大之处在于,如果工人因任何原因而死亡,连接断开,ZK保证锁定自动消失。