minimal_node
examples/minimal_node/ 是最小可运行示例,说明 raftpp 的基本接入方式。
示例展示了什么
Section titled “示例展示了什么”- 一个最小可工作的
StateMachine。 - 如何构造
RaftorConfig。 - 如何创建、启动、轮询并停止
Raftor。 - 单节点如何自动成为 leader。
- 示例源码:
examples/minimal_node/main.cc - 构建目标:
minimal-node-example
在仓库根目录执行:
task cmakecmake --build build --target minimal-node-example./build/examples/minimal_node/minimal-node-example程序创建本地数据目录 ./minimal-node-data,启动节点 ID 为 1 的单节点集群,反复调用 Poll() 驱动事件循环,等待节点当选 leader。
程序在 20 次轮询内检测到 leader 后返回 0;如果未当选 leader 或启动失败,则返回 1。
- 不引入 HTTP、CLI 或额外业务协议。
- 状态机实现较小,便于理解接口边界。
- 覆盖最小接入所需的关键步骤。
- 快照 payload 通过
SnapshotWriter写入一个最小字节,并在恢复时从SnapshotReader读到 EOF。
可按以下顺序扩展为业务节点:
- 把
Apply()改造成真实业务命令处理。 - 为快照定义稳定的序列化格式。
- 把单节点配置扩展成多节点
initial_peers。 - 增加提案入口和读接口。
更完整的应用级示例见kvstore。