官方文档中关于LS数量计算的疑问

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000821579
上述文档中提到

LS 数量 = UNIT_NUM * first_level_primary_zone_num

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000819175
上述文档中提到

用户租户单个节点上达到稳定状态的日志流个数
   * 当前用户租户有广播日志流时:`Unit 个数 * PRIMARY_ZONE 个数 + 2`
   * 当前用户租户没有广播日志流时:`Unit 个数 * PRIMARY_ZONE 个数 + 1`

我的疑问是,这两篇文档中的公式,如何统一起来理解,尤其是第二篇文档中的公式,这里"Unit 个数"和"PRIMARY_ZONE 个数"具体指的是什么,单个租户在单个节点上,难道不是仅允许放置一个Unit吗,"PRIMARY_ZONE 个数"不用考虑优先级什么的吗?公式里为什么要+1或者+2?

第一个链接中,不包含1号日志流
LS 数量 = UNIT_NUM * first_level_primary_zone_num


第2个链接中, 包含1号日志流
 当前用户租户有广播日志流时:`Unit 个数 * PRIMARY_ZONE 个数 + 2
 当前用户租户没有广播日志流时:`Unit 个数 * PRIMARY_ZONE 个数 + 1

当前用户租户有广播日志流时,+2 :(1个1号日志流+1个广播日志流)
当前用户租户没有广播日志流时 +1:   (1个1号日志流)


2 个赞

你好,广播日志流时用于承载复制表的,没有复制表就没有.
UNIT个数select * from gv$OB_UNITS where tenant_id=xxxx;
primary_zone可以理解为leader副本所在的zone.

1 个赞

第2个链接中,"Unit 个数"是否指UNIT_NUM?,对于单个租户在单个节点上的资源而言,它最多只会有一个UNIT,为什么要乘以Unit个数?
第2个链接中,"PRIMARY_ZONE 个数"是否指first_level_primary_zone_num,还是PRIMARY_ZONE中所有优先级的zone?

1、链接2中:unit个数指的就是unit_num,之所以要带上unit_num,为了和链接1、以及多unit_num的情况下计算公式统一。

2、链接2中:PRIMARY_ZONE 个数" 也是指的 first_level_primary_zone_num。

感谢反馈,我们找文档同学确认后调整一下相关的描述。

1 个赞

你好,unit_num这里我还是没理解,就以官方文档以前的架构图介绍为例。从图中可以看出Zone1,Zone2,Zone3在PRIMARY_ZONE中的优先级是相等的,即first_level_primary_zone_num=3,因为每个zone上都有LS Leader分布。对于Tenant1来说,它的unit_num是2,因为在3个zone的6个节点上都有Unit分布,那么如果按上述公式来计算,是否计算得出每个节点上LS数量为6?但是图中每个节点上仅画了3个LS,并且链接1中有这么一句说明:

日志流组内日志流的个数等于 PRIMARY_ZONE 的第一优先级的个数

所以感觉有一些矛盾,或者说单个节点上是会存在单个租户的多个LS Group的吗?如果不存在,那么这里带上unit_num,是否应该描述为单个zone上的LS数量,而不是单个节点呢?

贴一下上面截图对应的链接看看。

https://www.oceanbase.com/docs/community-observer-cn-10000000000901181
可以看4.0文档中这个图

1、
对于 tenant1 租户: unit_num=2, primary_zone=(zone1,zone2,zon3),
所以 tenant1 租户的日志流leader个数= UNIT_NUM * first_level_primary_zone_num=2*3=6

对于 tenant2 租户:unit_num=1,primary_zone=(zone1,zone2,zon3),
所以 tenant2 租户的日志流leader个数= UNIT_NUM * first_level_primary_zone_num=1*3=3

和上图中的图例中ls leader是吻合的。

2、同一个租户所有 Zone 的 Unit 个数相同,系统为同一个租户每个 Zone 的 Unit 进行了编号,不同 Zone 之间相同编号(UNIT_GROUP_ID)的 Unit 的 Unit 组成一个 Unit Group。

一个日志流属于一个日志流组,日志流组与 Unit Group 一一对应,日志流组内所有日志流分布在对应的 Unit Group 上,日志流 Leader 打散在 Primary Zone 上,日志流组内的日志流个数随着租户 Primary Zone 配置的变化而动态变化。

综上,单个节点上是不会存在单个租户的多个LS Group的情况。是的,带上unit_num 可以理解为zone内的日志流数量。