TiDB Raft 协议研究报告

TiDB 底层 TiKV 依托 Multi-Raft 架构,将数据划分为独立 Region 对应单独 Raft 组完成数据分片,Region 分裂、合并、迁移与集群负载均衡由 PD 调度实现;TiKV 采用事件驱动模型处理 Raft Ready,各 Region 独立使用 RocksDB WriteBatch 批量落盘,搭配日志复制流水线、网络消息批处理提升写入吞吐。读取侧分层提供多种一致性方案:Raft Log Read 为写读合一强一致方案极少使用;ReadIndex 通过一轮多数派心跳确认 Leader 身份规避日志写入开销;Lease Read 依靠心跳持续续期租约,租约时长受选举超时与时钟漂移约束,仅单机房集群可开启,租约有效期内无需和 Follower 交互即可本地读;Follower Read 分为线性一致的 ReadIndex 模式与弱一致 Stale Read,前者需向 Leader 获取最新提交索引同步本地状态,可实现全局线性一致。成员变更采用 Joint Consensus 联合共识,支持单步批量增减副本,规避传统 Raft 配置切换的可用性风险;TiKV 严格遵循 Raft 安全规范,Raft 日志必须本地同步持久化后才向副本发送复制请求,不存在异步落盘写入机制,多层优化协同保障集群强一致、高可用与读写性能。