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

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

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

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

4.Raft的安全性能保证。

Raft保证以下安全属性:

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

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

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

PS: 本文属于翻译,原文

你可能感兴趣的:(raft,etcd)