zookeeper 数据一致性实质

zk进行数据一致性处理分为两个阶段:

(1)确认阶段:首先会与follow节点确认能否进行数据同步;

(2)同步数据阶段:如果可以进行数据同步则直接向follow节点发送数据;

那么如果在数据同步时,某节点发生宕机就会发生选举:

(1)首先会根据zxid大小进行投票,如果某节点的zxid都比其它节点更大则直接选举为leader;(zxid为数据同步后的一个版本号,数值越大同步的数据越多);

(2)如果zxid相同,还会去比较myid,myid更大的直接选举为leader,这个是在配置中手动配置好的(可以机器性能越好的配置更大的数值);

(3)如果有过半的节点已经选举出leader,则新加入的节点不会在参与选举;

所以zk中的ZAB原子广播,实际做了两件事儿,1选举leader,2数据同步。

posted @ 2020-02-06 17:19  soft.push("zzq")  Views(124)  Comments(0Edit  收藏  举报