Java互联网科技Java 杂谈

构建微服务的三种重要模式——DZone微服务

2019-08-23  本文已影响3人  Java_苏先生

研究了事件采购/事件溯源,Saga和CQRS模式如何影响微服务的发展。

微服务架构风格现在在业界获得了极大的普及。越来越多的组织希望转向微服务架构。

但是,构建微服务并不容易。 在这篇文章中,我们将看看三个可以帮助您创建微服务的重要模式。

事件溯源/事件采购

EventSourcing事件溯源试图解决围绕原子更新数据库以及发布事件的问题。

这意味着当您在领域实体上执行某些操作时,可以将其视为领域事件。并且领域实体的状态存储为这些领域事件的序列集合。换句话说,只要插入新记录或在现有记录上更新某些内容,就会创建一个新事件。事件存储库会跟踪实体上发生的所有事件。

现在,让我们假设特定帐户发生以下交易:

以下是如何以事件溯源方式存储:

每当存在对领域对象的当前状态的请求时,重放事件并构造状态。

事件源实现可以使用标准Java框架(如Spring Boot和Axon)的组合来完成。

CQRS

CQRS代表Command-Query Responsibility Segregation。通常,CQRS与事件采购一起实施。

CQRS的主要用途是解决API组合产生的问题。

在典型的事件采购和CQRS设置中,CQRS应用程序侦听来自多个应用程序的域事件。使用这些事件更新和维护专门用于查询的数据库。根据业务案例,查询数据库可以聚合复杂查询。

Saga模式

Saga Pattern是在微服务架构中实现分布式事务的直接解决方案。

通常,在基于微服务的应用程序中,每个微服务都将拥有自己的数据库。但是,某些业务流程需要多个微服务之间的通信。这就是Saga Pattern的用武之地。典型的Saga实现可以看作是一系列本地事务交易,其中每笔交易只占Saga整体工作的一小部分。换句话说,Saga模式在微服务架构中几乎是必需的。

让我们看一个典型的食品配送应用程序流程中的一个简单示例。

当用户下订单时,可能发生的一系列操作是:

(banq注:Saga模式是一种流程编排的回退事务,还需要专门的流程框架辅助,如Camunda)

上一篇 下一篇

猜你喜欢

热点阅读