
在使用 DDD 进行微服务设计时,用到了很多解耦策略来实现领域模型和微服务设计的“高内聚,低耦合”。下面我们一起来总结一下,看看用到了哪些解耦策略? 首先来看一下微服务或聚合之间的解耦策略。 ❏ 限界上下文实现了不同业务领域边界的微服务物理边界的解耦。 ❏ 聚合实现了微服务内不同聚合之间逻辑边界的解耦。 ❏ 微服务之间通过领域事件和消息中间件,以数据最终一致性的策略,实现了微服务之间的异步调用和服务解耦。 ❏ 通过适当的数据冗余设计,如值对象的业务快照数据设计,实现了跨微服务不同聚合之间的数据解耦。 再来看一下微服务内的解耦策略。 ❏ DDD 分层架构,通过分层和不同层的职责边界定义,实现了微服务内各层职能和代码的解耦。 ❏ 用户接口层通过 facade 接口和数据组装适配,实现了微服务核心业务逻辑与前端应用或用户解耦。 ❏ 仓储模式通过依赖倒置策略,实现了核心领域逻辑与基础资源处理逻辑的解耦。 ❏ 微服务代码目录通过聚合目录和分层目录代码边界,实现了不同职能代码边界的解 耦,有利于微服务架构演进时代码的组合和拆分。 ❏ 应用服务通过对不同聚合领域服务的组合和编排,实现了同一个微服务内不同聚合的解耦。 ❏ 聚合之间通过聚合根 ID 引用,而不是对象引用方式,完成不同聚合领域对象之间的访问,实现了聚合之间不同领域对象的解耦。 ❏ 微服务内聚合之间通过事件总线,采用数据最终一致性策略,实现了聚合之间服务同步调用的解耦。

为实现保险领域建模和微服务建设,我们可以根据业务关联度以及流程边界将保险领域细分为:承保、收付、再保以及理赔等子域,而承保子域还可以继续细分为投保、保全(寿险)、批改(财险)等子子域。
在投保这个限界上下文内可以建立投保的领域模型,投保的领域模型最后映射到系统就是投保微服务。这就是一个保险领域的细分和微服务的建设过程。
通用语言定义上下文含义,限界上下文则定义领域边界,以确保每个上下文含义在它特定的边界内都具有唯一的含义,领域模型则存在于这个边界之内。
设计过程中我们可以用一些表格,来记录事件风暴和微服务设计过程中产生的领域对象及其属性。
