2017-04-06 95 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代码。你在你的代码中使用它来发送和接收超高效的消息。

相关问题