1. Raft 协议(算法)

Paxos 协议和 Raft 协议都是为了解决分布式场景下的数据一致性问题。

etcd 集群使用 Raft 协议保障多节点集群状态下的数据一致性。etcd 是使用 Go 语言对 Raft 协议一种实现方式。

在 Raft 体系中,有一个强 leader,由它全权负责接收客户端的请求命令,并将命令作为日志条目复制给其他服务器,在确认安全的时候,将日志命令提交执行。当 leader 故障时,会选举产生一个新的 leader。在强 leader 的帮助下,Raft将一致性问题分解为了三个子问题:

  • Leader 选举:当已有的leader故障时必须选出一个新的leader。
  • 日志复制:leader接受来自客户端的命令,记录为日志,并复制给集群中的其他服务器,并强制其他节点的日志与leader保持一致。
  • 安全 safety 措施:通过一些措施确保系统的安全性,如确保所有状态机按照相同顺序执行相同命令的措施。

解这三个子问题的过程,保障了数据的一致。

etcd 只是 Raft 协议的一种实现机制,如果对协议理解足够深,也可以自己用其他语言实现,比如 rache

Raft 协议入门了解可以

Raft 协议论文翻译:

Raft 协议论文原文:

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2023-10-26 17:23:11

results matching ""

    No results matching ""