一、本地事务:
1、事务特性
原子性
一致性
持久性
隔离性
2、传播机制
1、REQUIRED
如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)
2、SUPPORTS
假设当前在事务中。即以事务的形式执行。假设当前不在一个事务中,那么就以非事务的形式执行
3、MANDATORY
必须在一个已有的事务中执行,否则抛出异常
4、REQUIRES_NEW
不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
5、NOT_SUPPORTED
容器不为这个方法开启事务
6、NEVER
必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)
7、NESTED
如果当前存在事务,则在嵌套事务内执行。如果当前没有事务则新建事务
3、隔离级别
1)READ-UNCOMMITTED(读取未提交内容)
2)READ-COMMITTED(读取提交内容)避免“脏读”
3)REPEATABLE-READ(可重读) 避免“不可重复读”
4)SERIERLIZED(串行化) 有效避免“脏读”、“不可重复读”、“幻读”
二、分布式事务(XA/JTA规范)
0、异步消息实现分布式事务
1、两阶段提交协议(2PC)
事务管理者(中间协调者)
第一阶段:预提交
第二阶段:commit/rollback
atomikos中间件
TCC(Try-Confirm-Cancel)
开源框架:tcc-transaction、ByteTcc、支付宝GTS
三、cap和base
CAP理论
一个分布式系统不可能同时满足一致性[Consistency],可用性[Availability],和分区容错性[Partition tolerance]这三个基本需求,最多只能同时满足其中的两项。
BASE理论
base是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写