我是靠谱客的博主 坚强丝袜,最近开发中收集的这篇文章主要介绍【分布式系统数据一致性算法】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算法的全部内容,希望文章能够帮你解决【分布式系统数据一致性算法】Raft算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部