13个版本

0.6.1 2021年5月19日
0.6.0 2021年1月21日
0.6.0-alpha.12020年12月2日
0.6.0-alpha.02020年11月24日
0.0.0 2020年8月5日

异步 中排名第 570

Download history 239/week @ 2024-03-13 376/week @ 2024-03-20 257/week @ 2024-03-27 283/week @ 2024-04-03 396/week @ 2024-04-10 258/week @ 2024-04-17 302/week @ 2024-04-24 202/week @ 2024-05-01 214/week @ 2024-05-08 257/week @ 2024-05-15 356/week @ 2024-05-22 247/week @ 2024-05-29 231/week @ 2024-06-05 318/week @ 2024-06-12 165/week @ 2024-06-19 209/week @ 2024-06-26

每月下载量 949
用于 7 包(4 个直接使用)

MIT/Apache

225KB
3K SLoC

async raft

使用Tokio框架实现的Raft分布式一致性协议的实现。请在github上点赞

Build Status Crates.io docs.rs License Crates.io Crates.io


闪电般的Rust、现代一致性协议和可靠的异步运行时 — 此项目旨在为下一代分布式数据存储系统(SQL、NoSQL、KV、流、图...或可能还有更奇特的东西)提供一致性后端。

指南是开始的最佳地方,然后是文档以获取更深入的信息。

该crate与其他Raft实现的不同之处在于

  • 它是完全反应式的,并拥抱异步生态系统。它由系统实际发生的Raft事件驱动,而不是由tick操作驱动。在复制过程中,尽可能使用消息批处理以实现最大吞吐量。
  • 通过两个特质RaftStorageRaftNetwork定义了存储和网络集成。这为应用程序提供了最大灵活性,能够选择他们的存储和网络介质。有关详细信息,请参阅指南中的存储网络章节。
  • 所有与Raft节点的交互都通过单个公共Raft类型定义,该类型用于生成Raft异步任务,并与该任务交互。该系统的API清晰简洁。请参阅指南中的raft章节。
  • 日志复制已完全采用管道化和批量处理以实现最佳性能。日志复制还使用了拥塞控制机制,以尽可能高效地帮助节点保持最新状态。
  • 它完全支持根据 Raft 规范动态更改集群成员。请参阅指南中的动态成员资格章节。它完全支持领导者降级和非投票者同步。
  • 关于初始集群形成以及从应用程序的角度如何有效执行的详细信息,请参阅指南中的集群形成章节。
  • 完全支持带有快照的自动日志压缩以及从领导者节点到跟随者节点的快照流。
  • 整个代码库都进行了跟踪。这可以用于标准日志记录,或用于分布式跟踪,并且可以在编译时静态配置详细程度以完全删除配置级别以下的所有跟踪。

此实现严格遵循Raft 规范PDF 警告),所有数据模型都使用规范中找到的相同命名法以提高可理解性。此 Raft 实现的集成测试涵盖了 Raft 集群生命周期的各个方面,包括:集群形成、动态成员资格更改、快照、向活动集群写入数据等。

如果您正在使用此 Raft 实现构建应用程序,请打开一个问题并告诉我!我非常愿意将您项目的名称和标志添加到本项目中的用户列表中。

贡献

请参阅CONTRIBUTING.md指南,以获取有关开始为此项目做出贡献的更多详细信息。

许可

async-raft 在 MIT 许可证或 Apache 许可证 2.0 的条款下许可,由您选择。


注意:本项目中的“部分”符号§的出现是对 Raft 规范特定部分的引用。

依赖关系

~4–6.5MB
~109K SLoC