7

tikv/raft-rs:在 Rust 中实现的 Raft 分布式共识算法源码

 2 years ago
source link: https://www.jdon.com/58117
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

tikv/raft-rs:在 Rust 中实现的 Raft 分布式共识算法源码

在构建分布式系统时,一个主要目标通常是构建容错。也就是说,如果网络中的一个特定节点出现故障,或者存在网络分区,则整个集群不会发生故障。参与分布式共识协议的节点集群必须就价值达成一致,一旦达成该决定,该选择即为最终决定。

分布式共识算法通常采用复制状态机和日志的形式。每个状态机接受来自其日志的输入,并表示要复制的值,例如哈希表。它们允许一组机器作为一个连贯的组工作,可以在其某些成员的失败中幸存下来。

两个著名的分布式共识算法是 Paxos 和 Raft。Paxos 被用在像谷歌的Chubby这样的系统中,而 Raft 被用在像tikvetcd之类的东西中。

Raft 通常被视为比 Paxos 更易于理解和更易于实现。

Raft算法学习可见:分布式系统Raft算法

Raft 通过日志复制状态机。如果可以保证所有机器的日志顺序一致,那么在按顺序应用所有日志后,状态机就会达到一致的状态。

一个完整的 Raft 模型包含 4 个基本部分:

  1. Consensus Module,核心共识算法模块;
  2. Log,存放 Raft 日志的地方;
  3. 状态机,保存用户数据的地方;
  4. 传输,用于通信的网络层。

注意:这个 Rust 项目中的 Raft 实现仅包括核心共识模块,不包括其他部分。Raft crate 中的核心共识模块是可定制的、灵活的和有弹性的。您可以直接使用 Raft crate,但您需要构建自己的日志、状态机和传输组件。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK