现在的位置: 首页 > 算法 > 正文

Raft算法是什么意思

2020年01月01日 算法 ⁄ 共 993字 ⁄ 字号 评论关闭

  raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos。但Paxos是:少数真正理解的人觉得简单,尚未理解的人觉得很难,大多数人都是一知半解。本人也花了很多时间、看了很多材料也没有真正理解。直到看到raft的论文,两位研究者也提到,他们也花了很长的时间来理解Paxos,他们也觉得很难理解,于是研究出了raft算法

raft是一个共识算法

  raft是一个共识算法(consensusalgorithm),所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分割的情况下。这些年最为火热的加密货币(比特币、区块链)就需要共识算法,而在分布式系统中,共识算法更多用于提高系统的容错性。

raft算法概览

  Raft算法的头号目标就是容易理解(UnderStandable),这从论文的标题就可以看出来。当然,Raft增强了可理解性,在性能、可靠性、可用性方面是不输于Paxos的。

  RaftmoreunderstandablethanPaxosandalsoprovidesabetterfoundationforbuildingpracticalsystems

  为了达到易于理解的目标,raft做了很多努力,其中最主要是两件事情:

  问题分解

  状态简化

  问题分解是将"复制集中节点一致性"这个复杂的问题划分为数个可以被独立解释、理解、解决的子问题。在raft,子问题包括,leaderelection,logreplication,safety,membershipchanges。而状态简化更好理解,就是对算法做出一些限制,减少需要考虑的状态数,使得算法更加清晰,更少的不确定性(比如,保证新选举出来的leader会包含所有commitedlogentry)

  上面的引文对raft协议的工作原理进行了高度的概括:raft会先选举出leader,leader完全负责replicatedlog的管理。leader负责接受所有客户端更新请求,然后复制到follower节点,并在“安全”的时候执行这些请求。如果leader故障,followes会重新选举出新的leader。

  结束语:以上就是关于Raft算法是什么意思的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.