标签:接收 分布式事务 订单状态 edit 自己的 不同 本地事务 uem 更改
您已应用每服务数据库模式。每个服务都有自己的数据库。但是,某些业务事务跨越多个服务,因此您需要一种机制来确保服务之间的数据一致性。例如,假设您正在建立一个客户有信用额度的电子商务商店。申请必须确保新订单不会超过客户的信用额度。由于订单和客户位于不同的数据库中,因此应用程序不能简单地使用本地ACID事务。
如何跨服务维护数据一致性?
实现跨越多个服务的每个业务事务作为传奇。传奇是一系列本地交易。每个本地事务都更新数据库并发布消息或事件以触发saga中的下一个本地事务。如果本地事务因违反业务规则而失败,则saga会执行一系列补偿事务,以撤消先前本地事务所做的更改。
协调sage有两种方式:
这种模式具有以下好处:
该解决方案具有以下缺点:
还有以下问题需要解决:
标签:接收 分布式事务 订单状态 edit 自己的 不同 本地事务 uem 更改
原文地址:https://www.cnblogs.com/paxlyf/p/11290604.html