我有一小群服务器需要保持同步。我最初的想法是让一台服务器成为“主服务器”并使用 redis 的 pub/sub 功能发布更新(因为我们已经使用 redis 进行存储)并让集群中的其他服务器(从属服务器)轮询更新一项长期运行的任务。这似乎是一种让一切保持同步的简单方法,但随后我想到了一个明显的问题:如果我的“主人”宕机了怎么办?那是我开始研究技术以确保总有一位大师的地方,这使我阅读了诸如领导选举之类的想法。最后,我偶然发现了Apache Zookeeper(通过 python 绑定,“ pettingzoo"),它显然为您处理了很多容错逻辑。我也许可以编写自己的领导者选择代码,但我认为它不会像已经证明和测试过的东西那么好,如动物园管理员。
我使用 zookeeper 的主要问题是它只是另一个组件,当我可以使用更简单的东西时,我可能会不必要地添加到我的设置中。有没有人以这种方式使用过redis?或者有没有其他简单的方法可以用来获得我想要实现的功能类型?
有关 pettingzoo 的更多信息 ( slideshare )