pig-seata.mp4 (159.66MB)>

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

image.png

部署 seata-server 服务端

image.png

  • 切换至 bin 目录 ,启动 seata 服务
  1. # windows
  2. seata-server.bat -p 8091 -h 127.0.0.1 -m file
  3. # mac or linux
  4. sh seata-server.sh -p 8091 -h 127.0.0.1 -m file

微服务客户端接入

① 添加依赖

  1. <dependency>
  2. <groupId>com.pig4cloud</groupId>
  3. <artifactId>pig-common-seata</artifactId>
  4. </dependency>

② 服务调用方声明 GlobalTransactional

  1. @GlobalTransactional // 分布式事务注解
  2. @Transactional(rollbackFor = Exception)
  3. public R consumer() {
  4. feign.providerMethod() // 通过feign 调用 服务提供方的接口
  5. }

③ 微服务涉及数据库添加 undo_log 表

  1. CREATE TABLE `undo_log` (
  2. `id` bigint(20) NOT NULL AUTO_INCREMENT,
  3. `branch_id` bigint(20) NOT NULL,
  4. `xid` varchar(100) NOT NULL,
  5. `context` varchar(128) NOT NULL,
  6. `rollback_info` longblob NOT NULL,
  7. `log_status` int(11) NOT NULL,
  8. `log_created` datetime NOT NULL,
  9. `log_modified` datetime NOT NULL,
  10. `ext` varchar(100) DEFAULT NULL,
  11. PRIMARY KEY (`id`),
  12. UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
  13. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


❤ 问题咨询

手势点击蓝字求关注简约风动态引导关注__2022-09-07+23_18_38.gif