您的位置:首页 > 其它

zk的脑裂问题你真正理解了没

2020-09-12 15:57 1211 查看


说到zk的部署,大家一定会想到部署最好为奇数,上遍文章已经介绍过了zk部署奇数个好,还是偶数好呢?,但另外一个问题大家有没有考虑,为什么zk的选举必须过半同意,才算选举成功呢?
zk用的算法是raft算法,里面写到必须可用节点数过半才能选举出一个leader,这样就避免了脑裂问题的产生,比如:有两个机房,机房a部署了三台zk服务,机房b部署了三台zk服务器,如果发生网络故障,各自独立了,这个时候,各个机房得选举leader,如果选举的逻辑变成,可用节点数>=总节点数/2,这个时候两个机房会选择出各自的leader,这样就导致了有两个leader,这样网络一恢复正常,就不知道听谁的指挥了,就产生了脑裂的问题。所以算法采用的是过半机制,即节点数>总节点数/2,这样机房a和b多不会产生leader,避免了脑裂问题;如果是机房a部署了4台,机房b部署了两台,利用过半原则,只会a产生leader,b不会产生leader,不会导致脑裂的问题,所以过半机制解决了zk脑裂的痛点。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: