Skip to content

minimal_node

examples/minimal_node/ 是最小可运行示例,说明 raftpp 的基本接入方式。

  • 一个最小可工作的 StateMachine
  • 如何构造 RaftorConfig
  • 如何创建、启动、轮询并停止 Raftor
  • 单节点如何自动成为 leader。
  • 示例源码:examples/minimal_node/main.cc
  • 构建目标:minimal-node-example

在仓库根目录执行:

Terminal window
task cmake
cmake --build build --target minimal-node-example
Terminal window
./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。

可按以下顺序扩展为业务节点:

  1. Apply() 改造成真实业务命令处理。
  2. 为快照定义稳定的序列化格式。
  3. 把单节点配置扩展成多节点 initial_peers
  4. 增加提案入口和读接口。

更完整的应用级示例见kvstore