在分布式系统中,有5个进程,使用zookeeper进行协调。 我需要这些过程在每一轮中逐个运行。 运行顺序是动态的,但每轮都知道。
任何动物园管理员食谱都能做到吗?感谢
例如: 第1轮:1 2 3 4 5 第2轮:3 2 4 1 5
答案 0 :(得分:0)
您的问题尚未完全定义:
在给定进程无法启动的情况下,我们是否有任何超时或系统是否暂停?
进程是否在轮次之间终止,以便每轮都由一些外部机制启动?
我们关心流程终止状态吗?如果一个过程开始但在执行过程中失败,那么下一个过程应该开始吗?
在最简单的情况下,当我们
时我们可以使用以下方法(可能可以简化):
/round
。getChildren('/round')
是否返回空列表/round/exec_1
/round/start_1
N
/round
的孩子列表/round/start_{N-1}
是否存在/round/exec_{N-1}
并等待删除(使用观察者)如果上述问题的答案不同,则可以调整此协议。
但这里的一般想法是定义我们如何表明流程是好的:我们注册先前流程已经开始然后等待它终止的事实。