Raft协议简介
关于Raft协议,有两篇经典的论文,一篇小论文是《In search of an Understandable Consensus Algorithm》,这是作者最开始讲述Raft算法原理的论文,但是这篇论文太简单了,很多算法的细节没有涉及到。更详细的大论文是《CONSENSUS: BRIDGING THEORY AND PRACTICE》,除了包括第一篇论文的内容以外,还加上了很多细节的描述。大小论文的差别在于细节和优化,大论文提到了非常多的更深入的问题以及更详细的讨论,工程实现上真想做好必须参考大论文。
Raft协议应用
- Raft协议使用场景:分布式节点中不存在作恶节点,只存在故障节点,或者说是非拜占庭节点。
- Raft 一般会使用奇数个节点,比如 3、5、7 等等。这是因为 Raft 是 一种基于多节点投票选举机制的共识算法,通俗地说,只有超过半数节点在线才能提供服务。这里超过半数的意思是 N/2+1(而不是N/2)。
小论文翻译
注意:Raft协议论文翻译,转载的是作者
的翻译成果。小论文英语版和中文翻译版资源见
。这里推荐一个PDF转图片的在线工具Smallpdf
。
大论文翻译
大文论翻译版,见CSDN博主:“我就没事闲溜溜”,大论文共涉及7部分,第7部分为总结。第0~3章 ,第4章 ,第5章 ,第6章 。
如果看论文费劲,想快速了解Raft协议原理,可参考
代码实现
- Go:参考
- Java:参考
参考文件
[1] https://github.com/brandonwang001/raft_translation
[2] https://github.com/uheqiang/Raft
[3] https://smallpdf.com/cn/pdf-to-jpg
[4] https://blog.csdn.net/maxlovezyy/article/details/79942722
[5] https://blog.csdn.net/maxlovezyy/article/details/80017853
[6] https://blog.csdn.net/maxlovezyy/article/details/80158961
[7] https://blog.csdn.net/maxlovezyy/article/details/81412783
[8] https://www.codedump.info/post/20180921-raft/
[9] https://github.com/lichuang/etcd-3.1.10-codedump/tree/master/raft
[10] https://github.com/sofastack/sofa-jraft
[11] https://github.com/wenweihu86/raft-java