Raft 总结

重点

通常一致性算法保证以下几点:
  1. 安全性保证:在非拜占庭错误下,都能返回非错误的结果。
  2. 可用性:集群只要保证 n/2 + 1 节点可用,那么这个集群就是可用的。
  3. 不依赖物理时钟保证一致性:由于分布式的机器的物理时钟是不可靠的,因此,绝不会使用物理时钟。
  4. 性能:通常一条指令只需要一轮 RPC 调用即可返回结果,小部分节点响应较慢,不影响整体性能。
Raft 特点:
  1. 日志复制是 Raft 的核心,保证日志复制一致是分布式一致性算法的核心。
  2. Raft 设计的整体思路:将一致性工作进行分解(牺牲原子性,提高可理解性),并且从最简单的策略触发,使用遇到问题打补丁的方式,实现了一个可靠的一致性算法。
  3. Raft 和 正统的 Paxos 不同的地方在于,Raft 的一致性前提:必须要有一个强领导者,这个强领导者,保证了日志复制的一致。
  4. Raft 在处理成员增减的策略是:将可能出现两种配置的场景,原子化为一个配置。
  5. 日志复制基于状态机,相当于一个函数,当数据输入状态机,执行固定的指令,将状态改变。
  6. Raft 为了实现可理解:做了 2 个工作,第一,只要可能,就将复杂问题分解,例如 Raft 被分成 leader 选举,日志复制,安全性和成员变更等几个部分;第二,通过减少状态的数量。
Raft 算法浓缩总结
特性 解释
选举安全特性 对于一个给定的任期号,最多只会有一个领导人被选举出来
领导人只附加原则 领导人绝对不会删除或者覆盖自己的日志,只会增加
日志匹配原则 如果两个日志在相同的索引位置的日志条目的任期号相同,那么我们就认为这个日志从头到这个索引位置之间全部完全相同
领导人完全特性 如果某个日志条目在某个任期号中已经被提交,那么这个条目必然出现在更大任期号的所有领导人中
状态机安全特性 如果一个领导人已经在给定的索引值位置的日志条目应用到状态机中,那么其他任何的服务器在这个索引位置不会提交一个不同的日志

注意:日志匹配规则领导人完全特性,是非常非常核心的重点,保证这2个特性,才能实现一致性,同时,这两个特性在某个场合, 将是证明一致性的依据(当然,其他 3 个特性也非常的重要)。

Raft 回顾

  1. 状态: 节点在 3 个状态直接转换(跟随者, 候选者,领导者),同时,还有加时赛的概念。
  2. leader 选举时,会交换任期号,如果任期比自己小,那么则直接拒接。如果 leader 发现自己任期号过期了,则直接恢复成跟随者状态。
  3. 任期:每个选举都是一个任期,即使没成功选举出 leader ,也会更新任期,任期充当逻辑时钟,是保证系统的一致性重要手段。
  4. 日志复制:日志由 3 部分组成:下标任期号具体命令内容。其中,下标和任期号是保证日志在系统中一致的重要属性。下标保证了日志的唯一,任期保证了日志在整个系统的一致。
    刚刚上面说的 2 大特性,日志匹配原则和领导人完全特性,也是基于这个前提。
  5. 一致性检查: leader 每次同步日志,都会进行一致性检查(nextIndex + term)。
  6. 如果新 leader 和 followers 的日志不一致,以 leader 为准进行覆盖—— 即删除 follower 冲突的日志。
  7. 选举时:想成为leader,需要满足 2 个重要的规则,先判断任期号大小,再判断日志的下标大小。值较大的才能成为 leader。
  8. 7 号条件有缺陷:),因此需要增加限制条件,即 leader 不能直接提交之前任期的日志条目。
  9. 集群成员变化:通过使用 2 阶段提交的方式,而不是直接从 old 配置变成 new 配置,Raft 在中间使用 <Cold,Cnew> 这样一个共同配置,即可防止集群同时出现两个 leader。

参考

英文 paper pdf 地址

Raft paper 中文翻译 —— 寻找一种易于理解的一致性算法(扩展版)

Raft 作者讲解视频

Raft 作者讲解视频对应的 PPT

一个简单的讲解 Raft 协议的动画

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容

  • 可进入我的博客查看原文。 Raft 算法是可以用来替代 Paxos 算法的分布式一致性算法,而且 raft 算法比...
    Jeffbond阅读 13,325评论 4 91
  • 寻找一种易于理解的一致性算法(扩展版) 摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos...
    yflau阅读 966评论 0 1
  • 寻找一种易于理解的一致性算法(扩展版) 摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos...
    糖果果老师阅读 1,268评论 0 4
  • 寻找一种易于理解的一致性算法(扩展版) 摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos...
    枝叶君阅读 2,643评论 0 15
  • 人生最好的境界是丰富的安静。 安静,是因为摆脱了外界虚名浮利的诱惑。 丰富,是因为拥有了内在的精神世界的宝藏。
    阖眸烟云0v0阅读 408评论 0 0