分布式一致性协议之Raft

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)。

小论文翻译 [ 1 ] ^{[1]}

注意:Raft协议论文翻译,转载的是作者 [ 1 ] [1] 的翻译成果。小论文英语版和中文翻译版资源见 [ 2 ] [2] 。这里推荐一个PDF转图片的在线工具Smallpdf [ 3 ] {[3]}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

大论文翻译

大文论翻译版,见CSDN博主:“我就没事闲溜溜”,大论文共涉及7部分,第7部分为总结。第0~3章 [ 4 ] [4] ,第4章 [ 5 ] [5] ,第5章 [ 6 ] [6] ,第6章 [ 7 ] [7]

如果看论文费劲,想快速了解Raft协议原理,可参考 [ 8 ] [8]

代码实现

  • Go:参考 [ 9 ] [9]
  • Java:参考 [ 10 ] [ 11 ] [10],[11]

参考文件

[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

发布了106 篇原创文章 · 获赞 253 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/jingzi123456789/article/details/104871347