Asynchronous 在微服务中,服务之间的同步通信是反模式的吗?

Asynchronous 在微服务中,服务之间的同步通信是反模式的吗?,asynchronous,microservices,synchronous,messagebroker,anti-patterns,Asynchronous,Microservices,Synchronous,Messagebroker,Anti Patterns,我对微服务有些陌生。我目前正在使用微服务开发一个应用程序,同时使用同步和异步通信方法。最近,我看到很少有文章说您不应该使用同步(http)通信,而应该只使用异步(MessageBroker) 因此,我的第一个问题是“服务之间的同步通信是否是微服务中的反模式?” 如果答案是肯定的,那么我该如何克服这种情况: 假设我有两个名为“用户”和“消息”的服务,用户A想向用户B发送消息。因此,当用户A发送消息时,我想检查用户A是否有向用户B发送消息的权限,该权限包含在用户服务中。所以为了获得这些信息,我必须从

我对微服务有些陌生。我目前正在使用微服务开发一个应用程序,同时使用同步和异步通信方法。最近,我看到很少有文章说您不应该使用同步(http)通信,而应该只使用异步(MessageBroker)

因此,我的第一个问题是“服务之间的同步通信是否是微服务中的反模式?”

如果答案是肯定的,那么我该如何克服这种情况:
假设我有两个名为“用户”和“消息”的服务,用户A想向用户B发送消息。因此,当用户A发送消息时,我想检查用户A是否有向用户B发送消息的权限,该权限包含在用户服务中。所以为了获得这些信息,我必须从消息服务请求用户服务。如果不使用对用户服务的同步请求,我如何克服这一问题?

你是对的,微服务体系结构中的同步交互通常被称为反模式,但我不会这样称呼它,因为我们仍然经常使用这种模式

此外,使用哪种模式在很大程度上取决于整个系统的微服务体系结构

您可以在服务之间使用真正必要和合理的同步通信。 如果不需要来自另一个服务的即时响应,我将使用异步通信。 理想情况下,您应该尽量减少同步交互,但不幸的是,您仍然离不开它们,因为在某些情况下,客户端需要来自服务的即时响应

最流行的同步通信技术有:

  • 休息
  • gRPC

我建议在下面阅读微服务体系结构中服务之间的同步交互模式。

我不会将同步通信称为反模式。它只是有一些系列的限制。随着服务数量的不断增加和它们之间的交互,它将非常快地将您的服务限制到极限。然而,以同步方式启动微服务并没有什么错。