【问题标题】:How does any syncronous request works in asycrounous microservices enviorment?任何同步请求如何在异步微服务环境中工作?
【发布时间】:2019-11-12 11:24:00
【问题描述】:
让我们看看我有一个微服务 A、B、C 和 D,它们使用消息代理 (Kafka) 进行异步通信。如果服务 A 是面向 UI 的服务接受依赖于 B 和 C 的事务的同步请求。现在服务 A 将消息放入消息代理队列中,该队列已经有一些消息要处理,然后请求必须等到我们从其他人那里得到响应服务。
您将如何设计这种类型的微服务通信?
如果我们需要同步和异步两种类型的通信。
【问题讨论】:
标签:
microservices
software-design
distributed-system
【解决方案1】:
您将如何设计这种类型的微服务通信?
这取决于。您所描述的同步通信使用请求-响应模式,而异步通信通常(并非总是)使用发布-订阅模式 在像你这样的情况下。
能否使用请求-响应模式取决于你对响应时间的要求。
您是否可以在您的面向用户界面的服务中使用发布-订阅取决于技术要求,例如如果您可以使用 gRPC、RSocket 之类的库、MQTT 客户端或其他具有 pub-sub 语义的库。
对我来说,在这些情况下使用任何类型的 pub-sub 协议感觉更自然。