将层与作为微服务的多层体系结构分离

时间:2018-11-09 07:09:03

标签: spring rabbitmq microservices multi-tier

场景:

当前,我们在这种模式下具有多层体系结构

DBLayer => Tasks to DB
SouthBound => Talks to other devices like router/controller
SrvcLayer => Talks to both SouthBound and DBLayer
UILayer => Talks to UI and SrvcLayer

该应用程序基于Spring 4.2, Java 8, MongoDB构建。

要求:

我们需要将SouthBound分离为一个单独的应用程序,或者可以说微服务。

问题:

我们正在考虑2种方法

  1. 在SouthBound中将服务公开为REST API,并在SrvcLayer中使用它们。 它将增加一些延迟问题,并且还需要弄清楚安全性部分。

  2. 使用RabbitMQ之类的消息队列。但是这些调用必须是同步的。所以我不确定RabbitMQ是否会帮助我们。

哪种方法合适。 有关如何构建此用例的其他建议。

1 个答案:

答案 0 :(得分:1)

在我们的应用程序中,我们具有REST API来传达UI <->后端部分又通过AMQP连接起来。

顺便说一句RabbitMQ似乎有一个异步支持RabbitMQ asynchronous support,所以这就足够了。

RabbitMQ仍可以进行同步工作(Is it appropriate to use message queues for synchronous rpc calls via ajaxhttps://www.rabbitmq.com/tutorials/tutorial-six-java.html),但是无论如何,如果您同步使用AMQP,这将导致延迟,因此我想说最好使用REST

相关问题