1.简介
2.本地事务失效问题
可以使用AOP starter aspectJ 代理
这样就可以拿到它的上下文的代理对象,当然是有这样的需求才这么做
如果你的事务只是想默认的传播行为,共用上面的事务,就可以不用这个啦
详情请去了解 Raft 算法 还有 paxos 算法
3.分布式系统保证一致性
4.Base理论
5.分布式事务几种方案
6.Seata 分布式事务
1.术语
2.AT模式
1.先在需要分布式事务的库中创建表
这个是用于回滚记录的表
CREATE TABLE IF NOT EXISTS `undo_log`
(
`branch_id` BIGINT NOT NULL COMMENT 'branch transaction id',
`xid` VARCHAR(128) NOT NULL COMMENT 'global transaction id',
`context` VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',
`rollback_info` LONGBLOB NOT NULL COMMENT 'rollback info',
`log_status` INT(11) NOT NULL COMMENT '0:normal status,1:defense status',
`log_created` DATETIME(6) NOT NULL COMMENT 'create datetime',
`log_modified` DATETIME(6) NOT NULL COMMENT 'modify datetime',
UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COMMENT ='AT transaction mode undo table';
ALTER TABLE `undo_log` ADD INDEX `ix_log_created` (`log_created`);
2.下载 全局事务协调器 TC
- Download server package from https://github.com/apache/incubator-seata/releases, unzip it.
1.配置
2.启动
1.0版本以上都是默认自动代理了,省了很多配置
注意:在Seata0.9版本以后,提供了DataSource默认代理的功能,并且默认是开启的,不用再手动的去把DataSource放入到DataSourceProxy中了
配置过于麻烦
原理就是 对数据库进行魔改
失败统一操作记录失败回滚对数据库恢复成原来的样子
新版本将会解决
记住一个注解就可以了
@GlobalTransactional
剩下的,以后再说!!!