分布式带来的事务失效解决方案总结

分布式带来的事务失效解决方案总结

当应用业务到多个数据库时,事务升级为分布式事务,数据一致性强度有所降低。如何从短期和长期去解决这个问题呢?

解决方案

长期方案

从总体来说,可以分成三种:
1、缩小事务边界,收敛到单一库内,避免分布式事务
2、引入分布式事务的方案,来达到最终一致性。
3、移除不必要的事务

结合迁库场景来看:

  1. 是否可以收敛事务到单一库?
    在这种场景下,无法寻找到一个都可以保证不失效的分库键
  2. 引入分布式事务解决方案,将事务转换为柔性事务(BASE,基本可用,最终一致),这里可以参见支付宝的分布式事务解决方案
    • 两阶段
    • 补偿型
    • 异步确保型
    • 最大努力通知型
  3. 将不需要紧密相连的业务操作原子化,例如批量操作。

短期方案

无法修改代码来解决分布式事务的情况下,记录事务回滚现场。

  1. 使用自定义TransactionInterceptor, 增加监控
  2. 记录事务回滚现场,包括方法、参数、回滚异常信息、回滚时间等

你可能感兴趣的:(JAVA)