当前位置: 首页 > wzjs >正文

做网站买完域名还需要什么跨境电商网站开发

做网站买完域名还需要什么,跨境电商网站开发,旅游商城网站订单处理,网页界面设计体会文章目录 前言一、RM提交事务二、RM回滚事务2.1、undo校验逻辑2.2、执行回滚逻辑 总结RM 的事务提交与回滚行为说明(基于 Seata AT 模式)1. 提交阶段(Phase Two Commit)2. 回滚阶段(Phase Two Rollback) 前…

文章目录

  • 前言
  • 一、RM提交事务
  • 二、RM回滚事务
    • 2.1、undo校验逻辑
    • 2.2、执行回滚逻辑
  • 总结
      • RM 的事务提交与回滚行为说明(基于 Seata AT 模式)
        • 1. 提交阶段(Phase Two Commit)
        • 2. 回滚阶段(Phase Two Rollback)


前言

  当TC接收到TM的提交/回滚请求后,在处理好自身相关的逻辑后,会向每一个分支事务RM发送请求,驱动RM执行实际的提交/回滚业务逻辑:
在这里插入图片描述
  微服务端处理对应请求,是在io.seata.rm.AbstractRMHandler中:
在这里插入图片描述

一、RM提交事务

  DataSourceManagerbranchCommit是处理事务提交的方法:
在这里插入图片描述


  调用的是asyncWorker的方法,AsyncWorkerDataSourceManager一个用于异步处理任务的组件:
在这里插入图片描述
  在AsyncWorker的构造中,会创建一个固定大小的线程池执行doBranchCommitSafely定时任务。
在这里插入图片描述


在这里插入图片描述
  最终会调用到addToCommitQueue方法,首先尝试将任务放入队列的尾部,如果队列已满,会返回false,不会抛出异常。然后会通过CompletableFuture异步编排机制,先通过scheduledExecutor执行doBranchCommitSafely的逻辑,然后再次执行addToCommitQueue
  如果当前的队列已满commitQueue.offer(context)返回的就是false。会先从队列中消费元素,然后再尝试将本次任务加到队列中。那如果队列未满,也就是commitQueue.offer(context)返回的是true。那么就直接return了,任务什么时候会执行?在上文中提到,构造AsyncWorker时,会启动一个定时任务调用addToCommitQueue方法。
在这里插入图片描述
  所以重点需要关注doBranchCommitSafely的逻辑,而该方法最终会调用doBranchCommit,在该方法中:

  1. 使用drainTo()方法将commitQueue中当前所有任务一次性取出,放入allContexts列表中。
  2. 把取出来的Phase2Context 根据resourceId进行分组。
  3. 遍历每一组同一资源 ID 下的提交任务,调用 =dealWithGroupedContexts()逐组提交,实际提交过程发生在dealWithGroupedContexts() 方法中。
    在这里插入图片描述
      在得到数据库代理连接对象,以及undolog后,执行删除undolog并且提交事务的逻辑:
    在这里插入图片描述
      删除undolog,并且提交分支事务,如果出现异常,则回滚,并且调用addAllToCommitQueue再次放入队列。

这里为什么要调用addAllToCommitQueue再次放入队列?
因为这里的提交事务,以及操作,都是针对删除undolog表的,不是针对业务代码的。业务代码事务的提交,是在执行业务代码时的。TC驱动RM提交事务,此时执行的操作是处理undolog,而不是提交业务代码的事务。也就不会存在业务代码存在bug,重试一百次依旧失败的场景。这里的 重试仅仅针对删除undolog失败的场景,捕获的异常类型也仅仅是SQL异常。
但是当前 addAllToCommitQueue() 没有内置重试次数限制,所以如果某条记录永远删不掉,会进入“无限重试”风险;实际部署中需要搭配告警机制(日志报警、慢提交监控)来识别这种问题;

在这里插入图片描述

二、RM回滚事务

  DataSourceManagerbranchRollback是处理事务回滚的方法:
在这里插入图片描述
  在undo方法中,会根据当前分支id和xid,去查询对应的undolog。
在这里插入图片描述
  执行回滚相关逻辑的核心代码:undoExecutor.executeOn(connectionProxy);
在这里插入图片描述

2.1、undo校验逻辑

  在executeOndataValidationAndGoOn方法中,会对前置镜像和后置镜像进行校验,这里涉及到脏数据回滚:
在这里插入图片描述
在这里插入图片描述
  在dataValidationAndGoOn方法中,首先会取出前置镜像后置镜像。然后进行比较:前置镜像和后置镜像相同,说明数据没有发生修改,也就不需要回滚。
在这里插入图片描述
  然后会获取数据库中的当前记录,和后置镜像比较:

  • 如果当前记录和后置镜像相同,证明没有其他方法对该条数据进行修改。所以可以回滚。
  • 如果当前记录和后置镜像不相同,还需要进行判断:
    • 前置镜像和当前数据相同,证明虽然当前记录被其他方法修改了,但是修改后的值和前置镜像,也就是执行事务之前的值是一样的,相当于变相地已经回滚了,所以无需再次回滚。
    • 前置镜像和当前数据不相同,这种情况证明当前记录被其他方法修改了,不能回滚。比如某样商品原本的库存是1000,本次事务将其改成了700,但是另一个方法手动将其改成了800。那么现在读取到的数据是800,和前置镜像后置镜像都不一样,这种情况不能简单地回滚到1000。

在这里插入图片描述

2.2、执行回滚逻辑

  undoPST.executeUpdate();会执行回滚的逻辑:
在这里插入图片描述

  然后会执行deleteUndoLog删除undolog表:
在这里插入图片描述
在这里插入图片描述

总结

RM 的事务提交与回滚行为说明(基于 Seata AT 模式)

1. 提交阶段(Phase Two Commit)

在全局事务的一阶段中,业务 SQL 已经通过本地事务提交完成,Spring 的事务已结束。随后,RM 通过异步机制清理事务日志:

  • 实际操作:删除 undo_log 表中与本次事务相关的日志记录。
  • 实现机制:
    • 使用阻塞队列存储待处理的提交上下文(Phase2Context);
    • 借助定时任务线程池(AsyncWorker)周期性调度任务;
    • 结合 CompletableFuture 异步编排机制,确保即使提交队列满时也能自动重试。
  • 容错设计:若日志删除失败,将记录异常,并自动重试。删除失败不会影响业务数据的一致性。

2. 回滚阶段(Phase Two Rollback)

若全局事务在协调器(TC)层被判定为失败,RM 将执行回滚操作。回滚行为基于一阶段写入的 undo_log 执行“反向补偿”,具体流程如下:

  1. 读取 undo_log 中记录的前镜像和后镜像
  2. 获取当前数据库的实时数据
  3. 进行数据一致性校验,决定是否执行回滚,判断逻辑如下:
前镜像 vs 当前数据后镜像 vs 当前数据处理方式
相同相同不执行回滚(数据未被修改)
不同相同执行回滚
不同不同抛出异常(数据已被篡改)
相同不同不执行回滚(幂等性处理)

注:若当前数据与后镜像不同,但与前镜像一致,说明业务重试或幂等行为已覆盖,回滚可安全跳过。

http://www.dtcms.com/wzjs/469120.html

相关文章:

  • 紧固件做网站有效果吗南宁seo外包要求
  • wordpress 添加文章列表seo站长工具是什么
  • 用vs做html网站百度文库官网登录入口
  • 高端企业网站建设费用电商网站销售数据分析
  • 网站建设 投资合作阿里指数查询
  • 网站建设托管中国推广网
  • 西宁网站搭建专业公司新发布的新闻
  • 前端网站开发毕设类型最近国际新闻
  • 政务公开网站项目建设书深圳网页设计公司
  • dede网站url采集谷歌排名规则
  • 做内贸哪个网站好富阳网站seo价格
  • wordpress 注册很慢seo+网站排名
  • 做b2b网站如何盈利模式seo外链专员
  • 怎么自制网站杭州最好的seo公司
  • 高明网站设计收费比较靠谱的网站
  • 医疗网站建设网站seo关键词排名优化
  • 卖狗做网站什么关键词最好新东方考研培训机构官网
  • wordpress使用密码错误seo外推软件
  • 四大门户网站百度seo排名优化是什么
  • 网站设计二级页面怎么做seo教程seo入门讲解
  • 先做亚马逊网站怎么操作网站优化网站
  • 心理医院网站优化服务商it菜鸡网seo
  • 做进料加工在哪个网站上做长沙seo网站
  • 美女网站源码带采集网络营销和网络销售的关系
  • 石家庄 外贸网站建设公司seo优化是什么意思
  • dede可以做视频网站企业官网建站
  • 卓越 网站福清seo
  • 无锡华士镇网站建设外链代发平台
  • ueditor html 转 wordpress聊城seo优化
  • 网站建设要做原型图吗在线客服