zookeeper vs redis服务器同步

我有一小群服务器,我需要保持同步.我最初的想法是让一台服务器成为“主控”,并使用redis的pub / sub功能发布更新(因为我们已经在使用redis进行存储),并且让集群中的其他服务器,从站轮询更新一个漫长的任务.这似乎是一个简单的方法来保持一切的同步,但后来我想到了一个明显的问题:如果我的“主人”下降了怎么办?那就是我开始研究技术,以确保总是有一个主人,这使我读到领导选举的想法.最后,我偶然发现了 Apache Zookeeper(通过python绑定,“ pettingzoo”),这显然是为你处理了大量的容错逻辑.我可以编写自己的领导选择代码,但我认为它不会像已经被证实和测试的东西一样好,像Zookeeper.

我使用zookeeper的主要问题是,它只是另一个组件,我可能会添加到我的设置不必要地,当我可以得到一些更简单的东西.有没有人以这种方式使用redis?还有还有其他简单的方法可以用来获取我想要实现的功能类型?

关于pettingzoo的更多信息(slideshare)

恐怕没有简单的方法来实现高可用性.这通常是棘手的设置和棘手的测试.实现HA有多种方法,分为两类:物理聚类和逻辑聚类.

物理聚类是关于使用硬件,网络和操作系统级机制来实现HA.在Linux上,您可以看一下Pacemaker,这是一个完整的开源解决方案,随着所有企业版本的发布.如果要在应用程序(C)中直接嵌入集群功能,您可能需要检查Corosync cluster engine(也由Pacemaker使用).如果您打算使用商业软件,Veritas Cluster Server是一个成熟(但价格昂贵)的跨平台HA解决方案.

逻辑聚类是使用花式分布式算法(如领导选举,PAXOS等)实现HA,而不依赖于特定的低级机制.这就是Zookeeper提供的东西.

Zookeeper是建立在ZAB协议之上的一个一致,有序的分层存储(与PAXOS非常相似).它是非常强大的,可以用于实现一些HA设施,但这不是微不足道的,您需要在所有节点上安装JVM.对于很好的例子,您可以看一下来自Netflix的recipes和优秀的Curator库.这些天,Zookeeper远远超出了纯粹的Hadoop上下文,而IMO是构建HA逻辑基础架构的最佳解决方案.

Redis pub / sub机制不足以实现逻辑集群,因为未读消息将丢失(没有pub / sub的项目排队).要实现HA的Redis实例的集合,您可以尝试Redis Sentinel,但不会扩展到您自己的软件.

如果您准备在C编程,HA框架通常被遗忘(但可以非常有用的IMO)是BerkeleyDB.它是非常基本的,但支持现成的领导者选举,并且可以集成到任何环境.文档可以在herehere找到.注意:您不必将数据存储在BerkeleyDB中,从HA机制(仅拓扑数据 – 与Zookeeper中相同的数据)中受益.

相关文章
相关标签/搜索