【问题标题】:Decouple a layer from multi layer architecture as a Micro Service将层与多层架构解耦为微服务
【发布时间】:2023-03-31 12:35:01
【问题描述】:

场景:

目前,我们有这种模式的多层架构

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 解耦为一个单独的 App,或者可以说是微服务。

问题:

我们正在考虑两种方法

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

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

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

【问题讨论】:

    标签: spring rabbitmq microservices multi-tier


    【解决方案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

    【讨论】:

    • 当我们有异步调用时,RabbitMQ 是首选。但我们需要像 http 一样的同步调用。
    • 谢谢。我确实经历过。它说“不鼓励,但只要同步响应是强制性的,就可以接受。”
    • 没错。但是,如果您没有使用 RabbitMQ 的要求,可能不会使用 :) 请在这里查看rabbitmq.com/tutorials/tutorial-six-java.html 以及
    猜你喜欢
    • 2017-06-09
    • 2016-08-11
    • 2015-07-21
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 2018-12-09
    • 2014-02-05
    相关资源
    最近更新 更多