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

图解分布式一致性算法

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

我们来看下这个过程。一开始, client会向leader发送一个变更。

分布式一致性算法

这个变更会加到 leader的log中,并会在下一次心跳检测的时候发给 follower。

分布式一致性算法

follower在收到消息之会,都会给 leader 发送响应的 ack消息。

分布式一致性算法

收到大多数的 follower 响应之后, leader 会提交这个entry,并且发送响应给 client。

分布式一致性算法

分布式一致性算法

并在下次心跳的时候,通知 follower 们执行提交操作。

图解分布式一致性算法

follower 在写入完成后再给 leader 发送响应。

图解分布式一致性算法

此时 Client 又给给 leader 发送消息,要给X 来执行个 加2 的操作。leader 将消息添加到 log 之后,给各个follower 发送心跳。

图解分布式一致性算法

follower 们收到之后继续返回响应。

图解分布式一致性算法

leader 收到 ack 之后,确认本次执行进行 commit ,然后给 client 发回响应。并在下次心跳的时候,把写入发给各个 follower。

图解分布式一致性算法

此时,咱们的系统里 X变成了7,各个节点的数据保持一致。

图解分布式一致性算法

五、「大多数」是多少?

前面许多场景咱们都提到「大多数」。那大多数到底是多少呢?

比如我们在选举的时候,在日志复制的时候,都需要大多数 follower 发送回响应消息。

这里的大多数和咱们日常生活里的基本一致,即超过半数。比如一共有5个节点,此时有一个 candidate 起成为 leader,在投票过程中,至少要收到3个投票才行。

官网有个可以自定义时间进行交互的动图,感兴趣的朋友可以自行查看。

图解分布式一致性算法

【本文为51CTO专栏作者“侯树成”的原创稿件,转载请通过作者微信公众号『Tomcat那些事儿』获取授权】

戳这里,看该作者更多好文

(编辑:辽源站长网)

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

推荐文章
    热点阅读