多个微服务需要多DB连接



请阅读我一直有这个问题,并分享你的想法和解决方法。

我们目前正在构建一个由多个微服务组成的系统。

为简单起见,假设如下场景:

有---------| microservice A | microservice B | microservice C |

---------| RDS for A | | RDS for B | | RDS for C|

现在我们遇到了一个问题,我们需要

Column AmountRDS ATable TA1记录中排序到RDS CTable TC1记录中

如果这是一个单一的DB应用程序,我们通常会在共同的IDTA1.id = TC1.ta1_id上继续Joining两个表

由于这些微服务不能共享一个公共DB,这违背了微服务的模式。对于这些用例,最好的解决方案是什么?

一个新的微服务来聚合数据?如果是这样,我们如何处理内存错误,如果计划加载每条记录,而不是做一个连接,即两个选择查询。

由于这些微服务不能共享一个公共数据库,这违背了微服务的模式。这是一个模式,它有上下文和假设

  1. 您确定您的服务确实是独立的服务,而不是单个服务的各个方面吗?如果您发现服务共享大量数据,那么可能是重新考虑您的服务边界的好时机
  2. 仍然存在从多个服务获取数据有意义的报告场景。在这些情况下,我使用聚合报告模式,其中发生的事件作为只读副本发送到中央数据库,该数据库以报告友好的方式组织数据
  3. 另一个可以做的事情是缓存来自服务中的其他服务的数据-如果它是作为事件发布的(最好是不可变的和幂等的-所以它总是正确的),只要你有一些方法来理解数据是陈旧的
  4. 最后-有时只做"客户端"是有意义的;加入esp。如果它确实只是一次性的

因为你的问题真的很一般-很难说哪个选项对你来说是正确的

相关内容

  • 没有找到相关文章

最新更新