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同步数据。

zookeeper脑裂问题(无法自动解决,只能重启解决)_第1张图片

 

二、A\B\C三个节点分别都断开

只能A提供读服务,不能提供写服务,其他节点都不能提供服务。

 

你可能感兴趣的:(zookeeper)