本文主要是介绍zookeeper脑裂问题(无法自动解决,只能重启解决),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
A、B、C三个节点,A为leader,BC为follower
一、A和BC断开
1、当B、C都与A断开时,A连接不到其他服务节点,认为其他节点都宕机了,此时A仍然认为自己是leader,继续提供服务,读服务没问题,可继续;当使用写服务时,由于提交事物无法获得过半保证,事物无法提交,所以不能提供写服务;
2、而B、C是可以连通的,BC两个节点过半,可以重新选主,假如B选为leader,则B读写服务都可以正常提供;
3、当应用写入数据到B服务时,读取数据又从A节点读取,此时发现数据是不一致的,此时称之为脑裂。
zookeeper没办法自动解决脑裂问题,只能重启服务,比如重启A节点,
a、如果还是不能和BC连接上,则A选举也过不了半,一直处于LOOKING状态;
b、如果A能够和C连接上,但是和B无法连接上,发起leader选举,C节点已经认B为主,则不会同意A的选举请求,A依赖是LOOKING状态,不能对外提供服务;
c、如果A能和B连接上,不能和C连接上,则认B为主,从B同步数据。
二、A\B\C三个节点分别都断开
只能A提供读服务,不能提供写服务,其他节点都不能提供服务。
这篇关于zookeeper脑裂问题(无法自动解决,只能重启解决)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!