为了避免 Zookeeper 的单点问题,zk 也是以集群的形式出现的。zk 集群中的角色主要有
以下三类:
- Leader:事务请求的唯一处理者,也可以处理读请求。
- Follower:可以直接处理客户端的读请求,并向客户端响应;但其不会处理事务请求,其只会将客户端事务请求转发给Leader来处理;对Leader发起的事务提案具有表决权;同步 Leader 中的事务处理结果;Leader 选举过程的参与者,具有选举权与被选举权。(就好像正式工)
- Observer:可以理解为不参与 Leader 选举的 Follower,在 Leader 选举过程中没有选举权
与被选举权;同时,对于 Leader 的提案没有表决权。用于协助 Follower 处理更多的客
户端读请求。Observer 的增加,会提高集群读请求处理的吞吐量,但不会增加事务请求
的通过压力,不会增加 Leader 选举的压力。(就好像临时工)
三种角色在不同的情况下又有一些不同的名称
- Learner:学习者,即要从 Leader 中同步数据的 Server,即 Follower 与 Observer。Learner = Follower + Observer
- QuorumServer:QuorumPeer,Participant,法定服务器,法定主机,参与者。在集群正
常服务状态下,具有表决权的服务器称为 QuorumServer,或 QuorumPeer;在 Leader
选举过程中,具有选举权与被选举权的服务器,称为 Participant。
QuorumServer = Leader + Follower = Participant