失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【分布式系统数据一致性算法】Raft算法

【分布式系统数据一致性算法】Raft算法

时间:2021-02-16 19:32:23

相关推荐

【分布式系统数据一致性算法】Raft算法

数据一致性算法即共识算法,共识就是多个节点对某一个事件达成一致的看法,即使出现部分节点故障、网络分割、网络延时等情况,也不影响各节点。

加密货币(比特币、区块链)的应用就需要共识算法,在分布式系统中,共识算法更多用于提高系统的容错性

raft是使用较为广泛的分布式协议,具有强一致性、去中心化以及高可用性。是一个leader-based算法。

raft算法提供三种成员身份:

领导者(leader):处理写请求,管理日志复制、发送心跳消息

跟随者(follower):相当于paxos中的acceptor,接收处理leader的消息,当leader出现故障时,主动推荐自己为候选人

候选人(candidate):向其他节点发送请求投票消息(Request Vote),如果获得大多数选票,则晋升为leader。

Raft算法将分布式系统的一致性问题主要分解成为三个子模块即Leader选举、日志同步和安全性。

leader选举

Leader选举时使用了一个随机定时器,这个随机时钟设定的时间一般是在150ms-300ms中的随机值。节点刚启动时其状态为Follower,等待Leader心跳消息的随机超时由每个节点自己设置,因此每个节点的超时时间不同。Follower节点在这个超时时间内没有收到Leader的心跳消息或者Canditate的请求投票消息时,便自荐成为Candidate,随后增加自己的任期编号term并以Candidate身份向系统中的其他节点发送请求投票消息,请求晋升为Leader,在自己设定的随机超时时间内若收到大多数选票时,则晋升为Leader开始向集群中其他节点持续发送心跳消息来维持自己的Leader身份。

日志同步

Raft算法实现日志同步的具体过程如下:

Leader收到来自客户端的事务操作,将之封装成log entry并追加到自己的日志中;Leader并行地向系统中所有节点发送日志复制消息;接收到消息的节点确认消息没有问题,则将log entry追加到自己的日志中,并向Leader返回ACK表示接收成功;Leader若在随机超时时间内收到大多数节点的ACK,则将该log entry应用到状态机并向客户端返回成功。

如果觉得《【分布式系统数据一致性算法】Raft算法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。