ACID-本地事务-分布式事务
学习思路 ACID解释 本地事务 分布式事务解决方案及优缺点 生产最常用的方案 一、ACID-本地事务 学习事务的前提就是要了解什么是ACID(事务的四大特性) Atomicity(原子性):一个事务的执行过程就是一个原子操作,要么全部成功,要么全部失败,不会出现其它情况 Consistency(一致性):数据执行前后,数据的完整性必须是一致的,比如转账A+1;B-1但总数还是不变的 Isolation(隔离性):多个用户并发执行事务,每个事务是相互隔离的,不会产生任何影响 Durability(持久性):事务一旦提交,数据便永久的存储在了数据库,不受外界条件影响 只用满足了以上4大特性才算一个完整的事务 二、本地事务 系统发展初期,单体应用对应一个数据库,本地操作数据我们很容易就实现了ACID,主要流程:开启事务-->操作数据 -->提交/回滚事务;实际使用中主要有:编程式事务、声明式事务 编程式事务:主要通过代码编写自己手动实现,开发一般不用 声明式事务:主要通过使用AOP拦截方法在方法执行前后分别开始事务,提交/回滚事务;实际使用主要通过配置文件配置或者@Transaction注解实现 三、分布式事务解决方案及优缺点 随着系统拆分到数据库拆分,我们的一个操作需要跨多个系统跨多个数据库才能完成,然而多个数据库协同操作也就保证不了ACID四大特性 为了解决问题XA协议来了 1