1.传统数据库事务
1.1 事务概述
- 事务是最小的执行单元,事务的操作要么全部执行成功,要么全部执行失败
1.2 事务四大特性
1.3 操作事务命令
1.4 事务隔离级别带来的问题
1.5事务控制
- Spring中事务: Spring是基于运行时异常来控制事务的,这种机制叫声明式事务控制
- 在要控制事务的方法上标记一个注解: @Transactional
-
- rollbackFor
-
- propagation
- 常用值:
- 重点:
- 案例:
2. 分布式事务
- 概述:在分布式环境下,出现的事务问题
- 分布式事务种类:
- 对比传统事务
- CAP定理:
- 1.1 Consistency 一致性
在系统中的所有数据备份,在同一时刻要保持同样的值。
- 1.2 Availability 可用性
- 在集群系统中,一部分节点故障后,集群整体依然可以响应外界请求。
- 简单来说,只要用户发起请求,系统就必须及时响应。响应的越快,可用性越好。
- 1.3 Partition tolerance 分区容错性
- Partition(分区):因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。
- Tolerance(容错):在集群出现分区时,整个系统也要持续对外提供服务。容忍出现分区的问题
- 解决分区问题的最好办法就是给数据备份,备份在不同的网络中,这样,当网络通信出现故障,就会降低数据访问不到的风险,提高了分区容错性。
- 在分布式环境下,这三个指标不可能同时做到,且P是一定要保证的
- CP ,AP,CA
- BASE理论
- 分布式事务的解决思路
3. Seata
- 官网:http://seata.io/zh-cn/
- Seata支持的模式:
- Seata架构:
- 图解:
- Seata的AT模式:
- AT模式同样是分阶段提交的事务模型,不过缺弥补了XA模型中资源锁定周期过长的缺陷。
- 图解:
- Seata的XA模式:
- 概述:
- 正常情况:
- 异常情况:
- Seata的XA模型:
- Seata XA模式的优点和缺点: