JTA实现分布式事务
image.png使用Spring boot JTA
- 可以使用如Jboss之类的应用服务器提供的JTA事务管理器。
- 可以使用Atomikos, Bitronix等库提供的JTA事务管理器。
不使用JTA 依次提交两个事务
image.png image.png image.png两个事务无法同步回滚
链式事务管理
- 定义一个事务链
- 多个事务在一个事务管理器里依次提交
- 可能出错。
如何选择(根据一致性要求)
- 强一致性: JTA(性能最差,只适用于单个服务内)
- 弱一致性:最终一致性事务,最大努力一次提交,链式事务(设计相应的错误处理机制)
如何选择(根据场景)
- MQ-DB:最大努力一次提交+重试
- 多个DB:链式事务管理
- 多个数据源:链式事务,或其他事务同步方式。
实例- 链式事务-不重试
- MYSQL + MYSQL
- 链式事务:
DatasourceTransactionManager
- 不处理重试
网友评论