项目/raftpp

更新于 2026/06/20

raftpp

现代 C++17 Raft 实现,包含一致性核心、分段 WAL、RPC transport 与高层运行循环。

raftpp 是一个 C++17 Raft 实现。它不只提供状态机核心,还包含日志持久化、网络 transport 与高层 Raftor 运行循环,可用于理解一套 Raft 组件如何连接成完整节点。

核心能力

  • 完整角色状态机:Follower、Candidate、PreCandidate 与 Leader。
  • 动态成员变更:通过 joint consensus 安全切换集群配置。
  • 线性一致读:提供 ReadIndex 与只读请求队列。
  • 日志管理:内存 unstable buffer 与可替换 Storage 接口。
  • 分段 WAL:CRC32C 校验、快速索引查询与基于快照的压缩。
  • RPC:抽象 Transport 接口,并提供 Cap’n Proto 实现。

Raftor 将 tick、Ready 处理、proposal tracking、快照和 transport 组织进单线程事件循环,对外提供线程安全的 proposal 与 read API。仓库同时提供单节点示例和带 HTTP 前端的分布式 KV 示例。

验证方式

项目包含单元测试、data-driven 测试,并在 x64 与 ARM64 上持续运行 AddressSanitizer 和 ThreadSanitizer。Code coverage 通过 llvm-cov 生成。

Seastar 集成目前是可选实验功能,不属于默认兼容基线;项目也尚未提供稳定版本承诺。接口与部署方式应以文档站和仓库当前状态为准。

相关阅读

长文阿里盘古性能导向的演进长文PolarFS: An Ultra-low Latency and Failure Resilient Distributed File System for Shared Storage Cloud Database长文TLA+ 学习笔记