首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设计一个基于微服务的应用程序,每个微服务都有自己的数据源?

如何设计一个基于微服务的应用程序,每个微服务都有自己的数据源?
EN

Stack Overflow用户
提问于 2018-07-11 19:09:47
回答 2查看 157关注 0票数 0

我正在设计一个基于微服务的应用程序,其中有一些服务使用来自MySQL db的信息。有两种服务-预订服务和支付服务。

付款服务需要从订票服务处获得信息。

如何使用MySQL进行设计,同时为两个服务保留单独的数据库?如何在独立数据库上的两个表之间强制执行关系约束?

P.S:我正在使用Spring来设计web服务。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-12 05:14:11

在微服务中,没有什么叫做关系一致性,您的系统最终应该是一致的。

让我们来看看你的例子,你有两个有差异的微服务。数据库

  • 预订
  • 付款

现在,假设有人创建了一个预订,现在想要支付预订使用支付服务。

您一定认为这是付款服务,我应该检查预订是否存在,或者预订是否取消。

上述验证是可以实现的,但不是100%,而不需要在服务之间造成很高的依赖性,这违背了微服务的原则。

让我举一个例子:

  1. 有人在付款过程中取消了预订-假设您在确认预订服务后处理付款服务中的付款是可以的,而付款正在进行中有人取消了预订

现在,由于临时系统处于不一致的状态,您应该做的是从预订服务(如BookingCancelled )上的事件中,检查我们是否接受了付款,是的,然后开始支付反向过程,而不是一次检查所有事情。

选择一个最终一致的系统,在这个系统中,两个服务都彼此监听事件,并试图保持一致。

票数 2
EN

Stack Overflow用户

发布于 2018-07-11 20:08:45

建议微服务使用不同的数据库并维护自己的数据(PolyglotPersistence)。

API之间的数据共享应该通过API来实现。

在这种情况下,如果支付服务需要预订详细信息,则应该通过调用预订服务API来检索详细信息。

要了解更多细节,请看Martin的链接 to microservices文章。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51292640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档