2024-01-19(SpringCloudThreadLocal)

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.hqwc.cn/news/414936.html

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

相关文章

innoDB存储引擎

1.逻辑存储结构 行数据->行->页->区->段->表空间 表空间(ibd文件),一个mysql实例可以对应多个表空间,来存储记录,索引等数据。 段:分为数据段和索引段,回滚段,数据段就是B树的叶子节点&am…

红队渗透靶机:TOPPO: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 5、dirsearch WEB tips1 tips2 SSH登录 提权 系统信息收集 本地 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.110…

Python连接数据库的梳理

我们通常用的数据库类型主要有关系型数据库,非关系型数据库等,其中关系型数据库主要有Microsoft SQL Server ,MySQL,Oracle,SQLite等,常用的非关系型数据库包括Redis、DynamoDB,MongoDB等 ​​​​​​​ 一 关系型…

策略路由与NQA联动示例

某公司网络使用SwitchA做汇聚层交换机,接入层交换机LSW做用户网关,LSW和SwitchA之间路由可达。汇聚层交换机SwitchA通过两条链路连接到两个核心交换机上,一条是高速链路,网关为10.1.20.1/24;另外一条是低速链路&#x…

2024 年 8 款最好的免费 OCR 软件

2024 年 8 款最佳 OCR 软件通过使用最好的 OCR 软件,您可以快速扫描文章、表格和其他文本,并将它们保存为 PDF 格式。OCR 代表光学字符识别,因此当您需要优化工作流程并通过将发票、报告和其他办公室文档转换为更易于存储和与同事共享的数字文…

AI新工具(20240119):Coach 微软推出独立 AI 工具辅助提高学习者阅读能力,Tweetify长文转换

Reading Coach-微软推出独立 AI 工具辅助提高学习者阅读能力 微软的Reading Coach是一款面向学生群体的生成式AI工具,旨在通过个性化和有吸引力的练习帮助学习者提高阅读能力。用户只需要登录微软账号,就能在课堂或者家中免费使用这款工具。Reading Coa…

Oracle命令大全

文章目录 1. SQL*Plus命令(用于连接与管理Oracle数据库)2. SQL数据定义语言(DDL)命令3. SQL数据操作语言(DML)命令4. PL/SQL程序块5. 系统用户管理6. 数据备份与恢复相关命令1. SQL*Plus命令(用…

JAVA SECS发送Report C#处理SECS Report SECS发送事件资料大全 S6F11 建立通讯S1F13

发送S6F11非常简单,只需5~6行代码,最核心是代码清晰易懂。 任何人都可以一看就能上手,如果说用代码可读性作为不可替代性的壁垒就无话可说了。 private void buttonS6F11_Click(object sender, EventArgs e) {int nTransaction 0;// 数据部…

扫一扫计数的工具有哪些?分享3款实用的!

在数字化时代,扫描计数软件已经成为我们日常生活和工作中不可或缺的工具。无论是需要快速统计物品数量、识别文字还是测量长度,这些软件都能提供方便快捷的解决方案。本文将为您介绍3款实用的扫描计数软件,帮助您轻松解决各种计数难题&#x…

ADVANTECH研华触摸屏 工业平板电脑维修TPC1551T/H

研华工控机触摸屏常见故障原因及处理: 一、空气中的可颗粒物多工厂内的原料大多需要粉料进行加工,加上外界空气流动大、沙尘多,工控机内容易集积大量粘糊状积尘,造成工控机内局部温度过高,带来硬件损坏。这种情况多发…

2019年认证杯SPSSPRO杯数学建模D题(第二阶段)5G时代引发的道路规划革命全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 D题 5G时代引发的道路规划革命 原题再现: 忙着回家或上班的司机们都知道交通堵塞既浪费时间又浪费燃料,甚至有的时候会带来情绪上的巨大影响,引发一系列的交通问题。据报道,每年交通拥堵使得美国…

如何在云端加速缓存构建

缓存是指将某类数据存储起来以便以后重复使用的过程,它的运用在开发场景中非常普遍。类似于你习惯把最常用的调料放在厨房台面上,而不是橱柜里,这样你在准备大餐时就可以轻松取用。 但对于一个更为技术性、更精确的用例,比如像谷…