DDD领域驱动设计,总算讲清楚了

本文详细介绍了领域驱动设计中的领域事件,包括其定义、使用场景、识别方法、为何使用领域事件而非直接调用,以及如何处理领域事件。领域事件有助于解耦系统,维持业务一致性,尤其在微服务架构中,通过事件驱动实现跨服务通信,确保数据最终一致性。文章还探讨了事件的构建、发布、持久化和事件总线等关键概念,强调了数据对账和异常处理的重要性。
摘要由CSDN通过智能技术生成

学习什么是领域事件.什么时候并且为什么要使用领域事件。 •学习如何将领域事件建模成对象,何时应该为领域事件创建唯一的身份标识。 •学习一个轻量级的发布-订阅[Gamma et al]模式。 •学习哪些组件用于发布事件,哪些组件用于订阅事件。 •学习为什么我们需要一个事件存储.如何实现事件存储、如何使用事件存储。 •学习S aaSOvation团队是如何通过不同的方式将领域事件发布给自治系统

1 何时、为什么使用领域事件?

1.1 定义

使用领域事件来建模发生在领域中的一些事情。这是一个功能强大的建模工具,让人爱不释手。 使用领域事件时,首先就是要对不同事件进行定义。

《领域驱动设计》一书中并未给出领域事件的定义。因为该模型是在该书出版后才被提出。 当前对领域事件的定义:领域专家所关心的发生在领域中的一些事件。 将领域中所发生的活动建模成一系列的离散事件。每个事件都用领域对象来表 示……领域事件是领域模型的组成部分,表示领域中所发生的事情。[Evans, Ref, P-20] 一

个领域事件将导致进一步的业务操作,在实现业务解耦的同时,还有助于形成完整的业务闭环。

领域事件可以是业务流程的一个步骤,比如一个事件发生后触发的后续动作,比如密码连续输错三次,触发锁定账户的动作。

1.2 识别领域事件

  • “如果发生……,则……”

  • “当做完……的时候,请通知……”(这里的通知本身并不能构成一个事件,而只是表明我们需要向外界发出通知)

在这些场景中,如果发生某种事件后,会触发进一步的操作,那么这个事件很可能就是领域事件。由于领域事件需要发布到外部系统,比如发布到另一个限界上下文。由于这样的事件由订阅方处理,它将对本地和远程上下文产生深远的影响。

那领域事件为什么要用最终一致性,而不是传统SOA的直接调用?

聚合的一个原则:一个事务中最多只能更改一个聚合实例。所以

  • 本地限界上下文中的其他聚合实例便可以通过领域事件的方式同步

  • 用于使远程依赖系统与本地系统保持一致。解耦本地系统和远程系统还有助于提高双方协作服务的可伸缩性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值