本地事务的四个原则: ACID 原子性 一致性 隔离性 持久性
什么式分布式事务?:
在非单个服务或非单个数据库的架构下产生的事务。
例如: 跨数据源的分布式事务
跨服务的分布式事务
综合情况
CAP定理:分布式系统有三个指标
- Consistency(一致性) 分布式的任意节点得到的数据必须一致
- Availability(可用性) 用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝
- Partition tolerance (分区容错性) 因为网络原因,或者其他原因导致分布式系统中的部分节点与其他节点失去链接,形成独立分区。 容错:出现分区时,整个系统也要持续对外提供服务
三个指标不可能同时做到,这个结论就叫做 CAP 定理
P 不可避免, 只能在 A 和 C 之间实现一个
BASE 理论:
基本可用: 分布式出现故障 允许损失部分可用,保证核心可用
软状态: 在一定时间内,允许出现状态, 比如临时不一致
最终一致性: 无法保证强一致性,但是在软状结束后最终一致
AP模式:最终一致性,各子事务分别执行和提交,允许出现结果不一致,然后弥补措施恢复数据;
CP模式:强一致性,弱可用,各子事务之间相互等待,同时提交,同时回滚,达成强一致
事务协调者(TC): 协调子事务之间的互相通信,协调事务状态。
Seata 框架:
阿里和蚂蚁金服开发的解决分布式事务的一站式开源框架;
seata事务管理的三个重要角色:
TC: 事务协调者,维护全局和分支事务的状态,协调全局事务提交或回滚
TM: 事务管理器,定义全局事务的范围,开始全局事务,提交或者回滚全局事务;
RM:资源管理器,管理分支事务处理的资源,与TC 交互注册分支 报告分支状态,并驱动分支事务提交或者回滚;
Seata中的四种不同的事务模式:
XA模式:强一致性分阶段模式,无侵入。
TCC模式:最终一致性,的分阶段事务模式,有业务侵入。
AT模式:最终一致性,分阶段事务模式,无侵入式 【默认】。
SAGA模式:长事务模式,有侵入。
AT模式工作流程: