簡體   English   中英

如何實現2個微服務之間的通信

[英]How to implement communication between 2 micro services

我與我的同事討論了應如何實現2個微服務之間的通信的方式。 目前,我們有2個相互依賴的微服務,因為我的同事希望通過重用用於REST API的DTO對象來避免代碼重復。

在理想的情況下,我們在服務之間不會有任何依賴關系,但在我們看來,這是有道理的。 在我看來,這與復制DTO相比更糟糕。

您將在第二個微服務中復制DTO還是有其他解決方案?

我建議您在微服務之間進行通信時使用GRPC (協議緩沖區)。

  1. 創建一個包含協議緩沖區文件的maven項目(就像一個項目僅包含在其他項目之間共享的DTO)
  2. 創建您喜歡的服務並將protobuf添加為依賴項,甚至可以是android項目
  3. 使用grpc與您分離的服務進行通信(在微服務中,服務之間永遠不應有任何依賴關系)

我曾經嘗試過在包括REST API在內的服務之間進行通信的不同解決方案,但是我發現GRPC是一個完美的世界。 您也可以將REST API與GRPC一起使用。

對於“松散耦合”的概念,建議不要設計通過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

即使在這篇文章中,對於如何在微服務之間共享模型以及如何進行通信也有不同的意見。 我會說干凈的解決方案在這篇文章中進行了解釋。

微服務:共享庫與代碼重復

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM