Raft共识算法

目录

什么是Raft?

等等-什么是共识?

Raft可视化

刊物

会谈

Raft课程

我在哪里可以问问题?

我在哪里可以买到筏子?


官网地址:https://raft.github.io/

什么是Raft?

Raft是一种共识算法,旨在使其易于理解。在容错性和性能上与Paxos等效。不同之处在于它被分解为相对独立的子问题,并且干净地解决了实际系统所需的所有主要部分。我们希望Raft能够使更多的受众获得共识,并且这个更广泛的受众将能够开发出比当今更高质量的基于共识的系统。

等等-什么是共识?

共识是容错分布式系统中的一个基本问题。共识涉及多个服务器就价值达成一致。一旦他们对价值做出决定,该决定即为最终决定。当大多数服务器可用时,典型的共识算法会取得进展。例如,即使2台服务器发生故障,包含5台服务器的群集也可以继续运行。如果更多服务器发生故障,它们将停止取得进展(但绝不会返回错误的结果)。

共识通常出现在复制状态机的背景下,复制状态机是构建容错系统的通用方法。每个服务器都有一个状态机和一个日志。状态机是我们要使其容错的组件,例如哈希表。对于客户端来说,即使群集中的少数服务器出现故障,它们也会与单个可靠的状态机进行交互。每个状态机都从其日志中获取输入命令。在我们的哈希表示例中,日志将包含诸如set x到3之类的命令。使用共识算法来同意服务器日志中的命令。共识算法必须确保如果有任何状态机应用,则将x设置为3作为第n个命令,没有其他状态机将应用不同的第n条命令。结果,每个状态机处理相同系列的命令,并因此产生相同系列的结果并到达相同系列的状态。

Raft可视化

这是浏览器中运行的Raft集群。您可以与之互动以查看“筏”的实际使用情况。左侧显示五台服务器,右侧显示其日志。我们希望很快创建一个截屏视频,以解释发生了什么。这种可视化(RaftScope)的边缘仍然很粗糙;拉请求将非常受欢迎。

(原文动图)

数据的秘密生活 是Raft的另一种可视化形式。它具有更多的指导性和较少的交互性,因此它可能是一个比较温和的起点。

刊物

这是“筏纸”,详细描述了筏: 寻找迭戈·奥加罗 (Diego Ongaro)约翰·奥斯特豪特( John Ousterhout 撰写的《可理解的共识算法》(扩展版)。本文的简短版本在2014年USENIX年度技术会议上获得了最佳论文奖 。

Diego Ongaro的 博士学位 论文 对本文的内容进行了更详细的扩展,并包括了一种更简单的集群成员资格变更算法。

更多与筏相关的论文:

  • 道格·伍斯(Doug Woos),詹姆斯·R·威尔考克斯(James R.Wilcox),史蒂夫·安东(Steve Anton),扎卡里·塔特洛克(Zachary Tatlock),迈克尔·D·恩斯特(Michael D.Ernst)和托马斯·安德森(Thomas Anderson)。
    筏共识协议正式验证中的变更规划
    认证程序和证明(CPP),2016年1月。

  • 詹姆斯·R·威尔科克斯(James R. Wilcox),道格·伍斯(Doug Woos),帕维尔·潘切卡(Pavel Panchekha),扎卡里·塔特洛克(Zachary Tatlock),王希,迈克尔·恩斯特(Michael D.Ernst)和托马斯·安德森(Thomas Anderson)。
    Verdi:实现和验证分布式系统的框架
    编程语言设计与实现(PLDI),2015年6月。

  • 雨果·埃弗拉德(Hugues Evrard)和弗雷德里克·朗(FrédéricLang)。
    异步并发流程形式化模型的自动分布式代码生成
    并行,分布式和基于网络的处理(PDP),2015年3月。

  • Heidi Howard,Malte Schwarzkopf,Anil Madhavapeddy和Jon Crowcroft。
    木筏改写:我们有共识吗?
    SIGOPS操作系统评论,2015年1月。

  • 海蒂·霍华德(Heidi Howard)。
    ARC:筏共识分析
    剑桥大学计算机实验室,UCAM-CL-TR-857,2014年7月。

会谈

这些演讲是对Raft的很好的介绍:

Raft课程

这是一门课程列表,其中包括有关Raft的讲座或编程任务。这对于其他教师和寻找资料的在线学习者可能很有用。如果您知道其他课程,请提交 请求请求 或问题以对其进行更新。

我在哪里可以问问题?

提出有关Raft及其实现的问题的最佳地点是 raft-dev Google小组。一些实现也有自己的邮件列表。检查他们的自述文件。

我在哪里可以买到筏子?

在不同的开发阶段都有许多Raft的实现。下表列出了我们知道的可用源代码实现。最流行和/或最近更新的实现都在顶部。这些信息将不可避免地过时。请提交 请求请求 或问题以对其进行更新。

星星名称主要作者执照领导者选举+日志复制?坚持不懈?会员变更?日志压缩?
35,981★etcd /筏布雷克Mizerany,李翔,翼城琴阿帕奇2.0是的是的是的是的
9,347★泰克病毒周杰伦纳戈特西顿当天才毛阿帕奇2.0是的是的是的是的
3,633★龙舟倪妮阿帕奇2.0是的是的是的是的
24,695★重新思考数据库 C ++阿帕奇2.0是的是的是的是的
2,321★SOFAJ筏柏彦李家春爪哇阿帕奇2.0是的是的是的是的
2,660★ft章毅陈,姚望C ++阿帕奇2.0是的是的是的是的
4,363★榛树漂流穆罕默德·道根(Mehmet Dogan)恩萨尔·巴斯里·卡维奇(Ensar Basri Kahveci)爪哇阿帕奇2.0是的是的是的是的
1,403★酷度戴维·阿尔维斯David Alves)托德·利普孔Todd Lipcon)迈克·珀西Mike Percy)C ++阿帕奇2.0是的是的是的是的
4,734★hashicorp /筏阿蒙·达加(Armon Dadgar)MPL-2.0是的是的是的是的
505★规范/漂流免费的EkanayakaC阿帕奇2.0是的是的是的是的
492★RabbitMQ团队埃尔朗(Apache-2.0或MPL-1.1)是的是的是的是的
836★木筏胡文伟爪哇阿帕奇2.0是的是的是的是的
587★异步筏安东尼·多德Apache-2.0或MIT是的是的是的是的
464★牛筏安贞相C ++阿帕奇2.0是的是的是的是的
1,483★木屋迭戈·昂加罗(Diego Ongaro)C ++国际学习中心是的是的是的是的
2,247★漂流本·约翰逊Ben Johnson)项力(CoreOS)麻省理工学院是的是的是的
287★RedisRaftRedis实验室C(AGPL-3.0或RSAL)是的是的是的是的
266★Permazen / RaftKV数据库阿奇·科布斯(Archie Cobbs)爪哇阿帕奇2.0是的是的是的是的
553★山寨乔丹·霍尔特曼(Jordan Halterman)爪哇阿帕奇2.0是的是的是的是的
352★OpenDaylightMoiz Raja,Kamal Rameshan,Robert Varga,Tom Pantelis爪哇EPL-1.0是的是的是的
840★威廉姆特威廉·亨德里克·蒂亚特(Willem-Hendrik Thiart)CBSD是的是的是的是的
285★kanaka / raft.js乔尔·马丁(Joel Martin)Java脚本MPL-2.0是的 是的
497★bakwc / PySyncObj菲利普·奥兹诺夫(Filipp Ozinov)Python麻省理工学院是的是的是的是的
289★拉夫托斯亚历山大·哲布拉克(Alexander Zhebrak)Python麻省理工学院是的 
222★simpleRaft肖恩·里德(Sean Reed)Python麻省理工学院 
423★.NEXT木筏罗曼·萨克诺(Roman Sakno)C#麻省理工学院是的是的是的是的
266★漂流筏康拉德·马劳斯基(Konrad Malawski)斯卡拉阿帕奇2.0是的是的是的是的
446★朱诺布莱恩·施罗德Brian Schroeder)利比·肯特Libby Kent)斯图尔特·波普约Stuart Popejoy)威尔·马蒂诺Will Martino)哈斯克尔BSD 
212★凯特巴勃罗·麦地那(Pablo Medina)斯卡拉阿帕奇2.0是的是的是的是的
116★XraftXnnYygn爪哇麻省理工学院是的是的是的是的
122★扎特西蒙·阿卡西纳(Simon Accascina)PythonAGPL-3.0是的是的是的是的
200★jgroups-raft贝拉·班(Bela Ban)爪哇阿帕奇2.0是的是的是的是的
179★基石陈安迪C ++阿帕奇2.0是的是的是的是的
185★救生筏阿诺特·卡兹米尔(Arnout Kazemier)Java脚本麻省理工学院 
100★漂流海蒂·霍华德(Heidi Howard)OCaml麻省理工学院是的 
164★杰弗特陈安迪爪哇阿帕奇2.0是的是的是的是的
125★奇虎360 /筏陈宗志安安昭康旺C ++GPL-3.0是的 
155★彼得堡彼得·布尔贡BSD-2-条款是的 是的
254★漂流/漂流安德鲁·霍布登Andrew Hobden),丹·伯克特(Dan Burkert)麻省理工学院是的 
29★黄昏尼古拉·曼齐尼彭镝嗯Python麻省理工学院是的 是的
259★安德鲁·斯通(Andrew Stone)埃尔朗阿帕奇2.0 
121★小船佩德罗·特谢拉(Pedro Teixeira)Java脚本国际学习中心是的是的是的是的
19★轻筏路易吉·塔伦加(Luigi Tarenga)麻省理工学院是的是的是的是的
148★普通筏詹姆斯·威尔科克斯(James Wilcox),道格·伍斯(Doug Woos),帕维尔·潘切卡(Pavel Panchekha),扎克·塔特洛克(Zach Tatlock),西王,迈克·恩斯特(Mike Ernst),汤姆·安德森(Tom Anderson)辅酶QBSD是的 
163★zraft_lib古宁·亚历山大(Gunin Alexander)埃尔朗阿帕奇2.0是的是的是的是的
28★绒布亨里克·费尔德(Henrik Feldt)F#麻省理工学院 
87★py-raft托比·布雷斯Python无执照是的
41★akiradeveloper早川晃麻省理工学院是的是的是的是的
48★srned / Prez苏雷什库马尔·内敦切詹CBSD是的 
28★极光亚瑟C ++GPL-3.0是的 是的
118★康提基尼古拉斯·特兰兹(Nicolas Trangez)哈斯克尔BSD 
88★拉蒂斯 爪哇阿帕奇2.0 
50★木筏PHP瓦基·哈立德(Waqee Khalid)的PHP麻省理工学院是的 
114★哈里夫/筏哈里·威尔金森红宝石麻省理工学院 
50★筏芯吉列尔莫·罗德里格斯(GuillermoRodríguez)C#麻省理工学院是的 
24★兴义峡邢一凡Python阿帕奇2.0是的是的是的是的
52★dupdob / RAFTiNG西里尔·杜普达比(Cyrille Dupuydauby)C#阿帕奇2.0 
74★伯特·威廉姆斯C#麻省理工学院 
53★鹅群吴本Java脚本麻省理工学院是的 
21★ScaleCube木筏负责人选举比例立方爪哇阿帕奇2.0是的 
97★阿连格堡/ libraft艾伦·乔治爪哇BSD是的 
55★阿奇/筏马库斯·隆布拉德(Marcus Ljungblad)斯卡拉麻省理工学院 
61★贡多拉陈子敬,伟成潘爪哇新的BSD是的 是的
19★木筏萨沙(Sasha Chepurnoi)科特林麻省理工学院是的 是的
89★驳船戴夫·鲁塞克(Dave Rusek)爪哇阿帕奇2.0是的 
48★木筏约翰·韦弗ClojureEPL-1.0 
6★筏角杜申·萨巴瓦尔(Dushyant Sabharwal)角4麻省理工学院是的 是的
21★cppa-筏张义超C ++麻省理工学院 
7★稿件马步青PythonBSD是的是的是的是的
9★肉类计算/筏式共识米凯拉·帕特拉(Mikaela Patella)ClojureEPL-1.0 
19★RSM奥利维尔·鲍甘(Olivier Paugam)麻省理工学院是的是的是的
28★空客丽莎PythonAGPL-3.0 +是的
78★牙线亚历山大·弗莱特红宝石麻省理工学院 
14★草案魏国伟C ++阿帕奇2.0是的 
14★里夫亚伦·普利兹拉夫(Aaron Pritzlaff)斯卡拉阿帕奇2.0是的是的是的是的
36★四脚架/筏亚伦·戴维森(Aaron Davidson)爪哇阿帕奇2.0是的是的是的
30★奇乐Yassine LamgarchalPython阿帕奇2.0是的 
 简单筏jessa0,信号信使AGPL-3.0或更高版本是的
18★浮桥马特·里弗森(Matt Reiferson)不适用 
18★抢劫伊藤行贵长生不老药麻省理工学院是的 
33★C5复制器瑞安·罗森Ryan Rawson)亚历克斯·纽曼Alex Newman)乔什·格林伯格Josh Greenberg)爪哇阿帕奇2.0是的是的是的是的
 木筏旋转谢星宇普罗梅拉麻省理工学院是的是的
 xzw筏z爪哇阿帕奇2.0是的是的
13★Noeleo /筏诺埃尔·摩尔德(Noel Moldvai),罗希特·图鲁梅拉(Rohit Turumella),乔什·穆尔菲尔德(Josh Muhlfelder),詹姆斯·布特科维奇盛开BSD-2-条款
8★约拉休·勒红宝石麻省理工学院是的 是的
 桑托什·德古里桑索什·库玛·特库里(Santhosh Kumar Tekuri)阿帕奇2.0是的是的是的是的
8★白水亚当·米维迪Adam Midvidy),安·迈(Anh Mai),卡鲁恩·卡斯雷(Karoun Kasraie),桑克·卡塔盛开麻省理工学院 
5★漂流zhyzhyzhy爪哇阿帕奇2.0是的是的是的是的
 IvanProdaiko94 / raft-protocol-implementation伊万·普罗达科(Ivan Prodaiko)麻省理工学院是的 
19★chicm / CmRaft程敏池爪哇阿帕奇2.0是的 
14★r4j卡雷尔·坎恩(Kaarel Kann)爪哇阿帕奇2.0是的 
6★活力/漂流活泼的d麻省理工学院是的 
 粗锉克里斯蒂安·布伦(KristianBrünn)C / C ++(Arduino)麻省理工学院是的 
6★吉拉夫特帕特里克·范·斯蒂(Patrick Van Stee)红宝石麻省理工学院 
5★小艇特雷弗·伯纳德Clojure阿帕奇2.0 
19★近战弗雷德里克·加洛索(Fredrick Galoso)ClojureEPL-1.0 
 阿里雷扎·梅斯金(Alireza Meskin)斯卡拉阿帕奇2.0是的是的是的是的
 姆鲁比-弗洛特(mruby-flotte)亨德里克姆鲁比阿帕奇2.0是的 
12★哈克贝利雅各布·西弗斯(Jakob Sievers)埃尔朗不适用 
 黄道十二宫埃文·菲尼克斯红宝石麻省理工学院 
7★狩猎实验室/狩猎筏狩猎实验室d阿帕奇2.0是的是的是的是的
11★接枝本·米尔斯William Dix)不适用 
 标尺金Je敏斯卡拉阿帕奇2.0 
9★丹尼考特斯/筏芯丹尼·科茨(Danny Coates)Java脚本BSD 
8★数据领先/ easyRaft沉善良爪哇阿帕奇2.0是的 
 奥拉夫特小松光教OCaml阿帕奇2.0是的 
7★木筏JVM蒂姆·凯洛格(Tim Kellogg)爪哇不适用 
 奇兰埃里克·尤特岑卡(Eric Jutrzenka)斯卡拉不适用是的 
5★after子埃里克·莫里兹(Eric Moritz)埃尔朗不适用 
 草案帕特里克·范·斯蒂(Patrick Van Stee)长生不老药不适用 
6★木筏商店Matteo Berti,Arnaldo Cesco,萨尔瓦多·菲奥里亚Salvatore Fiorilla)朱莉LGPL是的 
 木筏UDP伊曼纽尔·加隆(Emanuele Gallone)Python麻省理工学院是的 
6★木筏4WS菲利普·坎波斯(Filipe Campos)爪哇阿帕奇2.0是的 
 fxsjy / Ins孙俊义C ++BSD是的是的是的
 cb372 /筏克里斯·比尔查尔(Chris Birchall)斯卡拉不适用 
 fsraft卡尔·约翰·尼尔森F#无执照 
5★bspolley /漂流亚历克斯·凯泽(Alex Kaiser),布伦南·波利(Brennan Polley),翁海伦(Helen Weng)盛开不适用 
 普拉维斯/筏佩雷·维拉斯(Pere Vilas)爪哇不适用 
 fz0raft伊万格洛斯·萨米斯(Evangelos Tsamis)F#麻省理工学院是的 是的
 山核桃筏普里扬舒·沙玛(Priyanshu Sharma)爪哇阿帕奇2.0是的是的是的
 座位莱昂内尔·巴罗(Lionel Barrow)不适用 
 drpicox / uoc-raft-2013p戴维·罗德纳斯(David Rodenas)爪哇GPL-3.0 
 贾瓦尔瓦/筏乔迪·阿尔瓦罗爪哇不适用 
 木筏阿德里安·蓬加(Adrian Punga)打字稿阿帕奇2.0 
 罗德里格瓦伦西亚河塞尔吉奥·罗德里格斯(Sergio Rodriguez)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
raft共识算法是一种分布式一致性算法,用于解决分布式系统中节点之间达成一致性的问题。它主要包含了Leader选举、日志复制和安全性等基本机制。 在raft算法中,节点分为Leader、Follower和Candidate三种状态。初始状态下所有节点都是Follower,然后它们通过相互通信进行Leader选举。选出的Leader负责接收客户端请求并进行日志复制等操作。如果Leader出现故障或无法通信,那么其他节点会重新进行选举,选出新的Leader。 日志复制是raft算法的关键过程,Leader负责将客户端请求记录在日志中,然后将日志复制给所有的Follower节点。Follower节点在接收到Leader的日志之后进行存储,然后发送应答给Leader确认。只有当大多数节点都复制了同一条日志之后,这条日志才算是已提交的。 raft算法还通过逻辑时钟和心跳机制来保证系统的一致性。每个节点都有自己的逻辑时钟,用于识别事件的顺序。Leader节点会定期发送心跳信号给Follower节点,以确保它们的存活状态。 在raft算法中,安全性是非常重要的一部分。它通过限制节点之间的信息交换,避免了“脑裂”等问题的发生。同时,每个节点都有持久性的存储,当节点宕机之后可以通过快照恢复。 总的来说,raft共识算法通过Leader选举、日志复制和安全性等机制,实现了分布式系统中节点之间的一致性。它比Paxos算法更容易理解和实现,因此在实际应用中被广泛使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值