本文档详细介绍 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 分别承担分裂前一部分的压力
分裂特点:
仅在上层逻辑模块进行复制组拆分
底层 KV 数据未发生物理变动
对系统 IO 的影响较为有限
迁移操作
迁移是指将 Raft Group 的某个 follower 副本转移到新节点的过程。


迁移流程:
1.
在目标节点为待迁移的复制组创建新副本
2.
Leader 执行 install snapshot 流程,将完整 RG 数据同步至新副本
3.
删除待迁移的旧副本("先增后减"策略)
核心价值:
数据分散:实现数据在不同 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 避免冲击负载,计算热度得分选择最佳分布