Appearance
L04-04 服务拆分:按技术特性拆,不按业务拆
全局中心内容:AI 服务的拆分依据是「资源特性不同」,不是「业务模块不同」。 全局讲解主线:一个拆错的案例 → 拆分维度 → 六个服务 → 租户传递 → 数据边界 → 编码 → ADR。
P1 · 产出页
中心内容:一份按技术特性划分的服务清单与依赖图。
- 讲解技巧
- 开场案例:按业务拆成「客服 AI」「营销 AI」,结果两边都重复做了灌库、都踩了同样的坑。
- 时长:30s
P2 · 拆分维度
中心内容:看资源特性——CPU 密集 / IO 密集 / 长时运行 / 高频短请求。
- 讲解技巧
- 讲清原则:把资源特性相同的放一起,不同的分开,这样才能独立扩容。
- 举例:灌库是 CPU/IO 密集的批处理,绝不能和在线问答放一个服务。
- 时长:6min
P3 · 六个服务
中心内容:gateway / rag / agent / ingest / admin / eval。
页面内容:每个服务的职责、资源特性、扩容策略
讲解技巧
- 强调 ingest 独立是最重要的一条:它是批处理,会拖垮在线服务(呼应 02-16)。
- 提醒 eval 也可以不常驻,用定时任务跑。
时长:7min
P4 · 租户传递
中心内容:租户上下文要在服务间显式传递。
页面内容:Header 传播 + 拦截器 + ThreadLocal
讲解技巧
- 强调「显式」:隐式依赖会导致某个服务漏传,然后串数据。
- 提醒跨线程池和 MQ 时要手动传递,这是最容易漏的地方。
时长:6min
P5 · 数据边界
中心内容:向量数据、业务数据、审计数据分开存。
- 讲解技巧
- 讲清审计数据要独立:它是合规资产,不能被业务操作误删。
- 时长:4min
P6 · 拆分代价
中心内容:分布式事务、排障链路变长、运维成本上升。
- 讲解技巧
- 客观提醒:不到必要的程度不要拆,单体内用模块隔离也能活很久。
- 时长:5min
P7 · 编码:上下文传递
中心内容:Feign/ RestClient 拦截器自动带租户头。
- 讲解技巧
- 强调入口处校验:没有租户头的内部调用要拒绝,防止绕过。
- 时长:6min
P8 · ADR 记录
中心内容:把拆分决策与理由写进 ADR。
- 讲解技巧
- 展示一份拆分 ADR 的片段,强调「被否决的方案」也要记。
- 时长:4min
P9 · 避坑与小结
中心内容:服务数量增长的代价是递增的,控制在 6 个以内。
- 讲解技巧
- 引出下一节:有服务要部署,数据不出域怎么做——04-05 私有化。
- 时长:3min
讲师备忘
| 项 | 内容 |
|---|---|
| 课前必做 | 准备服务划分图;准备租户传递链路图 |
| 最容易超时处 | P3 六个服务,容易被逐个追问细节 |
| 学员最常问 | 「能不能合并 rag 和 agent?」答:可以,早期合并更省事 |
| 现场备用 | 无法演示多服务 → 展示模块划分与配置 |