分布式事务极速快三网站搭建之服务设计和实现注意事项

1、极速快三网站搭建

TCC是一种比较成熟的分布式事务解决方案,可用于解决跨库操作的数据一致性问题;

TCC是服务化的两阶段编程模型,其Try、Confirm、Cancel 3个方法均由业务编码实现;

其中Try操作作为一阶段,负责资源的检查和预留,Confirm操作作为二阶段提交操作,执行真正的业务,Cancel是预留资源的取消;

如下图所示,业务实现TCC服务之后,该TCC服务将作为分布式事务的其中一个资源,参与到整个分布式事务中;事务管理器分2阶段协调TCC服务,在第一阶段调用所有TCC服务的Try方法,在第二阶段执行所有TCC服务的Confirm或者Cancel方法;

1
2、用户在实现TCC服务时,有以下注意事项

1、业务操作分两阶段完成:

如下图所示,接入TCC前,业务操作只需要一步就能完成,但是在接入TCC之后,需要考虑如何将其分成2阶段完成,把资源的检查和预留放在一阶段的Try操作中进行,把真正的业务操作的执行放在二阶段的Confirm操作中进行;

2

TCC服务要保证第一阶段Try操作成功之后,二阶段Confirm操作一定能成功;

2、允许空回滚;

如下图所示,事务协调器在调用TCC服务的一阶段Try操作时,可能会出现因为丢包而导致的网络超时,此时事务协调器会触发二阶段回滚,调用TCC服务的Cancel操作;

TCC服务在未收到Try请求的情况下收到Cancel请求,这种场景被称为空回滚;TCC服务在实现时应当允许空回滚的执行;

3

3、防悬挂控制;

如下图所示,事务协调器在调用TCC服务的一阶段Try操作时,可能会出现因网络拥堵而导致的超时,此时事务协调器会触发二阶段回滚,调用TCC服务的Cancel操作;在此之后,拥堵在网络上的一阶段Try数据包被TCC服务收到,出现了二阶段Cancel请求比一阶段Try请求先执行的情况;

用户在实现TCC服务时,应当允许空回滚,但是要拒绝执行空回滚之后到来的一阶段Try请求;

4

4、幂等控制:

无论是网络数据包重传,还是异常事务的补偿执行,都会导致TCC服务的Try、Confirm或者Cancel操作被重复执行;用户在实现TCC服务时,需要考虑幂等控制,即Try、Confirm、Cancel 执行一次和执行多次的业务结果是一样的;

5

5、业务数据可见性控制;

TCC服务的一阶段Try操作会做资源的预留,在二阶段操作执行之前,如果其他事务需要读取被预留的资源数据,那么处于中间状态的业务数据该如何向用户展示,需要业务在实现时考虑清楚;通常的设计原则是“宁可不展示、少展示,也不多展示、错展示”;

6、业务数据并发访问控制;

TCC服务的一阶段Try操作预留资源之后,在二阶段操作执行之前,预留的资源都不会被释放;如果此时其他分布式事务修改这些业务资源,会出现分布式事务的并发问题;

用户在实现TCC服务时,需要考虑业务数据的并发控制,尽量将逻辑锁粒度降到最低,以最大限度的提高分布式事务的并发性;
3、总结

蚂蚁金服使用TCC有10年历史,在TCC应用方面积累了大量实践经验;除了上述TCC服务的设计注意事项外,我们在解决用户高并发、高可用需求方面也提供了解决方案,我们对分布式事务做了极致的性能优化以支持双11等大促的高并发需求,我们基于蚂蚁LDC架构的高可用方案能使分布式事务服务达到99.99%的可用性;

蚂蚁金服大部分业务系统均采用TCC的方式接入分布式事务,但设计TCC服务时要遵循大量设计规范,这无疑对用户提了非常高的要求;为了简化用户接入分布式事务的门槛,蚂蚁金服的分布式事务框架(SOFA-DTX)推出了FMT(Framework-managed transactions)模式和XA模式,这两种模式均不需要用户实现TCC服务,用户只需要关注自身业务SQL便可;DTX的三种模式:TCC、FMT和XA相互之间是功能互补,相辅相成的,形成了蚂蚁金服完善的分布式事务解决方案。

SOFA-DTX全面覆盖金融场景,金融级容灾保障、提供丰富的接入模式并且使用简洁易于接入;目前已经应用在支付宝、网上银行、蚂蚁财富、芝麻信用、南京银行等项目中。

原文地址:http://blog.51cto.com/13873821/2145240

时间: 2024-10-03 05:19:48

分布式事务极速快三网站搭建之服务设计和实现注意事项的相关文章

使用saltstack部署极速快三平台搭建

极速快三平台搭建搭建环境: 1.服务器列表: 企 娥:217 1793 408salt-master: 192.168.42.131 salt-minion: 192.168.42.128(minion-192.168.42.128) 192.168.42.130(minion-192.168.42.130) 2.环境: (1)服务器之间互相可以通信(火墙关闭或者火墙允许通信) (2)master对minion的主机名和ip做好解析 部署步骤 1.确定整个配置的目录文件结构: pcre软件安装

Linux环境 安装幸运快三网站搭建

使用python操作服务器,使用的库为cx_oracle,配置步骤如下:幸运快三网站搭建(企 娥:217 1793 408) 1 安装cx_oracle pip install cx_oracle 在网址里,有linux环境的设置,这里提一点:安装的instantclient需要与oracle和服务器的版本对应,这里我装的是64位的 点击界面中,这句话中的64-bit:Download an Oracle 11.2, 12.1 or 12.2 "Basic" or "Basi

thinkPHP 框架开发极速快三网站开发环境部署运行调试

环境要求 1.极速快三网站开发(Q2222168869) 下载 2.thinkPHP 框架开发各地快三玩法 下载 3.Apache Maven 3.3+ 下载 4.MySql 5.7+ 下载 导入到Eclipse 1.检出JeeSite4源代码: 2.拷贝web文件夹,到你的工作目录(不包含中文和空格的目录)下,重命名为你的工程名,如:jeesite-demo 3.打开pom.xml文件,修改第13行,artifactId为你的工程名,如:<artifactId>jeesite-demo<

gin框架中自定义向log中写入极速快三源码搭建调试信息

我们在极速快三源码搭建项目的调试过程中,需要将一些自定义信息写入到log文件中,gin框架中提供了基础的Logger()方法,查看gin的文档,有如下信息:企 娥:217 1793 408 How to write log file func main() {// Disable Console Color, you don't need console color when writing the logs to file.gin.DisableConsoleColor() // Loggin

dubbo源码福彩快三平台搭建分析22 -- consumer 发送与接收原理

在前面福彩快三平台搭建论坛:haozbbs.com Q1446595067的文章中,我们分析了 dubbo 从 provider 进行服务暴露,然后把服务信息注册到注册中心上面解耦 consumer 与 provider 的调用.consumer 通过 javassist 创建代理对象引用远程服务.当通过代理对象调用远程服务的时候,讲到进行真正调用的时候 dubbo 抽象出集群容错(Cluster.Directory.Router.LoadBalance)从服务多个暴露方选取出一个合适的 Inv

01MBR分区幸运快三平台搭建结构、DPT分区表、EBR扩展引导

主引导幸运快三平台搭建论坛:haozbbs.com Q1446595067 记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(0柱面,0磁头,1扇区).在深入讨论主引导扇区内部结构的时候,有时也将其开头的446字节内容特指为"主引导记录"(MBR),其后是4个16字节的"磁盘分区表"(DPT),以及2字节的结束标志(55AA).因此,在使用"主引导记录&qu

解决android studio 导快三网站开发入module作为lib使用时不显示的问题

1.快三网站开发 haozbbs.com Q1446595067 将 android module导入 android project 中 这里写图片描述 这里写图片描述2.在要作为lib导入的module 的build.gradle文件中添加一行 "apply plugin: 'android-library"' 这里写图片描述3.在要使用的module中将导入的module作为依赖库 这里写图片描述这里写图片描述若是找不到先前导入的想要作为lib的module,如 这里写图片描述

STM32把SD卡内极速快三平台出租搬运到内部FLASH

STM32操极速快三平台出租haozbbs.comQ1446595067 作访问flash,包括写入数据到flash和从flash读取数据 :https://blog.csdn.net/Ace_Shiyuan/article/details/78196648 这篇文章写得比较明白,但是它写的函数不饱满,没有把Flash充分写满.请看写数组的函数:FLASHStatus = FLASH_ProgramHalfWord(STARTADDR+WriteAddress+i*2, temp);//写入数据

极速快三源码下载PHP perl 风格 常用的 正则表达的使用

极速快三源码下载 [话仙源码论坛]hxforum.com[木瓜源码论坛]papayabbs.com 企娥 2952777280 /**[话仙源码论坛]hxforum.com[木瓜源码论坛]papayabbs.com 企娥 2952777280 修饰符 I 不区分大小写的搜索 G 查找所有出现的(全局搜索) M 看做多行 默认 ^ $作为每行的开始和结尾 使用M修饰符将^ 和$ 匹配每行的开始部分 S 将字符串看做一行 忽略其中的换行符 X 忽略正则表达式中的空白和注释 U 第一次匹配后停止 元字