前一段时间在学习raft算法,看完后感觉相对paxos来说没有那么复杂,就萌生了要造个轮子的想法。

raft算法相对来说还是比较容易理解的,我在本文就不介绍原理了,大家可以看原版论文汉语译文,或者动画模型
由于翻译的原因,国内的译文存在一些问题,建议大家对照着看。
相信结合动画效果和文章,大家一定能够很容易的理解算法模型。
除了以上这些资料,目前raft已经非常通用了,有很多人做了实现,在github上都有实现。有的是商业用途,有的是为了学习。功能不同,代码量也不同。
具体的资料我们可以在raft网站获得很多的帮助。
我这次在自己写的时候呢,参考了很多项目,其中主要参考了pontoon的代码。然后有一小部分也看了fabric的原理。对于比较专业使用的raft库,我可能参考了他们的结构等等。
真的很感谢他们的付出,我才学习到了这么多。

除了以上对整体的介绍,我接下来要说下本系列的大致流程。
首先是领导人选举部分。这个是raft工作的基础,也是相对后续操作容易理解的的部分。
其次是日志复制的部分,这部分需要考虑很多店,会比较繁琐,我们会慢慢讲解。
最后是快照部分,这个相对来说没有那么重要,但是具有一定的价值。

这系列文章会比较多,不知道我能不能坚持写完,希望我的毅力满满吧。

算法 go 分布式 raft

发表新评论