您如何管理微服务架构中的外键关系?

时间:2020-07-16 21:13:12

标签: spring-boot microservices

我很感谢您的直接回答。

方案1:我需要显示产品信息。

产品服务(PS):保存有关产品的信息 定价服务(XS):保存每个产品的定价信息 聚合服务(AS):结合产品信息和价格。

问题:“ AS”呼叫“ PS”(带有产品ID)以获取产品信息。现在,“ AS”如何从“ XS”中获取特定的产品价格?

这里的混乱之处在于,PS Table是否具有ID对应于XS Table中相应价格的DB列?我们可以称之为外键吗?如果是这样,是否会导致两个服务之间的紧密耦合?这违反了微服务的原则。

1 个答案:

答案 0 :(得分:1)

好吧,您可以将该字段称为“外键”,但只要您不对其施加任何约束,就可以了。

在我看来,这只是参考。它不会带来任何紧密的耦合,它提供了一些绑定。就微服务架构而言,这是完全可以的。如果您考虑可能的实施范围,您可能会看到例如可以使用完全不同的数据库(例如关系数据库)来进行定价服务,甚至 产品服务的文档数据库。在那种情况下,更清楚的是您所谓的“外键”仅是实际记录的参考。

话虽如此,我仍可能会质疑您的解决方案

  • 为什么您需要单独的Aggregator服务而不是直接使用产品服务?
  • 以同样的方式,为什么要拥有单独的定价服务
  • 如果您在定价服务中保留对产品的引用比在产品服务中保留对产品的引用会更好?

但是从我的角度来看,外键部分还是可以的。

相关问题