繁体   English   中英

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

[英]How to design a microservice based application with each microservice having their own datasource?

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

付款服务需要预订服务中的信息。

如何使用MySQL设计此功能,同时为两个服务保留单独的数据库? 如何在单独数据库中的两个表之间实施关系约束?

PS:我正在使用Spring Boot设计Web服务。

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

跨API的数据共享应通过API进行。

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

有关更多详细信息,这是Martin Fowler的微服务文章链接

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

让我们来看一下,您有两个带有diff的微服务。 D B

  • 订票
  • 付款

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

您必须以为付款服务我应该检查预订是否存在或是否取消预订。

如果不在服务之间创建非常高级的依赖关系,则可以实现上述验证,但不能达到100%的验证,这与微服务的原理背道而驰。

让我举一个例子:

  1. 有人在付款过程中取消了预订-假设您在通过“预订服务”确认“确定”后确定在付款服务中处理付款,而在付款过程中有人取消了预订

现在,在这种情况下,系统暂时处于不一致状态,您应该从Booking Service上的事件(如BookingCancelled)中进行检查,检查我们是否已付款,是的,然后开始进行付款反向处理,而不是立即检查所有事情。

寻求一种最终一致的系统,在该系统中,两个服务都相互监听事件并尝试保持一致。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM