分布式事务实战持续更新
2019-04-17 本文已影响71人
山东大葱哥
- 分布式不一定是微服务
多数据源下的事务
mysql xa事务
两阶段提交
@Transactional 下切换数据源是无效的。
xA的性能问题
XA的性能很低。一个数据库的事务和多个数据库间的XA事务性能对比可发现,性能差10倍左右。因此要尽量避免XA事务,例如可以将数据写入本地,用高性能的消息系统分发数据。或使用数据库复制等技术。只有在这些都无法实现,且性能不是瓶颈时才应该使用XA
-
分布式服务
远程调用httpclient dubbo
事务控制,手写一个分布式事务框架
netty做协调器
redis也可以做协调器 -
tpp
补偿机制 -
基于消息队列的异步分布式事务
rabbitmq
分布式事务是指操作多个数据库之间的事务,spring的org.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持。如果使用WAS的JTA支持,把它的属性改为WebSphere对应的TransactionManager。
在tomcat下,是没有分布式事务的,不过可以借助于第三方软件jotm(Java Open Transaction Manager )和AtomikosTransactionsEssentials实现,在spring中分布式事务是通过jta(jotm,atomikos)来进行实现。