0

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

这是想法:

单体API里面的RestController ---> Microservice (Springboot) ---> Back API (Springboot)

对于用例:

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

由于 Cross Origin,我认为通过 RestController 是不可能的,但找到解决方案可能会很棒。

你怎么看?

4

1 回答 1

0

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

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

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

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

扼杀者模式

于 2021-04-20T21:37:37.450 回答