首页 > 解决方案 > 微服务异步通信断路器

问题描述

我有 2 个使用 spring boot 运行的服务,我有以下情况:

服务 A(N 个实例)-> 队列(多个实例)-> 服务 B(N 个实例)

流量正在增加,我们注意到事件在队列中花费了大量时间。我们需要更快地处理事件。每个事件的有效负载都很小,这个解决方案已经工作了几年,几年前他们认为排队是个好主意,但现在我遇到了这个性能问题。

这个调用应该是异步的,并且还实现了一个断路器,以避免在 B 出现故障时丢失消息。如果 B 出现故障,我可以使用队列来保存消息,一旦 B 运行并再次从队列中拉出消息。

我有两个问题:

谢谢

标签: javaasynchronousmicroservicescircuit-breaker

解决方案


提问

  1. 是的,有可能,我假设您正在使用 spring boot,因为您在标签中提到了 java,因此有一种称为 RetryTemplate 的机制,您也可以将其用于异步调用,您可以在此处找到更多详细信息-> https:/ /www.openprogrammer.info/2019/09/03/using-spring-boot-async-with-retry/

  2. 我会说有更好的方法,当你在这里说队列时你实现了什么?喜欢它是 LIFO 还是 AWS SQS 之类的东西?如果是这种情况,那么您可以尝试寻找基于主题的队列机制,例如 apache kafka


推荐阅读