草庐IT

Seata全局事务配置--seata-server服务搭建

阿里的组件都有自己的官方文档和GitHub,官方文档都在自己的网站,里面包含介绍、原理以及部署基本都有,像http://seata.io/zh-cn/、https://nacos.io/zh-cn/等Seata官方文档虽然官方有部署文档,但是感觉很乱,小白不能按部就班,还有就是部署中一些注意点没有,因此总结如下步骤。1.下载服务包版本选用的1.4.2,支持从一个配置文件中读取所有配置了,不用像原来那样乱糟糟的,这样就简化了nacos中的配置文件,所以选用1.4.2。下载地址seata-server安装包内容如下:image.png2.创建数据库seata-server服务有单独的数据库,需要创

微服务中 Seata “分支事务不回滚”问题的复盘

本篇记录原写于去年。背景一个下单逻辑跨了3个服务,采用SeataAT模式做分布式事务。发现问题分布式事务的处理并未成功,具体表现为:在出现异常后,3个数据库里的表谁也没回滚。本来以为是自己看错了,但是经过笔者的多次验证后,得到的结果都是如此,分支事务并未被正常处理。好的,发现问题后该怎么办呢?尝试解决问题“小问题,轻轻松松~”刚开始看到这个问题,笔者并没有觉得是个大问题,此时我并没有意识到严重性,也可以说是“轻敌”了。当时,主要觉得问题可能出现配置和整合步骤上,于是做了如下4个事情:检查整合步骤,是不是漏掉了哪个步骤,或者少了哪些配置,亦或者是哪个配置项因为粗心没配置好。数据库中的表是否有问题

分布式事务Seata源码解析八:本地事务执行流程(AT模式下)

文章目录一、前言二、本地事务SQL执行流程1、DataSourceProxy数据库资源代理入口1)哪里使用了DataSourceProxy?2)SeataDataSourceProxy2、本地事务SQL的执行流程(execute)1)执行本地事务SQL的入口2)执行本地事务SQL逻辑1>构建beforeimage2>执行SQL3>构建afterimage4>预处理undolog3、本地事务SQL的提交(commit)1)LockRetryPolicy重试机制

分布式事务Seata错误——can not register RM,err:can not connect to services-server.

Seata服务端配置搭建完成后,又遇到了新的问题————业务端启动无法连接Seata服务端,报错信息如下:0101cannotconnecttoip地址:8091cause:cannotregisterRM,err:cannotconnecttoservices-server.0304cannotconnecttoIP地址:8091cause:cannotregisterRM,err:cannotconnecttoservices-server.以上两个错误信息和我们在配置file.conf文件中的default.grouplist配置有关系,当ip配置为localhost或者127.0.0.

分布式事务Seata源码解析十:AT模式回滚日志undo log详细构建过程

文章目录一、前言二、准备undolog0、undolog样例1)undolog表结构2)rollback_info(回滚日志数据)1、beforeimage的构建1)业务表元数据信息TableMeta1>Caffeine缓存数据获取2>Caffeine缓存自动刷新2)beforeimage查询SQL3)构建before表记录TableRecords2、afterimage的构建3、beforeimage和afterimage封装到SqlUndoLog三、持久化undo

【微服务37】分布式事务Seata源码解析五:@GlobalTransactional如何开启全局事务

文章目录一、前言二、@GlobalTransactional1、GlobalTransactionScanner类(BPP)1)AbstractAutoProxyCreator(自动创建动态代理)2)BeanPostProcessor(对Bean进行修改的入口)3)从SpringBoot启动流程来看入口4)是否/如何生成动态代理对象第一步第二步第三步第四步existsAnnotation()方法用于判断类是否需要被动态代理第五步三、全局事务的执行(前戏)四、总结

【微服务37】分布式事务Seata源码解析五:@GlobalTransactional如何开启全局事务

文章目录一、前言二、@GlobalTransactional1、GlobalTransactionScanner类(BPP)1)AbstractAutoProxyCreator(自动创建动态代理)2)BeanPostProcessor(对Bean进行修改的入口)3)从SpringBoot启动流程来看入口4)是否/如何生成动态代理对象第一步第二步第三步第四步existsAnnotation()方法用于判断类是否需要被动态代理第五步三、全局事务的执行(前戏)四、总结

【微服务34】分布式事务Seata源码解析二:Seata Server启动时都做了什么【云原生】

文章目录一、前言二、SeataServer启动1、找入口2、整体执行流程1)对配置文件做参数解析2)初始化监控3)创建TC与RM/TM通信的RPC服务器4)初始化UUID生成器IdWorker1>initTimestampAndSequence()2>initWorkerId(Long)5)设置事务会话(`SessionHolder`)、全局锁(`LockManager`)的持久化方式并初始化1>SessionHolder2>LockerManager6)创建并初始化事务协调器(`DefaultCoordinator`)7)注册ServerRunner销毁(Spring容器销毁)的回调钩子函数

【微服务34】分布式事务Seata源码解析二:Seata Server启动时都做了什么【云原生】

文章目录一、前言二、SeataServer启动1、找入口2、整体执行流程1)对配置文件做参数解析2)初始化监控3)创建TC与RM/TM通信的RPC服务器4)初始化UUID生成器IdWorker1>initTimestampAndSequence()2>initWorkerId(Long)5)设置事务会话(`SessionHolder`)、全局锁(`LockManager`)的持久化方式并初始化1>SessionHolder2>LockerManager6)创建并初始化事务协调器(`DefaultCoordinator`)7)注册ServerRunner销毁(Spring容器销毁)的回调钩子函数

Windows下seata报错为can not register RM,err:can not connect to services-server的解决办法,亲测有效。

nacoc下的服务:点开seata的TC服务看一下里面的地址,左下角为你该服务的ip地址。 上图我的ip地址是我目前在用的校园网地址也就是你的桌面右下角的网络地址。 我之前报错的原因呢是因为他这里的默认的ip是我之前虚拟机VMnet8的地址,这跟我另外三个的服务地址不出在一个局域网当中,所以一直连接不上seata。这个你目前用的网络怎么去找他的ip地址呢,在这里也教一下各位。首先右键你的网络,打开“网络和Internet设置”点开后点击属性在属性当中你就可以查看你目前网络的ip地址了。 其余的你配置的RM服务地址不需要动!!!!只改这一个地方的ip地址就可以。 其余的你配置的RM服务地址不需要