distributed-computing - 如何使用 ZooKeeper 设计任务分配

标签 distributed-computing distributed-system apache-zookeeper

我计划编写一个具有分布式 Worker 进程的应用程序。其中之一将是领导者,它将任务分配给其他进程。领导选举过程的设计非常简单:每个过程都试图在同一路径中创建一个临时节点。谁成功,谁就成为领导者。

现在,我的问题是如何设计均匀分配任务的过程?有什么食谱吗?

我将详细说明环境设置:

假设有 10 个 worker 机器,每一个运行一个进程,其中一个成为领导者。任务在队列中提交,Leader 将它们分配给一个 worker 。每当提交任务时,工作进程都会收到通知。

最佳答案

我不确定我是否理解你的领导者选举算法,但推荐的实现方法是使用顺序临时节点并使用 http://zookeeper.apache.org/doc/r3.3.3/recipes.html#sc_leaderElection 上的算法。这解释了如何避免“羊群”效应。

任务的分配可以通过一个简单的分布式队列来完成,并不严格需要一个Leader。生产者将任务排入队列,消费者在任务节点上保持监视 - 触发的监视将引导消费者接受任务并删除关联的 znode。从失败的消费者那里重新排队任务需要考虑某些边缘条件。 http://zookeeper.apache.org/doc/r3.3.3/recipes.html#sc_recipes_Queues

关于distributed-computing - 如何使用 ZooKeeper 设计任务分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5217795/

相关文章:

open-source - 云虚拟机可免费用于开源测试?

linux - 安装路径上的处理速度

matlab - MATLAB parfor 中的错误版本或字节序键?

postgresql - Postgres XC 中的 DISTRIBUTE BY REPLICATE 和 HASH 有什么区别?

algorithm - 分布式系统中的投票算法

time - 确定到期 - 分布式节点 - 无需同步时钟

django - 我如何从多台机器上为我的 django 网站提供服务,即如何使其分布式?

synchronization - Zookeeper 是否具有进程同步功能,还是仅用于控制进程?

jdo - 错误 HBASE-ZOOKEEPER : Too many connections

java - 使用多线程系统监视zookeeper上的多个节点