架构治理 · 重构蓝图 v1.0 · SELLER-DOMAIN

销项系统
重构蓝图

基于 OntoOS 研发本体湖仓 2026-09-11 真实盘点,把 10 个超大仓拆成 19 个清晰自治域 — 24 个月、3 阶段、0 盲区。

01 · 执行摘要

一张图说清楚

从 10 个超大仓到 19 个清晰域,本质上解决的是业务边界、数据边界、稳定性边界、组织边界的重新对齐。

核心判断

销项域已不是"微服务",而是 4 个超大型单体(phoenix-bill / phoenix-seller-invoice / phoenix-seller-config / output-invoice-service),通过 Feign + MQ 拼装为分布式大泥球。最严重的是 output-invoice-service 拥有 5475 个 API 端点但 MyBatis 抽取等于 0 — 真实的表结构、SQL 模式、调用矩阵完全不可见,这是定时炸弹。

核心后端仓
10
→ 19 自治域
最大单仓端点
11,596
至 ≤ 2,000
生产 db_id
35
至 4 套角色
异构 MQ
6
至 2 套(RMQ + Kafka)
业务表
47
12,684 处 MyBatis 引用
盲区服务
1
至 0
BC Owner
3
→ ≥ 15 人
周期
24
治理 6m / 拆分 8m / 收敛 10m

销项域 8 大后端仓 · 端点与表引用分布

端点 ↑ 引用 → 0 4000 8000 12000 phoenix-bill · 11,596 端点 14,985 引用 · 387 站点被调 phoenix-seller-invoice · 8,543 端点 18,116 引用 · 549 张表(全表最大) phoenix-seller-config · 6,657 端点 9,865 引用 · 80 controllers output-invoice-service · 5,475 端点 ⚠ MyBatis 抽取 = 0 (盲区) phoenix-seller-open-api · 2,157 端点 开放接口门面 phoenix-red-notification · 579 phoenix-smart-match · 474 PSCC purchase-resale · 56 端点(跨三态)
来源:ontoos-probe 2026-09-11 / 仓库:phoenix-seller/*, taxware-aggregation/output-invoice-service, pscc/*
02 · 现状诊断

7 大痛点(全部有数据证据)

2.1 超大型单体与级联雪崩

销项域已不是"微服务",而是 4 个超大型单体。phoenix-bill 单仓 11,596 端点被 5 个仓 / 387 个站点反向 Feign 调用 — 任何一次发布波及 5 个上游仓,灰度无法做到"功能级"。phoenix-seller-invoice 单仓 549 张业务表、18,116 处 MyBatis 引用,跨域访问、数据库自治彻底破缺。

2.2 数据库治理失控

35 个 db_id 持有 inv_seller_* 副本,横跨 4 套云 + 5 套数据库引擎(RDS / DRDS / PolarDB / Azure MySQL / AWS Aurora)。同一逻辑实体在异构库 schema drift 风险高;11 套生产库 = 11 套备份、容灾、慢查询治理成本。

2.3 异构 MQ 无收敛

6 套异构 MQ 通道分布

xplat-sqs 2,158 rabbitmq 1,108 rocketmq 500 pubsub 157 jms 147 kafka 58
来源:code_mq_operations · 销项服务 MQ 操作(代码静态抽取)

6 套同时在线 = 6 套 SDK 维护 + 6 套监控 + 6 套告警 + 6 套容量规划,直接放大排障 MTTR 3-5 倍。其中 xplat-sqs 是公司老旧自研协议,跨 IDC 同步依赖网络通道,故障 RTO > 30min。

2.4 调用链爆炸

bill 387 站点 / 5 仓被调 + seller-config 282 / 8 + seller-invoice 238 / 4 — 推断单业务请求平均 5-8 跳。盲区服务 output-invoice-service 进一步让 Trace 拼接不完整,一旦线上故障无法定位到真实代码位置

2.5 部署环境多套导致"同一服务四份资产"

ali-devops-prod (5+8) / qcloud-paas-prod (10+6) / local-crc-prod (4/2/2/2) / ali-pscc-prod (2) — 镜像 tag、Apollo namespace、网关路由在 4 套集群事实不一致风险高。

2.6 PSCC 跨"进-转-销"三态

purchase-resale-service 56 端点横跨 3 个 Bounded Context(进项 → 转销售 → 销项),复用 inv_seller_* 表 + 进项库直查,没有 ACL(防腐层),演进必然互相掣肘。

2.7 前端微应用碎片化

629 个销项相关菜单,分布于 198 个微应用,主前端仓 5 个(phoenix-seller-fe/seller-main-fe / seller-config-fe / ultraman-fe-monorepo / cc-biz-frontend-mono / mobile/one-main-fe)。一个开票业务变更往往要"后端 2 仓 + 前端 3 微应用"协同,发布协调成本 > 开发成本

03 · 关键 KPI 基线

从数据出发,立指标

不立指标,24 个月后无法证明成功。下表是 2026-09-11 实测的基线值,作为后续对比依据。

3.1 规模 KPI

指标基线Phase 1 末Phase 2 末Phase 3 目标
服务域总数1012 (+BFF+gateway)1719
单仓最大端点11,59611,596(未动)≤ 4,000≤ 2,000
单仓最大表数549549(未动)≤ 100≤ 50
单仓最大 controllers8080(未动)≤ 40≤ 30
异构 MQ 套数6332 (RMQ + Kafka)
生产 db_id3535204 (主+镜像+归档+海外)
K8s 集群数444 (同源)4 (同源)
Apollo namespace69 (双写)1919 + 1 公共
盲区服务数1000

3.2 业务 KPI(对用户的可见改进)

指标基线目标
开票事务首屏 P953-5 s(推断)≤ 1.5 s
销项台账查询~3 s≤ 500 ms
开票失败自动补偿率人工≥ 90% 自动
销项到税控可追溯~60%100%
单功能发布涉及仓数4-5≤ 2
端到端发布频率周 1-2 次每日多次
04 · 目标架构

5 层蓝图:从接入到基础设施

10 仓 → 19 个清晰自治域:2 接入层 + 2 编排层 + 8 领域服务 + 4 平台服务 + 3 基础设施。

┌──────────────────────────────────────────────────────────────────┐ │ 接入层 (Edge) │ │ ├─ seller-gateway (Kong/APISIX 统一鉴权/限流/灰度) │ │ └─ seller-bff-aggregate (3 个 BFF, 按业务场景) │ ├──────────────────────────────────────────────────────────────────┤ │ 编排层 (Orchestration) │ │ ├─ invoice-saga-orchestrator (开票 Saga) │ │ └─ pscc-orchestrator (PSCC 跨三态) │ ├──────────────────────────────────────────────────────────────────┤ │ 领域服务层 (Domain) — 8 域 │ │ ├─ invoice-write / invoice-read (CQRS) │ │ ├─ invoice-state-machine (Cola-Statemachine) │ │ ├─ invoice-aggregation-svc (替代盲区) │ │ ├─ bill-core / bill-write / bill-read (账单域) │ │ └─ pscc-presale / pscc-resale (PSCC 域) │ ├──────────────────────────────────────────────────────────────────┤ │ 平台服务层 (Platform) — 4 域 │ │ ├─ seller-config-platform │ │ ├─ notification-center │ │ ├─ smart-match-platform │ │ └─ event-bus-gateway │ ├──────────────────────────────────────────────────────────────────┤ │ 基础设施层 (Infra) — 4 域 │ │ ├─ id-center / idempotent-center / audit-platform │ │ ├─ file-gateway │ │ └─ DB Proxy (PolarDB-X + Azure + AWS 适配) │ └──────────────────────────────────────────────────────────────────┘

BFF 黄金法则

BFF 自身不持有数据、不写 DB、不发业务 MQ(仅编排),错误全部以 Saga 事件上抛。代码量 < 3K 行 / BFF,启动 < 3s。3 个核心 BFF 按业务场景划分:

BFF场景聚合下游端点目标
seller-bff-invoice开票工作台invoice-write + state-machine + config + match≤ 80
seller-bff-bill账单/销项台账bill + invoice-read + aggregation≤ 120
seller-bff-pscc进转销一站式pscc-core + invoice-write + config≤ 60
05 · 架构师方案

微服务拆分 / 合并 / 下沉

详细方案见 03-arch-refactor.md。本节为摘要。

5.1 拆分清单(10 仓 → 13 域)

源仓动作目标拆分依据
phoenix-bill (11,596)bill-core + bill-write + bill-read + 余下归并销项相关占 ~70%
phoenix-seller-invoice (8,543, 549 表)invoice-write + invoice-read(CQRS) + state-machine + aggregation读写比 1:3, 写集中在前 200 端点
phoenix-seller-config (6,657, 80 ctrl)拆+下config-biz + config-dict + config-rule → seller-config-platform三种语义变更频率/责任人差异巨大
output-invoice-service (5,475 盲区)重建新建 invoice-aggregation-svc不可在不可见代码上做"重构",需先 ontoos-code-probe 拉真实实现
phoenix-seller-open-api (2,157)不拆,改为 OpenAPI 治理网关,接入统一鉴权已是门面
phoenix-red-notification (579)并入 notification-center通用能力
phoenix-smart-match-invoice (474)合+下并入 smart-match-platform多个调用方共用
purchase-resale-service (PSCC)拆+ACLpscc-presale + pscc-resale + 引入进-转-销 ACL跨三态 BC 必须显式防腐

5.2 平台化下沉

  • seller-config-platform — 合并 phoenix-seller-config + 字典服务,80 controllers 拆开但统一 schema 治理
  • notification-center — 合并 phoenix-red-notification + 短信/邮件/IM,销项只是 1/N 租户
  • smart-match-platform — 合并 smart-match-invoice + 抬头匹配,多业务域共用
  • event-bus-gateway — 6 套 MQ 适配器 + 死信中心 + 重放中心
06 · 数据治理方案

35 db_id → 4 套角色

详细方案见 04-data-governance.md。本节为摘要。

6.1 三维切分模型

切分键优先级:业务域 (domain) → 租户 (tenant_id) → 时间 (invoice_year)

6.2 业务域切库(8 个独立库)

逻辑库物理集群现有服务关键表(Top by 引用)
seller_invoice_dbPolarDB-X-1 (cn-shanghai)phoenix-seller-invoice, open-apiinv_seller_invoice 874, pre_invoice 619
seller_config_dbPolarDB-X-1phoenix-seller-config配置类表
bill_aggregation_dbPolarDB (cn-beijing)phoenix-bill聚合/对账相关表
output_invoice_dbPolarDB (cn-shenzhen)output-invoice-service ⚠盲区销项汇总/下发(MyBatis 抽取=0 需先 ontoos-code-probe)
pscc_dbPolarDB (cn-chengdu)purchase-resale-servicePSCC 进/转/销三态表
notification_dbPolarDB (cn-hangzhou)phoenix-red-notification通知消息表
smart_match_dbPolarDB (cn-beijing)phoenix-smart-match-invoice智能匹配
seller_global_dbPolarDB (cn-shenzhen)跨域公共字典/枚举/白名单(low-cardinality, 单库不分片)

6.3 47 张 inv_seller_* 表冷热分层

Tier-1 高热度表(启用分片+冷热)

表名MyBatis 引用分片键冷热策略
inv_seller_invoice874tenant_id + invoice_year13 月热 + 归档
inv_seller_pre_invoice619tenant_id + pre_year13 月热 + 归档
inv_seller_pre_invoice_item507tenant_id + pre_year随主表分片
inv_seller_invoice_item479tenant_id + invoice_year随主表分片
inv_seller_operation398tenant_id + op_year6 月热 + 归档
inv_seller_make_out_request368tenant_id + request_year13 月热 + 归档
inv_seller_pre_original_sales_detail359tenant_id + pre_year随主表分片

6.4 DMS 100% 纳管 + 审计 + 脱敏

  • 行级安全:仅本租户数据可见 — CREATE POLICY tenant_isolation ON inv_seller_invoice USING (tenant_id = current_setting('app.tenant_id')::BIGINT)
  • 列级脱敏:身份证号、银行卡(buyer_id_cardCONCAT(LEFT,4,'****',RIGHT,4))
  • SQL 审核:所有写操作走 DMS 工单,命中风险规则需审批
  • DDL 灰度:DMS OnlineDDL 内置 gh-ost,分批执行,秒级回滚
  • 跨境数据:AWS-4.0、Azure、信创之间数据流动走 DMS 跨云同步通道,单独审计
07 · 稳定性方案

6 套 MQ → 2 套 · 全链路可观测

详细方案见 05-stability-middleware.md。本节为摘要。

7.1 MQ 双轨制(保留+桥接)

┌──────────────────────┐ ┌──────────────────────┐ │ 业务消息总线 │ │ 数据消息总线 │ │ RocketMQ 5.x │ │ Kafka 3.x (KRaft) │ │ - 事务消息 │ │ - Exactly Once │ │ - 顺序消息 │ │ - 长保留(30d) │ │ - 定时消息 │ │ - 镜像(MM2) │ └──────────────────────┘ └──────────────────────┘ ▲ ▲ xplat-sqs / rabbit CDC / 审计 (桥接代理过渡) (直接走 Kafka)

7.2 异构中间件处置矩阵

中间件操作点决策时间表
xplat-sqs1549+609桥接 → 2027-Q1 下线2026-Q4 灰度 10% → Q1 切 100%
rabbitmq975+1332027-Q1 下线与 sqs 同步
rocketmq420+80保留主力升级 5.x,Name Server 3 副本 + Dledger
pubsub157收缩到 Azure 桥2026-Q4
jms147仅税局接口立即,不再扩展
kafka58保留为数据总线升级 KRaft、副本=3、幂等 producer

7.3 可观测性三大支柱

  • Tracing:SkyWalking 为主(国产中间件原生支持),Jaeger 辅;跨 MQ header 注入 sw8 TraceID,采样率核心链路 100% / 后台 10% / 健康检查 0%
  • Metrics:Prometheus + VictoriaMetrics 长期存储;RED 指标覆盖 8 核心仓;USE 指标覆盖 DB/MQ/JVM
  • Logging:EFK(主) + Loki(聚合)双写,统一 logback-spring.xml 格式,保留 7d 热 / 30d 冷 / 1y 归档

7.4 SLO 体系(核心交易)

服务可用性 SLO关键接口 P99错误预算(30d)
phoenix-bill99.95%≤ 800ms21.6 分钟
phoenix-seller-invoice99.9%≤ 1.2s43.2 分钟
phoenix-seller-config99.95%≤ 200ms21.6 分钟
output-invoice-service99.9%≤ 2s43.2 分钟
phoenix-smart-match-invoice99.5%216 分钟
phoenix-red-notification99.9%43.2 分钟
phoenix-seller-open-api99.9%43.2 分钟
purchase-resale-service (PSCC)99.5%216 分钟

7.5 盲区服务补救

⚠ output-invoice-service MyBatis 抽取 = 0

5,475 端点 / 47 controllers 真实表结构不可见。补救方案:

  1. ontoos-code-probe 检出真实 commit,做 AST + ripgrep 分析,覆盖率 2026-Q4 提升至 80%
  2. 用 jvm-sandbox / arthas 在生产录制 24h 真实 SQL,补充动态 SQL 场景
  3. 立即 freeze(只修 bug),禁止新功能,新功能在新服务 invoice-aggregation-svc
  4. 2027-Q1 抽取覆盖率 ≥ 95%
08 · 优先级矩阵

20 项举措 · 业务价值 × 实施难度 × 风险

优先级公式:Priority = 业务价值 × (1 + 实施难度^-1) × (1 + 风险^-1),分数越高越优先。

排名重构举措BDRPriorityPhase
1盲区真相补全 (output-invoice-service)52519.5P0
2BFF 旁路上线 (seller-bff-invoice)52316.0P1
3MQ-Bridge 上线 (sqs/rabbit → RMQ)53415.6P1
4Trace/Metric/Log 统一 (OTel)53315.0P1
5Sentinel 全量入口限流42313.3P1
6Apollo namespace 拆分 (6 → 19 + 1)42212.0P1
7DMS 100% 纳管 + 审计 + 脱敏43312.0P0-1
8schema 漂移检测 + Schema Registry43412.0P1
9seller-config-platform 拆分43312.0P2
10CQRS 读写分离 (invoice-write/read)54411.9P2
11notification-center 收编 red-notification43311.7P2
12invoice-state-machine 上线 (Cola)54311.5P2
13phoenix-bill 拆分 (bill-core + write/read)44410.5P2
14PSCC ACL + pscc-orchestrator44410.5P2
15冷热分层 (Tier-1 七张主表)33410.0P2
16invoice-aggregation-svc strangler3448.6P2
17DB 双写迁移 (M3-M6)4558.4P2-3
18MQ 收敛 (6 → 2 最终态)3448.6P3
19跨云切换 (AWS→Azure→信创)3557.5P3
20老 10 仓退役2446.0P3

关键解读:Top 5 全部是"非破坏性"动作(补盲区、引 BFF、桥接、可观测、限流),先做这五项 0 风险获 80% 业务价值

09 · 24 月路线图

Phase 0 → 1 → 2 → 3

不立指标,24 个月后无法证明成功;不排阶段,团队永远在救火。

Phase 0 · 准备期

真相 + 治理基础

W1-W2 · 2 月
  • ontoos-code-probe 拉取 output-invoice-service 真实 commit + 47 controllers SQL 地图
  • 47 张 inv_seller_* + 549 张表全量入 OntoOS 湖仓
  • 11+ 套生产库 + 35 db_id 全量入 DMS
  • 任命架构治理小组(1 主架构 + 3 BC Owner + SRE 平台)
  • 基线快照实测,7 大类应急 Runbook 文档化
  • Schema Registry 选型与 PoC

完成标志 盲区不再是黑盒、35 db_id 可查可控、Runbook 全员培训、基线指标实测落表

Phase 1 · 治理期

平台先于业务

M1-M6 · 6 月
  • MQ-Bridge 上线,sqs/rabbit 首批 50 topic 收编
  • seller-bff-invoice 旁路,前 50 高频调用收编
  • OTel SDK 全量注入 + SkyWalking + Prometheus + EFK
  • Sentinel 全量覆盖核心入口 100%
  • Apollo 6 应用 → 19 namespace 双写兼容
  • Schema Registry 接入,DDL 入湖
  • output-invoice-service 抽取率 ≥ 80%

完成标志 80% 高频调用可观测 · MQ 6→3 · seller-config 100% 切流 · 通知准召率 ≥ 99.9%

Phase 2 · 拆分期

Strangler Fig 双跑

M7-M14 · 8 月
  • phoenix-seller-config 归档只读
  • phoenix-red-notification 归档
  • invoice-write/read 物理分离 + CQRS(Debezium CDC)
  • invoice-state-machine(Cola)上线,398 处引用收敛
  • invoice-aggregation-svc strangler 替代 output-invoice-service
  • phoenix-bill 拆 bill-core + write/read
  • pscc-orchestrator + ACL 完整上线
  • 切流大爆炸:6 个核心域同时灰度

完成标志 10 仓→19 域 · 主链路 ≤ 5 跳 · 100% 走 CQRS · PSCC 三态物理隔离

Phase 3 · 收敛期

同构化 + 全面收口

M15-M24 · 10 月
  • MQ 收敛 6→2(RMQ + Kafka),老 SDK 全量移除
  • DB 收敛 35 db_id → 4 套角色
  • K8s 同源:4 集群镜像同源,Helm Chart 100% 复用
  • 跨云切换:AWS→Azure→信创 + DR 演练
  • 前端收敛:198 微应用 → 5 中台 + N 业务壳
  • 冷热分层:13 月热 + 36 月温 + 3 年+冷
  • 老 10 仓退役
  • 19 域稳定性运行 90 天验证

完成标志 19 域稳定 90 天 · 老仓 100% 退役 · KPI 全部达标 · RTO ≤ 15min / RPO ≤ 5min

10 · 团队组织

从 3 Owner 到 15+ BC Owner

10.1 现状盘点

责任人现有负责范围工作量风险
gulei@phoenix-bill + phoenix-seller-invoice + phoenix-seller-config + phoenix-seller-adapter + purchase-resale-service(共 5 仓)严重过载
yefei@phoenix-seller-adapter / output-invoice-service中等
rongying@phoenix-smart-match-invoice + phoenix-red-notification可承受

10.2 目标"4+8+3"模式

平台 SRE 组
4Owner
config / notification / match / event-bus
业务 BC 组 A (销项核心)
4Owner
invoice-write/read/state-machine/aggregation
业务 BC 组 B (跨态/账单)
4Owner
bill-core/write/read / pscc-core

+ 编排组 3 Owner + 基础设施组 4 Owner + 架构治理委员会 5 名 = 22 名核心 Owner

10.3 关键制度

  • BC Owner 制度:每 BC 域必须 1 主 1 副 Owner,主 Owner 离职需 30 天交接;Owner 拥有发布权、变更审批权、SLO 制定权,背负 SLA、稳定性指标、技术债清单
  • ADR 制度:任何跨域架构变更必须写 ADR(背景/选项/决策/后果),沉淀在 OntoOS 湖仓可被 ontoos-probe 查询
  • 双 Owner 制度:平台域强制双 Owner(业务方 + 平台方),关键 owner 离职的应急方案:副 Owner 自动接管 + ADR 沉淀决策
  • 轮值 SRE:每月 1 名 SRE 轮值 P0 故障响应,故障复盘必须 72h 内完成,改进项 3 周内闭环
11 · 风险登记册

20 项风险,4 级处置

#
风险
概率
影响
缓解措施
R1
output-invoice-service 真实实现比预估更糟糕
M0.1 ontoos-code-probe 必做;若真实表 > 800 涉及资金,直接 freeze + strangler 重建
R2
CQRS 读模型同步延迟导致业务看到旧数据
关键字段(状态/金额)走强一致旁路;非关键字段允许 ≤ 1s 最终一致
R3
跨域 Saga 补偿失败导致数据不一致
Outbox 模式 + 幂等键 + 72h 自动重试 + 人工兜底
R4
35 db_id 数据迁移导致业务中断
DB Proxy 屏蔽差异 + DTS 双写 + 每日 diff + DR 演练
R5
盲区服务 M0 未及时完成
强制 2 周内完成;超时即提升为 P0 阻塞;ontoos-code-probe 双轨验证
R6
PSCC 跨三态改造失控
显式 ACL 包 + 决策日志 + 跨域不允 > 2 跳 + 单独立项
R7
灰度切流期间回滚成本
特性开关(Apollo) + 蓝绿 1%→10%→50%→100% 每档 ≥ 7 天 + 影子流量
R8
跨云专线故障
双专线 + GTM DNS 秒级切流 + 跨云 binlog 双向
R9
关键 BC Owner 离职
强制双 Owner + ADR 沉淀 + 30 天交接
R10
多 K8s 集群同步发布失败
GitOps + ArgoCD + 镜像 SHA 锁定 + 集群差异 values-{env}.yaml
R11
BFF 引入初期调用链变深
BFF 端点合并 + 平台层批量接口 + Parallel Flux 并行化
R12
老 10 仓退役不彻底
读兼容保留 90 天 + 流量监控 + 0 流量后才物理关闭
R13
异构库 schema drift 未及时发现
Schema Registry + 每仓 DDL 入湖 + 漂移告警
R14
状态机引擎切换导致业务中断
Cola-Statemachine 灰度切流 + 状态字段双写 + 对账脚本
R15
第三方税局接口变更
channel-adapter 适配层 + 版本协商 + Mock 优先
R16
冷数据归档后查询延迟
历史查询 API + 中台缓存 + OLAP 引擎兜底
R17
SMS/邮件/IM 通道降级
通知通道多活 + 飞书兜底 + 模板分级
R18
Seata 性能瓶颈
自研编排器替代,TCC 仅用于资金场景
R19
数据合规(等保 2.0 / GDPR)
DMS 审计 + 跨境通道独立审计 + 季度合规检查
R20
重构节奏失控(团队疲劳)
季度回顾 + 节奏调整 + 阶段性庆功
12 · PSCC 跨三态专题

进-转-销三态 + ACL 防腐层

PSCC(purchase-resale-service,56 端点 + presale,1 端点)是销项域最复杂的跨态业务。

12.1 现状问题

横跨三个 Bounded Context(进项 → 转销售 → 销项),没有清晰的 ACL(防腐层),复用 inv_seller_* 表 + 进项库直查,任何一态失败需要人工 SQL 修复。

12.2 目标架构

┌────────────────────────────┐ │ pscc-orchestrator │ │ (Saga 编排 + 状态机托管) │ └─────────────┬──────────────┘ │ ┌──────────┼──────────┐ ▼ ▼ ▼ ┌────────┐ ┌────────┐ ┌────────┐ │pscc- │ │pscc- │ │pscc- │ │presale │ │resale │ │archive │ │(进项) │ │(中转+销)│ │(历史) │ └────┬───┘ └────┬───┘ └────┬───┘ ▼ ▼ ▼ 进项库 销项主库 归档库 (只读) (写) (只读)

12.3 ACL 包设计

com.xforceplus.seller.pscc.acl
├── PurchaseACL          # 进项域 → PSCC 域字段转换
├── InvoiceACL           # 销项域 → PSCC 域字段转换
├── ResaleACL            # PSCC 中转态 → 销项态转换
├── DecisionLog          # 跨域决策日志(审计)
├── IdempotencyKey       # 跨域幂等键生成
└── VersionTranslator    # 跨域版本/枚举翻译

12.4 状态机托管(Cola-Statemachine)

┌────────┐ 预开票成功 ┌────────┐ 推送税控成功 ┌────────┐ │ 进项 │ ──────────→ │ 中转 │ ──────────→ │ 销项 │ │ INIT │ │ PRESOLD│ │ ISSUED │ └────────┘ └────────┘ └────────┘ │ │ │ │ 失败 │ 失败 │ 失败 ▼ ▼ ▼ ┌────────┐ ┌────────┐ ┌────────┐ │ REJECT │ │ HOLD │ │ RED_INK│ │ 拒绝 │ │ 挂起 │ │ 红冲 │ └────────┘ └────────┘ └────────┘

12.5 PSCC 关键 KPI

指标基线目标
三态流转成功率~95%≥ 99.9%
三态平均流转时长~4h≤ 30 min
单据卡死率未知< 0.01%
跨域直查次数200+/天0
状态不一致率未知< 0.01%
13 · Anti-Goals

明确不做的事

  1. 不重写所有 controller — strangler + 双跑为主,仅改造最痛的 200 端点
  2. 不立即统一所有异构 DB — 优先 DB Proxy 屏蔽,物理收敛放到 Phase 3
  3. 不引入全新微服务框架 — 沿用 Spring Cloud Alibaba,避免技术栈分裂
  4. 不强制 BFF 必须由前端写 — BFF 现阶段由后端团队维护
  5. 不一次性切换 PSCC — PSCC 跨三态改造最复杂,Phase 2.7 单独立项
  6. 不引入 Seata 大事务 — 自研编排器为主,TCC 仅用于资金场景
14 · 配套工具

OntoOS 全家桶

技能用途使用阶段
ontoos-probe结构元数据查询、服务依赖拓扑、端点表引用全程
ontoos-code-probe真实 commit 检出、AST 分析、调用链追踪M0.1 + 关键决策点
ontoos-dms-queryDMS 已纳管库 SELECT 取数M0+ 持续
ontoos-direct-probe中间件直连(Kafka/Redis/ES)排查应急 + 治理
15 · 一句话总结

关键不是技术,是纪律

24 个月,3 阶段,19 域,0 盲区,2 套 MQ,4 套 DB 角色,15+ BC Owner,1 套 Helm Chart,100% 业务不中断。

五大关键成功因子

  1. 盲区先行 — 不消灭盲区,所有决策都是赌博(M0.1 必做)
  2. 平台先于业务 — config/notification/match/event-bus 四个平台不先做,后续 19 域一样是泥球
  3. BFF 作为缓冲 — 让前端不再"等所有仓",让后端不再"等前端"
  4. BC Owner 制度 — 没有 owner,19 域 = 19 个没人维护的小泥球
  5. 指标先行 — 不立指标,24 个月后无法证明成功

调研材料

销项域重构不是技术升级,是组织与边界的重新对齐。