我与我的同事讨论了我们应该如何实现2种微服务之间的通信的方式。目前,我们有2个相互依赖的微服务,因为我的同事希望通过重用用于REST API的DTO对象来避免代码重复。
在一个完美的世界中,服务之间不会有任何依赖关系,但在我们看来,这是有道理的。在我看来,这与复制DTO相比更糟糕。
您将在第二个微服务中复制DTO还是有其他解决方案?
答案 0 :(得分:0)
我建议您在微服务之间进行通信时使用GRPC(协议缓冲区)。
我曾经尝试过不同的解决方案,以在包括REST API在内的服务之间进行通信,但是我发现GRPC是一个理想的选择。 您也可以将REST API与GRPC一起使用。
答案 1 :(得分:0)
对于“松散耦合”的概念,建议不要设计通过REST相互通信的微服务。这是理解该概念的好博客。
https://www.beeworks.be/blog/2017/rest-antipattern.html
一种方法是将消息代理用作Enterprice总线。
如果您使用消息代理,
-您可以使用RPC调用向另一个微服务请求一个微服务。
-或者您可以发布事件(发布/订阅)
这是一篇很好的博文,了解在微服务基础架构中使用消息代理的概念。
https://dev.to/matteojoliveau/microservices-communications-why-you-should-switch-to-message-queues--48ia
答案 2 :(得分:0)
即使在这篇文章中,关于如何在微服务之间共享模型以及如何进行通信也有不同的意见。我会说干净的解决方案在这篇文章中得到了解释。