基于消息的微服务 - API 网关性能



我正在设计一个微服务架构,我有一个与性能相关的问题。这是我在设计中尝试的内容:

  • 我有几个微服务,它们执行不同的操作并将这些结果存储在自己的数据存储中。
  • 微服务通过消息队列接收工作,在消息队列中,它们接收针对给定特定数据运行进程的请求。微服务不会相互通信。
  • 我有一个 API 网关,它实际上有三个旅程:

    1( 接收处理数据的请求,然后将其转换为几条消息,并将其放入队列中,以便微服务在自己的时间进行处理。处理时间可以以分钟或更长(非即时(为单位

    2( 接收有关流程状态的请求,其中返回整个流程的进度。

    3( 接收对组合数据的请求,这是来自服务的所有结果的某种组合。

我的问题在于上面的#3和这个过程的性能。

每当收到此请求时,api 网关都必须将消息请求放入队列以获取来自所有服务的信息,然后必须等待所有服务回复其数据的最新状态,然后它组合此数据并返回给调用方。

这个过程显然相当慢,因为它必须等待每个服务响应。加快速度的方法是什么?

我想解决这个问题的唯一方法是使用另一个聚合服务/数据存储,其中重复数据由我的 api 网关存储和查询。我真的不喜欢这种方法,因为它会重复数据并且是额外的工作/代码。

从我的微服务查询最新数据的"正确"和高性能方法是什么?

可以使用这些方法跨微服务查询数据。 参考
选择性数据复制

通过这种方法,我们将其他微服务所需的数据复制到微服务的数据库中。微服务之间的唯一耦合是在数据复制配置中。

复合服务层 使用此方法,可以引入聚合来自较低级别微服务的数据的复合服务

最新更新