2个版本

0.1.1 2024年3月7日
0.1.0 2024年1月25日

异步中排名2049

每月下载22

MIT/Apache

29KB
613

one-file-raft

这是一个简洁的、易于演示的Raft共识算法实现,包含在一个Rust文件中,大约300行。

主要目标是提供一个教育性示例,展示分布式共识协议的核心原则,不受特定应用业务逻辑、边缘情况管理和错误处理的复杂性影响。

实现重点在于Raft的基本方面,如领导者选举、日志复制和日志提交,而省略了日志压缩和日志清除等高级功能。

./loc.sh
     300

对于Raft的生产使用,请参阅Openraft


lib.rs:

特性

  • 选举(Raft::elect())
  • 日志复制(Raft::handle_replicate_req())
  • 提交
  • 写入应用程序数据(Raft::write())
  • 成员存储(Store::configs).
  • 成员变更:联合共识。
  • 事件循环模型(主循环:Raft::run())。
  • 由mpsc通道模拟的伪网络(Net).
  • 由内存存储模拟的伪日志存储(Store).
  • Raft日志数据是简单的String
  • 指标

尚未实现

  • 状态机(Raft::commit()是一个无操作条目)
  • 日志压缩
  • 日志清理
  • 心跳
  • 领导者租约
  • 可线性化读取

实现细节

  • 成员配置一旦附加即生效(非应用中)。
  • 独立领导者,访问本地存储时必须检查投票。
  • 领导者直接访问存储(非通过RPC)。
  • 投票时追加日志?

依赖项

~3-5MB
~83K SLoC