zk 在客户端连接的时候会有一个sessiontimeout,session timeout 之前只要连接上一台机器就不算断开连接了
ZAB需要保证的是当3号变更被执行的时候1,2两个变更都已经确定被执行了
ZK是使用一个类似于二阶段提交的过程,客户端提交到了proposer上,然后到master,master向所有的成员广播,超过半数同意就可以commit了
显然二阶段存在着单点问题,无法保证在master崩溃的情况下依然可以同步成功,所以一旦master节点挂了,就需要另外选举出一个新的leader
ZXID的低32位是一个递增的ID,高32位是一个epochID,每次选举后都会将master的id +1
这样保证了每次新的服务器如果有集群中不一致的消息要提交的时候一定是不成功的,会被要求回退到某个和集群中一致的节点上
部署zk的时候最重要的一点就是要把myid写对
抢锁
临时节点检测心跳
读写锁
选举主备
根据子id的最小来进行消息的消费
实际上yarn的rm就是利用的zk来进行主备切换的。为了防止误抢了主。可以使用acl