领域事件:架构
领域专家所关心的在领域中的一些事件。微服务
将领域中所发生的活动建模城一系列的离散事件。每一个事件都用领域对象来表示。工具
领域事件是领域模型的组成部分,表示领域中所发生的事情。spa
重要的事件确定会在系统其余地方引发反应,所以理解为何会有这些反应一样也很重要。--- Martin Fowler对象
一个领域事件能够理解为是发生在一个特定领域中的事件,是你但愿在同一个领域中其余部分知道并产生后续动做的事件。可是并非全部发生过的事情均可以称为领域事件。一个领域事件必须对业务有价值,有助于造成完整的业务闭环,也即一个领域事件将致使进一步的业务操做。事件
领域事件能够是业务流程中的一个步骤。扩展
若是在通用语言中存在“当a发生时,咱们就须要作到b。”这样的描述,则代表a能够定义成一个领域事件。领域事件的命名通常也是“产生事件的对象名称 + 完成的动做的过去式”的形式。定时器
例如:订单的发货事件 OrderDispathedEvent方法
领域事件的优势:命名
领域事件能够是一种基于事件的架构。事件架构的好处是能够把处理的业务解耦,实现系统的可扩展性,提升主业务流程的内聚性。
领域事件的特色:解决领域的聚合性问题、也是领域分析的工具。领域事件能够经过观察者模式和订阅模式进行实现。比较常见的实现就是事件总线。
事件风暴:
事件风暴也称为事件建模,相似头脑风暴,经过事件风暴的方法能够快速分析复杂业务领域,完成领域建模的目标。
事件风暴是一项团队活动,旨在经过领域事件识别出聚合根,今儿划分微服务的限界上下文。在活动中,团队先经过头脑风暴的形式罗列出领域中的全部的领域事件,整合以后造成最终的领域事件集合,而后对于每个事件,标注出致使该事件的命令,而后再为每一个事件标注出命令发起方的角色,命令能够是用户发起的,也能够是第三方系统调用或者是定时器触发等。最后对事件进行分类这里出聚合根以及限界上下文。
可以引起事件的事情包括用户行为、外部系统所发生的事情以及时间的流逝。事件也有助于找到领域的边界,对属于的不一样阐述可能就意味着存在边界。
事件风暴中咱们关注的东西:
事件 -> 某个动做的结果
属性 -> 事件的输入、输出
命令 -> 某个动做
实体 -> 命令的触发者
简单理解就是谁(实体)使用什么(输入)作了什么(命令、动做)产生了什么(输出)影响了什么(事件)。