2024-01-19(SpringCloudThreadLocal)

news2024/11/24 4:04:54

1.Seata的TC服务注册到Nacos注册中心当中

2.Seata为我们提供了AT,TCC,SAGA,XA事务解决方案。

3.XA规范是一种分布式事务处理标准,XA规范描述了全局的TM与局部的RM之间的接口,几乎所有的主流的数据库都对XA规范提供了支持。Seata的XA模式如下:

上述Seata的XA规范保证分布式事务的执行流程(分为两阶段):

一阶段工作:

① RM注册分支事务到TC

② RM执行分支业务sql但不提交

③ RM报告执行状态到TC

二阶段工作:

① TC检测各分支事务执行状态

a. 如果都成功,通知所有RM提交事务

b. 如果有失败的分支事务,通知所有RM回滚事务

② RM接受TC指令,提交or回滚事务。

XA规范存在的问题:

1)执行速度慢,因为要等待所有分支事务执行完成,这个过程效率比较低。

2)另外,XA规范基于openFeign来进行网络接口调用,并且是串行调用,所以第一个执行的分支事务会等待后续的分支事务执行完毕很长时间。

3)依赖关系数据库,注入redis类型数据库不支持。

4.Springboot中Seater的XA模式采用starter做了很好的依赖封装,因此使用的时候只需要引入starter依赖,并在application.yml文件中写好配置(微服务的话在nacos的配置中心中配置),然后在给发起全局事务的入口方法添加@GlobalTransactional注解就可以使用了。

5.AT模式:

Seata主推的是AT模式,AT模式同样是分阶段提交的事务类型,不过弥补了XA模式中资源锁定周期过长的缺陷。

6.Seata中AT模式的执行流程:

一阶段RM的工作:

1)注册分支事务

2)记录undo-log(数据快照)

3)执行业务sql并提交

4)报告事务状态

二阶段提交(执行成功不需要回滚)时RM的工作:

1)删除undo-log即可。

二阶段回滚(执行不成功需要回滚)时RM的工作:

1)根据undo-log恢复数据到更新前即可。

流程:

7.分布式事务是存在于面试当中的技术,解决分布式事务最好的方案就是最好不要出现分布式事务。

---------------------------------------------------------------------------------------------------------------------------------

8.ThreadLocal:

        set():将变量绑定到当前线程当中

        get():获取当前线程绑定的变量

9.ThreadLocal和sychronized关键字的区别:

synchronized采用时间换取空间的方式,只提供了一份变量,让不同的线程排队访问,它侧重于多个线程之间访问资源的同步;ThreadLocal采用空间换取时间的方式,为每一个线程都提供了一份变量的副本,从而实现同时访问而不互相干扰,它侧重于多线程中让每个线程之间的数据相互隔离。

10.ThreadLocal方案的好处:

在一些特定场景下具有以下两方面的优势:1.传递数据:保存每个线程所绑定的数据,在需要的地方可以直接获取,避免参数直接传递所带来的代码耦合问题;2.线程隔离:各线程之间的数据相互隔离却又具备并发性,避免同步方式带来的性能损失。

11.ThreadLocal的设计:

JDK8的设计方案的两个好处:

1)每个Map存储的Entry数量减少

2)当Thread销毁的时候,,ThreadLocalMap也会随之销毁,减少内存的使用

12.11是ThreadLocal的内部结构,下面是ThreadLocal的核心方法,除了构造方法之外,ThreadLocal对外暴露的方法有以下四个:

protected T initialValue(); //返回当前线程局部变量的初始值
public void set(T value); //设置当前线程绑定的局部变量
public T get(); //获取当前线程绑定的局部变量
public void remove(); //移除当前线程绑定的局部变量

set()方法源码步骤:

1)首先获取当前线程,并根据当前线程获取一个Map

2)如果获取的Map不为空,则将参数设置到Map当中(当前ThreadLocal的引用作为key)

3)如果Map为空,则给该线程创建Map,并设置初始值。

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

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

相关文章

JavaScript递归函数如何匹配上下级id和pid的数据(for...of,foreach.reduce)

目录 一、for...of 二、forEach 三、reduce 递归函数是一种在编程中常用的方法,用于解决一些需要重复操作的问题。在JavaScript中,递归函数可以用来匹配上下级id和pid的数据结构,例如树形结构或者父子关系的数据。 一、for...of 首先…

【网络安全 -> 防御与保护】专栏文章索引

为了方便 快速定位 和 便于文章间的相互引用等 作为一个快速准确的导航工具 网络安全——防御与保护 (一).信息安全概述

《移动通信原理与应用》——QAM调制解调仿真

目录 一、QAM调制与解调仿真流程图: 二、仿真结果: 三、Matlab仿真程序代码如下: 一、QAM调制与解调仿真流程图: QAM调制仿真流程图: QAM解调仿真流程图: 二、仿真结果: (1&…

20.云原生之GitLab CICD实战

云原生专栏大纲 文章目录 GitLab RunnerGitLab Runner 介绍Gitlab Runner工作流程 Gitlab集成Gitlab RunnerGitLab Runner 版本选择Gitlab Runner部署docker-compose方式安装kubesphere中可视化方式安装helm方式安装 配置gitlab-runner配置gitlab-ci.ymlgitlab-ci.yml 介绍编写…

OpenHarmony当前进展和未来趋势

操作系统自20世纪50年代诞生,经历了从专用操作系统到通用操作系统的转变。整体可以将操作系统的发展历史分为3个阶段:PC时代、移动互联网时代、万物互联时代。 PC时代主要以计算机为主,用户规模从1970年的10亿增长到1990年的30亿。这一时代诞…

TensorFlow框架(6)之RNN循环神经网络详解

1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络。RNN的主要用途是处理和预测序列数据。全连接的前馈神经网络和卷积神经网络模型中,网络结构都…

牛客周赛 Round 20 解题报告 | 珂学家 | 状压DP/矩阵幂优化 + 前缀和的前缀和

前言 整体评价 这场比赛很特别,是牛客周赛的第20场,后两题难度直线飙升了。 前四题相对简单,E题是道状压题,历来状压题都难,F题压轴难题了,感觉学到了不少。 A. 赝品 先求的最大值 然后统计非最大值的个…

2008年苏州大学837复试机试C/C++

2008年苏州大学复试机试 题目 编写程序充成以下功能: 一、从键盘上输入随机变量x的 10个取样点。X0,X1—X9 的值; 1、计算样本平均值 2、判定x是否为等差数列 3、用以下公式计算z的值(t0.63) 注。请对程序中必要地方进行注释 补充:个人觉得这个题目回忆…

【算法与数据结构】279、LeetCode完全平方数

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题可以抽象成一个完全背包问题。完全平方数是物品,n为背包最大重量。本题和【算法与数据…

docker 安装手册

docker 安装手册 第一步卸载旧的docker (如果安装过Docker否则跳过此步) 以防万一最好执行一遍 yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 第二步,安装相关…

【开源】基于JAVA的人事管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员功能模块2.2 普通员工功能模块2.3 答辩文案 三、系统展示四、核心代码4.1 查询职称4.2 新增留言回复4.3 工资申请4.4 工资审核4.5 员工请假 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的人…

12 个免费好用的图像压缩优化工具

想让您的网站以高质量的图片吸引人吗?但是您担心漂亮的图片会严重影响您的页面加载速度。不要再害怕,因为有工具可以免费解决这个问题。 在这篇文章中,我想为您提供免费的工具来优化您的网站图像。是的,你听到了!用于…

【车载开发系列】AutoSar当中的诊断会话控制

【车载开发系列】AutoSar当中的诊断会话控制 【车载开发系列】AutoSar当中的诊断会话控制 【车载开发系列】AutoSar当中的诊断会话控制一. 什么是诊断会话控制服务二. 会话模式分类三. 会话的接口1)获取当前会话状态2)设置会话状态3)返回默认…

linux文件系统 - 初始化(一)

linux文件系统 - 初始化(一) 术语表: struct task:进程 struct mnt_namespace:命名空间 struct mount:挂载点 struct vfsmount:挂载项 struct file:文件 struct super_block:超级块 stru…

Linux/Blunder

Enumeration nmap 扫描21,80端口,详细信息如下 80端口运行着 Apache,页面如下 在页面最下方可以看到 powered by egotisticalsw,在互联网搜索没发现什么与 渗透测试相关的东西 使用dirsearch对服务进行目录扫描,看看站点还有没有…

RPC和HTTP,它们之间到底啥关系

既然有 HTTP 请求,为什么还要用 RPC 调用? gPRC 为什么使用 HTTP/2 Spring Cloud 默认是微服务通过Restful API来进行互相调用各自微服务的方法,同时也支持集成第三方RPC框架(这里的说的RPC是特指在一个应用中调用另一个应用的接…

[前 10 名] 最佳 Android 数据恢复软件免费下载

您的职业生涯不可或缺的一部分是您的手机数据、文件和文档。如果您丢失数据,不仅会给您带来巨大损失,还会给您的公司带来巨大损失。然而,由于屏幕损坏、恢复出厂设置、软件更新等多种原因,您的 Android 设备上可能会发生数据丢失。…

首批!鸿蒙千帆起,生态全面启动

在近日举办的鸿蒙生态千帆启航仪式上,华为常务董事、终端BG CEO余承东表示,鸿蒙生态设备已经增至8亿 ,将打开万亿产业新蓝海。 在本次论坛上,华为宣布HarmonyOS NEXT鸿蒙星河版(开发者预览版)已面向开发者…

opencv#30 线性滤波

均值滤波原理 均值滤波步骤 Step1:求和。 Step2:计算平均值。 所谓均值滤波,就是求平均值的意思。我们假设在一个3*3的范围内有一个图像,其中这个图像每一个像素可能含有噪声,也可能不含噪声,我们是不知道的,因此通…

【CentOS】Linux 在线帮助文档命令:help、man 命令与文档汉化

目录 1、Linux 的命令行模式 2、help 命令 3、man 命令 4、man 命令输出文档汉化 注:本文档使用 Linux 版本为 CentOS 7.9 [swadianlocalhost ~]$ cat /etc/centos-release CentOS Linux release 7.9.2009 (Core) 1、Linux 的命令行模式 一般情况下&#xff0…