什么是本地事务,什么是分布式事务
一、本地事务(Local Transaction)
1. 定义与特性
本地事务是指在单个数据库或单体应用中完成的事务操作,其核心特征是严格遵循ACID原则:
- 原子性(Atomicity):操作不可拆分,全部成功或全部回滚;
- 一致性(Consistency):事务前后数据整体保持一致状态;
- 隔离性(Isolation):事务间操作互不干扰;
- 持久性(Durability):事务提交后数据永久存储。
2. 适用场景
- 基于单体架构的业务场景;
- 同一服务的单数据库操作(如库存扣减或订单创建)。
二、分布式事务(Distributed Transaction)
1. 定义与挑战
分布式事务是跨多个数据库、服务或系统的协同事务,需解决不同节点的数据一致性。典型场景包括:
- 跨数据源操作(如电商下单时扣库存、减余额、建订单需访问不同数据库);
- 微服务间调用(如A服务调B服务,两者使用独立数据库)。
2. 核心问题
- CAP定理约束:需在网络分区情况下权衡一致性与可用性;
- 协调复杂度:需通过分布式协议(如2PC、Seata)协调多节点提交或回滚。
三、关键差异对比
维度 | 本地事务 | 分布式事务 |
---|---|---|
数据范围 | 单一数据库内操作 | 跨数据库/跨服务操作 |
原子性保障 | 数据库内部机制直接保证 | 需依赖额外协议(如XA、TCC)协调 |
性能开销 | 低(无网络通信消耗) | 高(涉及多节点协调与通信) |
四、延伸说明
在微服务架构中,分布式事务的解决方案包括 Seata框架的二阶段提交(2PC) 、基于消息队列的最终一致性 等机制。与传统本地事务相比,这些方案通过牺牲部分性能或强一致性换取分布式场景下的可行性。