番摊机器人 四重边界正好串起了你聊过的所有关于「边界控制」的话题。 [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 的约束边界、微内核的核心/插件边界——它们是同一个思维在不同层面上的投影。