分布式下如何检查某个节点存活??
缺点:可能受到网络的干扰。
主机A(副)向主机B(主)发送心跳。但是没有收到回复(可能是网络问题,或主机B繁忙或卡顿)。主机A认为主机B挂了,自己升级成主。但是主机B认为自己是好的。结果脑裂了
优点:避免脑裂
主机A(副)向主机B(主)发送一个Lease(内容为10s中内你是主)。主机B然后每8s向主机A发送一个消息(我觉得当主挺爽的,我要“续费”)。主机A回复,好那接下来10s你还是主。 某天主机A在10s内,没有收到主机B的“续费”(主机B可能繁忙、卡顿,或者网络问题)。主机A自己就升级成为主了。 这时假设主机B(其实没挂)发现自己发出了“续费”消息。但是没有得到主机A的认同。所以自己就降级成为副了。