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