Raft论文 

 
、Abstract 
分布式一致性是构建容错系统的基础,它使得一些机器可以构成集群工作,并容许其中一些节点失效。不幸的是,最通用的一致性算法--Paxos,被普遍认为是难以理解和正确实现的。 
这篇论文提出了一个新的一致性算法--Raft,它就是为易于理解而设计的。Raft首先会选举出一台机器作为Leader,然后让系统所有的决定都由Leader来处理,这两步操作是相当独立的,相比于Paxos形成了一个更好的结构,Paxos的各个组件是很难分离的。Raft通过投票和随机超时来选举Leader,选举保证Leader存有所有必要的信息,因此数据只能从Leader流向其他节点。相比于其他基于Leader的算法,这使得行为流程更简单。一旦Leader被选举出来,就由它来管理复制日志。 
Raft也更适合于在工程上实现。它在实际部署中表现良好,它解决了部署完整系统所需要的一切,包括怎样管理客户端的交互、怎样管理集群成员关系、如何压缩日志等。为了可以改变集群成员,Raft允许增加和删除集群中的节点,并且保证集群在这个过程中可以不中断服务。 
我们相信Raft优于Paxos和其他的一致性算法。许多实现都可以证明,它的leader选举算法适合于各种各样的环境,并有着和Multi-Paxos同样的性能。 
可以在这个可视化网站上查看动态的Raft,方便理解:可视化Raft 
二、Introduction 
现在的数据中心和应用都运行在高动态的环境中,可以通过增加或减少机器来进行横向扩展和收缩。机器和网络经常会面临故障,每年大约2-4%的磁盘驱动损坏,机器也经常宕机,而且在现代的数据中心中每天都会有数十条网络连接中断。因此系统在正常操作的时候可以处理机器加入或离开集群的情况,必须能够在很短时间内响应这些变化,对用户不造成影响。在当前系统中,这是一个主要的挑战。故障处理、协作、服务发现、配置管理在这种动态环境中都是很难做的。 
幸运的是分布式一致性可以帮助我们处理这些挑战。一致性允许一些机器组成一个集群工作,可以容忍其中一些节点失效。在一个一致性的集群中,节点失效可以被正确的处理,保证系统的高可用,其他一些系统组件可以以一致性集群作为基础来实现容错。因此分布式一致性协议在构建高可用的大规模软件系统中起着重要的作用。 
许多分布式一致性系统的实现都依赖于Paxos算法,在过去的二十年里,Paxos算法在分布式一致性领域处于主导地位,大部分的实现要么基于Paxos,要么会受它的影响,而且Paxos也是教授学生一致性的主要算法。然而Paxos太难以理解,尽管已经做了很多努力来使它看起来简单一点。而且为了支撑实际系统,它的架构需要作出复杂的改变,而且需要作出许多原文没有提到的扩展,难以工程实现。