zk 选主相关

master-salve模式,正常情况下主机提供服务,备机监听主机状态,主异常,自动切到备机继续提供服务(备正常情况下只监听,不工作),这个切换过程中选出下一个主机的过程就是master选举

传统方式是用一个备节点定期给当前主节点发ping包,备收到主ack应答,就认为主节点还活着,让它继续提供服务,否则就认为主节点挂掉了,自己将开始行使主节点职责

  隐患,网络故障时

主没挂,只是备节点ping主节点时网络故障,收不到应答,认为主挂掉,然后备机会启动自己的master实例

导致双master,服务就乱套了

zk 虽不能阻止网络故障的出现,但能保证同一时刻系统中只存在一个主

生产环境可能网络短时的不稳定(网络抖动)。

每一次切换,每台server要同步的数据量(比如要获取谁是master,当前有哪些salve等信息)也比较大

希望这种短时间的网络抖动最好不要影响系统稳定,也就是最好选出来的master还是原来的机器,就可以避免发现master更换后,各个salve因为要同步数据等导致的zk数据网络风暴

抢主的时候,如果之前主机是本机,则立即抢主,否则延迟5s抢主。这样就给原来主机预留出一定时间让其在新一轮选主中占据优势,从而利于环境稳定