简述raft一致性算法
Posted 花白胡子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述raft一致性算法相关的知识,希望对你有一定的参考价值。
一致性算法允许一组机器像一个整体一样工作,即使其中的一些机器出了错误也能正常工作。在较大规模的分布式系统中分布式协议/算法,具有举足轻重的地位。最为出名的一致性算法当属Paxos,但是Paxos也以难理解著称,而raft算法易于理解和实现,从而得到广泛应用。
废话不多说,进入正题。
假设系统有三个节点,如何能保持三个节点的动作整齐划一呢?
raft中节点的角色分为:Follower、Candidate、Leader。
故事的开始!
故事的第一幕:选举
第一场:
三个节点都是Follower。
既然没有是领导(Leader),那么就开始选举吧。必须定下来:究竟谁说了算了。
第二场:
没有发现Leader的Follower,自己参入选举,变成Candidate。向其他节点发起投票:选我做领导(Leader)的人,请举手。
第三场:
如果大多数节点都同意了投票,那么Candidate就摇身一变成了 Leader。
故事的第二幕:领导
第一场:动作整齐划一,听从领导统一安排
当Leader接受到命令后,先将命令保持在其日志中保存。
(绿色节点为集群的使用者)
第二场:小队长下发命令
Leader向其他follower广播(复制)命令,
Follower接受命令,讲命令追加到自己的日志中。
第三场:动作协调
大多数follower将日志写入磁盘文件后,向Leader回应:准备好了;
Leader收到大多数follower回应后,再次发布:这个事就这么定了。
至此,这个最简单、最本质的部分已经讲完,更深入的其它机制就不啰嗦了。
以上是关于简述raft一致性算法的主要内容,如果未能解决你的问题,请参考以下文章