首页 > 解决方案 > 如果请求负载更多,如何使用消息传递?

问题描述

我在一家跨国软件公司面试,面试官问了我一个棘手的问题。他说,假设您有一个包含用户及其订单的系统,并且有用户和订单休息服务。如果用户服务已经扩展并且订单服务尚未扩展,那么如何管理订单服务上的负载。由于用户服务正在向订单服务发送大量请求以获取订单。谁能给我一个技术栈来解决这个问题。我认为使用消息队列可能是一种选择,但是如何呢?或者可能是线程......或者两者都......请帮助!

标签: javajmsmessage-queue

解决方案


我不知道问题的上下文以及它是否与消息传递有关。

您可以从这种情况中带走几件事。我将假设当前的集成是通过 API 进行的。

  • 弹性:如果您使用从用户服务到订单服务的同步调用......最后一个可能会过载。在这里,您可以在用户服务中使用断路器以避免级联故障。
  • 弹性/性能:处理背压的另一种方法是反应式编程。看看 Spring Reactor(一个例子)。
  • 弹性/性能:您可以从 API 集成模式转移到消息集成。这样您的用户服务和订单服务可以以异步方式进行通信。(例如发布者/订阅者模式)。

同样,可以做很多事情(这些只是其中的一小部分),但应根据场景进行选择。


推荐阅读