提供网站建设收益分录全网营销推广有哪些平台

web/2025/9/28 23:38:31/文章来源:
提供网站建设收益分录,全网营销推广有哪些平台,中国私企建筑公司十大排名,wordpress dz论坛模板Seata AT 模式 上一节中我们提到AT模式是基于XA事务模型演变过来的#xff0c;所以他的整体机制也是一个改进版本的两阶段提交协议。 第一阶段#xff1a;业务数据和回滚日志记录在同一个本地事务中提交#xff0c;释放本地锁和链接资源第二阶段#xff1a;提交异步化所以他的整体机制也是一个改进版本的两阶段提交协议。 第一阶段业务数据和回滚日志记录在同一个本地事务中提交释放本地锁和链接资源第二阶段提交异步化非常快速完成。回滚通过第一阶段的回滚日志进行反向补偿 接下来会解析整个执行流程中每一个阶段的具体实现 原来。同时为了更好的理解AT模式的工作机制我们以产品表za_product来描述整个流程表结构如下 CREATE TABLE za_product (id bigint(20) NOT NULL AUTO_INCREMENT,product_code varchar(100) NOT NULL,name varchar(100) NOT NULL,count varchar(128) NOT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8;AT模式第一阶段 业务流程中执行库存扣减操作的数据库操作时候Seata会基于数据源代理对原执行的SQL进行解析代理的配置代码如下。 Beanpublic DataSourceProxy dataSourceProxy(DruidDataSource druidDataSource){return new DataSourceProxy(druidDataSource);}然后将业务数据在更新前后保存到undo_log 日志表中利用本地事务的ACID特性把业务数据的更新和回滚日志写入同一个本地事务中进行提交完整的执行流程如图 日志表结构如下 -- 注意此处0.7.0 增加字段 context CREATE TABLE undo_log (id bigint(20) NOT NULL AUTO_INCREMENT,branch_id bigint(20) NOT NULL,xid varchar(100) NOT NULL,context varchar(128) NOT NULL,rollback_info longblob NOT NULL,log_status int(11) NOT NULL,log_created datetime NOT NULL,log_modified datetime NOT NULL,PRIMARY KEY (id),UNIQUE KEY ux_undo_log (xid,branch_id) ) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8;假设AT分支事务的业务逻辑是如下SQl update za_product set count count-1 where product_code GP202103221029如上则第一阶段的执行逻辑如下 通过DataSourceProxy对业务SQL进行解析得到SQl的类型UPDATE表za_product条件where product_code “GP202103221029”等相关信息查询修改之前的数据镜像根据解析得到条件信息生成查询语句定位数据 select id,product_code,count name from za_product where product_code GP202103221029如上SQl得到产品的对应库存数据1000执行业务SQL更新这条记录的count count-1查询修改之后的数据镜像根据镜像杰哥通过主键定位数据 select id,product_code,count name from za_product where id 1得到修改之后的镜像数据此时count 999插入回滚日志把前后镜像数据以及业务SQl相关的信息组成一条回滚日志记录插入undo_log表中可以在对应数据库的undo_log表中获得数据如下图 rollback_info字段是一个文件类型包含了回滚的数据beforeImage和afterImage使用官网数据如下所示 {branchId: 2034562134,undoItems: [{afterImage: {rows: [{fields: [{name: id,type: 4,value: 1}, {name: name,type: 12,value: GTS}, {name: since,type: 12,value: 2014}]}],tableName: product},beforeImage: {rows: [{fields: [{name: id,type: 4,value: 1}, {name: name,type: 12,value: TXC}, {name: since,type: 12,value: 2014}]}],tableName: product},sqlType: UPDATE}],xid: xid:xxx }提交前向TC注册分支事务申请za_product表中主机值等于1 的记录的全局锁本地事务提交业务数据的更新和签名步骤中生成的undo_log一起提交将本地事务提交的结果上报给TC从AT的第一阶段实现原理看分支的本地事务可以在第一阶段提交完成后马上释放本地事务所定的资源这个是AT事务和XA最大的不同点XA事务的两阶段提交一般锁定资源后持续到第二阶段的提交或者回滚后才释放资源所以实际上 AT模式降低了锁定的范围 从而大幅度提升了分布式事务处理的效率之所以这样实现是因为Seata记录了回滚日志即使第二阶段发生异常只需要更具undo_log记录的数据进行回滚即可。 AT模式第二阶段 TC接受到所有事务分支的事务状态汇报后决定对全局事务进行提交或者回滚。 事务提交 如果决定是全局提交说明此事所有分支事务已经完成了提交只需要清理undo_log日志即可这也是和XA最大的不同点因为在第一阶段各个分支的本地事务就已经提交了所以这里并不需要TC来触发所有分支事务的提交如下图 如上图中事务提交流程 分支事务收到TC的提交请求后吧请求放入一个异步队列并马上返回提交成功的结果给TC从异步队列中执行分支提交请求批量删除对应的undo_log日志。 第一个步骤中TC并不需要同步知道分支事务的处理结果所以分支事务才会采用异步的方式来执行因为对于提交操作来说分支事务只需要清理undo_log中的日志即可而即使清理失败也不会对整个分布式事务产生任何影响。 事务回滚 整个全局事务链中任何一个事务分支执行失败全局事务都会进入事务回滚流程。此处回滚根据undo_log中记录的镜像数据进行补偿如回滚成功则数据的一致性得到保持。如下流程 所有分支事务接受到TC的事务回滚请求后分支事务参与者开启一个本地事务执行流程如下 通过XID和branch ID查找到相应的undo_log记录数据校验拿undo_log中afterImage镜像数据与当前业务表中数据镜像比较乐观锁如果不同说明数据被当前全局事务之外的动作修改了那么事务不会回滚。如果afterImage中数据和当前业务表中对应的数据相同则根据undo_log中的beforeImage镜像数据和业务SQL的相关信息生成回滚语句并执行 update za_product set count 1000 where id 1提交本地事务并把本地事务的执行结果即分支事务回滚的结果提交给TC。 关于事务隔离性保证 ACID在事务特种有一个隔离性指多个用户并发的访问数据库的时候数据库为每一个用户开启的事务不能被其他事务的操作所干扰多个并发事务之间要相互隔离。在AT模式中当多个全局事务操作同一张表的时候他的事务隔离的保证是基于全局锁来实现的那么我们针对读隔离写隔离进行说明 写隔离 写隔离是为了在多个全局事务针对同一个表的同一个字段进行更新操作的时候避免全局事务在没有被提交之前被其他全局事务修改。写隔离的主要实现是在第一阶段本地事务提交之前确保拿到了全局锁。如果拿不到全局锁则不能提交本地事务。并且获取全局锁的尝试会有一个范围控制如果超出范围将会放弃全局锁的获取并且回滚事务释放本地锁。 我们用实际案例解析假设两个全局事务tx1tx2分别对za_product表的count字段进行更新操作count原始值100. tx1先执行开启本地事务拿到本地锁数据库级别的锁更新count count-1 99。本地事务提交之前需要拿到该记录的全局锁然后提交本地事务并释放本地锁。 tx2后执行同样先开启本地事务拿到本地锁更新countcount-1 98。本地事务提交之前尝试获取该记录的全局锁全局锁由TC控制由于该全局锁已经被tx1获取所以tx2需要等待以重新获取全局锁。如果全局事务整体提交那么提交时序图如下 如果tx1在第二阶段执行全局回滚那么tx1需要重新获得该数据的本地锁让后根据undo_log进行事务回滚。此时如果tx2仍然在等待该激励的全局锁同时持有本地锁那么tx1 分支事务的回滚会失败。tx1分支事务回滚过程会一直重试直到tx2的全局锁获取超时放弃全局锁并回滚本地事务释放本地锁之后tx1的分支事务才会回滚成功。而在整个过程中全局锁在tx1 结束之前一直被tx1 持有所以不会发生脏写问题。全局事务回滚时序图如下 读隔离 我们在数据库学习中指定有4种隔离级别 Read Uncommitted读取为提交内容Read Committed读取已经提交内容Repeatable read可重复读Serializable可串行化 在数据库本地事务隔离级别为Read Committed或者以上时候Seata AT事务模式的默认全局隔离级别是Read Uncommitted在该隔离级别所有事务都可以看到其他未提交事务的执行结果产生脏读。这在最终一致性事务模型中是允许存在的并且在大部分分布式事务场景中可以接受脏读。在某些特定场景中要求事务隔离级别必须Read Committed目前Seata是通过SelectForUpdateExecutor执行器对SELECT FOR UPDATE语句进行代理的SELECT FOR UPDATE 语句在执行时候回申请全局锁。如果全局锁已经被其他分支事务持有则释放本地锁回滚SELECT FOR UPDATE 语句的本地执行并重试。在这个过程中查询请求会被“BLOCKING”直到全局锁被拿到也就是读取的相关数据已经提交时候才返回。 上一篇分布式事务框架seata

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

散热器 东莞网站建设模板免费下载网站

此实验的前提是防火墙需关闭。 1.关闭iptables /etc/init.d/iptables stop /etc/init.d/iptables status 2.关闭selinux setenforce 0 getenforce Permissive ---出现这个单词即代表selinux临时关闭,如需永久关闭则需修改/etc/sysconfig/selinux配置文件 …

杭州企业建设网站企业哔哩哔哩网页版怎么回到旧版

前言 友链: 原文地址 ❓-背景- 现有物理机A,B。A中安装了虚拟机VM上面部署了服务(这里以mysql为例)。B需要访问A虚拟机中部署的服务。 -环境- 物理机A(192.168.135.161)物理机B(192.168.135.162&#xf…

劳保手套网站建设做旅行社网站多少钱

关系数据库与非关系型数据库概述 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型…

好学校平台网站模板下载不了中国英文政务网站建设

文心一言 Ian Goodfellow是机器学习领域的知名学者,对深度学习领域有着重要贡献。他生于1985年,本科和硕士阶段就读于斯坦福大学,师从吴恩达。博士阶段,他跟随蒙特利尔大学的著名学者Yoshua Bengio研究机器学习,并在2…

增城网站公司电话网站开发公司的义务

随着互联网化,随着信息化的不断发展,企业IT系统的规模和复杂性也在日益增加。在这个背景下,IT统一运维平台就应用而生了。它以一种全面、集成的方式管理企业IT资源,从而提高效率、降低成本、改善服务,为企业提供更快更…

汽车租赁网站开发厦门seo关键词优化培训

来源:http://www.cnblogs.com/AllenDang/archive/2012/03/03/2378534.html 从2000年至今,也写了11年代码了,期间用过VB、Delphi、C#、C、Ruby、Python,一直在寻找一门符合自己心意和理念的语言。我很在意写代码时的手感和执行的效…

北京网站名称注册证书php作品源代码免费下载

转载自 Sentinel如何使用 简介 Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard。核心库不依赖 Dashboard,但是结合 Dashboard 可以取得最好的效果。 这篇文章主要介绍 Sentinel 核心库的使用。如果希望有一个最快最直接的了解,可以参考 新手指…

php企业网站开发框架开发公司可以顾保安

导入第三方库时出现了sdk版本不兼容问题 为我们app的module所支持的sdk最低版本与依赖module的sdk最低版本不一致 把15--》16即可

网站的营销功能百姓网个人征婚

在Java中实现记录1000万用户连续7天登录的功能,可以使用Redis的Bitmap来跟踪每个用户的登录状态。以下是一个简化的Java示例,使用了Jedis库作为Redis的Java客户端。 首先,确保你已经在项目中添加了Jedis的依赖。如果你使用Maven,…

找天津网站建设公司做个网站多少钱上海门户网

C99增加了一个新特性:指定初始化器(designated initializer)。利用该特性可以初始化指定的数组元素,也可以初始化指定的结构体变量。本文主要分享:使用指定初始化器初始化数组。例如,只初始化数组中的最后一个元素。对于传统的C初…

设计网站思路如何写周村区住房和城乡建设厅网站

跟读者建立联系【研究的艺术一】这一次李沐博士给大家精读的是一本关于论文写作的书籍。这本书总共包含四个大的章节,本期视频李沐博士介绍的是第一个章节:Research,Researchers,and Readers。 0. 前言 视频开头,李沐…

哔哩哔哩官方网站首页除了dw还有什么可以做网页

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装…

做网站后台怎么搭建网页设计与制作模块1课后答案

TextLoader用于从文本文件加载数据。您需要指定什么是数据列、它们的类型以及在文本文件中的位置。当输入文件包含许多相同类型的列(通常打算一起使用)时,我们建议从一开始就将它们作为向量列进行加载:这样,数据的架构…

高端网站改版顾问wordpress 开启rss

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 在 QML 中,Path 是一种用于定义和描述路径的元素,通常需要和 Canvas、PathView、Shape 等元素结合一起使用,用于生成复杂的图形或动画效果。 所谓路径,是由一系列路径元素组成的集合,从起点开始,各段…

html5网站动态效果优质的外国网站

博主作为一名大模型开发算法工程师,很希望能够将所学到的以及实践中感悟到的内容梳理成为书籍。作为先导,以专栏的形式先整理内容,后续进行不断更新完善。希望能够构建起从理论到实践的全流程体系。 助力更多的人了解大模型,接触大模型,一起感受AI的魅力! 1.语言模型的历…

移动端快速建站中国商务商会官方网站

荒野大镖客2三星毛皮怎么获得?想必很多朋友都还不是很清楚吧,所以呢小编今天给大家带来的就是荒野大镖客2三星毛皮狩猎技巧分享,需要的朋友还不快进来看看?三星毛皮狩猎技巧分享猎物体型分水岭建议以狐狸类为例。(1)中型猎物[比狐…

营销型网站建设的特点阿里轻云wordpress

介绍 在Vue.js应用程序中,随着项目复杂度的增加,组件之间的数据共享和管理变得困难。为了解决这个问题,Vue.js提供了一个名为Vuex的状态管理模式。Vuex可以帮助我们更有效地组织、管理和共享应用程序的状态。 什么是Vuex? Vuex…

网站制作的基本流程做解析会员电影的网站

基于C语言的几种排序方法比较.doc基于C语言的几种排序方法比较 【摘要】文章对c语言中的冒泡排序法、选择排序法、插入排序法进行比较讨论,以试图找出最佳排序方法。 【关键词】c语言;排序方法;比较 引言 排序是计算机程序设计中的一种重要操作,其作用是…

怎么做网站的外部连接制作网页时一般需要兼容哪些浏览器

目录 1.核心术语:2.强关联规则:小结: 1.核心术语: 支持度(Support):指项集出现的频繁程度(相当于项集出现的概率) 最小支持度有绝对值和占比两种表示方式 置信度&#…