学习Zookeeper - 帮我举个例子

时间:2014-05-29 18:32:32

标签: apache-zookeeper

我试图绕过Zookeeper,以及它的作用。到目前为止,我对Zookeeper的经验已经通过其他需要Zookeeper(Solr和Kafka)的库,因此我的基本理解是非常模糊的#34;你最好使用Zookeeper来保持你的配置顺利"。

帮助我思考一个简单的示例问题。让我们说我建立了自己的服务,这就是"东西"。我想保护两件事:

  1. 我希望尽可能少的停机时间(必须继续做)。
  2. 我不能让多个服务器做某事,因为会发生坏事。
  3. 那么,我如何在Zookeeper中设置它?如果一个人失败,Zookeeper是否负责启动另一个东西服务器?或者我订阅了Zookeeper"东西的做法状态"打回来?如果我错误地启动了两个东西服务器,Zookeeper如何帮助我防止坏事发生?

1 个答案:

答案 0 :(得分:0)

Zookeeper是distributed lock manager。这些系统为分布式系统提供coordinator election(又名“主选举”或“领导选举”)等功能,并提供对经常用于配置的少量关键信息的一致分布式访问(即,不要把它当作数据库或通用文件系统来对待。)

请注意,Zookeeper不管理您的服务,但您可以使用 Zookeeper来保留hot standby(或几个),以便在一个主服务器发生故障时,另一个服务器将接管,因此您将运行服务器的N个副本,以便其中一个工作实例可以在当前领导者出现故障或因任何原因变得不可用时立即接管。

使用主选举,您可以选择拥有两个(或更多)服务器,但只有其中一个服务器能够获取主锁,因此只有那个服务器才能执行操作。一旦它消失,它将失去对锁的主张,你的热备用将拿起锁并开始做你需要它做的工作。查看Zookeeper recipes代码示例。但是,正确的交付工作,检查点和一般服务弹性仍然取决于您的设计和实施。

也就是说,Zookeeper和类似的系统为您构建强大的分布式系统提供了坚实的基础。

与Zookeeper类似的其他系统包括(按字母顺序排列):

其中一些在各自的网站上进行了详细的比较,以显示它们与列表中其他网站的不同之处。