【问题标题】:Migration from Monolith to Microservice从单体应用迁移到微服务
【发布时间】:2019-11-06 21:22:07
【问题描述】:

我正在研究棕地迁移策略(来自复数课程),您可以在其中创建 1 个 API/整体表。 我目前所在的团队正在从单体架构迁移到将在 AWS 上运行的微服务架构。

这是我遇到的一个问题/疑问:

我有 2 个表(已连接)和一个使用这 2 个表创建对象的 Oracle 存储过程。 当然,Oracle 效率很高。

但是,如果我将这 2 个表中的每一个都放在单独的 REST API 中,那么创建该结果对象将涉及: - 从表 1 中获取 1/3 的数据 - 从表 2 中获取 1/2 的数据 - 使用 Java 从这两个数据集(数百万条记录)构建结果。

我听到了两个对这个问题的回应: 1)不用担心,您在云上拥有几乎无限的计算能力,例如/一个 EC2 实例/微服务。 如果您的 API/服务必须做一些繁重的工作(获取/处理数百万条记录),只需为其 EC2 实例提供大量功能(CPU、内存、存储等)

和...

2) 将“两个”表移动到同一个 api。

我不确定答案 1,至于 2 有时涉及多个表,例如 10+! 同样对于解决方案 2,您可能需要获取多个 1000s/100000 条记录+!

欢迎任何建议!! :)

【问题讨论】:

  • 我能给你的最佳建议是在不同的 StackExchange 站点上提出这个问题(因为这是一个好问题)。您得到的任何答案都将基于某种程度的观点-这使问题脱离了主题。如果您有一些代码可以展示这些问题并可能要求改进,那么它可能会有所不同

标签: java rest architecture microservices database-migration


【解决方案1】:

嗯,微服务并不意味着,一项服务可以有一个端点。根据需求,一个微服务可能有几个端点。如果您只需将多个表放入一个服务中就可以从您的服务中获得更多收益,那就去做吧。

另一方面,Oracle PL/SQL 比在 Java 代码中组合它们更有效。如果您将它们放入两个或更多不同的服务中,您将不得不更加小心应用程序中的许多事情以及性能,因为您的表有数百万个条目。

更新:

关于您的第一个解决方案,即使您要在 AWS 上部署它,而且 AWS 几乎拥有无限的处理能力,但这将花费您一大笔钱。 AWS 处理能力并不便宜。特别是,如果你能做点什么来降低成本。

【讨论】:

    【解决方案2】:

    我不知道您的确切架构,但您应该直接在 Oracle 上执行表连接之类的操作,而不是分别访问每个表,然后从您的 Java 代码中组合/聚合。采用这种方法应该比你目前正在做的更有效率。即使这些表位于不同的 Oracle 实例上,执行跨数据库查询、连接/聚合,然后将单个结果集返回到 Java 代码可能仍然会更有效。

    【讨论】:

      猜你喜欢
      • 2017-01-06
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 2019-07-18
      • 2017-12-09
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多