DDD学习 Day5 领域事件

92 阅读2分钟

领域事件是领域模型中非常重要的一部分,用来表示领域中发生的事件,一个领域事件将导致进一步的业务操作,在实现业务解耦的同时,还有助于形成完整的业务闭环。

在聚合的设计中,要求在边界之外使用最终一致性,一次事务最多只能更改一个聚合的状态。如果一次业务操作涉及多个聚合状态的更改,应采用领域事件的最终一致性。领域事件驱动设计可以切断领域模型之间的强依赖关系,事件发布完成后,发布方不必关心后续订阅方事件处理是否成功,这样可以实现领域模型的解耦,维护领域模型的独立性和数据的一致性。在领域模型映射到微服务系统架构时,领域事件可以解耦微服务,微服务之间的数据不必要求强一致性,而是基于事件的最终一致性。

领域事件可以分为微服务内的领域事件和微服务之间的领域事件,其中微服务内的领域事件都发生在同一个进程内,进程自身可以很好地控制事务,因此不一定需要引入消息中间件。而跨微服务的领域事件会在不同的限界上下文或领域模型之间实现业务协作,其主要目的是实现微服务解耦,减轻微服务之间实时服务访问的压力。

跨微服务的事件机制要总体考虑事件构建、发布和订阅、事件数据持久化、消息中间件,甚至事件数据持久化时还可能需要考虑引入分布式事务机制等。

此文章为2月Day5学习笔记,内容来源于极客时间《DDD 实战课》