单体 API 和另一个后端之间的微服务项目

问题描述

我想知道是否可以在旧的 java 1.8 单体 API 和 Spring Boot 后端之间创建一个 Spring Boot 微服务(React for the front,但没关系)。

这是一个想法:

单体 API 中的 RestController ---> 微服务(Springboot)---> Back API(Springboot)

对于用例:

  1. 点击API A的按钮
  2. 将数据绑定到 API B 的 RestController
  3. 将相同的数据发送到 API C

我认为由于 Cross Origin 无法通过 RestController 实现,但找到解决方案可能会很棒。

你怎么看?

解决方法

TL;DR 假设这些都是同步远程调用,我认为这应该不会造成太多问题,除了可能存在延迟和可能的身份验证问题。

Monolith A 中的 RestController 可以调用微服务 B 实现的 REST API,只要它可以到达该端点,并且知道如何为其映射/聚合数据。微服务 B 可以反过来调用你的 Back API C。

我假设所有调用都将被阻塞,这意味着处理请求的每个线程都将暂停,直到收到响应。这意味着对 A 的调用必须等到 B 和 C 都完成了它们的处理并发送了它们的响应。这可以加起来(特别是如果这些都是到不同服务器的网络跃点)。如果这是将扼杀模式应用于单体应用的临时设置,那么在调用仍通过单体进行路由期间,延迟可能不是问题。

据我所知,跨源资源共享 (CORS) 只是从浏览器窗口检索内容时的一个问题。在所描述的情况下,这应该不是问题。任何调用 Monolith A 的客户端都不会知道它背后的组件。如果三个组件中的一个或多个不在您的控制之下,或者没有以相同的方式进行管理/验证,那么您可能会遇到一些验证挑战。例如,微服务可能需要一个 JWT 令牌,而 Monolight 可能尚未提供。这将意味着在这方面让组件成为朋友需要一些修补。

Strangler pattern