1. 分布式事务问题
1.1 分布式前
单机单库没这个问题
- 从1:1 -> 1:N -> N: N
1.2 分布式之后
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用3三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证, 但是全局的数据一致性问题没法保证。
用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持:
- 仓储服务:对给定的商品扣除仓储数量.
- 订单服务:根据采购需求创建订单。
- 帐户服务:从用户帐户中扣除余额.
创建订单——>扣减库存——>扣除金额
总之,一次业务操作需要跨多个数据源或需要跨多个系统进行RPC远程调用,就会产生分布式事务问题
2. Seata
Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
- 官方文档地址: