
Seata
文章平均质量分 81
Seata
qq_41956309
这个作者很懒,什么都没留下…
展开
-
Seata源码——TCC模式解析02
在SpringBoot启动的时候通过自动注入机制将GlobalTransactionScanner注入进ioc而GlobalTransactionScanner继承AbstractAutoProxyCreatorAbstract 在postProcessAfterInitialization阶段由子类创建代理TccActionInterceptor。原创 2023-12-24 18:45:42 · 1072 阅读 · 0 评论 -
Seata源码——TCC模式总结
TCC 是分布式事务中的二阶段提交协议,它的全称为 Try-Confirm-Cancel,即资源预留(Try)、确认操作(Confirm)、取消操作(Cancel)原创 2023-12-24 18:46:13 · 1311 阅读 · 1 评论 -
Seata源码——TCC模式解析03
在分布式系统中,随时随地都需要面对网络超时,网络重发和服务器宕机等问题。所以分布式事务框架作为搭载在分布式系统之上的一个框架型应用也绕不开这些问题。具体而言,有以下常见问题:1.幂等处理2.空回滚3.资源悬挂参考 :https://developer.aliyun.com/article/1053736#原创 2023-12-24 18:45:57 · 632 阅读 · 0 评论 -
Seata——AT模式和TCC模式总结
原创 2023-12-24 18:44:38 · 409 阅读 · 0 评论 -
Seata源码——TCC模式使用01
TCC 是分布式事务中的二阶段提交协议,它的全称为 Try-Confirm-Cancel,即资源预留(Try)、确认操作(Confirm)、取消操作(Cancel),他们的具体含义如下:Try:对业务资源的检查并预留。Confirm:对业务处理进行提交,即 commit 操作,只要 Try 成功,那么该步骤一定成功。Cancel:对业务处理进行取消,即回滚操作,该步骤回对 Try 预留的资源进行释放。TCC 是一种侵入式的分布式事务解决方案,以上三个操作都需要业务系统自行实现,对业务系统有着非常大的原创 2023-12-24 18:45:27 · 646 阅读 · 0 评论 -
AT模式总结
基于支持本地 ACID 事务的关系型数据库。Java 应用,通过 JDBC 访问数据库。原创 2023-12-21 14:47:47 · 1255 阅读 · 0 评论 -
Seata中AT模式的实现原理03-二阶段提交
1.当一阶段提交没有任何异常情况下进行二阶段提交 TM会发送提交全局事务请求给TC2.TC接收到全局事务提交请求之后会循环所有的分支事务 往RM发送分支事务提交的请求3.RM接收到分支事务提交请求之后会委派给AsyncWorker去处理 从阻塞队列里面拿数据4.AsyncWorker处理的时候其实就是将undo_log的数据删除5.当RM处理完之后返回TC 然后会将全局锁删除 就是 lock_table表数据6.将分支事务状态变为二阶段已提交。原创 2023-12-21 14:47:11 · 1224 阅读 · 0 评论 -
Seata中AT模式的实现原理04-GlobalLock的作用
Seata(AT 模式)的默认全局隔离级别是 读未提交如果应用在特定场景下,必需要求全局的 读已提交 ,目前 Seata 的方式是通过 SELECT FOR UPDATE 语句的代理。SELECT FOR UPDATE 语句的执行会申请 全局锁 ,如果 全局锁 被其他事务持有,则释放本地锁(回滚 SELECT FOR UPDATE 语句的本地执行)并重试。这个过程中,查询是被 block 住的,直到 全局锁 拿到,即读取的相关数据是 已提交 的,才返回。原创 2023-12-21 14:47:23 · 1072 阅读 · 0 评论 -
Seata中AT模式的实现原理02-RM分支事务提交
1.项目启动的时候会为DataSource做增强 当全局事务开启之后执行业务代码的时候会进到DataSource的代理中然后由执行器去做语句的执行2.开启本地事务3.在执行业务语句之前会构建前置镜像 其实就相当于一个 select id from test where 修改条件/删除条件 = xxx for uodate 用于在后续的事务提交中提供数据的一致性保证。以便在事务提交时使用这个镜像来比较和确认事务是否能够成功提交。4. 然后会执行业务代码。原创 2023-12-21 14:46:59 · 969 阅读 · 0 评论 -
Seata中AT模式的实现原理01-TM开启全局事务
1.项目启动的时候会由SpringBoot自动装配机制把GlobalTransactionScanner装配进spring容器中去做增强并会注入一个全局事务的拦截器2.当有标准了GlobalTransactional的方法被执行的时候会通过拦截器进行拦截进行全局事务的开启3.开启全局事务的之前会先根据不同的事务隔离级别去做不同的处理4.然后TM会通过Netty发送一个开启全局事务的请求到TC。原创 2023-12-21 14:46:44 · 1013 阅读 · 0 评论 -
Seata客户端启动流程
1.客户端启动的时候会通过SpringBoot的自动装配机制加载配置类2.设置RestTemplate的拦截器用来拦截所有mvc请求 和Feign的拦截器拦截Feign请求设置全局事务ID3.初始化TM(事务管理者) RM(资源管理者) 建立Netty客户端的通道并启动4.注册TM 和RM到SeataServer。原创 2023-12-15 15:16:02 · 251 阅读 · 0 评论 -
Seata服务端启动流程
1.解析registry.conf、file.conf等配置文件2.创建一个监控,做metric指标采集3.创建SeataNettyServer服务端(TC事务协调器) 并设置一个Handler用来处理AT、TCC、SAGA等不同事务类型的逻辑处理4.设置事务持久化方式5.设置全局锁的管理器6.启动Seata服务端 建立和客户端的通道 默认端口为8091。原创 2023-12-15 11:21:00 · 657 阅读 · 0 评论