Skip to content

类型:架构文档 · 建档:2026-08-04 | 长期有效,架构变更时同步更新

技术梳理 - sip-mac 知识图谱看板 ​

基于 Understand-Anything 对 sip-mac 仓库的全量静态分析,生成交互式知识图谱。共 157 节点 / 167 边,覆盖 66 个 Maven 模块、22 个可部署服务入口、69 个 Dubbo 契约接口,直观呈现模块级依赖关系与 RPC 调用网络。

交互说明

点击节点查看详情;拖拽 / 滚轮缩放;红色大节点为枢纽服务(hub)。右上角按钮可查看「架构形态说明」与「枢纽风险说明」。


图谱统计 ​

维度数量
模块 Module66
入口文件 File(@SpringBootApplication)22
契约接口 Class69
RPC 调用边58
Maven 依赖边5
包含 / 实现边104

架构分层(7 层) ​

分层模块数说明
业务服务层30承载具体业务能力的可部署 Spring Boot 微服务
RPC 契约层14定义 Dubbo 服务接口的 -rpc 模块,解耦提供方与消费方
Model / DTO 层10-model 模块,承载跨服务传输的数据对象与实体定义
核心公共层6core-* 模块,提供缓存 / 云 / 枚举 / ODS / 工具等横切能力
SDK 层3-sdk 模块,对外封装的客户端 SDK(如 auth-sdk)
集成 / 中继层2-relay 模块,对接外部系统(TTS、COS 等)的中继集成
共享 Starter1multi-datasource 等多数据源自动装配 starter

架构形态:微服务单体仓 ​

sip-mac 属于 第 ③ 种架构形态——代码集中管理,服务独立部署,运行期靠 Dubbo RPC 解耦:

  • ① 传统单体应用:一个进程、一个包、一起发布
  • ② 微服务(多仓):每服务一仓库、独立构建部署
  • ③ 微服务单体仓:66 模块同仓管理 · 22 个独立部署 · 运行期靠 Dubbo RPC 解耦

枢纽服务(高依赖,共 6 个) ​

少数模块被大量服务依赖,是架构中的单点枢纽:

枢纽服务被依赖数
sip-mac-data被 21 个服务依赖
sip-mac-promotion被 7 个服务依赖
sip-mac-receive被 6 个服务依赖
sip-mac-data-relay被 4 个服务依赖
sip-mac-openapi被 4 个服务依赖
sip-mac-report被 4 个服务依赖

单点风险 ​

以 sip-mac-data 为例(被 21 个上游服务依赖):

  • 爆炸半径大:一处故障 / 一次不兼容变更 = 全局波及
  • 变更牵制重:任何接口改动需协调 21 方同步回归,迭代慢、出错概率高
  • 容量瓶颈:所有读写汇聚点,流量高峰易成性能瓶颈,且难以独立扩容

21 个真实消费者:sip-mac-auth、sip-mac-auth-sdk、sip-mac-aw、sip-mac-award-distribution、sip-mac-code、sip-mac-code-accessor、sip-mac-code-relay、sip-mac-crs、sip-mac-crs-async、sip-mac-data-relay、sip-mac-data-scope、sip-mac-dm、sip-mac-download-center、sip-mac-gateway、sip-mac-openapi、sip-mac-promotion、sip-mac-report、sip-mac-special-activity、sip-mac-warn、sip-mac_dcenter、sip-operation-log

治理建议 ​

  1. 读写分离 / CQRS:把高频读场景从 sip-mac-data 拆出只读服务,核心写库减负
  2. 缓存化(Redis):消费方 / 网关层加缓存,data 抖动时不直接雪崩
  3. 熔断降级(Sentinel / Resilience4j):消费方对 data 的 Dubbo 调用加熔断 + 超时,快速失败而非线程堆积
  4. 拆子域:按业务域(会员 / 商品 / 订单…)将 data 拆分为多个专项服务,缩小爆炸半径
  5. 契约版本化:data 的 Dubbo 接口变更走兼容版本号,避免"牵一发而动全身"

引导游览(8 步) ​

  1. 总览:66 模块微服务单体仓 — 伊利 SIP 项目大型微服务单体仓,基于 Spring Boot + Spring Cloud + Dubbo。共 66 个模块,编译期 Maven 内部依赖极少,运行期通过 Dubbo RPC 实现服务间调用。
  2. API 网关与聚合层 — sip-mac-openapi 是面向前端的 API 聚合入口,消费 award-distribution、data 等多个内部服务,扮演网关 / 聚合角色。
  3. 核心数据枢纽服务 — sip-mac-data 与 sip-mac-data-relay 是被最多服务依赖的枢纽,提供基础数据与编码库服务,是整个系统的数据底座。
  4. 业务能力服务 — promotion(769 个 Java 文件,最大业务模块)、activity、award-distribution、auth、crs、aw 等是可部署的业务服务。
  5. 集成 / 中继层 — code-relay、data-relay 等 -relay 模块是集成外部系统的适配层(如 TTS 语音、COS 对象存储)。
  6. RPC 契约层与解耦 — 14 个 -rpc 模块定义 Dubbo 服务接口,提供方用 @DubboService 实现,消费方用 @DubboReference 引用,编译期完全解耦。
  7. Model / DTO、核心公共与 SDK — 10 个 -model 模块承载跨服务传输对象;6 个 core-* 模块提供横切能力;auth-sdk 等封装对外客户端。
  8. 服务入口与启动 — 全仓 22 个 @SpringBootApplication 启动类,对应 22 个可独立部署的微服务,配合 Nacos 注册与 RocketMQ 消息构成完整运行时。