手动搭建zk集群的时候就会接触到myid。myid 这是 zk集群中服务器的唯一标识称为myid。这个存在于文件里面例如有三个zk服务器那么编号分别是1,2,3。在搭建zk集群的时候可以给到myid是1,2,3这种。这个是集群当中服务器的唯一标识。zxidReentranReadWriteLock 32位高位 低位0000000000000000 0000000000000000epoch xid00000000000000000000000000000000 00000000000000000000000000000000zxid为Long类型其中高32位表示epoch低32位表示xid。即zxid由两部分构成epoch与xid。每个 Leader 都会具有一个不同的epoch值表示一个时期、时代。新的Leader产生则会更新所有 zkServer 的 zxid中的epoch。而 xid 则为zk的事务id每一个写操作都是一个事务都会有一个 xid。每一个写操作都需要由Leader发起一个提议由所有Follower表决是否同意本次写操作。逻辑时钟 逻辑时钟Logicalclock是一个整型数该概念在选举时称为 logicalclock而在zxid中则为epoch的值。 即 epoch与logicalclock是同一个值在不同情况下的不同名称。zk的选举状态LOOKING选举状态(查找Leader的状态)。如果某个时刻leader发生了宕机这台服务器挂了那么整个集群就会进行一个重新的选举。那么集群中的server都是looking的状态。这个状态表示在寻找leader的状态。LEADING领导者状态。处于该状态的服务器称为 Leader。FOLLOWING随从状态同步 leader 状态。处于该状态的服务器称为Follower。一旦选举产生了leader那么其他机器就处于following状态。处于随从的server就会去同步leader的状态。OBSERVING观察状态同步 leader状态。处于该状态的服务器称为Observer。简介zk集群选举发生的时机及选举算法发生时机整个集群群龙无首的时候1.服务启动2.leader宕机之后选举机制集群中半数zkServer同意则产生新的leader搭建集群时一般都是奇数个三台服务器最多允许一台宕机四台服务器也是最多允许一台宕机。如果宕机超过2台那么集群就会陷入宕机的状态。选择3台相对于四台来说可以节省资源因为3个效果和4个的效果是一样的。选举算法 对比myidzxid先对比zxidzxid大者大表示数据越新胜出成为leader如果zxid一致则myid大者成为leader。myid3去启动的时候同样给自己进行投票和之前两台去交换信息。尽管这个时候第三台服务器myid大但是之前在选举的时候第二台已经胜出了所以这个时候也会成为follower。1,3这两台是followermyid2成为集群的leader。还有一种情况是leader宕机的时候那么集群就无法对外提供服务了因为写入操作只有leader可以处理。选举会根据投票的结果根据投票结果再去看zxid。端口的作用 2181 对client端提供服务2888集群内及其通讯使用的端口3888集群选举leader。