Leader
Leader服务器是整个ZooKeeper集群工作机制中的核心,其主要工作有以下两个。
· 事务请求的唯一调度和处理者,保证集群事务处理的顺序性。
· 集群内部各服务器的调度者。
-
PrepRequestProcessor
Leader服务器的请求预处理器,能够识别出当前客户端请求是否是事务请求(创建节点、更新数据、删除节点以及创建会话等请求)。对于事务请求对其进行一系列预处理,诸如创建请求事务头、事务体,会话检查、ACL检查和版本检查等。 -
ProposalRequestProcessor
Leader服务器的事务投票处理器,对于非事务请求,会直接将请求流转到CommitProcessor处理器,不再做其他处理;
对于事务请求,将请求交给CommitProcessor处理器,并且还会创建对应的Proposal提议,发送给所有的 Follower 服务器发起一次集群内的事务投票。同时还会将事务请求交付给SyncRequestProcessor 进行事务日志的记录。 -
SyncRequestProcessor
该处理器主要用来将事务请求记录到事务日志文件中去,同时还会触发 ZooKeeper 进行数据快照。 - AckRequestProcessor
Leader特有的处理器,其主要负责在SyncRequest Processor处理器完成事务日志记录后,向Proposal的投票收集器发送ACK反馈 - CommitProcessor
事务提交处理器。非事务,该处理器会直接将其交付给下一级处理器进行处理;而对于事务请求,CommitProcessor处理器会等待集群内针对Proposal的投票直到该Proposal可被提交。 - ToBeCommitProcessor
专门用来存储那些已经被CommitProcessor处理过的可被提交的Proposal。将这些请求逐个交付给FinalRequestProcessor处理器进行处理 - FinalRequestProcessor
该处理器主要用来进行客户端请求返回之前的收尾工作,包括创建客户端请求的响应;针对事务请求,该处理器还会负责将事务应用到内存数据库中去。
Follower
Follower服务器是ZooKeeper集群状态的跟随者,其主要工作有以下三个。
· 处理客户端非事务请求,转发事务请求给Leader服务器。
· 参与事务请求Proposal的投票。
· 参与Leader选举投票。
Observer
Observer服务器在工作原理上和Follower基本是一样的,和Follower唯一的区别在于,Observer不参与任何形式的投票,包括事务请求Proposal的投票和Leader选举投票。简单地讲,Observer服务器只提供非事务服务