REST API Java 微服务在同一个应用程序服务器中可用
REST API Java microservice available inside same application server
我有小型 Java (Java EE) 微服务,可以进行一些计算。此微服务与其他应用程序 运行 在同一应用程序服务器上,也是用 Java EE 编写的。第一个问题 - 这些应用程序应该通过 REST API 还是其他方式相互通信?第二个问题 - 如果是这样,有没有办法通过不 serializing/deserializing 转移对象来节省一些时间?我知道不同服务器(语言)上的两个应用程序之间的通信需要 serialization/deserialization,但是提到的情况呢?
should these apps communicate each other by REST API or different way?
微服务应该始终通过网络进行通信。如果他们有 REST API 则使用它。
if so, is there a way to save some time, by not serializing/ deserializing transfer objects?
如果他们通过网络进行通信,则必须进行序列化。无论如何,序列化有助于解耦。微服务应该共享数据而不是 schema/classes。序列化必须通过丢失模式来完成,即您可以使用 JSON。如果您共享架构 (类),则会破坏微服务的封装。您将无法使用其他实现更改微服务实现(即使用不同的技术堆栈,例如 PHP
和 Nginx
)。
如果效率至上,您可以使用 Google's Protobuf。它有点痛苦(与 json 相比)但非常有效。它也是语言不可知的(或者更准确地说:它有大多数常见语言的实现)。
您基本上是根据原型规范定义一条消息,然后一个特殊的编译器生成相关的 get/set 代码。您在代码中使用它来发送和接收超高效的消息。
我有小型 Java (Java EE) 微服务,可以进行一些计算。此微服务与其他应用程序 运行 在同一应用程序服务器上,也是用 Java EE 编写的。第一个问题 - 这些应用程序应该通过 REST API 还是其他方式相互通信?第二个问题 - 如果是这样,有没有办法通过不 serializing/deserializing 转移对象来节省一些时间?我知道不同服务器(语言)上的两个应用程序之间的通信需要 serialization/deserialization,但是提到的情况呢?
should these apps communicate each other by REST API or different way?
微服务应该始终通过网络进行通信。如果他们有 REST API 则使用它。
if so, is there a way to save some time, by not serializing/ deserializing transfer objects?
如果他们通过网络进行通信,则必须进行序列化。无论如何,序列化有助于解耦。微服务应该共享数据而不是 schema/classes。序列化必须通过丢失模式来完成,即您可以使用 JSON。如果您共享架构 (类),则会破坏微服务的封装。您将无法使用其他实现更改微服务实现(即使用不同的技术堆栈,例如 PHP
和 Nginx
)。
如果效率至上,您可以使用 Google's Protobuf。它有点痛苦(与 json 相比)但非常有效。它也是语言不可知的(或者更准确地说:它有大多数常见语言的实现)。
您基本上是根据原型规范定义一条消息,然后一个特殊的编译器生成相关的 get/set 代码。您在代码中使用它来发送和接收超高效的消息。