2个版本
0.1.1 | 2024年3月7日 |
---|---|
0.1.0 | 2024年1月25日 |
在异步中排名2049
每月下载22次
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