Zookeeper集群

客户端的使用见java包和官方文档

Zookeeper集群

  • 读写分离:提高负载能力,并保障性能。
  • 主从自动切换:提高服务容错性。

半数以上运行机制

集群至少需要3台服务器,并且强烈建议使用奇数个服务器。因为zookeeper通过大多数节点的存活来判断整个集群是否可用。
3个节点挂2个,认为已经挂掉,4个节点挂2个,也认为已经挂掉。

集群角色

  • leader:主节点,写入数据
  • follower:子节点,读取数据,拥有投票权
  • observer:观察者,读取数据,无投票权
    leader挂了时服务会不可用,需要重新选举leader。

选举机制

  • 每个节点都会默认将票投给自己,并且将投票结果告诉其他节点。
  • 各个节点会比较节点间的zx_id和my_id,zx_id较新的优先得票,zx_id相同时my_id大的优先得票。
    • tx_id分为高32位和低32位,高32位叫epoch,代表leader的生命周期(每次选出新的leader该值会加1),低32位代表当前leader周期内的变更次数。比较tx_id时优先比较高32位,后比较低32位。
  • 当投票超过总节点半数时,选出当前leader,后续选举时发现已经有leader节点了会直接跟随leader节点。
原文地址:https://www.cnblogs.com/fcb-it/p/14670632.html