您须要了解的有关Raft的5件事

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: 本文属于翻译,原文

相关文章
相关标签/搜索