事件溯源
问题陈述
微服务架构将应用程序构建为一组松耦合的微服务,每个服务都可以以敏捷的方式独立开发,以实现持续交付/部署。如果我们使用了每个服务一个数据库的设计模式,那么如何实现跨越多个服务的交易呢?
解决方案
我们可以使用事件溯源模式进行服务间通信。在这种类型的通信中,每个服务都会将每个操作产生的事件持久化到事件存储中。每个服务都可以订阅这些事件,并相应地更新其交易状态。例如,订单服务与客户服务。客户服务可以订阅订单服务更新的事件,并相应地更新其状态。
优势
以下是使用事件溯源模式的优势:
非常适合事件驱动架构 - 此模式允许在状态发生变化时可靠地发布事件。
持久化事件 - 由于事件而不是领域对象被持久化,因此不会发生对象关系不匹配。
审计日志 - 由于每次更改都会捕获事件,因此审计日志涵盖了 100% 的更改。
实体状态识别 - 我们可以对事件数据库创建时间查询,以检查实体在任意时间点的当前状态。
从单体架构到微服务架构的迁移变得更容易 - 使用事件溯源模式,我们可以创建通过事件进行通信的松耦合微服务。因此,从单体到基于微服务的应用程序开发的迁移变得更容易。
广告