Skip to content

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?」答:可以,早期合并更省事
现场备用无法演示多服务 → 展示模块划分与配置