码农的世界每日1000字 坚持100天程序员

分布式事务实战持续更新

2019-04-17  本文已影响71人  山东大葱哥
  1. 分布式不一定是微服务
    多数据源下的事务
    mysql xa事务
    两阶段提交
    @Transactional 下切换数据源是无效的。

xA的性能问题
XA的性能很低。一个数据库的事务和多个数据库间的XA事务性能对比可发现,性能差10倍左右。因此要尽量避免XA事务,例如可以将数据写入本地,用高性能的消息系统分发数据。或使用数据库复制等技术。只有在这些都无法实现,且性能不是瓶颈时才应该使用XA

  1. 分布式服务
    远程调用httpclient dubbo
    事务控制,手写一个分布式事务框架
    netty做协调器
    redis也可以做协调器

  2. tpp
    补偿机制

  3. 基于消息队列的异步分布式事务
    rabbitmq

分布式事务是指操作多个数据库之间的事务,spring的org.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持。如果使用WAS的JTA支持,把它的属性改为WebSphere对应的TransactionManager。
在tomcat下,是没有分布式事务的,不过可以借助于第三方软件jotm(Java Open Transaction Manager )和AtomikosTransactionsEssentials实现,在spring中分布式事务是通过jta(jotm,atomikos)来进行实现。

上一篇下一篇

猜你喜欢

热点阅读