一般来说,我希望能够同步并行执行的顺序:在未知和chand(总是不止一个)数量的geterogenious工人之间设置墙和当前状态:
whlie state != "end":
if state == "blah":
doX()
waitAll()
if master == True:
state = "x"
waitAll()
if state == "x":
doZ()
waitAll()
if master == True:
state = "end"
waitAll()
通常我会寻找一种在ad-hoc分布式主从模式中共享应用程序状态的方法。我想为master和slave设置相同的脚本(在MPI模型中也一样)。师父拥有所有奴隶都知道的公共知识产权。一般来说,我看到如何在ZMQ中实现它,但想知道是否有一些已知的专用库呢?
答案 0 :(得分:0)
Zookeeper就是为此而建的。当然,我们现在谈论的是一个分布式系统,它对管理有一些开销。
如果您不熟悉Zookeeper,您可以将其视为在运行Zookeeper的不同服务器上复制自身的文件系统。 Zookeeper'集群'被称为集合。
Zookeeper具有原型,您可以为分布式队列,领导者选举以及分布式锁定构建。
Zookeeper具有多种语言的客户端库,因此可以与许多不同的应用程序集成。
Zookeeper通过Ephemeral
节点解决了有关可用性,恢复等的一些有趣问题。您可以将文件写入 Zookeeper ,如果与Zookeeper的连接失败或消失,该文件将自动从Zookeeper中删除。
您也可以使用这些Ephemeral节点执行服务发现。假设你想在2个,3个,10个,100个服务器之间分配任务。
每台服务器启动时都可以获得Zookeeper连接字符串。当它启动时,它可以通过将一个Ephemeral文件写入包含其IP地址/端口的目录来注册自己。
通过锁定原语和ephemeral
节点以及znode版本,您可以实现群集领导者选举的模式。您可以只使用“群集”而不是主/从。该群集中的任何主机都可以发挥领导作用,或者成为overseer
。
希望这有帮助。