2017-04-06 30 views
2

我有小Java(Java EE)微服務,可以進行一些計算。此微服務與其他應用程序(也是用Java EE編寫)在同一應用程序服務器上運行。第一個問題 - 這些應用程序是否應該通過REST API或其他方式相互溝通?第二個問題 - 如果是的話,有沒有辦法通過不傳輸序列化/反序列化傳輸對象來節省一些時間?我知道不同服務器(語言)上的兩個應用程序之間的通信需要序列化/反序列化,但是提到的情況呢?REST API Java微服務在同一應用程序服務器中可用

+0

這對我很有幫助:[微服務架構中的進程間通信](https://www.nginx.com/blog/building-microservices-inter-process-communication/) – Andrew

+0

取決於很多事情。這是一個非常基礎的架構決策,您需要根據事務要求,同步/異步,安全性,會話等進行。 – zencv

回答

2

這些應用程序是否應該通過REST API或其他方式進行通信?

微服務應該總是通過網絡進行通信。如果他們有一個REST API然後使用它。

如果是這樣,有沒有辦法來節省一些時間,通過不序列化/反序列化傳輸對象?

如果他們通過網絡進行通信,則序列化是必須的。無論如何,序列化有助於解耦。微服務應該共享數據而不是模式/類。序列化必須通過釋放模式來完成,即可以使用JSON。如果您共享模式(類),則會破壞微服務的封裝。您將無法通過其他實現更改微服務實現(即使用不同的技術堆棧,例如PHPNginx)。

0

如果效率最重要,您可以使用Google's Protobuf。它有點痛苦(與json相比),但非常有效。它也是語言不可知的(或者更確切地說:它在大多數通用語言中都有實現)。

你基本上根據proto規範定義一個消息,然後一個特殊的編譯器生成相關的get/set代碼。你在你的代碼中使用它來發送和接收超高效的消息。

相關問題