1
2NUT 2022-05-27 22:28:26 +08:00
感觉最近都在研究 raft 呀,why
|
2
lessMonologue 2022-05-28 10:30:05 +08:00
应该是让 follow 一次返回信息里就知道冲突的 term 了吧,否则还需要进行额外的 RPC 。很长时间没看了有点遗忘,等一个大佬回答
|
3
XiLemon 2022-05-28 11:05:48 +08:00
看起来你是在实现 Raft 日志冲突回溯的优化,实际上是可以只用 conflictIndex 来实现优化,但加上 conflictTerm 优化效果更好。
举个例子: 假设 S1 是 leader ,S2 是 follower idx 0 1 2 3 4 5 6 7 S1 x 4 4 4 4 4 5 5 S2 x 4 4 4 4 4 4 4 1. S1 发送心跳 prevLogIndx 为 7 ,prevLogTerm 为 5 ; 2. S2 发现日志冲突,idx 为 7 的日志,term 是 4 。那么会往前回溯到 term 4 的第一条日志, 最后返回的 conflictTerm 为 4 ,conflictIndex 为 1 ; 3. 如果没有 conflictTerm , 那么会下一次同步 prevLogIndex 为 0 ,会将 1~7 的日志全部同步。 如果有 conflictTerm ,根据 Raft 的日志匹配特性,下一次同步只需要传输 6~7 的日志, prevLogIndex 为 term 4 最后一个 entry 的 idx ,也就是 5 。 可以参考一下 6.824 助教的指导文章: https://thesquareplanet.com/blog/students-guide-to-raft/#an-aside-on-optimizations 最近也在刷 6.824 ,有兴趣的话一起: https://t.me/+G8GC-B6ThGZlN2Zl |
4
XiLemon 2022-05-28 11:07:25 +08:00
另外吐槽一下 v 站, [任] [ 期] 这个词发不出来,全部替换成 term 了。。。
|
5
qianxi0410 OP @XiLemon 豁然开朗!感谢感谢。
|