微服务 数据库耦合_数据库-微服务:如何处理外键关系

可以将共享数据库用于多个微服务。 您可以在以下链接中找到用于微服务的数据管理的模式:[http://microservices.io/patterns/data/database-per-service.html。]顺便说一下,对于微服务架构而言,这是一个非常有用的博客。

对于您的情况,您更喜欢按服务模式使用数据库。 这使微服务更加自治。 在这种情况下,您应该在多个微服务之间复制一些数据。 您可以在微服务之间通过api调用共享数据,也可以通过异步消息共享数据。 这取决于您的基础架构和数据更改的频率。 如果不经常更改,则应使用异步事件复制数据。

在您的示例中,交付服务可以复制交付位置和产品信息。产品服务管理产品和位置。然后将所需数据与异步消息一起复制到Delivery Service的数据库中(例如,您可以使用Rabbit mq或apache kafka)。交付服务不会更改产品和位置数据,但会在工作时使用这些数据。如果交付服务使用的部分产品数据经常更改,那么使用异步消息传递进行数据复制将非常昂贵。在这种情况下,您应该在产品和交付服务之间进行api调用。送货服务要求产品服务检查产品是否可送货到特定位置。送货服务要求产品服务提供产品和位置的标识符(名称,ID等)。这些标识符可以从最终用户那里获取,也可以在微服务之间共享。由于此处的微服务数据库不同,因此我们无法在这些微服务的数据之间定义外键。

Api呼叫可能更易于实现,但此选项的网络成本较高。 此外,在进行api调用时,您的服务也不太自治。 因为在您的示例中,当产品服务关闭时,交付服务无法执行其工作。 如果使用异步消息传递复制数据,则进行传递所需的数据位于传递微服务的数据库中。 当产品服务不起作用时,您将可以交货。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值