springboot+seata+eureka分布式事务搭建以及使用完整案例
一.分布式三种场景
**一.分布式常见三种场景**
1.跨数据库分布式事务
2.跨服务分布式事务
3.混合式分布式事务
**二.事务的四大特性**
Atomicity:原子性,事务中的所有操作要么都成功执行,要么都取消执行,不能存在部分执行,部分不执行的状态。
Consistency:一致性,举个例子简单的理解就是,A、B 两个账户各有 100 元,无论两个账户并发相互转账多少次,两个账户的资金总额依然是 200 元。
Isolation:隔离性,并发事务之间的相互影响程度,隔离性也是分级别的:读未提交、读已提交、可重复读等。
Durability:持久性,事务完成后对数据的更改不会丢失。
二.准备安装工作以及所需数据
seata支持(AT,TCC,Saga等模式) 这次使用的是AT模式
特别强调~~seata分为服务端以及clien客户端
百度网盘链接:https://pan.baidu.com/s/19s2FeAlLWjWrEnWTjEucxg
提取码:x6el 提取seata-server
1.seata-server 服务端相关配置(表结构)
-- 全局事务表
CREATE TABLE IF NOT EXISTS `global_table`
(
`xid` VARCHAR(128) NOT NULL,
`transaction_id` BIGINT,
`status` TINYINT NOT NULL,
`application_id` VARCHAR(32),
`transaction_service_group` VARCHAR(32),
`transaction_name` VARCHAR(128),
`timeout` INT,
`begin_time` BIGINT,
`application_data` VARCHAR(2000),
`gmt_create` DATETIME,
`gmt_modified` DATETIME,
PRIMARY KEY (`xid`),
KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- 分支事务表
CREATE TABLE IF NOT EXISTS `branch_table`
(
`branch_id` BIGINT NOT NULL,
`xid` VARCHAR(