# springboot-atomikos **Repository Path**: Abner_Chow/springboot-atomikos ## Basic Information - **Project Name**: springboot-atomikos - **Description**: 分库分表(多数据源)下的分布式事务处理Demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-11-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 该项目为分库分表(多数据源)下的分布式事务处理的Demo #### 一、分布式事务   首先我们应知道,事务是为了保证数据的一致性而产生的。那么分布式事务,顾名思义,就是我们要保证分布在不同数据库、不同服务器、不同应用之间的数据一致性。 #### 二、为什么需要分布式事务?   最传统的架构是单一架构,数据是存放在一个数据库上的,采用数据库的事务就能满足我们的要求。随着业务的不断扩张,数据的不断增加,单一数据库已经到达了一个瓶颈, 因此我们需要对数据库进行分库分表。为了保证数据的一致性,可能需要不同的数据库之间的数据要么同时成功,要么同时失败,否则可能导致产生一些脏数据,也可能滋生 Bug。
在这种情况下,分布式事务思想应运而生。 #### 三、应用场景 ###### 支付   最经典的场景就是支付了,一笔支付,是对买家账户进行扣款,同时对卖家账户进行加钱,这些操作必须在一个事务里执行,要么全部成功,要么全部失败。 而对于买家账户属于买家中心,对应的是买家数据库,而卖家账户属于卖家中心,对应的是卖家数据库,对不同数据库的操作必然需要引入分布式事务。 #### 四、项目简介 项目使用SpringBoot 集成 Atomikos 来实现分布式事务 Atomikos: 是一个为 Java 平台提供增值服务的开源类事务管理器。 A、搭建 Spring + Springboot + Mybatis + Atomikos B、需求 顾客customer购买完商品,进行支付操作,顾客跟店家的交易明细表同时增加一条流水记录 C、实现 两个数据库customer、stores ,同一张表,交易记录( _consume),转账动作完成,两张表同时增加一条记录,否则同时失败