共识算法Raft为什么这么流行,及原理解析( 三 )


共识算法Raft为什么这么流行,及原理解析

文章插图
 
一开始有 5 个节点处于同一网络状态下 。
共识算法Raft为什么这么流行,及原理解析

文章插图
 
Network Partition 将节点分成两边,一边有两个节点,一边三个节点 。
共识算法Raft为什么这么流行,及原理解析

文章插图
 
两个节点这边已经有 Leader 了,来自客户端的数据 “bob” 通过 Leader 同步到 Follower 。
共识算法Raft为什么这么流行,及原理解析

文章插图
 
因为只有两个节点,少于3个节点,所以 “bob” 的状态仍是 Uncommitted 。所以在这里,服务器会返回错误给客户端
共识算法Raft为什么这么流行,及原理解析

文章插图
 
另外一个 Partition 有三个节点,进行重新选主 。客户端数据 “tom” 发到新的 Leader,通过和上节网络状态下相似的过程,同步到另外两个 Follower 。
共识算法Raft为什么这么流行,及原理解析

文章插图
 

共识算法Raft为什么这么流行,及原理解析

文章插图
 

共识算法Raft为什么这么流行,及原理解析

文章插图
 
因为这个 Partition 有3个节点,超过半数,所以数据 “tom” 都 Commit 了 。
共识算法Raft为什么这么流行,及原理解析

文章插图
 
网络状态恢复,5个节点再次处于同一个网络状态下 。但是这里出现了数据冲突 “bob" 和 “tom"
共识算法Raft为什么这么流行,及原理解析

文章插图
 
三个节点的 Leader 广播 AppendEntries
共识算法Raft为什么这么流行,及原理解析

文章插图
 
两个节点 Partition 的 Leader 自动降级为 Follower,因为这个 Partition 的数据 “bob” 没有 Commit,返回给客户端的是错误,客户端知道请求没有成功,所以 Follower 在收到 AppendEntries 请求时,可以把 “bob“ 删除,然后同步 ”tom”,通过这么一个过程,就完成了在 Network Partition 情况下的复制日志,保证了数据的一致性 。
共识算法Raft为什么这么流行,及原理解析

文章插图
 
小总结Raft 是能够实现分布式系统强一致性的算法,每个系统节点有三种状态 Follower,Candidate,Leader 。实现 Raft 算法两个最重要的事是:选主和复制日志
参考链接:
Raft 官网:https://raft.github.io/
Raft 原理动画 (推荐看看):http://thesecretlivesofdata.com/raft/
Raft 算法解析图片来源:http://www.infoq.com/cn/articles/coreos-analyse-etcd
 
专注于技术热点大数据,人工智能,JAVA、Python、 C 、GO、JavaScript等语言最新前言技术,及业务痛点问题分析,请关注【编程我最懂】共同交流学习 。




推荐阅读