分布式系统中解耦的模式:显式化公共化你的领域事件 - mathiasverraes

栏目: 服务器 · 发布时间: 5年前

内容简介:将一小部分事件标记为公共事件,默认情况下保持其他事件为私有。(有界上下文内部时私有,有界上下文或微服务之间发送消息事件是公有,分成两个不同的消息主题通道)领域事件 不仅可用于与其他有界上下文进行通信,还可用于组织和解耦有界上下文中的代码,在CQRS / Eventsourcing架构中甚至是组织代码的主要方式。

将一小部分事件标记为公共事件,默认情况下保持其他事件为私有。(有界上下文内部时私有,有界上下文或微服务之间发送消息事件是公有,分成两个不同的消息主题通道)

问题

领域事件 不仅可用于与其他有界上下文进行通信,还可用于组织和解耦有界上下文中的代码,在CQRS / Eventsourcing架构中甚至是组织代码的主要方式。

使用单一总线发布所有这些事件非常方便,有效地使它们全部公开。当其中一些事件包含敏感数据时,这是一个问题。更重要的是, 外部API与有界上下文的内部结构紧密耦合。更改内部会强制进行API更改。

解决

在有界上下文内部和外部设置单独的消息传递通道:默认情况下将所有事件保持为私有;对于要公开的事件使用显式@Public注释,标记接口或用isPublic():bool方法指示。

发送事件时,事件发布机制必须知道读取注释并仅在私有信道上发送事件,或者在私有和公共信道上发送事件。

讨论

一般来说,我的感觉是,仔细选择领域事件以反映业务领域,使用泛在的统一语言,并以正确的粒度时设计事件时,很少有问题发生。然后,这些事件在开发过程中会很快变得稳定,很少需要改变。当t域中的有重要改变时,事件可能需要更改,但在这些情况下,无论如何都需要API更改。

也就是说,它是软件设计中一种普遍有用的启发式方法,可以使所有内容尽可能地保持封闭状态,并且仅在有好的情况下打开它。


以上所述就是小编给大家介绍的《分布式系统中解耦的模式:显式化公共化你的领域事件 - mathiasverraes》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Designing Data-Intensive Applications

Designing Data-Intensive Applications

Martin Kleppmann / O'Reilly Media / 2017-4-2 / USD 44.99

Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, w......一起来看看 《Designing Data-Intensive Applications》 这本书的介绍吧!

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具