zookeeper的选举机制是如何应对脑裂的

本来想写“zookeeper的选举机制”,但是选举机制的具体流程还没研究,只是知道了选举机制是如何避免脑裂的,就先写个小部分,等后面扩展。

 

在网上看了好多文章,都在介绍zookeeper是怎么解决脑裂的。感觉说的不清晰。

首先,zookeeper集群本身现在是不会出现脑裂的。

脑裂是存在一般分布式集群中的常见问题,zookeeper通过quorums机制避免了这个问题。它是怎么避免的呢?简单一句话就是:只有超过半数的节点有效,zookeeper集群才有效。

还有zk节点数为什么配置成奇数,参考https://www.cnblogs.com/smy-yaphet/p/10369310.html

 

zk集群真的不会出现脑裂吗?

本应该先说是不是,再说为什么是或不是。但是这个问题我还没有答案。

quorums机制确实可以防止最终集群只有一个master节点。但是,在master节点刚和其他slave失联的时候,master可能还没宣布自己死亡吧?这时会不会出现短暂的脑裂状态?

以前的client都是注册在旧master上,旧master没死,只是因为网络问题和其他slave节点失去了联系。此时的client应该还能和master交互,并将数据写到了旧master上。过了一个指定时间之后,master发现自己失联了,然后宣布自己死亡,client再重新连接到新选出来的master上,刚才写的数据丢失了……

在这个切换过程中,是不是可以认为是个脑裂状态?zk是否解决了这个问题?有没有办法解决这个问题?如果没办法解决这个问题,数据会写丢,client应该做什么容错?待解……

这篇文章好像提到了一点:https://www.cnblogs.com/kevingrace/p/12433503.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章