
分布式数据库架构分为三层:存储层负责数据分片与复制,保障可靠性;计算层处理分布式查询与事务,实现计算扩展;协调层管理节点通信与一致性协议,确保全局
存储层:数据分片与副本管理
核心功能
- 数据分片(Sharding):将海量数据按规则拆分为多个子集,分散存储在不同节点,提升并行处理能力。
- 副本机制:通过数据复制实现高可用,常见策略包括主从复制(异步/半同步)和多主复制(如Paxos/Raft协议)。
- 持久化存储:依赖本地存储引擎(如LSM-Tree、B+树)确保数据可靠写入和高效查询。
关键技术
技术点 | 实现方式 | 挑战 |
分片策略 | 哈希分片(均匀分布)、范围分片(连续数据)、目录分片(自定义规则) | 热点数据倾斜、跨分片事务处理 |
副本同步 | 异步复制(低延迟但弱一致性)、半同步复制(折中)、同步复制(强一致性但高延迟) | 网络分区容忍与一致性平衡 |
存储引擎 | Log-Structured Merge Tree(LSM)、列式存储(压缩效率高) | 写放大效应、读放大问题 |
典型场景
- OLAP场景:采用列式存储优化分析查询,结合范围分片支持时间序列数据。
- OLTP场景:使用哈希分片均匀分布负载,主从复制保障读写分离。
计算层:分布式查询与事务处理
核心功能
- 查询优化与执行:将SQL解析为分布式执行计划,优化数据节点间的数据流动。
- 分布式事务管理:保证跨分片操作的ACID特性,依赖两阶段提交(2PC)或Tary(TCC)协议。
- 容错与恢复:通过冗余计算和日志记录实现故障切换。
关键技术
技术点 | 实现方式 | 挑战 |
查询优化 | 代价模型(统计信息收集)、基于规则的优化(谓词下推) | 跨分片Join的复杂度 |
分布式事务 | 2PC(阻塞式)、TCC(补偿机制)、Raft-based协议(如Spanner的TrueTime) | 性能损耗与一致性分级 |
执行引擎 | 火山模型(迭代器)、向量化执行(批处理) | 网络传输与本地计算的平衡 |
典型问题
- 跨分片事务:例如银行转账需更新两个分片,需解决分布式锁与一致性冲突。
- 全局排序与聚合:如
ORDER BY
需跨分片收集数据,可能引发木桶效应。
协调层:元数据管理与一致性保障
核心功能
- 元数据管理:维护分片路由表、节点状态、副本映射关系。
- 分布式协调:通过共识算法(如Raft)选举主节点,管理分布式锁和配置更新。
- 一致性协议:确保元数据变更的全局一致性,避免脑裂问题。
关键技术
技术点 | 实现方式 | 挑战 |
元数据存储 | ETCD/Consul(键值存储)、ZooKeeper(临时节点) | 动态扩缩容时的数据迁移 |
共识算法 | Raft(多数派决策)、Paxos(复杂但高可靠) | 网络延迟与节点故障恢复 |
路由策略 | 客户端缓存路由表、代理层动态路由(如DNS解析) | 路由表实时性与缓存失效 |
典型场景
- 节点故障恢复:协调层检测到节点宕机后,触发副本重新分配和数据迁移。
- 扩缩容操作:通过元数据更新分片路由,实现数据自动平衡。
三层架构协同关系
层次 | 职责 | 依赖关系 |
存储层 | 数据物理存储与副本管理 | 为计算层提供数据读写接口 |
计算层 | 查询执行与事务处理 | 依赖协调层的元数据进行路由决策 |
协调层 | 全局一致性与资源管理 | 监控存储层状态,驱动计算层调度 |
FAQs
Q1:如何选择合适的数据分片策略?
- 场景匹配:哈希分片适合均匀分布的数据(如用户ID),范围分片适合时间序或连续查询(如订单时间)。
- 评估倾斜:热点数据需结合混合分片(如哈希+范围)或动态调整分片键。
- 扩展性:范围分片易扩容,但可能引发迁移开销;哈希分片需预规划容量。
Q2:分布式事务的一致性如何保障?
- 强一致性方案:使用2PC或Raft协议,但牺牲部分性能(如Spanner的TrueTime)。
- 最终一致性方案:采用Base理论,通过补偿机制或幂等设计降低一致性要求(如电商库存扣减)。
- 分级处理:核心业务(如支付)强一致,非核心业务(