番摊机器人 四重边界正好串起了你聊过的所有关于「边界控制」的话题。 [citation:19.6]
这篇文章是今天(09-18)博客园刚发的,作者跟你之前看的「DDD、SOA、微服务和微内核」是同一人(xiexj)。四重边界正好串起了你聊过的所有关于「边界控制」的话题。 [citation:19.6]
---
四重边界全景
第一重 第二重 第三重 第四重
分析边界 → 设计边界 → 实现边界 → 运行边界
子域 限界上下文 分层架构 聚合
(Core/Support (Bounded (Ports & (Aggregate
/Generic) Context) Adapters) Root)
问题空间 解决方案空间 代码组织 最小隔离单元
「做什么」 「在哪做」 「怎么做」 「怎么保证一致」
---
逐层拆解
🥇 第一重:分析边界——子域(Subdomain)
本质:划分问题空间,判断业务价值优先级。
| 子域类型 | 特征 | 例子 |
|---------|------|------|
| 核心域 | 公司核心竞争力,决定产品成败 | 电商的推荐算法、支付的核心链路 |
| 支撑域 | 有企业特性但不具通用性,必需但不核心 | 数据字典、内部审批流 |
| 通用域 | 无个性化诉求,可买现成方案 | 认证、权限、短信通知 |
这一重边界要回答的核心问题:资源往哪里投——核心域自己做,通用域能买则买。
---
🥈 第二重:设计边界——限界上下文(Bounded Context)
本质:进入解决方案空间后,划定模型的边界。
这是 DDD 里最被人熟知、也最容易被误用的概念。作者点出一个关键洞察:
引入限界上下文的目的,不在于如何划分,而在于如何控制边界。
从三个视角看:
| 视角 | 边界内容 |
|------|---------|
| 领域逻辑 | 模型完整性与一致性边界——同一个术语在不同上下文里可以有不同的含义 |
| 团队协作 | 康威定律——一个上下文对应一个团队,降低沟通成本 |
| 技术实现 | 系统架构的应用边界——上下文间通过防腐层(ACL)集成 |
这一重边界要回答的核心问题:团队怎么拆、服务怎么分、各自管什么模型。
---
🥉 第三重:实现边界——分层架构(Layers / Ports & Adapters)
本质:在限界上下文内部,基础设施层、应用层与领域层之间的隔离。
从传统四层架构到整洁架构再到菱形对称架构的演进:
传统四层(依赖方向问题):
UI → 应用 → 领域 → 基础设施 ← 领域在最内但依赖它?
↑
领域本应是核心,却被基础设施拖累
加入依赖倒置:
外层依赖内层接口,内层不依赖外层
资源库(Repository)接口放领域层,实现放基础设施层
但出口端口(如 EventPublisher)放领域层很奇怪——
发消息到 MQ 的接口放在领域层?不伦不类
→ 菱形对称架构的解法:
北向网关(入):远程网关 + 本地网关 = 端口+适配器一体
南向网关(出):端口与适配器分离,领域层只定义接口
南北对称,领域层稳定在中间
这一重边界要回答的核心问题:领域代码和技术代码怎么隔离才能保证领域层不被技术框架污染。
---
🃏 第四重:运行边界——聚合(Aggregate)
本质:维持领域内核稳定性的最小设计单元。
关键规则:
| 规则 | 含义 |
|------|------|
| 聚合根是唯一入口 | 外部只能通过 ID 引用聚合根,不能引用聚合内部的实体 |
| 内部强一致 | 一个聚合内的所有对象在同一个事务中保持一致 |
| 跨聚合最终一致 | 不同聚合之间不能共享一个数据库事务,通过领域事件达成最终一致性 |
| 最小化设计 | 聚合应该尽量小——只包含必须保证事务一致性的对象 |
这一重边界要回答的核心问题:哪些对象必须一起变、哪些可以分开变。
---
和你聊过的所有话题的连接点
四重边界 你聊过的对应话题
──────── ────────────────
第一重:子域 微内核的核心/插件划分 —— 核心域就是「不变的内核」
标准外设库的时钟/GPIO —— 核心任务是稳定的,优先级最高
第二重:限界上下文 DDD → 微服务 —— 一个限界上下文 = 一个微服务
SKILL 微创手术 —— 在哪个上下文里动刀、不动哪个
第三重:分层架构 标准外设库 —— 领域层 = 寄存器操作抽象
基础设施层 = 具体芯片实现
依赖倒置 = HAL 接口定义在领域、实现在芯片包
第四重:聚合 Kafka 分区领导者 —— 聚合根 = partition leader
保持内部一致性,跨聚合最终一致(跨 partition 异步复制)
这几轮聊下来,你关心的东西其实一直是一个主题——在复杂系统里划定稳定可预测的操作边界,让变更安全可控。标准外设库的寄存器边界、DDD 的领域边界、SKILL 的约束边界、微内核的核心/插件边界——它们是同一个思维在不同层面上的投影。