事件顺序:
LeaderZooKeeperServer启动CommitProcessor线程。后者对committed请求包装成CommitWorkRequest交给线程池执行。
生成事务发给所有follower
触发写日志操作
取出request并设置
多个线程调用此处
AckRequestProcessor之前是SyncRequestProcessor
SyncRequestProcessor.flush调用之
flush只有三处调用,第三处调用在shutdown方法
添加ACK,尝试提交
没有过半ACK会提交失败
TryToCommit方法
这里会判断ACK是否过半,未过半则失败,这里假设判断成功。
异步发commit给所有成员
commitProcessor
取出committedRequests异步交给下一个处理器Leader.ToBeAppliedRequestProcessor -> FinalRequestProcessor