1

我正在考虑为一组工具构建一个微服务架构。

每个工具都有单独的 API 实现和公开。它们部署在其专用的虚拟机中。比方说,我有 3 个工具。

  1. 具有功能的 Tool1 在 VM1 中实现并公开为 API1、API2、API3
  2. 具有功能的 Tool2 在 VM2 中实现并公开为 API1、API2、API3、API4
  3. 具有功能的 Tool3 在 VM3 中实现并公开为 API1、API2、API3、API4、API5

我计划从一个集中的地方(VM4)管理所有工具。作为微服务 API 服务器。每个工具功能都将被称为,

  • http://<host_of_VM4>/tool1/callapi1
  • http://<host_of_VM4>/tool1/callapi2
  • http://<host_of_VM4>/tool2/callapi3
  • http://<host_of_VM4>/tool3/callapi5

因此,VM4 中的 API 实现将调用其相应工具服务器中的外部 API(在 VM1 / VM2 / VM3 等中)

我的qn

  1. 这是将所有工具集成到单个 API 服务器中的好方法吗,即使每个工具在其专用 VM 中都有单独的 API 实现。
  2. 如果是,我怎样才能将所有工具集成在一个地方。?a) 我是否需要从新的微服务调用工具 API。? b) 或者,我是否需要在新服务器中拥有所有工具 API 的完整来源。?
  3. 我真的需要微服务设计吗??

提前致谢。

4

1 回答 1

0

如何将所有工具集成在一个地方。?

一种选择是在 VM4 上使用反向代理。否则,不清楚您如何转发这些请求

其他选项是创建 GraphQL API 而不是公开 URL 路由

我是否需要在新服务器中拥有所有工具 API 的完整源??

我想这取决于它们的运行方式,但如果 HTTP 是您的通信渠道,那么没有

我真的需要微服务设计吗

我会考虑这种分布式计算,而不是微服务。在“微服务”普及之前,大量组织在各种内部服务之间组合了多个 api 调用

于 2020-10-27T13:52:45.003 回答