2. Zab算法的特点

Zookeeper实际实现是基于zab算法,在paxos上做了一些改变。
Zookeeper采用一个单一的主进程来接收和处理所有客户端的事务请求,并为其生成对应的事务proposalId,然后再将其发给集群中的所有的机器(自身也处理),并分别收集各自的选票,最后进行事务提交。
这里的事务Id是一个64位的(称为ZXID),前32位是和lead的号有关,便于区分不同leader,每次也是递增的;后32位则是在每个leader下单调递增。这样,这个事务ID就是全局递增的唯一id了。
这里主要涉及两大块内容:leader选举过程(初始化或者是异常情况下的重选举)和消息广播(正常时的处理)。
注意,这里的ZXID就充当了paxos中的版本号的概念。

对于Zookeeper,它正常的工作过程是先实现leader选举,然后进行数据同步,最后再进行原子广播。同时,leader会通过心跳检测的方式来维持与follower的联系。

猜你喜欢

转载自blog.csdn.net/xiaohesdu/article/details/87926831