Global Stone 多租户框架公有云改造终态方案


1. 背景与目标

Global Stone 是面向跨境电商的多租户框架,核心能力是以"租户标(TenantId)维度"实现中间件资源隔离。框架当前深度绑定阿里内部中间件生态(HSF/MetaQ/Diamond 等),通过入侵中间件生命周期(SPI Hook、Bean 代理、配置裂变)实现租户级透明隔离。

本方案目标:将框架改造为公有云版本,使第三方客户能基于公有云中间件(Dubbo+Nacos / RocketMQ / Redis / RDS 等)使用同等的多租户隔离能力;改造遵循业务 API 零改动红线,仅在框架内部用"SPI 抽象层 + 公有云适配器 + 实例模型"重写中间件适配层。(本次不覆盖非阿里云厂商适配。)


2. 公有云业务部署架构

先建立公有云上的整体部署形态——业务如何部署、依赖的中间件如何部署,这是理解整套框架的前提。

2.1 部署全景图

Region A · eu-central-1(德国-法兰克福)
业务应用 App-A按 region 部署
多子域 pod 混布 · 框架 SDK 内嵌
AE_GLOBAL
缺省连本 region(de)实例池
▼ ① 缺省 / ② 声明
基础设施型 + 通道型
用 de(本 region)对应实例 · 全子域共享
  • Nacos(注册+配置)
  • RocketMQ
  • SchedulerX / Sentinel
namespace/topic 隔离
数据存储型
用业务自定义实例(声明 endpoint)
  • RDS/DRDS/OceanBase
  • Redis/Tair
无 region 缺省 · fail-fast
◄──►
跨 region 调用
CEN 云企业网打通
(注册面 + 数据面)
Dubbo 多注册中心订阅
+ ZoneDetector
仅少数跨域场景;缺省不发生
Region B · ap-southeast-1(新加坡)
业务应用 App-B按 region 部署
多子域 pod 混布 · 框架 SDK 内嵌
LAZADA_SGLAZADA_ID
缺省连本 region(sg)实例池
▼ ① 缺省 / ② 声明
基础设施型 + 通道型
用 sg(本 region)对应实例 · 全子域共享
  • Nacos(注册+配置)
  • RocketMQ
  • SchedulerX / Sentinel
与 de 独立同构
数据存储型
用业务自定义实例(声明 endpoint)
  • RDS/DRDS/OceanBase
  • Redis/Tair
无 region 缺省 · fail-fast
同 region 内:App 缺省连本 region 实例池,零跨域复杂度  |  跨 region:App-A ⇄ App-B 仅在业务显式指定 + CEN 打通时发生
图 2-1 公有云部署全景:两个 region 各部署一应用及其中间件实例,跨 region 调用经 CEN 打通

两种部署形态的对应关系

层面部署形态隔离/寻址方式
业务应用按 region 部署应用集群;同 region 内多子域 pod 混布;每个 pod 内嵌框架 SDK无单元概念;缺省连本机 region 实例池
依赖中间件(A 基础设施/通道型)每 region 一套共享实例池,各中间件独立实例,全子域共用子域靠 namespace / topic 逻辑隔离;按 region 缺省
依赖中间件(B 数据存储型)由业务 provision 并显式声明实例(endpoint+库/实例+凭证+分片)DB 靠 schema/分片键、Redis 靠 key 前缀分租户;无 region 缺省,必须业务设置

2.1.1 中间件实例归属分类(谁走缺省、谁由业务设置)

关键区分维度不是中间件类型,而是无状态基础设施 vs 有状态数据存储——凡是有归属的有状态数据(数据库、缓存),都不存在"某 region 默认的实例",必须业务声明。据此分三档:

档位中间件region 缺省业务设置未配置时
基础设施型Nacos 注册中心、Nacos 配置中心✓ 缺省一般不覆盖用 region 实例
通道型RocketMQ、SchedulerX、Sentinel✓ 缺省可选覆盖用 region 实例
数据存储型RDS/DRDS/OceanBase、Redis/Tair 缓存无缺省必须设置启动 fail-fast 报错
为何 Redis/Tair 归为数据存储型:缓存虽常被当"旁路",但其中的数据同样有归属与合规要求(会员/交易缓存等),实例由业务 provision,不存在"region 默认的缓存",因此与数据库同档,由业务声明 endpoint。

2.2 公有云版框架内部工作原理

部署形态之下,再看一次请求在框架内部的完整链路。与阿里内部版本的最大差异:公有云下微服务南北向流量统一经“云原生网关”(MSE Cloud-Native Gateway / Higress)接入(取代内部版 Mtop 直接入流量)——网关承担协议卸载/鉴权/路由,并解析注入租户标识(X-hng = Region+Language+Zone+Currency → GL_KEY)。框架 SDK 内嵌于业务应用,入口完成租户识别与上下文初始化,全链路透传,出口按 Tenant→Namespace 映射落到公有云中间件实例。

流量来源
移动端 NativePC / H5外部系统(Ipay / LEL)
请求携带租户/国际化标识 X-hng(Header / Cookie):Region + Language + Zone + Currency
☁ 云原生网关(MSE Cloud-Native Gateway / Higress)公有云新增 · 流量统一入口
▼ 携带 GL_KEY
上下游应用(东西向) Dubbo 调用下游 / 发送消息 ⇆ 上游调用 / 接收消息(RocketMQ)
出入口 Filter 透传 GL_KEY,与 HSF/MetaQ 时代语义一致
▲▼ 上下文透传 / 上下文识别
框架 SDK(内嵌业务应用)
协议适配
租户识别 & 国际化解析
解析 X-hng / GL_KEY
上下文初始化
业务逻辑处理
· 异步线程上下文透传
内存对象 TenantLocal
租户1 对象租户2 对象……租户N 对象
数据源路由(DataSource Routing)→ 数据库插件
中间件适配层 Tenant → Namespace / Group / Key Mapping(子域逻辑隔离)
▼ 按中间件分类解析实例(InstanceEndpointResolver)
A. Region 缺省实例池基础设施/通道型 · 全子域共享
  • Nacos(注册 + 配置,替代 Diamond/Switch)
  • RocketMQ(替代 MetaQ/Notify)
  • SchedulerX / Sentinel(流量保护)
按 region 缺省;子域靠 namespace/group/topic 隔离
B. 数据存储实例有状态 · 业务声明 endpoint
  • RDS / DRDS / OceanBase(数据库,替代 TDDL)
  • Redis / Tair(缓存隔离,替代 Tair/Cache)
无 region 缺省,业务声明;DB 靠 schema/分片键、Redis 靠 key 前缀隔离;未配置 fail-fast
对照内部版:Mtop → 云原生网关;HSF→Dubbo;MetaQ/Notify→RocketMQ;Diamond/Switch→Nacos;Tair/Cache→Redis;TDDL→RDS/DRDS;Sentinel 保留
图 2-2 公有云版多租户框架内部工作原理(微服务流量统一经云原生网关接入)

2.3 实例模型:Region 缺省 + 数据存储业务声明

实例选择不需要复杂的多级路由。关键认知:基础设施/通道型中间件天生是“一个 region 一套、全租户共享”,不存在“不同租户连不同实例”的需求。因此框架只需维护“每个 region 连哪些基础设施/通道型实例”的映射,缺省即用本 region 对应实例;只有数据存储型才必须由业务声明。整个模型就两类:

中间件“连哪个实例”?——按中间件分类分两类处理
基础设施/通道型Nacos / RocketMQ / SchedulerX / Sentinel
用 region 缺省实例
  • 框架维护 region → 实例 映射,缺省即用本 region 对应实例
  • 同 region 内全租户/子域共用同一套实例(不做租户级/服务级分实例)
  • 仅当业务显式配了自定义实例时才用自定义(全局覆盖,罕见)
数据存储型RDS / DRDS / OceanBase / Redis / Tair
必须业务声明 endpoint
  • 无 region 缺省(不存在“region 默认的库/缓存”)
  • 实例由业务 provision 并声明:endpoint + 库/实例 + 凭证 + 分片
  • 未声明 → 启动 fail-fast(框架不擅自决定数据落哪里)
一句话:基础设施/通道型——没配就用 region 缺省;数据存储——必须配,不配就 fail-fast
图 2-3 实例选择:按中间件分类分两类(region 缺省 / 业务声明),无租户级多级路由

region → 实例映射表(存于配置中心,仅基础设施/通道型,不含数据库与缓存)——这就是框架需要维护的全部:

region=eu-central-1   → { nacos: mse-fra:8848, mq: mq-fra }
region=ap-southeast-1 → { nacos: mse-sg:8848, mq: mq-sg }

运行时:CurrentRegionProvider 得到本机 region → 查此表 → 得到基础设施/通道型实例。若业务未配自定义实例,即用此缺省(绝大多数情况)。数据库与 Redis/Tair 不入此表,由业务的数据源/缓存/分片配置(global.landlord.*)直接声明。

2.4 跨实例调用(退化为例外)


3. 多租户框架模块分层与职责

在上述部署形态之上,公有云版本框架的模块分层如下——这是整套框架的骨架。

3.1 分层架构图

业务应用
TenantContext / TenantLocal / GL_KEY —— 零改动
═════ 不可逾越的边界(业务 API 零改动) ═════
框架核心层(只依赖 satellite-spi + satellite-core)
global-landlord 租户上下文生命周期 / 配置裂变 / Bean 代理 global-router 子域隔离 / 实例选择 / 灰度 global-stone-plugin 插件机制
▼ 仅依赖接口,零中间件直连
Satellite 模块(对外门面层 + 三层实现)
satellite-sdk 对外稳定 API 门面层(长期保留·不废弃):对外公开类/包/签名 100% 冻结,只做门面委托、零中间件 import
▼ 委托实现(sdk → core)
satellite-spi 能力域接口(七大) + 两个枢纽 SPI(CurrentRegionProvider / InstanceEndpointResolver
satellite-core 中间件中立逻辑:门面 / 代理骨架 / Hook 编排 / 配置裂变 / 实例解析编排(零中间件 import);承接 sdk 承诺的行为实现
satellite-adapter-* 各中间件公有云实现(实现 SPI,调云 SDK)
satellite-adapter-nacossatellite-adapter-dubbosatellite-adapter-rocketmq satellite-adapter-redissatellite-adapter-rdssatellite-adapter-schedulerxsatellite-adapter-sentinel
对外契约冻结:业务方只依赖 satellite-sdk 的公开 API,其内部实现委托 core + adapter,可自由演进
▼ 公有云 SDK 调用
公有云中间件实例
见第 2 章:A 按 region 共享实例池(Nacos/MQ/调度/限流) + B 业务声明的数据存储(DB / Redis)
图 3-1 公有云版框架分层:业务 → 核心层 → Satellite(spi/core/adapter) → 云中间件

3.2 模块职责与依赖

模块核心职责依赖
global-common基础TenantContext、GL_KEY、TenantLocal;新增 RegionContext被全体依赖
global-g11n基础国际化能力(语言/货币/地区/文案/场景);LocaleKey/LocaleSpeccommon、spi、core
global-landlord核心租户上下文生命周期、配置裂变引擎、Bean 代理框架common、spi、core
global-router核心子域逻辑隔离、实例选择、灰度(percent/eagleEyeTag)common、spi、core
global-stone-plugin核心插件加载注册机制common、landlord
satellite-spi抽象7 能力域接口 + CurrentRegionProvider + InstanceEndpointResolvercommon
satellite-core抽象门面/代理骨架/Hook 编排/配置裂变/实例解析编排;零中间件 importcommon、spi
satellite-adapter-*适配各中间件公有云实现(实现 SPI,调云 SDK)spi、各云 SDK
satellite-sdk门面对外稳定 API 门面层(长期保留):冻结对外公开 API,委托 core 实现,零中间件 importcore
global-framework-bom构建统一 SDK 版本;新增 core/adapter 模块

3.3 依赖铁律(四条)

  1. landlord / router 只依赖 satellite-spi + satellite-core,绝不 import 任何中间件具体类。
  2. satellite-adapter-* 实现 spi、调用云 SDK,运行时按环境装配(缺省一套 region 适配器)。
  3. satellite-sdk 对外 API 冻结:公开类/包路径/方法签名保持不变,作为长期对外契约;改造只替换其内部实现(委托 core),不废弃、不搬迁对外入口
  4. 业务 API 零改动TenantContext/TenantLocal/GL_KEY/global.landlord.* 签名不变。

4. 实施路线图

4.1 迭代优先级与一期范围

优先级自高到低:

  1. P0 · 框架骨架与 satellite 框架设计(最高)global-common 实例模型 SPI(CurrentRegionProvider / InstanceEndpointResolver)、global-satellite 的 spi 抽象契约层(7 能力域 Hook + 2 枢纽 SPI)、core 中立骨架、sdk 门面冻结、SPI 加载装配机制——一切中间件适配的地基,须最先完成
  2. P1 · 框架自身能力收敛global-landlord 核心(上下文 / 配置裂变委托 SPI / 单元剔除)、global-g11n 模块改造(文案 SPI 提炼 + 配置下沉 + 依赖收敛)。
  3. P1 · 各中间件适配(adapter):Diamond→Nacos(配置样板先行)、HSF→Dubbo3、MetaQ→RocketMQ、TDDL→PolarDB、Tair / Redis、SchedulerX、Sentinel——P0 骨架就绪后并行铺开。
  4. P2 · global-router(一期不迭代):多单元路由 / 纠偏简化、RegionHSF3Router→Dubbo Router——降低优先级,顺延二期

一期范围 = P0 + P1(框架 + 中间件适配,不含 router);二期 = global-router 简化迁移。已剔除范围(与 §5.3.5 一致):Switch(内部开关层废弃,能力并入 Diamond→Nacos);OceanBase(暂不使用)。

4.2 人力分工

乔忆 / 宫治 为框架负责人,把控框架设计与整体架构、定义 SPI 契约、代码评审;萧扬 / 亮晖 负责各中间件适配能力迭代

角色职责定位负责模块 / 组件
乔忆 / 宫治框架设计与整体架构、SPI 契约、评审global-common 实例模型 SPI、satellite-spi/core/sdk、SPI 加载装配、landlord 核心与单元剔除、g11n 模块改造
萧扬通道 / 周边中间件适配HSF→Dubbo3、MetaQ→RocketMQ、SchedulerX、Sentinel→MSE 流量治理
亮晖数据存储 / 缓存中间件适配Diamond→Nacos(配置样板先行)、TDDL→PolarDB 分区表(最重)、Tair、Redis/RDB→Redis、其他

乔忆 / 宫治 定义并冻结 SPI 契约后,亮晖 率先跑通 Diamond→Nacos「样板改造」作为示范,萧扬 / 亮晖 按同一范式并行复制到各自中间件 adapter。

4.3 工作量估算

① 框架自身能力(含 G11n)

模块开发人日测试人日合计
Global-G11n 模块8.04.512.5
多租户框架自身能力7.03.010.0
小计15.07.522.5

② 中间件适配(区间估算,PIC 对应 §4.2 分工):

弹内中间件云上复杂度开发人日测试人日合计人日PIC
HSFDubbo34–62–46–10萧扬
MetaQRocketMQ2–41–23–6萧扬
DiamondMSE Nacos2–41–23–6亮晖
SwitchMSE Nacos废弃·并入 Nacos
TDDLPolarDB 分区表6–103–69–16亮晖
TairTair2–41–23–6亮晖
Redis/RDBRedis2–41–23–6亮晖
OceanBase暂不使用暂不使用
SchedulerXSchedulerX2–41–23–6萧扬
SentinelMSE 流量治理1–21–22–4萧扬
其他1–21–22–4亮晖
总计(原始)23–3912–2335–62

总计为含全部项的原始评估;扣除已废弃的 Switch(2–4)与暂不使用的 OceanBase(3–6),一期中间件实际投入约 30–52 人日。一期合计 ≈ 框架 22.5 + 中间件 30–52 ≈ 52–75 人日(3 人并行,含测试);global-router 二期另计。

4.4 里程碑流水线(7.20 – 8.20)

一期约一个月、三人并行、以周为节拍推进。乔忆 / 宫治 先打地基(SPI 契约 + 样板),为两条中间件适配泳道解锁;TDDL→PolarDB 为最长链路。

阶段 / 负责人
W17/20–7/24
W27/27–7/31
W38/3–8/7
W48/10–8/14
W58/17–8/20
乔忆 / 宫治框架地基
common SPI·契约·装配
core·sdk 冻结·SPI 装配
landlord 核心·单元剔除
集成联调·交付
g11n 改造
萧扬通道中间件
adapter 骨架·调研
HSF→Dubbo3
联调
MetaQ→RocketMQ
SchedulerX·Sentinel→MSE
亮晖存储 / 缓存
adapter 骨架·调研
TDDL→PolarDB 分区表(最重)
联调
Diamond→Nacos 样板
Tair
Redis→Redis·其他
里程碑 · 交付
M0 · 7/24SPI 契约冻结;core 骨架可编译
M1 · 7/31Diamond→Nacos 样板跑通;HSF/TDDL adapter 初版
M2 · 8/7landlord+g11n 完成;MetaQ/SchedulerX/Tair 适配
M3 · 8/14全部 adapter 完成;进入全链路联调
M4 · 8/20集成测试通过;一期 GA 交付

关键路径:SPI 契约(M0)→ Nacos 活样板(M1) 是一切中间件适配的前置,须按时完成;TDDL→PolarDB 跨 3 周为最长链路,紧张时可从 M2 后追加人力支援。


5. 各模块改造点(基于分层细化)

按上述分层,逐模块给出“现状 → 改造点”。

5.1 global-common(微调)

global-common 是被全体依赖的基础模块,实际内容为 EnvUtils(环境/机器信息探测)、EnvConfigproxy(JDK/Cglib)、annotation@AutoServiceApi/@AutoServiceImpl)、ServiceLoader 等基础工具(注:TenantContext / GL_KEY / TenantLocal 并不在此,实际定义在 global-landlord-sdk,见 §5.4)。全模块仅两个文件存在中间件耦合,均需改造:

① Diamond 配置依赖(PropertiesLoader

② EnvUtils 机器/单元信息探测

5.2 global-g11n(中等改造)

global-g11n(国际化能力)仅含 global-g11n-sdk,是业务方直接使用的对外 SDK:对外 API G11n / G11nContext / G11nAdmin 及模型 LocaleKey / LocaleSpec / Region / CurrencyUnit签名冻结不变(landlord 的 GLKey 依赖 LocaleKey,g11n 是其底层依赖)。业务逻辑(货币换算、locale 解析、文案格式化)与公有云无关,改造只切中间件耦合。四处耦合点:

① Diamond 配置(同 §5.1 common 手法)

② MCMS 文案中心(本模块最大改造点)

③ MTOP 网关上下文

④ 依赖收敛

5.3 global-satellite(核心改造)

global-satellite 是整个框架的中间件底座,也是巨石所在,改造是全案重头戏。它当前已内建一套 hook/proxy 扩展点机制(见 §5.3.2),改造并非推倒重来,而是沿模块边界把已有机制切开:抽象契约(spi)、中立骨架(core)、中间件实现(adapter)、对外门面(sdk)四层各归其位。

5.3.1 模块拆分与分层

子模块职责现状
satellite-spi抽象能力域接口 + 2 枢纽 SPI;零中间件 import已建,仅落地 config 域
satellite-core抽象门面骨架 / 代理模板 / Hook 编排 / 配置裂变 / 实例解析编排;零中间件 import新增(现散落在 sdk/proxy)
satellite-adapter-*适配各中间件公有云实现(实现 spi、调云 SDK)已建 adapter-diamond 样板
satellite-sdk门面对外稳定 API(Satellite 入口 / api / filter),签名冻结巨石,需掏空委托
satellite-sdk-starter装配Spring Boot 自动装配随 sdk 调整
satellite-plugins/*插件可观测/隔离(trace/druid/collect/eagleeye/slf4jmdc/load-analyze)基本不改

依赖方向adapter → core → spi → commonsdk → core + adapter;业务/landlord/router 只依赖 spi + core(依赖铁律 §3.3)。

5.3.2 现有 hook/proxy 机制与演进路径

satellite 早已内建 SPI 扩展点机制,改造是复用并沿模块切开,不是新建:

两类加载机制的分工(演进方向)

机制用途终态归属
HookUtils(多实现编排链)AOP 式增强(trace/监控/filter 链)保留,下沉 core
XxxServiceHolder(单实现替换 + fail-fast)中间件能力域替换(config/rpc/mq/db...)主路径,spi + adapter

一个必须处理的障碍:现有 hook 接口部分不中立——如 HSFConsumerProxyHook 直接 import com.taobao.hsf...ServiceMetadata,而 DiamondHook 是纯净的。提炼到 spi 时,强耦合中间件类型的接口需清洗类型(用中立模型替代)或整体归入 adapter 层

5.3.3 satellite-spi(抽象契约层)

定义 7 能力域接口 + 2 枢纽 SPI,方法签名尽量对齐现有代理类以降低 landlord 侧改动量。

命名规范(统一风格):所有能力域 SPI 采用 Satellite 前缀 + Hook 后缀(如 SatelliteConfigHook)。已落地的 config 域现状类 TenantConfigService / TenantConfigServiceHolder / ConfigChangeListener(见 §5.3.2、§5.1、§5.2)在落地时按此规范重命名SatelliteConfigHook / SatelliteConfigHookHolder / SatelliteConfigChangeListener;下文凡出现 Tenant* 旧名均指现状代码,终态统一收敛到 Satellite*Hook 体系。

接口能力域关键方法
SatelliteRpcHookRPC(HSF→Dubbo)getRouter / getClientFilter / getServerFilter / getBeanProxy
SatelliteMessageHook消息(MetaQ→RocketMQ)getSendHook / getConsumeHook / enrichHeader / getTenantFromMessage
SatelliteConfigHook配置(Diamond→Nacos)multiDataIds / singleDataId / beforeCallback / afterCallback
SatelliteCacheHook缓存(Tair/Redis→Redis)wrapKey / unwrapKey / getClient
SatelliteDbHook数据库(TDDL/OB→SPI)interceptSql / getDataSource / getRuleTemplate
SatelliteSchedulerHook调度(SchedulerX)getTenantTasks / proxyContext
SatelliteRateLimitHook限流(Sentinel)collectMultiKeys / multiEntry

两个枢纽 SPI(实例模型落地入口)

5.3.4 satellite-core(中立骨架层)

5.3.5 satellite-adapter-*(中间件适配层)

每个 adapter 实现对应能力域 SPI、对接一个公有云中间件、连实例时统一走 InstanceEndpointResolver十个中间件的映射与改造要点如下。

#内部中间件公有云产品adapter复杂度关键差异
1HSFDubbo 3.x + Nacossatellite-adapter-dubbo/nacos包路径 com.taobao.hsforg.apache.dubbo,Router/Filter SPI 模型一致
2MetaQ阿里云 RocketMQ 5.xsatellite-adapter-rocketmq包路径 →org.apache.rocketmq,Hook 签名微差
3DiamondMSE Nacos Configsatellite-adapter-nacosgroupIddataId+groupManagerListenerListener
4Switch内部自研轻量开关层【废弃】公有云不再迁移内部 Switch;配置/开关能力统一由 Diamond→Nacos 承接
5TDDLDRDS/RDS/ShardingSpheresatellite-adapter-rds最高SqlMonitor SPI 专有,需重设计 SQL 拦截层
6Tair阿里云 Redis(Tair 云原生)satellite-adapter-redisTairManager→Jedis/Lettuce
7RDB/Redis阿里云 Redissatellite-adapter-redis包路径 →开源 Jedis/Lettuce,逻辑不变
8OceanBase阿里云 OceanBase 公云版satellite-adapter-rds兼容 MySQL 协议 + HikariCP,DataSource 代理复用
9SchedulerX阿里云 SchedulerX 公云版satellite-adapter-schedulerxSDK 包路径不同,GridJobContext 需验证兼容性
10SentinelAHAS / 开源版satellite-adapter-sentinel框架已兼容 com.alibaba.csp.sentinel,SphU API 一致

改造要点

5.3.6 satellite-sdk(对外门面层·冻结)

5.3.7 SPI 加载与装配机制

5.4 global-landlord(中等改造)

global-landlord租户上下文生命周期、配置裂变、GL_KEY 协议与 Bean 代理的核心承载。对外 API Landlord / LandlordContext / LandlordAdmin / LandlordProtocol 及模型 TenantContext / TenantSpec / GLKey / TenantLocal / TenantBeanFactory 签名冻结(业务零改动铁律)——LandlordContext 已是纯委托门面(TenantContextAdmin),零中间件耦合;GL_KEY_GL_K = {oeId}_{siteId}@{country}|{lang}|{currency}|{region})作为跨进程透传载体保留,由 Dubbo attachment / RocketMQ userProperty 承接。改造聚焦切中间件直连 + 剔除单元

子模块与耦合分布

子模块职责耦合现状
global-landlord-sdk上下文(context/*)、模型(model/*)、配置裂变(admin/*)、中间件插件(plugins/*)、代理(proxy/*核心,含下述①②④耦合
global-landlord-bridge + -bom面向业务的 BOM + 分中间件 starter/kernel 体系(diamond/hsf/metaq/schedulerx/switch/tair/tddl/localcache)各 starter 直连对应中间件(com.alibaba.middleware:sdk 等)
global-landlord-all-pluginsdb / route / tmf / migration / maven plugindb/route 连中间件与单元路由

① 配置加载与裂变(admin/*)→ 委托 SPI

② 中间件插件(plugins/*)→ 归位 satellite-adapter

③ 依赖收敛

④ 单元剔除(重点)

⑤ bridge / bridge-bom 体系 → 保留接入面、底层收敛 adapter

5.5 global-router(大改造 / 简化)

单元剔除影响一览

原单元相关物终态处理
EnvUtils.getCurrentUnit()CurrentRegionProvider.getCurrentRegion()
UnitSelector / LandlordUnitSelectors删除;由 InstanceEndpointResolver 取代
EnvRule.unit / 跨单元 filter/router删除跨单元寻址;保留 tenant/eagleEyeTag/percent 灰度
HSF 多单元订阅、Provider 纠偏删除(默认连本 region;跨实例退化为业务 endpoint 覆盖)
MetaQ 跨单元转发、unitGroupToTopicsMap删除;默认发本 region 实例
Diamond 多单元 env(DiamondUnitSite→ 按 region 缺省 + 业务覆盖的实例解析
TenantSpec.sourceUnit/targetUnit/peerUnit/deployUnits移除单元迁移语义;保留子域身份(oeId/siteId)

5.6 构建与插件