Raft. 图2.一份紧凑的算法总结
“ Raft其实并不容易理解,也不容易实现...”
图2是整篇论文里最重要的部分。在复现的过程中,我大概看了无数遍。(但依旧总写出bug。)
既然是最重要的部分,图2应当作为知识内化在自己的脑子里,任何翻译都会破坏原来的含义,因此水平有限,图2就不翻译了。
单纯贴在下面,以供参考。
图2
—
一份Raft算法总结
P.S.
—
额外的话
目前已经做到了lab2b,通过了BasicAgree2B、RPCBytes2B、FailAgree2B
三个测试。
其中遇到的bug有:根据raft的协议,leader收到了AppendEntries的Reply之后,如果Success为True,leader需要更新相应follower的nextIndex和matchIndex。但是图2中,并没有明确指出根据哪个字段去更新nextIndex和matchIndex。去看raft的演示模型,发现follower的AppendEntriesReply可以增加一个字段matchIndex,由follower来设置这个字段的值,leader收到之后,根据这个字段来更新它的状态。
目前fail在FailNoAgree2B测试上。这三个周,每天都在被raft吊打,tnnd怎么这么难。