尽管 ETCD 使用的是 CP 算法 Raft,但它如何成为一个高可用系统?

Shi*_*hal 7 distributed-system cap-theorem raft etcd kubernetes

这是来自Kubernetes 文档

一致高度可用的键值存储用作 Kubernetes 所有集群数据的后备存储。

Kubernetes 内部是否有单独的机制来使 ETCD 更可用?或者 ETCD 是否使用 Raft 的修改版本来实现这种超能力?

Mik*_*iak 8

当涉及到 etcd 详细信息时,最好使用官方 etcd 文档

etcd是一个高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。它可以在网络分区期间优雅地处理领导者选举,并且可以容忍机器故障,即使是在领导节点中也是如此。

这里没有提到这是高可用。至于容错,您可以在这里找到关于该主题的非常好的段落:

只要可以建立成员仲裁,etcd 集群就会运行。如果由于短暂的网络故障(例如分区)而导致仲裁丢失,一旦网络恢复并恢复仲裁,etcd 就会自动安全地恢复;Raft 强制集群一致性。对于断电,etcd 将 Raft 日志持久保存到磁盘;etcd 重播日志到故障点并恢复集群参与。对于永久性硬件故障,可以通过运行时重新配置将节点从集群中删除 。

建议集群中的成员数量为奇数。奇数大小的集群可以容忍与偶数大小的集群相同数量的故障,但节点数量较少。

您还可以找到关于理解 etcd 的非常好的文章:

Etcd 是一个强一致性系统。它为事务提供可线性化的读取和写入以及可序列化的隔离。更具体地表达,根据PACELC定理,即CAP定理表达的思想的延伸,它是一个CP/EC系统。它针对正常情况下的延迟一致性和分区情况下的可用性一致性进行优化。

另请看这张图片:在此输入图像描述