8个版本
0.6.3 | 2023年9月26日 |
---|---|
0.6.2 | 2023年9月5日 |
0.6.2-beta.4 | 2023年9月4日 |
#418 in 异步
每月 101 次下载
用于rnacos
225KB
3K SLoC
async raft
在保持rnacos接口不变的情况下,增强了raft的能力。
闪电般的Rust,现代共识协议和可靠的异步运行时 — 此项目旨在为下一代分布式数据存储系统(SQL、NoSQL、KV、流、图 ... 或可能还有更多异类)提供共识骨干。
此crate与其他Raft实现的不同之处在于
- 它是完全反应式的,并拥抱异步生态系统。它由系统中实际发生的Raft事件驱动,而不是由一个
tick
操作驱动。在复制过程中,尽可能使用消息批处理以实现最大吞吐量。 - 通过两个trait
RaftStorage
&RaftNetwork
定义了存储和网络集成。这为应用程序提供了在存储和网络介质方面选择的最大灵活性。有关详细信息,请参阅指南中的存储 & 网络章节。 - 所有与Raft节点的交互都通过一个公共的
Raft
类型进行定义,该类型用于生成Raft异步任务,并与该任务交互。该系统的API清晰简洁。请参阅指南中的raft章节。 - 日志复制已完全实现管道化和批量处理,以实现最佳性能。日志复制还使用拥塞控制机制,以尽可能高效地帮助节点保持最新状态。
- 它完全支持根据 Raft 规范动态更改集群成员。请参阅指南中的
dynamic membership
章节。它完全支持领导者降级和非投票者同步。 - 关于初始集群形成以及如何从应用程序的角度有效地执行,请参阅指南中的cluster formation章节。
- 完全支持带有快照的自动日志压缩,以及从领导者节点到从属节点的快照流。
- 整个代码库都使用跟踪进行了配置。这可用于标准日志记录或用于分布式跟踪,并且可以在编译时静态配置详细程度,以完全删除配置级别以下的所有跟踪。
此实现严格遵守Raft 规范(pdf 警告),并且所有数据模型都使用规范中找到的相同命名法,以增强可理解性。此 Raft 实现包含涵盖 Raft 集群生命周期所有方面的集成测试,包括:集群形成、动态成员更改、快照、将数据写入活动集群等。
如果您正在使用此 Raft 实现构建应用程序,请提出一个问题并告诉我!我很乐意将您的项目名称和徽标添加到此项目的用户列表中。
贡献
有关如何开始为此项目做出贡献的更多详细信息,请参阅CONTRIBUTING.md指南。
许可
async-raft 可以根据您的选择在 MIT 许可证或 Apache 许可证 2.0 的条款下获得许可。
注意:此项目中的“章节”符号§
的出现是对 Raft 规范特定章节的引用。
依赖项
~4–6.5MB
~109K SLoC