在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集群的写性能,在集群存在大量读操作时,可以适当部署以分摊压力。