加载中...

本篇要搞懂的 3 件事:DDD / 中台 / 微服务三者各是什么角色、它们怎么对应起来、用 DDD 给中台建模的五步流程。

本讲是 09(中台是什么)和 11(中台实战案例)之间的"桥"——把"中台"这个业务概念和"DDD/微服务"这套方法论正式接上。

承接前文:09 讲说清了"中台是什么、该共享什么"。10 讲回答一个更根本的问题——凭什么用 DDD 来建中台?三者怎么配合?

先用大白话打底:开连锁餐厅的故事

这一讲难,是因为满屏都是抽象词(中台、子域、限界上下文、领域模型、微服务),全靠抽象解释抽象。先讲一个全是实物的故事,每个抽象词都对一个看得见的东西,后面看表格就不晕了。

你开了个餐饮集团,旗下有好多家店:堂食店、外卖店、商场档口、小程序点单……(这些就是前台,直接面对顾客。)

一开始每家店各干各的:各自买菜、各自熬高汤、各自调酱料、各自切配。结果呢——重复劳动(每家店都熬一遍汤),而且各店口味还不统一

于是你建了个 「中央厨房」:把"谁都要用、又该统一"的活集中做好,比如熬高汤、配酱料、净菜切配,做成半成品配送给各门店。门店要用直接拿,不用自己从头做。这个中央厨房,就是「中台」。

现在对号入座,每个抽象词 = 故事里的一个实物:

抽象词 餐厅故事里是什么 说明
领域 / 业务域 你整个餐饮集团的全部生意 最大的那个圈
子域 把生意切成几摊:熬汤、酱料、切配、招牌菜研发…… 大圈切成的小块
核心域 招牌菜研发(你的核心竞争力,别人抄不走) 最该砸资源的那摊
通用域 / 支撑域 熬汤、切配、洗菜(谁都要、不分高下) 通用的活
中台 中央厨房里的一个个车间(高汤车间、酱料车间……) 子域落到组织上 = 一个中台
核心中台 / 通用中台 招牌菜车间(核心)/ 高汤切配车间(通用) 中台按重要性分类
限界上下文 一个车间内"自成一套、不和别人混"的工作范围 车间的边界
微服务 真正盖起来、能独立运转的那个车间(有自己的人、设备、流程) 把"车间设计图"真正建成
DDD "怎么科学地规划这些车间、再把它们一个个建起来"的整套方法 贯穿设计到施工的方法论

带着这个故事,本讲三句话就懂了:

  1. 中台 = 业务模型:先在图纸上规划"中央厨房分几个车间"——这是抽象的业务能力。
  2. 微服务 = 系统实现:把每个车间真正盖出来、能跑起来——这是落地的代码系统。
  3. DDD = 方法论:既教你"怎么画车间规划图"(战略设计),又教你"怎么把车间盖出来"(战术设计)。

后面所有的表格和五步法,本质都在讲这一件事:先把生意切成车间(战略),再把每个车间盖成能跑的系统(战术)。

三者各是什么角色(一句话各就各位)

中台是业务模型(抽象出来的业务能力),微服务是这个模型的系统实现,DDD 是同时指导"建模"和"实现"的方法论。

角色 是什么 用 DDD 的哪把"利器"
中台 抽象出来的业务模型(业务领域不断细分、聚合重构的产物) 战略设计(领域建模、划限界上下文)
微服务 业务模型的系统实现 战术设计(聚合/实体/领域事件/领域服务/分层架构)
DDD 连接两者的方法论 战略 + 战术,两头都管

一句话:中台和微服务,正是 DDD 实战的最佳场景。

DDD 的本质(回顾)

DDD 解决业务问题的套路:把业务领域按规则不断细分 → 分到合适粒度后限定边界 → 在边界内建领域模型 → 用代码实现。

  • 领域 → 子域 → 子子域……分到适合建模为止。
  • 子域按重要性/功能属性分三类:核心域、通用域、支撑域(详见 02 讲)。

保险领域的高阶子域划分(核心子域 / 通用子域 / 支撑子域)

看图:保险这个"领域"被切成多块——营销/核保/理赔/承保是核心子域,用户/客户/订单/支付是通用子域,产品管理/单证/数据字典是支撑子域
⚠️ 核心域怎么划没有标准答案,必须结合企业战略——这正体现了领域建模的重要性。划分的意义是:区分各子域的重要性,进而决定资源投入和建设策略

三者怎么对应(建立映射关系)

作者从两个视角看同一个企业业务架构,把它们对照起来:

DDD 领域分析视角 ↔ 中台建设视角的对应关系

DDD 视角 中台视角 关系
领域 业务域 对应
核心域 核心中台 对应
通用域 + 支撑域 通用中台 对应(划子域是为定资源投入,重点是核心域,所以通用/支撑可暂不严格区分)
子域 中台 功能范围一致 → 可以把"子域"统一叫"中台"
领域模型所在的限界上下文 微服务 对应

💡 关键一步——建通用语言:DDD 第一原则是先建通用语言。把 DDD 引入中台时,既然"子域"和"中台"功能范围一致,就统一术语为"中台",避免团队各说各话。

建好这套映射后,就能用 DDD 来给中台做业务建模了。

保险例子里业务中台分两类:

  • 核心中台:营销、承保、理赔等(保险核心业务能力)
  • 通用中台:订单、支付、客户、用户等(支撑核心流程跑通全流程)

中台如何建模(DDD 五步法)

中台业务抽象 = 业务建模 = DDD 战略设计;系统抽象 = 微服务建设 = DDD 战术设计。

步骤 做什么 属于
第 1 步 把业务域细分为多个中台(核心域按业务流程分,通用/支撑域按功能属性/集合分),再归类为核心中台 / 通用中台 战略
第 2 步 选一个中台,用例/场景/用户旅程做事件风暴,找出实体、聚合、限界上下文,初步建主领域模型 战略
第 3 步 以主领域模型为基础,扫描其它中台领域模型,检查重复 / 需要重组的领域对象,提炼重构主领域模型 战略
第 4 步 换下一个主领域模型,重复第 3 步,直到所有模型都比对重构完 战略
第 5 步 基于领域模型设计微服务,系统落地 战术

⚠️ 为什么需要第 3、4 步:各中台是独立建模的,难免出现——同一个领域对象重复出现在多个模型里,或本该同属一个聚合的对象散落在不同中台。所以第 2 步只求"初步",靠第 3、4 步跨中台比对、提炼、重组,才能得到内聚完整的最终模型。

🪞 接着餐厅故事理解:你让各车间分头列"自己要干的活"。结果发现——"切葱花"高汤车间在干、酱料车间也在干(重复);而"熬骨汤"本该归高汤车间统一干,却散在好几个车间各熬各的(不内聚)。第 3、4 步就是把所有车间的活摊在一起对一遍:重复的合并、该归一处的归位。不这么做,盖出来的车间就会功能打架、各干各的。

中台设计全过程:战略设计(业务域→中台→领域模型)+ 战术设计(领域模型→微服务)

看图:左侧"战略设计"= 第 1~4 步(业务域分解为中台、归类、领域建模);右侧"战术设计"= 第 5 步(每个领域模型映射成一个微服务)。一个限界上下文/领域模型 → 一个微服务,是这里的落地主线。

保险领域填上真实数据后的样子(取通用中台的客户、订单、用户三个中台示例):

保险中台建模实例(客户→客户信息/客户视图,用户→用户管理/登录认证/权限,订单→订单模型)

中台 提炼出的领域模型 → 微服务
客户中台 客户信息、客户视图
用户中台 用户管理、登录认证、权限
订单中台 订单模型

总结

DDD、中台、微服务"看似风马牛不相及,实则缘分匪浅":中台是业务模型、微服务是系统实现、DDD 是贯穿两者的方法论

对应关系:领域↔业务域、核心域↔核心中台、通用/支撑域↔通用中台、限界上下文↔微服务;功能范围上子域与中台一致,可统一术语为"中台"(先建通用语言)。

建模五步法:①业务域分解为中台并归类 → ②选中台做事件风暴建初步模型 → ③跨中台比对、提炼重组 → ④遍历所有模型重复③ → ⑤领域模型映射为微服务落地。其中①~④是 DDD 战略设计,⑤是战术设计。

一句话速记

中台=业务模型、微服务=系统实现、DDD=方法论;战略设计把业务域切成中台并建领域模型,战术设计把每个领域模型(限界上下文)落成一个微服务。

思考题

你的企业在做中台吗?现在用什么方法做中台业务建模?和 DDD 的方法相比孰优孰劣?

  • 你们的"中台/子域"划分,是结合企业战略来定核心域的吗,还是按技术/组织惯性切的?
  • 有没有"同一个业务对象散落在多个系统、各建一份"的情况?(这正是第 3、4 步要解决的)
公告栏
这是我的个人知识库。
记录技术,也记录生活 —— 读过的、试过的、想明白的,都堆在这儿。
最新文章
网站资讯
文章数目 :
5
已运行时间 :
本站总字数 :
15.7k
本站访客数 :
本站总访问量 :
最后更新时间 :
全局知识图谱
当前页面 已访问 文章 标签
ESC 关闭 · 滚轮缩放 · 拖拽移动 · Ctrl+G 开关