背景
Dubbo Admin 目前缺少对 Dubbo 3 已有 Affinity Router 与 Script Router 的完整管理能力。Dubbo-Go / Dubbo-Java consumer 已具备相应的动态配置监听与运行时路由实现,但 Admin 需要补齐公共 YAML 契约、配置中心发布回读、API 和 UI,才能形成可管理、可验证的治理闭环。
本 issue 从 #1523 拆分而来,覆盖 Affinity 与 Script Router。
范围
Affinity Router
- 支持 service/application scope 的
.affinity-router 规则管理。
- 规则名必须为
<key>.affinity-router。
- 外部 YAML 使用
affinityAware.key 与 affinityAware.ratio,且 ratio 范围为 [0,100]。
- 固定使用
configVersion: v3.1,以兼容 Dubbo-Java Affinity parser。
- 完成 Admin resource、YAML codec、配置中心下发/回读、Console API、前端 CRUD 及 Dubbo-Go E2E。
Script Router
- 支持 application scope 的
.script-router 规则管理。
- 规则名必须为
<provider-application>.script-router。
- 仅允许
javascript 类型、非空脚本和受限脚本长度。
- 完成 Admin resource、YAML codec、配置中心下发/回读、Console API、前端 CRUD 及 Dubbo-Go E2E。
- Admin 只管理和下发脚本,不执行脚本;不承诺同一脚本文本在 Java 与 Go runtime 间可移植。
配置中心契约
- ZooKeeper:
/dubbo/config/dubbo/<ruleName>。
- Nacos:
DataId=<ruleName>, Group=dubbo。
- 验证 create/update/delete 使 Dubbo-Go consumer 分别收到 Add/Update/Delete,并更新/撤销 RouterChain 中的动态状态。
非目标 / 协作边界
- 不处理 Condition Router、Tag Router、实例禁流;这些由 OSPP 项目负责。
- 不处理 Dynamic Config /
.configurators。
- 不处理 Dubbo-Go 应用级 metadata、服务视图、Prometheus 指标、OpenTelemetry trace。
- 不改变或恢复 Dubbo-Go 旧接口级服务发现模型。
- 不扩展新的治理语义,仅对齐已有 Affinity/Script Router 的配置与管理链路。
实施 PR 计划
为减小单次 review 压力,以下工作按单一目标拆成独立分支与独立 PR。每个 PR 正文使用 Related to #1547 标明关联,但不使用 Fixes、Closes 等 closing 关键字;合并任一单独 PR 不会自动关闭本 issue。
集成分支只用于组合后的测试和 E2E 验证:不推送、不创建 PR。
-
Affinity/Script resource and YAML contract
- ResourceKind、suffix、外部 YAML encode/decode、前置校验与单元测试。
- 不修改 Condition/Tag 的模型或语义。
-
Affinity/Script configuration-center
- ZK/Nacos 的发布、回读、watcher kind 分派。
- 保持 Condition、Tag、Dynamic Config 原有路径和语义不变。
-
Affinity/Script Console API
- search/detail/create/update/delete handler、service、model、版本历史/回滚与后端测试。
-
Affinity/Script frontend management
- 菜单、路由、API client、YAML 编辑/回显与 CRUD 页面。
- Affinity 仅 v3.1;Script 仅 application/javascript。
-
Dubbo-Go consumption E2E and compatibility documentation
- 真实 ZK(必要时 Nacos)create/update/delete 验证。
- Consumer 收到变更、RouterChain 路由结果变化、删除后恢复。
- 文档明确 Java/Go 的脚本语义边界和 Dubbo-Go Affinity 注册前提。
验收标准
Admin create/update/delete
-> 配置中心出现正确的 key、group 与 YAML
-> Dubbo-Go 收到 Add/Update/Delete
-> Affinity/Script RouterChain 行为随规则变更而变化
-> 删除后不再保留动态规则影响
-> Admin 回读不丢失 Affinity/Script 的外部字段
背景
Dubbo Admin 目前缺少对 Dubbo 3 已有 Affinity Router 与 Script Router 的完整管理能力。Dubbo-Go / Dubbo-Java consumer 已具备相应的动态配置监听与运行时路由实现,但 Admin 需要补齐公共 YAML 契约、配置中心发布回读、API 和 UI,才能形成可管理、可验证的治理闭环。
本 issue 从 #1523 拆分而来,覆盖 Affinity 与 Script Router。
范围
Affinity Router
.affinity-router规则管理。<key>.affinity-router。affinityAware.key与affinityAware.ratio,且ratio范围为[0,100]。configVersion: v3.1,以兼容 Dubbo-Java Affinity parser。Script Router
.script-router规则管理。<provider-application>.script-router。javascript类型、非空脚本和受限脚本长度。配置中心契约
/dubbo/config/dubbo/<ruleName>。DataId=<ruleName>, Group=dubbo。非目标 / 协作边界
.configurators。实施 PR 计划
为减小单次 review 压力,以下工作按单一目标拆成独立分支与独立 PR。每个 PR 正文使用
Related to #1547标明关联,但不使用Fixes、Closes等 closing 关键字;合并任一单独 PR 不会自动关闭本 issue。集成分支只用于组合后的测试和 E2E 验证:不推送、不创建 PR。
Affinity/Script resource and YAML contract
Affinity/Script configuration-center
Affinity/Script Console API
Affinity/Script frontend management
Dubbo-Go consumption E2E and compatibility documentation
验收标准