Raft论文翻译与笔记

摘要

Raft 是一种用于管理复制日志的共识算法。它的效果跟Paxos的一样,并且它和Paxos一样高效,但它的结构不同于Paxos,这使得 Raft 比 Paxos更加容易理解,也为构建实用系统提供了更好的基础。为了增强可理解性,Raft 分离了共识的关键元素,例如leader选举、日志复制和安全,并强制执行更强的一致性,以减少必须考虑的状态数量。用户研究结果表明对于学生来说 Raft 比 Paxos更容易学习。 Raft 还包含一个新的机制来改变集群成员,它使用重叠(overlapping)多数来保证安全性。

介绍

共识算法允许一个由多个机器的组成集合作为一个连贯的组工作,即使某些成员失败。然后就是说Paxos影响了很多共识算法,在大型可靠软件系统中扮演重要角色。但是很难理解,所以不好用。然后优化understandability,定义一种更容易懂的共识算法。然后想让这个新算法去促进构建系统的人的必要直觉(intuitions that are essential),. It was important not just for the algorithm to work, but for it to be obvious why it works.
然后设计的结果就是Raft算法。优化的过程进行了大量的分解(decomposition)还有状态空间缩减reduction,相比Paxos,Raft降低了不确定性的程度还有减少了每个服务器不一致的方式。
Raft跟现有的共识算法很像,但是有几个新颖的特点:

  • Strong Leader
    Raft 使用比其他共识算法更强的领导形式。 例如,日志条目(log entries)仅从领导者流向其他服务器。 这简化了复制日志的管理,使 Raft 更容易理解。
  • Leader election
    Raft使用了随机的定时器去选举leader,只是在所有共识算法都必须实现的心跳机制上加了一点机制,就可以简单快捷解决冲突问题。
  • Membership changes
    Raft使用一种联合一致的方法来处理集群成员的变换问题,在这种方法下,处于调整过程中的两种不同的配置集群中大多数机器会有重叠,这使得集群在成员变换的时候仍然可以继续工作。

我们相信Raft比Paxos还有其他的共识算法更加优秀,不仅仅是因为出于教育的目的还是作为实践项目的基础。它比其他算法更加简单、更加容易被理解。

Raft原文链接:In search of an Understandable Consensus Algorithm (Extended Version) 》(寻找一种易于理解的一致性算法)
Raft Live Demo: http://thesecretlivesofdata.com/raft/