关于总控服务(RootService)和分区服务(PartitionService)疑问

图1:

假如三个zone

zone1的 总控服务 RS为主,zone2 和 zone3的RS为从。

我理解主副本数据存储在zone1 ,从副本数据存储在 zone2 和zone3

图2:

但是分区组成paxos协议组。 一个表p1-p8分区组成。

并不是按照图1的逻辑zone1存储都都是主副本。

zone1和zonge3 也存储了。p1-p8是打散存储

问:RS主从和分区主从的区别?

图片:

图片地址https://sm.ms/image/qFRZYdDOSz3svIX

如果每个租户的primaryzone都是 zone1,那么就可以说 zone1 是主节点。那么这个集群里所有租户(实例)的数据的主副本都在 zone1 的机器里。sys租户不打散的情况 1:1:1 三个zone 的集群 RS总控服务主副本 是在allcoretable 主副本所在节点,另外两台则为备副本,sys 租户打散的情况,RS总控服务主副本 依然是在 allcoretable 主副本所在节点,可通过 select * from  __all_server with_root_server 字段是否为 1 查看

allcoretable 主备副本分布 可通过 root@sys 租户下 allvirtualcoremetatable 查看,其余分区主备副本可 参考表  allvirtualpartitioninfo 

rs 服务是在 内部实例 sys 里的。 sys 实例会指定 primary_zone 。比如说你举例里的 zone1 。

业务实例是可以独立的设置primaryzone,比如说设置为RANDOM(打散到所有租户),那么业务实例里数据的主副本就会分散到所有zone。这里要注意,每个zone都有一份全量的业务数据。primaryzone 是控制主副本的位置分布。