用于分布式特别状态共享的库



一般来说,我希望能够同步并行执行的顺序:在未知和chand(总是不止一个)数量的geterogenious worker:之间设置墙和当前状态

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分布式主从式menner中寻找一种共享应用程序状态的方法。我想拥有相同的脚本,用于主和从(类似于MPI模型)。主人拥有一个所有奴隶都知道的公共IP。一般来说,我知道如何在ZMQ中实现它,但不知道是否有一些已知的专用库?

Zookeeper就是为此而构建的。诚然,我们现在谈论的是分布式系统,它有一些管理开销。

如果你不熟悉Zookeeper,你可以把它想象成一个文件系统,在运行Zookeepper的不同服务器上复制自己。动物园管理员的"集群"被称为集合

Zookeeper有一些基元,您可以围绕这些基元构建分布式队列、领导人选举以及分布式锁。

Zookeeper拥有多种语言的客户端库,因此可以与许多不同的应用程序集成。

屏障/队列示例

共享/分布式锁

Zookeeper通过Ephemeral节点解决了一些有趣的可用性、恢复等问题。您可以向Zookeeper写入一个文件,如果与Zookeeper的连接失败或消失,该文件将自动从Zookeepper中删除。

您也可以使用这些Ephemeral节点来执行服务发现。假设您希望在2、3、10、100台服务器之间分配任务。

每个服务器在启动时都可以获得Zookeeper连接字符串。当它启动时,它可以通过将Ephemeral文件写入包含其IP地址/端口的目录来注册自己。

通过锁原语、ephemeral节点和znode版本,您可以实现集群领导者选举的模式。您可以简单地拥有一个"集群",而不是一个主/从。该集群中的任何主机都可以发挥领导作用,或者成为overseer

希望这能有所帮助。

最新更新