Zookeeper原理

1. Zookeeper的设计目标

     应用于分布式应用的协作服务,通过一些简单的操作,使得分布式应用可以基于这些接口实现诸如同步、配置维护和分集群或者命名的服务;

    Zookeeper通过一种和文件系统很像的层级命名空间来让分布式进程互相协同工作。这些命名空间由一系列数据寄存器组成,我们也叫这些数据寄存器为znodes。这些znodes就有点像是文件系统中的文件和文件夹。和文件系统不一样的是,文件系统的文件是存储在存储区上的,而zookeeper的数据是存储在内存上的。同时,这就意味着zookeeper有着高吞吐和低延迟。

Zookeeper实现了高性能,高可靠性,和有序的访问。高性能保证了zookeeper能应用在大型的分布式系统上。高可靠性保证它不会由于单一节点的故障而造成任何问题。有序的访问能保证客户端可以实现较为复杂的同步操作。

2. Zookeeper的容错性和一致性

只要集群中的大多数正常工作,就可以提供稳定的高性能服务,如五个节点的ensemble,任意两个节点失败,服务器仍然可以正常工作,实现原理很简单:确保znode树的每一次修改都被复制到ensemble的大多数机器中。
Zookeeper使用zab协议,运行在两个阶段(状态)[phase]:
Phase1:leader elction
选举一个组员为leader,其他的机器称之为followers.
Phase2:Atomic broadcast
所有的写请求传递到leader,leader通过广播更新followers。当大多数更改后,leader提交更新,同时client得到响应:更新成功。
如果leader失败,剩下的机器进行另一个leader的选举,如果以前的leader恢复,它将变成一个follower,leader elction非常快,大约200ms,因此,在选举过程中不会是行你呢个显著降低。
除了request processor, 组成zookeeper服务的每个server都会在本地备份其它组件的拷贝. replicated database是一个包含整个数据树的内存数据库.更新被logged到磁盘以提供可恢复性,写操作先持久化到磁盘,然后再对内存数据库作变更.
       每个zookeeper server都对client提供服务.client连接到具体的某一个server以提交请求.读操作依赖与每个server的本地数据库.改变服务状态的请求,写操作,由一致性协议来处理.
作为一致性协议的一部分,所有的client写请求被提交到专门的一个leader server. 其余的server,被称为followers,从leader接收消息,并对消息的传递达成一致.

posted @ 2012-12-13 14:35  shileiw  阅读(650)  评论(0编辑  收藏  举报