自己动手实现 Raft 状态机,将用于 pingchuan-mq 的消息队列中
Raft 通过日志进行备份状态机。如果你能确保所有的物理机器有相同的日志顺序,然后所有的日志都能够按顺序落地到磁盘中,那么这些物理机器都将保持一直状态。
一个完整的 Raft 模型应该包含4个基础模块:
- 一致性模块,即核心的一致性算法模块;
- 日志模块,用于保存 Raft 日志;
- 状态机,用于保存用户状态数据;
- 传输模块,用于网络层通讯;
注意:这个 Raft 状态机实现只包含一致性模块,没有其他模块,你需要构建自己的日志的模块,状态机模块跟传输模块。