分布式事务的基本概念


 

概述

分布式事务实现的几种模式:消息驱动、事件溯源、TCC
基于消息驱动的springcloud微服务系统:Event Sourcing

事务的原则和实现:sql方式、jdbc方式
spring事务实现:JPA、JMS、JTA
spring的分布式事务实现:JTA、非JTA

分布式事务主要实现一致性。

 

jdbc提供的事务管理

在这里插入图片描述
关闭自动提交即开启事务。

 

spring提供的事务管理

事务的传播机制:一个service层方法调用另一个service()层的方法,a()中调用b(),a可能设置了事务,b可能也设置了事务
在这里插入图片描述
 在这里插入图片描述
 

代码实现:加注解@Tra…,实质是使用aop代理实现事务

待验证:加了注解后是否自动回滚、是否还会抛出异常?是否需要try catch,在catch中回滚?

在这里插入图片描述
 

在这里插入图片描述
spring定义了事务管理的接口PlatformT…M…,常见的实现

  • jdbc的实现,较底层的一种实现方式
  • jpa的实现
  • jms的实现,用于对消息中间件(mq)的事务管理
  • jta的实现,可以在spring中使用,也可以单独使用

 

jms

在这里插入图片描述
在这里插入图片描述
 在这里插入图片描述
 

springboot对rabbitmq是要jms:

 

jta

jta可以管理多个数据源(db、mq)的事务。比如一个事务涉及操作多个数据源,可以使用jta来管理事务。
 

XA:
在这里插入图片描述
提交时,多个数据源同时提交,不是逐个提交

 
XA是一个规范,JTA是XA的java实现:

在这里插入图片描述
 

JTA的缺点:

  • 事务持续时间长,锁数据的时间长(由提交花费时间最多的数据源决定)
  • 低性能、低吞吐量
     

对于涉及多个数据源的事务,可以不使用jta,而使用spring的事务同步机制,高性能、高吞吐量,但这种方式只能实现涉及多个数据源的事务近似的一致性。

jta的使用:

 

多数据源:一个服务访问多个数据源(db、mq等)
多实例:服务集群,一个服务部署多个实例,这些实例可以配置|访问相同、不同的数据源

 

分布式事务

分布式事务:在分布式系统中实现事务
 

使用jta

在这里插入图片描述
 在这里插入图片描述

 

不使用jta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值