gts分布式事务框架踩坑记录

分布式事务 GTS 的价值和原理浅析 GTS 今年双 11 的成绩 今年 2684 亿的背后,有一个默默支撑,低调到几乎被遗忘的中间件云产品——GTS(全局事务服务,Global Transaction Service),稳稳地通过了自 2014 年诞生以来的第 5 次“大考”。 2019 年 11 月 1 日至 12 日,GTS 日均处理分布式事务数量达亿级,每天峰值 TPS 达万级。 这背后最重要意义在于:成绩是... 阅读详情

分布式项目,一部分实例使用gts管理事务,一部分实例没有事务管理。

导致的问题是被管理的事务发生了回滚,没有被事务管理的数据入库了!!!

这么严重的问题!最终叫我去改,我很有情绪啊。早干嘛去了,这个问题早就被我们这些底层码农提出来了,技术老大就是不理会。非得除了问题,才去修改。

正文:

场景:服务A 调用 服务B,服务B 调用 服务C。

A 和 B 同属一个nacos集群中,使用了git事务管理,可以正常提交事务和回滚事务。C 是一个单独的应用,没有被gts管理。

C加了gts的配置,为什么没有xid

TxcContext.getCurrentXid(),查看xid,发现C的上下文中没有xid,但是B服务中有xid。

因为B调用C是用http调用的。

于是在把B中的xid放入http的请求头中一起请求。

C有xid,为什么数据不会滚?

检查数据库,发现txc_undo_log中也没有数据。检查项目,发现是DataSource的问题,gts需要使用它自己的代理数据源。

配置好代理数据源,报错 getTableMeta failed?

gts获取表信息失败,追踪源码发现gts解析sql语句时,把表名全部转为大写了。不明白为什么。

解决方法是改造获取表名的源码。利用Java加载类的机制,优先加载classes目录下的类,再去加载lib下的类。把源码的类copy一份在自己的工程代码中,注意类路径要和源码保持一致。然后修改获取表名的方法,去除转大写的操作。这个类是 com.taobao.txc.parser.visitor.cobar.TxcAstNode

插入数据报错Java类型和JDBC的类型不一致?

gts的数据源使用的是java.sql.Date,为工程中使用的java.unit.Date。修改工程代码中设置时间使用java.sql.Date。不报错了,但是日期入库后没有时分秒!!!这可不行。

再次审查代码,发现是mysql的驱动包的问题,数据库用的是mysql8,工程中的驱动包是mysql5,两个版本不一致。

更改工程中mysql的版本,java.util.Date可以正常入库,问题解决。

部分数据可以回滚,部分数据无法回滚?

查看gts日志,发现日志在报错时间格式转换错误,txc_undo_log中时间的快照记录是”2022-08-18T00:00:00“,gts无法转换是时间存储到数据库,于是数据一直无法回滚。

继续修改源码,把转换时间的方式修改一下即可

TXC产品文档-初版.pdf 本文档为txc的产品文档初版,有用到分布式事务的小伙伴可以参考下。 立即下载

相关推荐

深入解析 TDA4VM/VH R5F 核中断机制:VIC 与非 VIC 模式下的实战对比与优化

本文深入解析了TI TDA4VM/VH平台中ARMv7-R架构R5F核的两种中断处理机制:VIC模式与非VIC模式。通过对比硬件自动跳转与软件向量表分发的核心流程、实战代码示例及性能差异,为开发者提供了基于实时性、灵活性与调试需求的选择指南和优化建议,帮助构建更稳定的嵌入式系统。

weixin_29159441的博客 100

JAVA中事务的使用与原理专题(附源码和讲义)

事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。 本课程将对事务做一个专题进行讲解,主要包括事务的应用场景的,事务的特性。Java中事务的事务方式、Spring框架中事务的基本使用与实现原理,另外重点讲解了分布式事务的应用场景和常见的分布式事务解决方案。 教学全程采用笔记+代码案例的形式讲解,每个知识点都有详细的讲解,通俗易懂!!! 

Altera下载器驱动配置:手把手教程(从零实现)

详解Altera USB-Blaster驱动安装全过程,从设备识别到软件配置一步一图,解决常见连接问题,确保开发下载器正常工作,适合初学者快速上手FPGA下载调试。

weixin_35751194的博客 990

GMS测试--GTS问题总结

GMS测试--GTS问题总结

李予浙的博客 2012

如何用Deep OC-SORT提升多目标跟踪精度?实战配置与性能优化指南

本文是一份针对开发者的Deep OC-SORT多目标跟踪实战指南。详细解析了如何通过部署其核心的“动态外观记忆”与“相机防抖”模块来有效应对遮挡与抖动,从而显著提升跟踪精度与连续性。内容涵盖从环境搭建、参数调优到性能压榨的全流程,并提供针对不同场景的配置建议与工程落地技巧。

f9g0h的博客 670

2022-04-06 RK3566 上调试百兆以太网卡YT8512C 调试记录

一、原理图 二、dts &gmac1_clkin{ clock-frequency = <50000000>; status = "okay"; }; &gmac1 { phy-mode = "rmii"; clock_in_out = "input"; snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>; snps,reset-active-low; sn...

海月汐辰 1万+

@Transaction注解失效的八种情况及解决办法

来自黑马程序员java面试题 案例准备: 数据库表数据如下,要实现的目标就是刘备曹操孙权向自己手下员工发工资转账,这是一个事务的典型应用场景。 数据库操作相关方法 @Override public Account getAccountByName(String name) { String querySql="select * from t_account where a_name=?"; BeanPropertyRowMapper<Account&gt.

weixin_44991304的博客 8772

AUTOSAR进阶图解==>AUTOSAR_SWS_COM

AUTOSAR COM模块是AUTOSAR通信堆栈的核心组件,提供信号导向的通信服务。该模块位于通信服务层,连接RTE与PDU Router,主要功能包括信号封装/提取、传输模式管理、信号路由、超时监控和字节序转换等。COM模块架构分为应用层、通信服务层和通信抽象层,包含信号管理、I-PDU处理、传输模式管理等组件。其配置结构包括顶层容器、I-PDU组、I-PDU和信号等多层次配置对象,支持丰富的参数设置。模块采用严格的状态管理机制,包括模块状态和I-PDU组状态转换,确保通信可靠性。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 1245

揭秘 Vibium 的自动等待机制:让浏览器操作不再依赖固定延迟

在自动化浏览器操作时,你是否曾因页面加载缓慢、元素动态变化而频繁遇到操作失败的问题?Vibium 作为一款专为 AI 代理和人类设计的浏览器自动化工具,通过创新的自动等待机制彻底解决了这一痛点。本文将深入解析 Vibium 的自动等待技术原理,展示它如何让浏览器操作摆脱对固定延迟的依赖,实现更可靠、更智能的自动化体验。 ## 告别固定延迟:自动化测试的痛点与解决方案 传统的浏览器自动化工具往往

gitblog_00072的博客 486

基于JeecgBoot 3.9.0 开源项目的企业管理平台

基于JeecgBoot 3.9.0 开源项目的企业管理平台

宁波阿成的博客 376

(王道计算机组成原理笔记)第一章计算机系统概述-第二节:计算机系统层次结构 1(计算机系统组成、计算机硬件)

文章目录一:冯诺依曼体系结构(1)存储程序计算机(2)层次结构二:计算机硬件概述(1)存储器A:存储元、存储单元、存储体、存储字和存储字长B:MAR 一:冯诺依曼体系结构 在冯诺依曼体系结构中,计算机的硬件主要有**存储器,运算器,控制器,输入和输出设备(也叫做I/O设备)**组成。 (1)存储程序计算机 冯诺依曼体系结构也叫做存储程序计算机,计算器和计算机的唯一区别就是计算器是不能编程的,只能做电路板中设定好的固定的运算。 这也就意味着计算器本质就是一个不能编程的计算机,其在硬件层面已经将逻辑写死,如果

快乐江湖的博客 1万+

全局事务服务 GTS

全局事务服务 GTS

19.2.04.157N的博客 1272

i.MX6ULL系统移植 | 使用busybox制作根文件系统(1.29.0)

一. 下载BusyBox BusyBox是一个继承了大量Linux命令核工具的软件,像常用的ls、cp、mv、ifconfig等命令。一般下载BusyBox的源码,然后配置Busybox,选择自己想要的功能,最后编译即可。 BusyBox在官方可以直接下载:https://www.busybox.net/。目前最新是1.35.0,这里我使用1.29.0版本。 axel https://www.busybox.net/downloads/busybox-1.29.0.tar.bz2 下载之后解压: tar

Mculover666的博客(嵌入式) 1147

分布式事务GTS学习记录

   我们常用的事务是数据库事务,在单机单应用单数据库场景下才适用的,随着分布式系统越来越普及,数据的一致性问题如何解决,业界目前主要有3种解决方案:    一、两阶段提交。      第一阶段,所有事务参与者将执行结果的成功与否反馈给事务协调者,但是不提交。      第二阶段,事务协调者根据返回的结果,决定是全部提交,还是全部不提交。      该方案可以保证事务的4个特性ACID。     ...

陈俊的马蹄印 5966

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

阿里分布式事务框架 GTS 全解析

全局事务服务(Global Transaction Service,简称 GTS)是阿里新推出的分布式事务处理方案,对其深入分析的资料相对匮乏。本文的目标是剖析GTS的技术路线,厘清其优势与约束。文章参考了GTS公开的专利、产品文档、相关网页,文章中肯定有不准确的地方,欢迎各位同学拍砖与指正。 一、GTS的目标 GTS是一个面向互联网交易场景的分布式事务解决方案。 制约分布式事务的三个因素 分布式...

my_space_csdn的博客 1005

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

一行代码,保障分布式事务一致性—GTS:微服务架构下分布式事务解决方案

摘要:虽然微服务现在如火如荼,但对其实践其实仍处于初级阶段。即使互联网巨头的实践也大多是试验层面,鲜有核心业务系统微服务化的案例。GTS是目前业界第一款,也是唯一的一款通用的解决微服务分布式事务问题的中间件,而且可以保证数据的强一致性。本文将对GTS做出深入解读。 微服务倡导将复杂的单体应用拆分为若干个功能简单的、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。概念2012年提出...

攻城狮不是猫 1055

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

阿里微服务架构的分布式事务GTS

阿里云现在已经提供云上统一的分布式事务解决方案,相对于我们以前自己尝试去通过消息结合最终一致性去解决这个问题,这样统一的解决方案仍然值得借鉴和尝试。我觉得如果系统上了阿里云,可以选择这套框架来使用,对中小企业是一种解放,将更多的精力放到业务中去。现把相关的介绍转载记录如下: 背景 全局事务服务GTS上个月开始在阿里云上公测,上周我们也发表了一篇「破解世界性技术难题!GTS让分布式事务简单高效」的文...

猎人在吃肉 1855

GTS解密--GTS的原理、架构与特点

标签 分布式事务 , GTS , Global Transaction Service, 柔性事务, TCC , XA两阶段提交协议 全局事务服务(Global Transaction Service,简称 GTS)是阿里新推出的分布式事务处理方案,对其深入分析的资料相对匮乏。本文的目标是剖析GTS的技术路线,厘清其优势与约束。文章参考了GTS公开的专利、产品文档、相关网页,文章中肯定有不准确...

肖小银的博客 3769

阿里GTS解密--GTS的原理、架构与特点

摘要: 全局事务服务(Global Transaction Service,简称 GTS)是阿里新推出的分布式事务处理方案,对其深入分析的资料相对匮乏。本文的目标是剖析GTS的技术路线,厘清其优势与约束。 作者 赵成 日期 2018-01-01 标签 分布式事务 , GTS , Global Transaction Service, 柔性事务, TCC , XA两阶段提交协议 全局事...

GarfieldEr007的专栏 4571

阿里分布式事务Seata踩坑亲身实践

在实践Seata的过程中发现几篇写的很好的文章,在此记录下 1.springboot集成分布式事务Seata 搭建项目Demo地址 https://blog.csdn.net/zhangchangbin123/article/details/89391982 2.掘金Seata踩坑文章 https://juejin.im/post/5d19ee6af265da1bcd37effa 3.个人总结 所...

小太阳啊凯的博客 1万+

阿里分布式事务框架GTS开源了!

点击上方“方志朋”,选择“置顶或者星标”你的关注意义重大!就在昨天,阿里分布式事务框架GTS开源了一个免费社区版Fescar,看到了这个消息内心非常的激动。在微服务系统中,分布式事务一直是...

方志朋的博客 117
上一篇: 导出EXCEL工具类
下一篇: 常用windows脚本
Yuwen_forJava
博客等级 码龄9年 28粉丝 90原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值