类型:架构文档 · 建档:2026-08-04 | 长期有效,架构变更时同步更新
技术梳理 - sip-mac 知识图谱看板
基于 Understand-Anything 对 sip-mac 仓库的全量静态分析,生成交互式知识图谱。共 157 节点 / 167 边,覆盖 66 个 Maven 模块、22 个可部署服务入口、69 个 Dubbo 契约接口,直观呈现模块级依赖关系与 RPC 调用网络。
交互说明
点击节点查看详情;拖拽 / 滚轮缩放;红色大节点为枢纽服务(hub)。右上角按钮可查看「架构形态说明」与「枢纽风险说明」。
图谱统计
| 维度 | 数量 |
|---|---|
| 模块 Module | 66 |
| 入口文件 File(@SpringBootApplication) | 22 |
| 契约接口 Class | 69 |
| RPC 调用边 | 58 |
| Maven 依赖边 | 5 |
| 包含 / 实现边 | 104 |
架构分层(7 层)
| 分层 | 模块数 | 说明 |
|---|---|---|
| 业务服务层 | 30 | 承载具体业务能力的可部署 Spring Boot 微服务 |
| RPC 契约层 | 14 | 定义 Dubbo 服务接口的 -rpc 模块,解耦提供方与消费方 |
| Model / DTO 层 | 10 | -model 模块,承载跨服务传输的数据对象与实体定义 |
| 核心公共层 | 6 | core-* 模块,提供缓存 / 云 / 枚举 / ODS / 工具等横切能力 |
| SDK 层 | 3 | -sdk 模块,对外封装的客户端 SDK(如 auth-sdk) |
| 集成 / 中继层 | 2 | -relay 模块,对接外部系统(TTS、COS 等)的中继集成 |
| 共享 Starter | 1 | multi-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
治理建议
- 读写分离 / CQRS:把高频读场景从
sip-mac-data拆出只读服务,核心写库减负 - 缓存化(Redis):消费方 / 网关层加缓存,data 抖动时不直接雪崩
- 熔断降级(Sentinel / Resilience4j):消费方对 data 的 Dubbo 调用加熔断 + 超时,快速失败而非线程堆积
- 拆子域:按业务域(会员 / 商品 / 订单…)将 data 拆分为多个专项服务,缩小爆炸半径
- 契约版本化:data 的 Dubbo 接口变更走兼容版本号,避免"牵一发而动全身"
引导游览(8 步)
- 总览:66 模块微服务单体仓 — 伊利 SIP 项目大型微服务单体仓,基于 Spring Boot + Spring Cloud + Dubbo。共 66 个模块,编译期 Maven 内部依赖极少,运行期通过 Dubbo RPC 实现服务间调用。
- API 网关与聚合层 —
sip-mac-openapi是面向前端的 API 聚合入口,消费 award-distribution、data 等多个内部服务,扮演网关 / 聚合角色。 - 核心数据枢纽服务 —
sip-mac-data与sip-mac-data-relay是被最多服务依赖的枢纽,提供基础数据与编码库服务,是整个系统的数据底座。 - 业务能力服务 — promotion(769 个 Java 文件,最大业务模块)、activity、award-distribution、auth、crs、aw 等是可部署的业务服务。
- 集成 / 中继层 —
code-relay、data-relay等-relay模块是集成外部系统的适配层(如 TTS 语音、COS 对象存储)。 - RPC 契约层与解耦 — 14 个
-rpc模块定义 Dubbo 服务接口,提供方用@DubboService实现,消费方用@DubboReference引用,编译期完全解耦。 - Model / DTO、核心公共与 SDK — 10 个
-model模块承载跨服务传输对象;6 个core-*模块提供横切能力;auth-sdk等封装对外客户端。 - 服务入口与启动 — 全仓 22 个
@SpringBootApplication启动类,对应 22 个可独立部署的微服务,配合 Nacos 注册与 RocketMQ 消息构成完整运行时。