seata原理源码分析系列(一)架构, 组件

简介

    SEATA开源的分布式事务解决方案,用于解决分布式系统中的数据一致性问题,由阿里巴巴开源。

     分布式系统,数据存储在不同的资源管理器(数据库),需要保证分布式事务的原子性,业界比较常用xa,数据库标准实现,严格的一致性,但性能较差,不符合当前互联网系统高吞吐,高并发的要求。Seata提供最终一致性的分布式事务解决方案,牺牲严格一致性,获得高性能。Seata支持tcc,saga,at,其中at是seata内置方案,同时也支持xa

   本文分析seata技术架构,核心组件

关键词

分布式事务

严格一致性/最终一致性

Transaction Coordinator  负责全局事务的生命周期管理和协调,保证所有分支事务的一致性。

Transaction Manager  负责分支事务的提交和回滚,接受TC的指令并执行相应的事务操作。

Resource Manager  负责本地事务的提交和回滚,与TM进行通信,执行相应的事务操作。

参考资料

seata官方网站 https://seata.apache.org/

技术架构

上图是seata的技术架构,分4个内容部分,事务框架流程,应用端组件(左侧),服务组件(右侧),功能组件

事务框架流程

技术架构图展示事务框架流程

1、开启全局事务,使用@GlobalTransactional方法调起执行切面,向TC注册全局事务,TC生成XID

2、分支事务注册,seata通过适配器像业务服务置入逻辑,业务服务调用前执行,注册分支事务,从TC获得分支事务ID,TC根据XID将分支事务与全局事务关联

3、分支事务报告,业务服务执行自身业务逻辑,例如执行sql,写入数据库,若成功,通知TC分支事务成功

步骤3,4通常多个业务服务

4、全局提交事务或回滚,分支服务全部成功,TM通知TC全局事务成功;否则,通知TC全局事务失败;

5、分支事务提交或回滚, TC收到全局事务的结果,若成功,则通知RM成功,RM收到通知后执行清理工作;如果失败了,则RM进行回滚。

总述,seata的框架流程是通用分布式事务流程,各模式逻辑”塞”进框架内

应用端组件

at/tcc/saga/xa seata支持4种事务模式,其中at是seata标准,其他是实现业界标准

spring/springboot  配置/自动配置,spring环境事务逻辑注入

jdbc代理实现  jdbc数据源的代理实现,注入自身事务逻辑

sql解释器  解释sql,tcc事务模式使用,构建前后的数据的查询和更新语句

saga设计器  设计事务流程,用于事务回滚和前向路径

适配器  通常实现为拦截器,无侵入置入组件事务逻辑

事务管理器(tm)/资源管理器(rm)  

事务协调服务(tc-server)

TC服务独立部署,支持多个应用使用,顾名思义,协调事务执行

协调核心(coordinator-core)

存储  存储事务的状态和其他数据,是分布式事务关键组件

会话/全局锁 意思跟数据库特性一样,seata在框架层面提供会话,锁的特性

功能组件

discovery  tc服务的注册发现组件,实现tc服务高可用组件

其他,配置中心,rpc,metircs

NEXT

系列后续文章详细分析:

  1. 事务框架流程 分析参与框架流程的组件,tm,rm,协调core
  2. 事务模式 分析tcc,at,saga,xa
  3. tc-server 分析存储/会话/锁

     4   公共组件 大部分以往文章分析过类似,可以参考本人其他文章,本系列不分析

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

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

相关文章

C语言 | Leetcode C语言题解之第151题反转字符串中的单词

题目&#xff1a; 题解&#xff1a; void myResverse(char* s,int start,int end){while(start<end){char temp s[start];s[start] s[end];s[end] temp;start;end--;} } char* reverseWords(char* s) {int start 0;int end strlen(s)-1;myResverse(s,start,end);if(s[…

面试题:Redis是什么?有什么作用?怎么测试?

有些测试朋友来问我&#xff0c;redis要怎么测试&#xff1f;首先我们需要知道&#xff0c;redis是什么&#xff1f;它能做什么&#xff1f; redis是一个key-value类型的高速存储数据库。 redis常被用做&#xff1a;缓存、队列、发布订阅等。 所以&#xff0c;“redis要怎么测试…

Linux系统使用Docker安装Dashy导航页结合内网穿透一键发布公网

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务&#xff0c;具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起&#xff0c;形成自己的导航…

机器视觉:工业镜头的主要参数

工业镜头是图像采集系统的重要光学设备。它的作用是将目标物体的像成在相机的感光面上。 一、工业镜头原理 镜头是对光线进行调制和变换&#xff0c;使目标能够成像到相机的感光芯片上。将不同折射率的硝材加工成高精度的曲面&#xff0c;再把这些曲面进行组合后设计成能够满…

秋招突击——6/14——复习{(树形DP)树的最长路径}——新作{非递归求二叉树的深度、重复区间合并}

文章目录 引言复习树形DP——树的最长路径 新作使用dfs非递归计算二叉树的深度多个区间合并删除问题实现思路实现代码参考思路 总结 引言 这两天可能有点波动&#xff0c;但是算法题还是尽量保证复习和新作一块弄&#xff0c;数量上可能有所差别。 复习 树形DP——树的最长路…

React state(及组件) 的保留与重置

当在树中相同的位置渲染相同的组件时&#xff0c;React 会一直保留着组件的 state return (<div><Counter />{showB && <Counter />} </div> ) // 当 showB 为 false, 第二个计数器停止渲染&#xff0c;它的 state 完全消失了。这是因为 React…

vite.config.js如何使用env的环境变量

了解下环境变量在vite中 官方文档走起 https://cn.vitejs.dev/guide/env-and-mode.html#env-variables-and-modes 你见到的.env,.env.production等就是放置环境变量的 官方文档说到.env.[mode] # 只在指定模式下加载,比如.env.development只在开发环境加载 至于为什么是deve…

windows下open webui+ollama+sd webui

原文&#xff1a;https://wangguo.site/Blog/2024/Q2/2024-06-14/ 说明&#xff1a;安装使用环境是在Windows下 1、给ollama一个好看的交互界面&#xff08;open webui&#xff09; 1.1、ollama安装 安装&#xff1a;在ollama官网下载windows版本进行安装 模型列表&#xff1…

【SQLAlChemy】表之间的关系,外键如何使用?

表之间的关系 数据库表之间的关系分为三种&#xff1a; 一对一关系&#xff08;One-to-One&#xff09;&#xff1a;在这种关系中&#xff0c;表A的每一行都与表B的一行关联&#xff0c;反之亦然。例如&#xff0c;每个人都有一个唯一的社保号&#xff0c;每个社保号也只属于…

南师大GIS专业2024排名NO.1!!!

南师大GIS 666 学科专业实力666&#xff0c;研究方向多多多&#xff01; 有学术方向有开发应用方向&#xff0c; 有GIS&#xff08;建模、数字地形、基础理论和三维GIS等&#xff09;、 有Cartography &#xff08;叙事地图、动态地图、地图风格迁移等&#…

Visual Studio Code 的安装教程和配置C语言环境插件推荐

目录 1.vscode简介2.下载安装vs code3.VSCode基础配置VSCode界面简介VSCode设置中文界面VSCode个性化设置VSCode常用设置基本编辑快捷键VSCode常用快捷键 4.下载安装MinGW5.设置vscode里的环境6.插件推荐7.vscode官方文档 1.vscode简介 VSCode是微软出的一款轻量级编辑器&…

Javaweb03-Servlet技术1(Servlet,ServletConfig,ServletContext)

Servlet技术(Servlet,ServletConfig,ServletContext) 1.Servlet的概述 Servlet是运行在Web服务器端的Java应用程序&#xff0c;它使用Java语言编写。与Java程序的区别是&#xff0c;Servlet 对象主要封装了对HTTP请求的处理&#xff0c;并且它的运行需要Servlet容器(Tomcat)的…

人工智能历史与现状

1 人工智能历史与现状 1.1 人工智能的概念和起源 1.1.1 人工智能的概念 人工智能 (Artificial Intelligence ,AI)是一门研究如何使计算机 能够模拟人类智能行为的科学和技术,目标在于开发能够感知、理解、 学习、推理、决策和解决问题的智能机器。人工智能的概念主要包含 以…

vivado HW_TARGET

HW_目标 描述 硬件目标hw_target是包含一个或多个JTAG链的系统板 Xilinx FPGA设备&#xff0c;您可以使用比特流文件进行编程&#xff0c;或用于调试您的设计。 系统板上的硬件目标与Vivado Design Suite之间的连接 由硬件服务器对象hw_server管理。 使用open_hw_target命令打开…

StableSwarmUI 安装教程(详细)

文章目录 背景特点安装 背景 StableSwarmUI是StabilityAI官方开源的一个文生图工作流UI&#xff0c;目前处于beta阶段&#xff0c;但主流程是可以跑通的。该UI支持接入ComfyUI、Stable Diffusion-WebUI。其工作原理就是使用ComfyUI、Stable Diffusion-WebUI或者StabilityAI官方…

利用系统或软件缺陷进行攻击

操作系统都有漏洞 这里就是输入的字符串长度太长了 超过8个字节了 没听懂

在下游市场需求带动下 我国聚天门冬氨酸脂防腐涂料市场规模不断扩大

在下游市场需求带动下 我国聚天门冬氨酸脂防腐涂料市场规模不断扩大 聚天门冬氨酸酯防腐涂料又称为天冬聚脲防腐涂料&#xff0c;是以聚天门冬氨酸酯作为主体树脂、脂肪族异氰酸酯为固化剂而形成的一种防腐涂料。与其他类型的防腐涂料相比&#xff0c;聚天门冬氨酸酯防腐涂料具…

【Hive下篇: 一篇文章带你了解表的静态分区,动态分区! 分桶!Hive sql的内置函数!复杂数据类型!hive的简单查询语句!】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;本篇文章主要分享的是大数据开发中hive的相关技术。连接查询&#xff01;正则表达式&#xff01; 虚拟列&#xff01;爆炸函数&#xff01;行列转换&#xff01; Hive的数据压缩和数据存储…

利用穿戴甲虚拟试戴技术提高销量和参与度

在不断变化的美容行业&#xff0c;保持领先意味着拥抱创新技术。其中一项改变游戏规则的技术是人工智能驱动的虚拟指甲试戴。在穿戴甲领域&#xff0c;不断兴起的虚拟试戴技术对促进销售和参与度产生了重大影响。 视觉吸引力的力量 要了解虚拟试戴的重要性&#xff0c;必须了解…

简单了解MySql以及一些简单的应用MySql

MySql基础篇 1、数据模型概述 关系型数据库 概念&#xff1a;建立在关系模型基础上&#xff0c;由多张相互连接的二维表组成的数据库。 特点&#xff1a; 使用表存储数据&#xff0c;格式统一&#xff0c;便于维护使用SQL语言操作&#xff0c;标准统一&#xff0c;使用方便 数…