分布式事务
本地事务
- A
- 原子性
- 所有事务操作,要么都完成,要么都不完成
- C
- 一致性
- 事务执行前后,数据库一致性约束没被破坏
- I
- 隔离性
- 两个事务互不干扰
- D
- 持久性
- 事务完成后,数据更改会持久化到数据库,不会被回滚
分布式事务
- 分布式事务
- 不同服务通过网络远程协作完成的事务叫做分布式事务
- 场景
- 微服务
- 单体访问多个数据库
- 多个服务访问一个数据库
CAP理论
-
c
- 一致性
-
a
- 可用性
- ca 不能共存
-
p
- 分区容忍性
- 必须
-
组合
- ap
- 放弃一致性
- cp
- 放弃可用性
- 转账
- ca
- 放弃分区
- ap
base理论
- 强一致性和最终一致性
- 基本可以
- 软状态
- 最终一致性
解决方案
2pc
- 两阶段提交
- 组成
- 事务管理器
- 参与者
- 过程
- 准备阶段
- 事务管理器发送Prepare消息给参与者
- 参与者本地执行事务,未提交
- 本地记录Undo/Redo日志(修改前/修改后数据)
- 提交阶段
- 如果事务管理器接收到error或超时,回滚事务
- 准备阶段
XA方案
- DTP模型
- AP
- 应用程序
- RM
- 资源管理器
- TM
- 事务管理器
- XA
- TM与RM直接的接口规范协议
- AP
seata方案
- 开源分布式事务框架
- 全局事务
- 分支事务
- 概念
- RM
- 控制分支事务
- TM
- 事务管理器
- 嵌入应用程序
- TC
- 事务协调器
- 独立运行
- RM
- 流程
- TM向TC申请开启全局事务,生成唯一XID
- RM向TC注册分支事务,纳入XID的全局事务
- 执行完毕,TM向TC发起堆XID的全局提交或回滚决议
- TC调度XID的分支事务完成提交或回滚
TCC
- TCC
- Try
- 预处理
- confirm
- 业务确认
- cancel
- 撤销
- Try
- 框架
- Hmily
可靠消息最终一致性
- 可靠消息最终一致性
- 本地事务与消息发送原子性
- 事务参与方接收消息可靠性
- 消息重复消费问题
- 方案
- 本地消息表方案
- RocketMq事务消息方案
最大努力通知
- RocketMq最大努力通知方案