[英]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%的验证,这与微服务的原理背道而驰。
让我举一个例子:
现在,在这种情况下,系统暂时处于不一致状态,您应该从Booking Service上的事件(如BookingCancelled)中进行检查,检查我们是否已付款,是的,然后开始进行付款反向处理,而不是立即检查所有事情。
寻求一种最终一致的系统,在该系统中,两个服务都相互监听事件并尝试保持一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.