什么是Raft?
Raft是一种共识算法,其设计目的是易于理解。它是在容错性和性能方面与Paxos相当。区别在于它被分解成相对独立的子问题,并且它非常清晰解决了实际系统所需的所有主要部分。我们希望Raft能更广泛的受众可以达成共识能够开发出比目前更高质量的基于共识的系统今天可用。
坚持到底什么是共识?
一致性是容错分布式系统中的一个基本问题。共识涉及多个服务器就价值达成一致。一旦他们达到决定一个值,这个决定是最终的。典型共识算法大多数服务器可用时的进度;例如,a即使2台服务器出现故障,5台服务器的集群也可以继续运行。如果更多服务器出现故障,它们将停止进展(但不会返回结果不正确)。
共识通常出现在复制状态机的上下文中构建容错系统的一般方法。每个服务器都有一个状态机器和原木。状态机是我们想要制作的组件容错,例如哈希表。在客户看来,他们是与单个可靠的状态机交互,即使群集中的服务器出现故障。每个状态机都接受来自的输入命令它的日志。在我们的哈希表示例中,日志将包括以下命令设置x到3。一致性算法用于同意服务器日志。一致性算法必须确保如果任何状态机应用将x设置为3作为n个第个命令,无其他命令状态机将应用不同的n个第个命令。作为一个结果,每个状态机处理相同的命令序列,因此产生相同的结果序列并达到相同的状态序列。