您的位置:首页 > 其它

Zookeeper选举机制

2017-01-10 19:36 239 查看

Zookeeper选举机制

Zk的选举机制,是基于Paxos这个算法来实现,这个算法的核心思想是:

要解决在分布式环境下,就某一个协议达成一致的算法。

zk 用的是fast paxos 算法,相当于做了改进。

Paxos算法容易在分布式环境下产生活锁。

1:数据恢复阶段:

Zookeeper从本次磁盘里找一个最大事务id

事务概念:客户端做新建,跟新等操作属于事务,每个事务会产生一个事务id,并且这个事务id是递增的.

cZXID表示的创建节点的事务id

mZxid表示的修改此节点的事务id

最大的事务id也就意味着最近的事务

2:选举阶段

提交选举议案,议案里包含的内容

1.最大事务id

2.当前机器的领导id(就是myid里的那个数字)

3.逻辑时钟值,记录了当前选举的轮数

作用是确保多个zk处于同一轮选举当中

4.当前节点状态

Looking 表示正处于选举阶段

Leading表示正在任职阶段

Following表示正在做小弟阶段

3:pk原则

第一要比谁的最大事务id大,谁就当领导,如果最大事务id比较不出来,就比领导id,谁大谁就当领导,但是注意:必须满足过半统一原则

当Leader选举出来之后

第一件事要做原子广播,目的是要达到zk服务器集群的数据一致性,因为leader肯定是具有最大事务id,即具有做新数据的.通过原子广播端口进行数据通信,达到数据的一致性.

当zk服务集群收到客户端事务请求时,Leader会对此决议进行表决,当zk服务集群内存过半对此应用成果,则此好事务才真正提交成功.(过半统一机制就是某一个协议达成一致性)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  zookeeper