微服务架构怎么实现异步请求?

作者站长头像
站长
· 阅读数 12

微服务架构怎么实现异步请求?请求:请问各位前辈,我现在一个项目中希望去减低一个API接口的平均响应时间;这个接口存在微服务1,这个业务逻辑需要先请求微服务2,再请求微服务3中的接口获得对应的信息,微服务2需要一定的处理时间,由于这种模式下是同步调用,程序需要去等待微服务2的处理结果后再来请求微服务3,故会导致在并发的情况下系统的吞吐量下降。我现在的想法是希望通过异步调用的方法提高吞吐量(相应需要缓存已经处理过了),不知道这样的方法是否可行,其次是我用的技术栈是sringboot+springcloud+mysql+redis,springcloud是否有提供相应异步请求的功能。谢谢大家的解惑!


修改如下:微服务架构怎么实现异步请求?微服务架构怎么实现异步请求?请问各位我这样修改合理吗,但是我改完了以后API的平均响应时间反而变长了,且端口异常率达到60%?对于平均响应时间变长了,是不是我直接同步请求两个微服务所需的时间反而比并发发起请求的时间要短,毕竟线程的切换什么也是需要时间的。对于异常率提高,有可能是我线程池的设置不合理。

回复
1个回答
avatar
test
2024-07-17

如果微服务2和微服务3没有关联,那这两个请求可以并发,将调用微服务2和微服务3的操作放到线程池中执行,用CountDownLatch来等待两个请求都返回后再继续往下走。推荐用1.8的CompletableFuture的allOf,代码更简便

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容