java - 如果请求负载更多,如何使用消息传递?
问题描述
我在一家跨国软件公司面试,面试官问了我一个棘手的问题。他说,假设您有一个包含用户及其订单的系统,并且有用户和订单休息服务。如果用户服务已经扩展并且订单服务尚未扩展,那么如何管理订单服务上的负载。由于用户服务正在向订单服务发送大量请求以获取订单。谁能给我一个技术栈来解决这个问题。我认为使用消息队列可能是一种选择,但是如何呢?或者可能是线程......或者两者都......请帮助!
解决方案
我不知道问题的上下文以及它是否与消息传递有关。
您可以从这种情况中带走几件事。我将假设当前的集成是通过 API 进行的。
- 弹性:如果您使用从用户服务到订单服务的同步调用......最后一个可能会过载。在这里,您可以在用户服务中使用断路器以避免级联故障。
- 弹性/性能:处理背压的另一种方法是反应式编程。看看 Spring Reactor(一个例子)。
- 弹性/性能:您可以从 API 集成模式转移到消息集成。这样您的用户服务和订单服务可以以异步方式进行通信。(例如发布者/订阅者模式)。
同样,可以做很多事情(这些只是其中的一小部分),但应根据场景进行选择。
推荐阅读
- python-2.7 - 我如何覆盖按钮“打印”的打印功能
- javascript - 如何在对象数组上使用 localStorage
- c++ - 在给定数组中生成所有元素对的有效方法
- java - 我们能否在到达服务器之前识别http(post)请求是否被修改?
- java - 如何在sqlite中保存Servervalue.TIMESTAMP?
- azure-devops - VSTS 错误:未找到与模式匹配的测试程序集
- ruby-on-rails - 标记要在模块中使用的特定 Rails 模型的最佳方法
- java - getValue(String.class) 与 getValue().toString()
- batch-file - 如何使用批处理文件关闭指定打开的文件夹
- r - 循环以加载或安装包不起作用。我究竟做错了什么?