【问题标题】:REST API Java microservice available inside same application serverREST API Java 微服务在同一应用服务器中可用
【发布时间】:2017-09-01 07:41:08
【问题描述】:

我有小型 Java (Java EE) 微服务​​,可以进行一些计算。该微服务与其他应用程序运行在同一应用程序服务器上,也使用 Java EE 编写。第一个问题 - 这些应用程序应该通过 REST API 还是不同的方式相互通信?第二个问题 - 如果是这样,有没有办法通过不序列化/反序列化传输对象来节省一些时间?我知道不同服务器(语言)上的两个应用程序之间的通信需要序列化/反序列化,但是提到的情况呢?

【问题讨论】:

标签: java rest microservices


【解决方案1】:

这些应用应该通过 REST API 还是不同的方式相互通信?

微服务应始终通过网络进行通信。如果他们有 REST API,请使用它。

如果是这样,有没有办法通过不序列化/反序列化传输对象来节省一些时间?

如果他们通过网络进行通信,则必须进行序列化。无论如何,序列化有助于解耦。微服务应该共享数据而不是模式/类。序列化必须通过丢失模式来完成,即您可以使用 JSON。如果您共享模式(类),则会破坏微服务的封装。您将无法使用其他实现更改微服务实现(即使用不同的技术堆栈,例如 PHPNginx)。

【讨论】:

    【解决方案2】:

    如果效率至关重要,您可以使用Google's Protobuf。它有点痛苦(与 json 相比)但非常有效。它也与语言无关(或更准确地说:它具有大多数常用语言的实现)。

    您基本上根据 proto 规范定义一条消息,然后一个特殊的编译器生成相关的 get/set 代码。您可以在代码中使用它来发送和接收超高效的消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-11
      • 2017-12-13
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 2021-03-31
      相关资源
      最近更新 更多