ton*_*126 9 distributed redis apache-zookeeper
我有一小群服务器需要保持同步.我最初的想法是让一台服务器成为"主"并使用redis的pub/sub功能发布更新(因为我们已经使用redis进行存储)并让集群中的其他服务器(从属服务器)轮询更新一项长期任务.这似乎是让一切保持同步的简单方法,但后来我想到了一个明显的问题:如果我的"主人"失败了怎么办?这就是我开始研究技术以确保总有一个大师的地方,这让我开始阅读领导者选举等想法.最后,我偶然发现了Apache Zookeeper(通过python绑定," pettingzoo "),它显然为你处理了很多容错逻辑.我或许能够编写自己的领导者选择代码,但我认为它不会像Zookeeper那样经过验证和测试.
我使用zookeeper的主要问题是它只是另一个组件,当我可以使用更简单的东西时,我可能会不必要地添加到我的设置中.有没有人用这种方式使用redis?或者是否有任何其他简单的方法可以用来获得我想要实现的功能类型?
有关更多信息pettingzoo(slideshare)
Did*_*zia 14
我担心没有简单的方法来实现高可用性.这通常很难设置并且难以测试.有多种方法可以实现HA,分为两类:物理群集和逻辑群集.
物理群集是关于使用硬件,网络和OS级别机制来实现HA.在Linux上,你可以看看Pacemaker,它是一个成熟的开源解决方案,随所有企业发行版一起提供.如果要在应用程序中直接嵌入群集功能(在C中),您可能需要检查Corosync群集引擎(也由Pacemaker使用).如果您计划使用商业软件,则Veritas Cluster Server是一个成熟(但价格昂贵)的跨平台HA解决方案.
逻辑聚类是关于使用花哨的分布式算法(如领导者选举,PAXOS等......)来实现HA而不依赖于特定的低级机制.这就像Zookeeper提供的东西.
Zookeeper是一个基于ZAB协议构建的一致,有序,分层存储(非常类似于PAXOS).它非常强大,可用于实现某些HA工具,但这并非易事,您需要在所有节点上安装JVM.举个好例子,你可以看看Netflix的一些食谱和优秀的Curator库.目前,Zookeeper的使用远远超出纯Hadoop环境,而IMO,这是构建HA逻辑基础架构的最佳解决方案.
Redis pub/sub机制不够可靠,无法实现逻辑集群,因为未读消息将丢失(pub/sub没有排队项目).要实现Redis实例集合的HA,您可以尝试Redis Sentinel,但它不会扩展到您自己的软件.
如果您已准备好使用C语言进行编程,那么经常被遗忘的HA框架(但可能非常有用的IMO)就是BerkeleyDB的一个框架.这是非常基本的,但支持现成的领导者选举,并且可以集成到任何环境中.文档可以在这里和这里找到.注意:您不必使用BerkeleyDB存储数据以从HA机制中受益(仅拓扑数据 - 与您在Zookeeper中放置的数据相同).
| 归档时间: |
|
| 查看次数: |
5858 次 |
| 最近记录: |