1. TiDB 计算层无状态,可水平扩展;TiKV 基于 Raft 协议实现副本一致性
请解释 TiDB 计算层(TiDB Server)为何能做到无状态水平扩展,以及存储层 TiKV 如何基于 Raft 协议保证多副本之间的一致性?
- 掌握 TiDB 分层架构(计算层/存储层/调度层)各层职责
- 理解 Raft 协议在分布式副本一致性中的作用
- 认识计算层无状态与存储层有状态的分离设计
TiDB 采用"计算与存储分离"架构。计算层(TiDB Server)是无状态 SQL 层,负责解析 SQL、生成执行计划、执行算子并汇总结果,因为不保存数据,所以可以直接扩容/缩容,通过负载均衡器分发请求即可线性扩展。存储层 TiKV 是有状态的,按 Region 分片保存数据,每个 Region 默认 3 副本,通过 Raft 协议进行选主(Leader)与日志复制(Log Replication),只有 Leader 才能读写,Follower 通过提交日志同步,保证多数派写入后数据才对外可见,从而在网络分区或节点故障时仍能保持一致与可用。
这是 NewSQL 的典型架构:计算无状态使扩展简单可靠,存储层用 Raft 把"一致性"从单机事务扩展到了多副本。Raft 的多数派(quorum)机制保证了"少数派宕机不影响可用性,多数派提交才确认",这是 TiKV 一致性的基石。
-- 通过 pd-ctl 查看集群 region 与副本分布,验证 Raft 多副本
pd-ctl -u http://pd-host:2379 region
pd-ctl -u http://pd-host:2379 store