1. Raft是一种易于理解的共识算法。算法
运行分布式系统的一个基本问题是确保当节点故障时它们是可靠的。一般,CPU可能会过热,HDD可能会损坏,网络可能不可靠,可能会发生电源中断,而且这种状况还会持续下去。相当重要的是要假设会发生故障,而且咱们须要一种方法来确保分布式系统能够承受故障。共识算法用于确保分布式系统具备容错能力,还用于确保节点在值上达成一致。例如,即便其中2台服务器发生故障而且它们的状态/值一致,由5台服务器组成的集群仍将可操做。安全
由图灵奖得到者莱斯利·兰波特(Leslie Lamport)建立的一种称为Paxos的共识协议因难以理解而闻名。 Lamport的描述主要是关于单Paxos。他勾画出了实现多Paxos的可能方法,可是缺乏许多细节。即便存在Neo4j,Google Spanner和Cassandra等基于多Paxos的著名应用程序,它们与Paxos几乎没有类似之处。服务器
Raft的建立易于理解且性能卓越。它旨在让大量读者轻松地理解算法,系统构建者能够在现实世界中进行不可避免的扩展。网络
2.Raft使用基于领导者的方法.分布式
Raft共识协议是一种基于领导者的方法,与Paxos等对等(P2P)方法相反。 Raft经过首先选举一位杰出的领导者,而后赋予领导者彻底责任来管理复制日志来实现共识。您必定想知道什么是复制日志。性能
共识算法本质上是复制状态机的实现,用于解决分布式系统中的各类容错问题。一般使用每一个服务器中都存在的复制日志(命令序列)来实现复制状态机。共识模块的工做是确保复制的日志在整个群集中保持一致。所以,状态机是肯定性的,即每一个状态机计算相同的状态和相同的输出序列。spa
3.每一个节点在任何给定时间处于三种可能状态之一。翻译
在Raft中,有三种可能的状态:领导者,候选人和追随者。
领导者负责将日志复制到关注者。它经过发送心跳消息按期通知跟随者其存在。
每一个跟随者都有一个超时(一般在150到300毫秒之间),在该超时中,指望跟随者的心跳。收到心跳后,超时将重置。
若是未收到心跳,则追随者将其状态更改成候选者,并开始进行领导者选举。日志
4.Raft的安全性能保证。blog
Raft保证如下安全属性:
5.Kubernetes的数据存储基于Raft。
Kubernetes由名为etcd的分布式键值存储支持,该存储用于存储和复制集群的状态。在内部,etcd使用Raft来确保一致性和容错能力。没有etcd,Kubernetes将没法在全部群集上协调任务,例如配置,部署,服务发现,负载平衡,做业调度和运行情况监视,这些群集能够在多个位置的多台机器上运行。
PS: 本文属于翻译,原文