gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:02:57 24 4
gpt4 key购买 nike

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

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

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

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

最佳答案

在微服务中,没有所谓的关系一致性,您的系统应该变得最终一致。

让我们以您的情况为例,您有两个具有差异的微服务。数据库

  • 预订
  • 付款

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

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

如果不在服务之间创建非常高级别的依赖关系,则可以实现上述验证,但不是 100%,这违反了微服务的原则。

让我举个例子:

  1. 有人在付款过程中取消了预订 - 假设您在通过 Booking Service 检查预订是否正常后,在 Payment Service 中处理付款,而在付款过程中有人取消了预订

现在,在这种情况下,系统暂时处于不一致的状态,您应该做的是从预订服务上的事件(如 BookingCancelled)检查我们是否接受了付款,是的,然后启动付款反向流程,而不是检查所有内容一次。

Go for a eventual consistent system in which both service listen to events to one other and tries to be consistent.

关于java - 如何设计基于微服务的应用程序,每个微服务都有自己的数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51292640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com