zookeeper数据一致性以及leader选举机制
zookeeper数据一致性
数据的一致通过zab协议保证数据的一致性 所有的写操作都从leader服务器操作,读操作每一台服务器都可以
- 当leader收到一个事务后,生成个事务id,
- leader将此次事务提议分发给每一个follow节点,
- follow节点受到事务后将事务请求加入到历史队列,并向leader发送ack请求
- 当leader收到半数以上的ack清球。此时leader会下发commit命令,
- 当follow节点受到commit请求时,此时follow节点将队列的事务提交
zk的数据监听机制、
-
服务器, 启动客户端,注册监听 ,
-
当监听器监听到数据发生了改变,此时触发监听,就在监听的process方法里写相应的业务逻辑代码
zk集群服务器的选举leader机制
LOOKING | 竞选状态 |
FOLLOWING | 跟随者状态 |
OBSERVING | 观察者 同步leader状态 |
LEADING | leader状态 |
第一轮,都会给自己投票。参数为(myid,ZXID)
myid 服务器的编号id,ZXID事务id
启动时,事务id为0,比较myid 谁的大投谁一票,当有超过半数的服务器接收到了相同的票数,谁就是leader,
运行时,leader挂了,此时重新投票,先比较事务id,再比较myid,‘’、后续继续参与机制一样,与启动时机制,知道选出leader