After the election, leader and follower to perform their own logic:
org.apache.zookeeper.server.quorum.QuorumPeer#run
leader
org.apache.zookeeper.server.quorum.QuorumPeer#setLeader // 构建 processor 链 org.apache.zookeeper.server.quorum.LeaderZooKeeperServer#setupRequestProcessors // PrepRequestProcessor, ProposalRequestProcessor, CommitProcessor, ToBeAppliedRequestProcessor, FinalRequestProcessor org.apache.zookeeper.server.quorum.Leader#lead
follower
org.apache.zookeeper.server.quorum.QuorumPeer#setFollower // 构建 processor 链 org.apache.zookeeper.server.quorum.FollowerZooKeeperServer#setupRequestProcessors // 链1:FollowerRequestProcessor, CommitProcessor, FinalRequestProcessor // 链2:SyncRequestProcessor, SendAckRequestProcessor org.apache.zookeeper.server.quorum.Follower#followLeader
leader sends recommendations to the follower
org.apache.zookeeper.server.quorum.LearnerHandler#sendPackets
leader follower receives and processes the transmitted recommendations
org.apache.zookeeper.server.quorum.Follower#processPacket
// SyncRequestProcessor written to the transaction log org.apache.zookeeper.server.SyncRequestProcessor # RUN // sends an ACK to the Leader org.apache.zookeeper.server.quorum.SendAckRequestProcessor the processRequest #
leader receives and processes requests follower
RUN # org.apache.zookeeper.server.quorum.LearnerHandler // ACK more than half, put the write operation is applied to the state machine, and sends an event follower org.apache.zookeeper.server.quorum.Leader # processAck
follower submit a write operation
CommitProcessor 和 FinalRequestProcessor