本文档详细介绍 TDSQL Boundless 的弹性扩缩容机制和负载均衡策略。
弹性扩缩容
扩缩容概述
TDSQL Boundless 的核心特性之一是实现业务无感知的扩缩容,确保扩缩容过程中业务请求不受性能抖动影响。
扩缩容就是数据分片 - 复制组 - 物理节点三者关系的重组:
|
数据逻辑关系变化 | Region 的分裂和合并 Region 在 RG 上的转移 RG 创建和删除 |
数据物理关系变化 | RG 迁移(成员变更) |
分裂操作
分裂是将单个 Replication Group 拆分成两个,各自管理拆分前的部分数据。
分裂流程:
1. 初始状态:TDStore1、2、3上存在数据量大的 RG3,新增 TDStore4 节点
2. Replication Group 分裂:将一部分 Key Range Region 划分到新 RG,构建新 Raft Group
3. 分裂完成:两个 RG 分别承担分裂前一部分的压力
分裂特点:
迁移操作
迁移是指将 Raft Group 的某个 follower 副本转移到新节点的过程。
迁移流程:
2. Leader 执行 install snapshot 流程,将完整 RG 数据同步至新副本
核心价值:
数据分散:实现数据在不同 TDStore 节点间的均衡分布
读写无感:follower 的创建与销毁不影响 Leader 的正常读写操作
切主操作
切主是指将 Raft Group 中的 Leader 角色切换到另一个 Raft 副本的过程。
切主流程:
1. 事务信息预同步:将原 Leader 的未完成活跃事务上下文信息提前发送给目标节点
2. Raft 层 Leader 切换:在事务信息同步完成后,触发正式的 Leader 切换操作
核心目的:通过分散 Leader 热点,实现负载均衡。
保证:提前同步事务信息,切主过程中不会终止任何进行中的事务。
负载均衡
负载均衡与数据亲和性协同
MC 实现了负载均衡与数据亲和性协同调度机制:
协同调度流程:
1. 初始分布策略:均匀分布原则,Leader 均衡,副本均衡
2. 动态扩容感知:计算新增节点容量,重新评估分布均衡性,迁移部分数据分片
3. 持续优化机制:定期重新计算数据分布,渐进式优化
4. 极端情况处理:数据倾斜过高时,分裂表数据并进行副本搬迁
2.2 热点检测与智能调度
MC 实现了智能化的热点检测与负载均衡系统:
热点检测机制:
1. 实时数据上报:节点心跳上报基本信息和 Region 级别读写流量统计
2. 多维度负载状态:MC 维护 Multi-TopN 记录(Byte/Key/Query 维度)
3. 智能调度算法:基于 MovingAverage 避免冲击负载,计算热度得分选择最佳分布