在ZooKeeper集群中,不同节点有不同角色。

ZooKeeper定义了如下角色类型,

  • Leader
  • Learner
    • Follower
    • Observer

Leader

Leader为集群主节点,同一时刻只存在一个主节点。Leader通过ZooKeeper集群协议选举出。

Leader负责所有ZooKeeper数据变更的提交。在ZooKeeper集群收到写操作时,写操作会被转发到Leader节点。Leader节点会通知所有的Follower,当有半数节点允许写入时,变更操作被提交。

Follower

Follower是集群中的从节点。Follower会处理Leader发送过来消息,会参与集群Leader选举。自身允许客户端连接读写数据。

Follower的存在提升了系统的可用性,但Follower的数量需要注意,Follower数量过多会带来写操作的耗时增长。

Observer

Observer与Follower的区别在于Observer不参与选举,只从Leader接受确定了的变更操作。Observer主要用于提供客户端连接,分担集群的读压力。

Observer节点的增加不会影响ZooKeeper集群的写性能,在集群存在大量读操作时,可以适当部署以分摊压力。