基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
自动负载均衡
更新时间:2023-08-04 17:41:59
分区副本的自动负载均衡是指在租户拥有的 Unit 内调整分区副本的分布使得 Unit 的负载差值尽量小。分区副本的自动负载均衡是租户级别的行为,发生在单个可用区(Zone)内。即 RootService 调度某个租户的数据副本在 Zone 内发生迁移,达到该租户在该 Zone 上的全部 Unit 的负载均衡。
均衡组
分区副本均衡的目标是将某个租户在单个可用区(Zone)上的全部副本(Partition)均衡调度到该 Zone 的全部 Unit 上。在具体的分区副本均衡中,系统将该 Zone 内的全部 Partition 划分成若干个组,每个组作为均衡调度的一个基本单位,这样的组就称为一个均衡组。均衡组是一组 Partition 的集合。各均衡组之间相互独立,当每个均衡组内的 Partition 在组内达到负载均衡时,系统认为该 Zone 内的分区副本达到整体负载均衡。
OceanBase 数据库中目前共划分了以下 3 类均衡组:
第一类均衡组:包含多个分区的一个 Table Group下的所有 Partition 被认定为一个均衡组。
第二类均衡组:不属于任何 Table Group 的某个多分区表下的全部 Partition 被认定为一个均衡组。
第三类均衡组:除上述 Partition 以外的全部其他 Partition 被认定为一个均衡组。针对一个租户,此类均衡组在某个 Zone 内仅有一个。
均衡规则
在 OceanBase 数据库中,通过配置项 balancer_tolerance_percentage 来指定磁盘均衡的灵敏度参数,该配置项的值是一个百分数,取值范围为 [1, 100]。
各类均衡组结合配置项 balancer_tolerance_percentage 所遵循的均衡规则如下:
第一类均衡组
此类均衡组中的全部 Partition 来自于一个 Table Group,这类均衡组的均衡目标是,将 Partition Group 按照个数平均调度到 Zone 内的全部 Unit 上,使得各 Unit 上的 Partition Group 的数量差值最大不超过 1。在 Partition Group 个数满足要求的前提下,通过在 Unit 间交换 Partition Group,使各 Unit 磁盘使用量的差值小于配置项
balancer_tolerance_percentage设置的值。有关 Partition Group 的更多信息请参见 Table Group。
第二类均衡组
此类均衡组中的全部 Partition 来自于一个多分区表。这类均衡组的均衡目标是,将该多分区表的全部 Partition 按照个数平均调度到 Zone 内的全部 Unit 上,使得各 Unit 上的 Partition 数量差值最大不超过 1。在 Partition 个数满足要求的前提下,通过在 Unit 间交换 Partition,使各 Unit 磁盘使用量的差值小于配置项
balancer_tolerance_percentage设置的值。第三类均衡组
此类均衡组是除第一类和第二类均衡组以外的其他全部 Partition,系统将这些 Partition 按照个数调度到 Zone 内的全部 Unit 上,使得各 Unit 上的 Partition 数量差值最大不超过 1。在 Partition 个数满足要求的前提下,通过在 Unit 间交换 Partition,使各 Unit 磁盘使用量的差值小于配置项
balancer_tolerance_percentage的值。