第一章-什么是分布式事务
一、分布式事务概述
1.1 什么是分布式事务
1.1.1 单服务多数据源
在单个系统中,完成某项业务需要操作多个数据源,并且操作时要么全部成功要么全部失败,由于数据是存储在不同的数据库中,因此都有对应的连接(Connection),不同的连接会开启不同的事务。使用传统的解决方案无法保证两个事务同时ACID。
例如上图的电商系统:电商系统在下订单的时候必须要对应的减少一个库存,不可能订单已经下好了,结果由于某种原因库存没有减少,或者库存已经减少了,但是订单数却没有加。因此我们需要将**“下订单减库存”**看成是一个整体,要么一起成功,要么一起失败。
1.1.2 多服务单数据源
在多个系统(微服务)中,完成某项业务操作同一个数据源,并且操作时要么全部成功要么全部失败,数据是存储在同一个数据库,但是由于系统不同,下订单微服务下单的时候,会新创建一个连接(Connection),那么此时远程调用库存微服务的时候,也会开启一个新的Connection,不同的Connection都有各自独立的开启事务、提交/回滚事务等操作,无法保证两个事务同时ACID;
分析过后发现也会出现下订单减库存失败,或者库存减成功下订单出现异常等。
1.1.3 多服务多数据源
在多个系统中,完成某个业务操作多个数据源(主流的分布式架构),并且操作时要么全部成功要么全部失败,数据存储在不同的数据库,业务也存在不同的系统中,当订单微服务下订单时会有新的Connection,与此同时调用远端的库存微服务减库存时,库存微服务必然会创建一个新的Connection用于减库存操作,因此无法保证多个事务同时ACID;
tips:以上三种情况都属于分布式事务范畴