美文网首页
RequestProcessor相关

RequestProcessor相关

作者: 不存在的里皮 | 来源:发表于2022-02-17 16:52 被阅读0次

参考

总结

事件顺序:

  1. leader把proposal发给followers
  2. leader写日志, 并回复自己ack。followers开始写日志, 并回复leader ack
  3. leader收到过半ack后,异步向followers发送commit,并将事务应用到DataTree上
  4. followers收到commit后,将事务应用到DataTree上

LeaderZooKeeperServer启动CommitProcessor线程。后者对committed请求包装成CommitWorkRequest交给线程池执行。

ProposalRequestProcessor


生成事务发给所有follower
触发写日志操作

CommitProcessor

取出request并设置

收集ACK

多个线程调用此处

往前看


AckRequestProcessor之前是SyncRequestProcessor
SyncRequestProcessor.flush调用之 flush只有三处调用,第三处调用在shutdown方法

往后看

添加ACK,尝试提交
没有过半ACK会提交失败

commit后

TryToCommit方法

这里会判断ACK是否过半,未过半则失败,这里假设判断成功。


  1. 调用commit方法,异步发commit给所有成员
  2. 异步让commitProcessor确保日志写入
    异步发commit给所有成员

commitProcessor取出

commitProcessor

取出committedRequests异步交给下一个处理器Leader.ToBeAppliedRequestProcessor -> FinalRequestProcessor


相关文章

网友评论

      本文标题:RequestProcessor相关

      本文链接:https://www.haomeiwen.com/subject/abbqzctx.html