Raft 共识

标签: raft tech | 发表时间:2019-06-09 22:00 | 作者:
出处:http://abloz.com/

概述

Raft是一种共识算法,用于多个分布式的系统,如zookeeper,谷歌chubby。用于保持数据的一致性。可替代paxos共识算法。其核心思想是由一个leader作为入口,由他来对数据进行接受和分发处理。该唯一leader必须得到多数节点的选票。所以即使集群分裂,最终还是会有多数节点会达成一致。

适用于彼此可信的节点环境。

角色

  • leader 1个
  • candidate 临时角色,没有leader时由follower转成
  • follower
  • client数据产生和请求者

leader选举过程

初始状态

每个节点都是follower状态

候选人状态

没有leader和他们通信时,随机等待150-300s超时时间 ,然后转为候选人状态。此时,有人比较快变成候选人,先发选举请求。如果同时成为候选人并且都不能得到多数票,则重新等待随机时间。 follower收到选举请求后回复同意或拒绝。

leader

  • 多数人回复同意后,候选人成为leader。
  • leader 定期和个follower进行心跳通信,确认自己活着,发送数据。

数据复制过程

  • client 发送数据
  • leader接到数据后变成准提交状态
  • leader将数据发送给follower
  • 多数人回复确认后成为确定版。
  • leader给client发送确认。
  • 新加入节点leader会从时间线开始复制数据

分裂过程

  • 如果分裂为两组,各自选举了leader。
  • 第一组得不到多数follower节点确认,所以一直是未确认数据。
  • 第二组得到多数节点确认,是确认数据。
  • 合并后,未确认数据会回滚。

优点:

  • 分布式一致性得到较好的保持

缺点

  • 节点要可信
  • leader只有一个,容易成为瓶颈。

reference

动画演示Raft

相关 [raft 共识] 推荐:

Raft 共识

- - 瀚海星空
Raft是一种共识算法,用于多个分布式的系统,如zookeeper,谷歌chubby. 其核心思想是由一个leader作为入口,由他来对数据进行接受和分发处理. 该唯一leader必须得到多数节点的选票. 所以即使集群分裂,最终还是会有多数节点会达成一致. 适用于彼此可信的节点环境. candidate 临时角色,没有leader时由follower转成.

Raft对比ZAB协议

- - zzm
ZooKeeper的一致性算法赏析. 本篇文章想总结下Raft和ZAB在处理一些一致性问题上的做法,详见之前对这2个算法的描述. ZooKeeper的一致性算法赏析. 上述分别是针对如下算法实现的讨论:. copycat,由于Raft算法本身已经介绍的相当清晰,copycat基本上和Raft算法保持一致.

raft算法与实现

- - 掘金架构
强一致性、高可用的存储组件是构建现代分布式系统的必要条件,广泛应用于注册中心、配置中心等平台设施中,分布式锁、协调器等等各类场景需求也有相关需求,在该领域有众多知名的开源组件,如etcd、zookeeper、Tikv等等. 共识算法是实现这类组件的关键算法. 简单的说共识算法是协调多个节点达成共识的算法,这是构建高可用系统的基石.

分布式一致性协议Raft原理与实例

- - zzm
分布式一致性协议Raft原理与实例. Raft是由Stanford提出的一种更易理解的一致性算法,意在取代目前广为使用的Paxos算法. 目前,在各种主流语言中都有了一些开源实现,比如本文中将使用的基于JGroups的Raft协议实现. 关于Raft的原理,强烈推荐 动画版Raft讲解. 在Raft中,每个结点会处于下面三种状态中的一种:.

为什么 Leader Based 的分布式协议 Raft 是更好的

- - idea's blog
为什么 Leader Based 的分布式协议 Raft 是更好的. 这个问题隐式地表达了 Paxos 多主特性是不好的. 之前谈过, Paxos 不区分读写, 读和写都要进行完整的 Paxos prepare-accept 两阶段流程, 否则, 就无法保证一致性. 事实上, 我看过一些 Paxos 实现, 它们基于优化的考虑, 简化了 prepare-accept 两阶段流程, 最终失去了一致性保证而不自知.

深度解析 Raft 分布式一致性协议

- - 掘金后端本月最热
注:本文原创,转载请先通过公众号或掘金联系作者申请. 定期发送干货,实践经验、系统总结、源码解读、技术原理. 笔者期望通过一篇权威靠谱、清晰易懂的系统性文章,帮助读者深入理解 Raft 算法,并能付诸于工程实践中,同时解读不易理解或容易误解的关键点. 本文是 Raft 实战系列理论内容的整合篇,我们结合 Raft 论文讲解 Raft 算法思路,并遵循 Raft 的模块化思想对难理解及容易误解的内容抽丝剥茧.

raft算法与paxos算法相比有什么优势,使用场景有什么差异? - 知乎

- -
Raft协议比paxos的优点是 容易理解,容易实现. 它强化了leader的地位,把整个协议可以清楚的分割成两个部分,并利用日志的连续性做了一些简化: (1)Leader在时. 由Leader向Follower同步日志 (2)Leader挂掉了,选一个新Leader,Leader选举算法. 但是本质上来说,它容易的地方在于流程清晰,描述更清晰,关键之处都给出了伪代码级别的描述,可以直接用于实现,而paxos最初的描述是针对非常理论的一致性问题,真正能应用于工程实现的mulit-paxos,Lamport老爷爷就提了个大概,之后也有人尝试对multi-paxos做出更为完整详细的描述,但是每个人描述的都不大一样.

漫谈分布式共识问题

- - DockOne.io
受翻译影响,网上很多讨论 paxos 或 raft 的博客使用“分布式一致性协议”或者“分布式一致性算法”这样的字眼,虽然在汉语中“达成共识”和“达成一致”是一个意思,但是必须要说明在这里讨论的是 consensus 问题,使用“共识”来表达更清晰一些. 而 CAP 定理中的 C 和数据库 ACID 的 C 才是真正的“一致性”—— consistency 问题,尽管这两个 C 讨论的也不是同一个问题,但在这里不展开.

苹果的线下社交网络;硅谷的黑暗共识:让孩子们少用数码产品 | TechBoard#28

- - 极客公园
通过多年的经营,苹果已经形成了基于硬件的「苹果生态」,生态中的用户哪怕不满意,也难以放弃苹果的硬件产品. 这个观点早已在理论和实践上得到了佐证. 上周,著名科技评论家 Ben Thompson 发表文章,他在苹果生态系统之外,给了另一个近似但更有预见性的判断:苹果正在建立自己的社交网络. 月初,苹果发布新一季财报,同时宣布将从 2019 财年起不再公布 iPhone、iPad、Mac 的销售数据.