加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

图解分布式一致性算法

发布时间:2019-10-14 09:07:36 所属栏目:优化 来源:侯树成
导读:今天的文章,咱们会通过图的方式,来深入学习和理解分布式一致性的实现原理。 开始的时候,咱们先来灵魂一问:什么是分布式一致性? 你的应用是单节点吗? 你的系统用户多吗、支持扩容吗? 你的系统扩容后数据能保持一致吗? 你的系统是否使用Raft、Paxos? 是

此时各个 follower 节点也会将之前收到的entry 进行提交。

分布式一致性算法

整个系统目前所有的集群节点都达到了一致的状态。这个过程一般称为日志复制(Log Replication)。

三、 Leader Election

Raft 里有项控制选举的超时时间设置。选举超时时间是一个follower变成 candidate 的等待时间。值是150ms到300ms间的一个随机值.

分布式一致性算法

在选举超时后, follower 会变成 candidate 开始一个新的选举周期(term),同时会给自己投一票。

分布式一致性算法

并且给其他节点发送请求投票的消息。

分布式一致性算法

如果收到消息的节点在这一个周期还没有投过票,那他需要给 candidate 投一票,并且该节点重置他的选举超时时间。

分布式一致性算法

如果 candidate 收到大多数节点的投票,就会成为leader。

分布式一致性算法

leader 此时会在心跳检测的周期内,给给所有的follower发送Append Entries messages 。检测的频率是通过心跳超时时间设置的。

分布式一致性算法

然后 每个 follower 也会给 Append Entries message 发送响应。

图解分布式一致性算法

这个选举周期会一直持续直到某个 follower 停止心跳消息接收变成 candidate。

分布式一致性算法

我们停掉 leader 再来看一下重新选举的情况。

此时 节点 B 已经停止,所以 节点A 和节点C 都收不到心跳消息。咱们前面说收不到心跳消息的话,节点的状态会从 Follower 变成 Candidate,所以A 和C 在各自的选举超时时间设置内会改变状态,

图解分布式一致性算法

此时,节点 A 和 节点 C 都在等待,由于节点C先超时,所以会先开始一轮选举。和上面的选举过程一样,会先新增Term,给自己投一票,并发送投票请求给其他节点。

在收到节点A的投票后,节点C现在升级为 term 2的 leader。

分布式一致性算法

咱们前面总在说的「大多数节点投票」(a majority of votes)。这个能保证能在一个投票周期内,只会产生一个 leader。

假设两个节点同时从 Follower 状态变成了 Candidate,这个时候两者都会升级 Term,并请求其他节点不给自己投票。

分布式一致性算法

分布式一致性算法

这个时候两者的 Term 其实是相同的,在同一个 Term 内 其他节点只会投出一票,所以每个 Candidate 都只会收到一个节点的投票。

分布式一致性算法

分布式一致性算法

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读