Raft论文
Posted crazstom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Raft论文相关的知识,希望对你有一定的参考价值。
摘要
Raft是用来管理复制日志的共识算法。它的效果和效率与Paxos一样,但是结构不同;这使得Raft比Paxos更容易理解,同时为构建实际系统提供良好的基础。为了更容易理解,Raft把算法中的各个部分分离开来,例如leader选举,log复制,安全性等,并增强了一致性程度来减少需要考虑的状态数。研究结果表明Raft就是比Paxos简单。Raft也使用了一个新的机制来处理集群成员变化,进而保证安全性的。
1. 介绍
Raft的显著特点:
强有力的leader:相较于其他的共识算法,Raft使用更强硬的leader形式。例如,日志条目只会从leader流向其他的server。这简化了复制日志的管理流程,使得Raft容易理解。
leader选举:Raft使用随机定时器来选举leader。它的实现仅仅是在心跳上增加少量机制,同时又可以轻松、快速地解决问题。
集群成员变化:Raft处理集群中服务器变化的机制使用了joint consensus方法,其中,转换期间两个不同的配置集群的大多数成员重合。这允许集群在配置变化时也可以正常执行。
从教育和实现角度,Raft都是比Paxos要简单的。
2. 复制状态机
共识算法通常出现在复制状态机的环境中。在这种方法中,服务器集群中的状态机计算某一状态的相同副本,即使某些服务器宕机也可以继续运行。复制状态机被用来解决一系列分布式系统的FT(Fault tolerance)问题。例如,具有单个集群leader的大型系统(GFS、HDFS和RAMCloud)使用一个独立的复制状态机管理leader选举过程以及不受leader宕机影响的配置信息。复制状态机的例子包括Chubby和ZooKeeper。
图1是复制状态机的结构。共识算法管理复制日志,日志包括了来自客户端的状态机指令。这些状态机执行特定顺序的日志指令,从而它们也会产生相同的输出。
每个服务器都储存了一条日志,这个日志包含了一系列的指令,服务器的状态机也会按照这个顺序执行指令。每个日志都以相同的顺序包含了相同的指令,所以每个状态机执行相同顺序的指令。因为这些状态机是确定的,每个状态机执行相同的状态,然后产生相同的输出。
共识算法的任务就是保证复制日志的一致性。一个服务器的共识模型接受客户端的指令然后添加到它的日志中。它会和其他服务器上的共识模型交流,保证每一条日志最终以相同的顺序包含相同的指令,即使某些服务器宕机了。一旦客户端指令被复制到所有的日志中,每个服务器的状态机都会按照日志中的顺序执行,然后把输出返回给客户端。因此,这些服务器表现为一个高可靠性的状态机。
用于实际系统的共识算法通常有如下特性:
安全性:不会返回错误的结果,非拜占庭条件,包括网络延迟、分片和丢包、重复。
可靠性:只要集群的大部分服务器都在工作并且同客户端交流,这个服务就是可靠的。因此,有五个服务器的集群可以容忍两台服务器的宕机。服务器可能会因为宕机而失败;而他们可能会重启并从磁盘存储中恢复其状态,然后加入集群。
不依赖时间来保证日志一致性:错误的时钟和信息延迟可能导致不可用问题。
通常情况下,只要大多数集群已对单个远程过程调用作出响应,命令可以很快完成;少数慢服务器不影响整体系统性能
3. Paxos的问题
难理解。一开始使用很多希腊词汇,后来提出了简单的版本。
难实现。Lamport的描述主要是关于单一法令的Paxos;他勾画出了实现Multi-Paxos的可能方法,但是许多细节都遗漏了。
4. 易懂性设计
将共识算法的问题拆分开来分析。
简化状态空间。使用随机化来简化leader选举算法
以上是关于Raft论文的主要内容,如果未能解决你的问题,请参考以下文章