>
在微服务环境下,因为会根据不同的业务将拆分成不同的服务,每个服务都有自己独立的数据库并且是独立运行的,互不影响的。服务与服务之间通讯采用RPC远程调用技术,但是每个服务中都有自己独立的数据源,即自己独立的本地事务;两个服务相互进行通讯的时候,两个本地事务互不影响,从而出现分布式事务产生的原因。
部署 seata-server 服务端

# windowsseata-server.bat -p 8091 -h 127.0.0.1 -m file# mac or linuxsh seata-server.sh -p 8091 -h 127.0.0.1 -m file
微服务客户端接入
① 添加依赖
<dependency> <groupId>com.pig4cloud</groupId> <artifactId>pig-common-seata</artifactId></dependency>
② 服务调用方声明 GlobalTransactional
@GlobalTransactional // 分布式事务注解@Transactional(rollbackFor = Exception)public R consumer() { feign.providerMethod() // 通过feign 调用 服务提供方的接口}
③ 微服务涉及数据库添加 undo_log 表
CREATE TABLE `undo_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `branch_id` bigint(20) NOT NULL, `xid` varchar(100) NOT NULL, `context` varchar(128) NOT NULL, `rollback_info` longblob NOT NULL, `log_status` int(11) NOT NULL, `log_created` datetime NOT NULL, `log_modified` datetime NOT NULL, `ext` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
❤ 问题咨询
