2022-05-21关于分布式事务的复盘

一、要点

  • XA型事务
  • TCC和AT

二、具体内容

2.1 XA型事务

mysql > xa start 'transaction1' // start a xa transtaion
mysql > ... // do business sql
mysql > xa end 'transaction1' // tell TM my business has been prepared.
mysql > xa prepared 'transaction1'
mysql > xa commit 'transaction1' // XA型事务没办法自动提交

其他命令

xa recover // list all xa transactions
xa rollback 'transaction1'// rollback transaction

注意事项:

  • mysql 一个Connection,启动XA事务后,就没办法使用其他非XA的事务了,同样,启动了其他事务后,也就没办法使用XA事务了
  • mysql 5.6历史的版本,针对xa型事务存在bug,当xa的connection连接被管理后,再使用xa recover查询不到之前的xa事务,connection在断开连接后,TM会自动rollback

2.2 TCC和AT

2.2.1 TCC

TCC: Try Comfirm Cancel的首字母缩写
主要依靠业务代码进行分阶段提交。

TCC的几种异常情况处理

  • TRY的时候部分失败了,处理方式:rollback

注意事项

  • 允许空回滚
  • 防悬挂
  • 幂等

缺点:

2.2.2 AT

同TCC类似,但是是自动生成反向SQL

你可能感兴趣的:(2022-05-21关于分布式事务的复盘)