Raft共识算法

Posted boonya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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★极光Fabric中的RAFT共识算法

raft共识算法

共识算法系列之一:raft和pbft算法

浅谈分布式共识算法Raft

拜占庭将军问题和 Raft 共识算法讲解

Raft 分布式共识算法

(c)2006-2024 SYSTEM All Rights Reserved IT常识