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原理与实例

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

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

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

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

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