0

分布式事务

2024.10.11 | cuithink | 34次围观

著作权归@pdai所有 原文链接:https://pdai.tech/md/arch/arch-z-transection.html

什么是分布式事务

事务是一个程序执行单元,里面的所有操作要么全部执行成功,要么全部执行失败。在分布式系统中,这些操作可能是位于不同的服务中,那么如果也能保证这些操作要么全部执行成功要么全部执行失败呢?这便是分布式事务要解决的问题。

以一个网上的经典下单减库存例子为例

单体应用所有的业务都使用一个数据库,整个下单流程或许只用在一个方法里同一个事务下操作数据库即可。此时所有操作都在一个事务里,要么全部提交,要么全部回滚。

但随着业务量不断增长,业务服务化拆分,就会分离出订单中心、库存中心等。而这样就造成业务间相互隔离,每个业务都维护着自己的数据库,数据的交换只能进行服务调用。

用户再下单时,创建订单和扣减库存,需要同时对订单DB和库存DB进行操作。两步操作必须同时成功,否则就会造成业务混乱,可此时我们只能保证自己服务的数据一致性,无法保证调用其他服务的操作是否成功,所以为了保证整个下单流程的数据一致性,就需要分布式事务介入。

如何理解分布式事务

分布式的理论角度和分布式事务的知识体系角度理解分布式事务。

从分布式的理论的角度看

分布式的理论基础是CAP,由于P(分区容错)是必选项,所以只能在AP或者CP中选择。

  • 分布式理论的CP -> 刚性事务

遵循ACID,对数据要求强一致性

  • 分布式理论的AP+BASE -> 柔性事务

遵循BASE,允许一定时间内不同节点的数据不一致,但要求最终一致。


粤ICP备16076548号
发表评论