12个不稳定版本 (3个破坏性更新)

0.4.4 2020年4月18日
0.4.3 2020年2月13日
0.4.2 2019年10月17日
0.3.1 2019年10月3日
0.1.3 2019年8月27日

#1362 in 异步

每月50次下载

MIT/Apache

235KB
3K SLoC

actix raft

Build Status Crates.io docs.rs License Crates.io Crates.io GitHub issues open GitHub issues closed

使用Actix actor框架实现的Raft分布式一致性协议。快速的Rust实现,现代一致性协议,优秀的actor框架。本项目旨在为下一代用Rust构建的分布式数据存储系统(SQL、NoSQL、KV、流等)提供基础设施。请在 github 上 ⭐ 支持!

指南 是开始的最佳位置,随后是文档,提供更深入的细节。

与其它Raft实现不同之处在于

  • 它是完全反应式的,并拥抱异步生态系统。它由系统中实际发生的与Raft相关的事件驱动,而不是由 tick 操作驱动。在复制过程中尽可能使用消息批处理以实现最大吞吐量。
  • 通过两个特质 RaftStorageRaftNetwork 定义了存储和网络集成。这为应用提供了最大的灵活性,可以自由选择存储和网络介质。这也允许存储接口根据使用的存储引擎是同步的还是异步的,并且允许与actix生态系统中的网络组件高效集成。请参阅指南中的存储网络章节。
  • 通过本仓库中 messages 模块中定义的Actix消息类型向运行中的Raft节点提交Raft RPCs和客户端请求也是定义良好的。该系统的API清晰简洁。请参阅指南中的raft章节。
  • 它完全支持根据 Raft 规范动态更改集群成员资格。请参阅指南中的 dynamic membership 章节。
  • 指南中的 集群形成 章节讨论了初始集群形成的详细信息以及如何从应用程序层面有效地执行。

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

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

贡献

有关开始为此项目做出贡献的更多详细信息,请查看 CONTRIBUTING.md 指南。

许可证

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


注意:此项目中的 "章节" 符号 § 出现在特定章节的 Raft 规范中。

依赖关系

~10MB
~187K SLoC