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

6次阅读

共计 1285 个字符,预计需要花费 4 分钟才能阅读完成。

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 通过首先选举一位杰出的领导者,然后赋予领导者完全责任来管理复制日志来实现共识。您一定想知道什么是复制日志。

共识算法本质上是复制状态机的实现,用于解决分布式系统中的各种容错问题。通常使用每个服务器中都存在的复制日志(命令序列)来实现复制状态机。共识模块的工作是确保复制的日志在整个群集中保持一致。因此,状态机是确定性的,即每个状态机计算相同的状态和相同的输出序列。

3. 每个节点在任何给定时间处于三种可能状态之一。

在 Raft 中,有三种可能的状态:领导者,候选人和追随者。
领导者负责将日志复制到关注者。它通过发送心跳消息定期通知跟随者其存在。
每个跟随者都有一个超时(通常在 150 到 300 毫秒之间),在该超时中,期望跟随者的心跳。收到心跳后,超时将重置。
如果未收到心跳,则追随者将其状态更改为候选者,并开始进行领导者选举。

4.Raft 的安全性能保证。

Raft 保证以下安全属性:

  • 选举安全:在给定的任期内最多可以选举一位领导人。
  • 仅领导者追加:领导者只能将新条目追加到其日志中(既不能覆盖也不能删除条目)。
  • 日志匹配:如果两个日志包含具有相同索引和术语的条目,则直到给定索引的所有条目中的日志都是相同的。
  • 领导者完整性:如果在给定期限内提交了日志条目,则自该术语以来,它将出现在领导者的日志中
  • 状态机安全性:如果服务器已将特定的日志条目应用于其状态机,则没有其他服务器可以对同一日志应用不同的命令。

5.Kubernetes 的数据存储基于 Raft。

Kubernetes 由名为 etcd 的分布式键值存储支持,该存储用于存储和复制集群的状态。在内部,etcd 使用 Raft 来确保一致性和容错能力。没有 etcd,Kubernetes 将无法在所有群集上协调任务,例如配置,部署,服务发现,负载平衡,作业调度和运行状况监视,这些群集可以在多个位置的多台机器上运行。

PS: 本文属于翻译,原文

正文完
 0