seata 分布式解决方案:
eata-Server设计
seata-server是一个单独进程服务,与TM/RM的交互是RPC
image
1)Coordinator Core:最下面的模块是事务协调器核心代码,主要用来处理事务协调的逻辑,如是否 Commit、Rollback 等协调活动。
2)Store:存储模块,用来将我们的数据持久化,防止重启或者宕机数据丢失。
3)Discover:服务注册/发现模块,用于将 Server 地址暴露给 Client。
4)Config:用来存储和查找服务端的配置。
5)Lock:锁模块,用于给 Seata 提供全局锁的功能。
6)Rpc:用于和其他端通信。
7)HA-Cluster:高可用集群,目前还没开源。为 Seata 提供可靠的高可用功能。
核心组件
TC: 事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚(server端)。
TM: 控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交或全局回滚的决议(client端)。
RM:控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交和回滚(client端)。
image
开启全局事物
以@GlobalTransactional为入口,GlobalTransactionalInterceptor为切入点,稍后会讲到
TM会向TC发起一个请求(服务端使用的netty)开启一个全局事物,生成全局事物的XID,通过服务调用链路传播
开启分支事物
执行业务代码,准备开启分支事物。
分支事物开启的原理:
1.由于seata对底层的DataSource,Connection等使用DataSourceProxy,ConnectionProxy代理
2.当进行数据库操作的时候,ConnectionProxy会判断是否包含全局事物
2.1 包含全局食物
2.1.1 RM向TC发起请求注册分支事物
2.1.2 插入回滚日志(undo_log表,业务库必须新建这个表)
2.1.3 事物提交
2.1.4 向TC上报事物状态
2.2 不包含全局事物
2.2.1 事物提交
参考博文:https://www.jianshu.com/p/fe8c48f38382
seata 分布式解决方案:相关推荐
- seata 分布式事务没有传递xid导致事务失效解决方案
seata 分布式事务没有传递xid导致事务失效解决方案 当spring cloud 设置全局开启分布式事务,在调用分支事务没有传递xid,原因是feign或者http调用时候 header 没有pu ...
- seata分布式事务解决方案
下载地址:Releases · seata/seata · GitHub 一.什么是分布式事务 首先这是普通事务: 下面是分布式事务: 在微服务系统中,每个微服务应用都可能会有自己的数据库,它们首先需 ...
- Spring Cloud Alibaba 综合应用:Seata 分布式事务实战教程
在前面的章节,我们分别讲解了 Spring Cloud Alibaba 中主要的组成部分,其中包括:注册中心与配置管理组件 Nacos.Ribbon 客户端负载均衡.OpenFeign 与 Dubbo ...
- SpringCloud分布式事务,版本二:添加 Seata 分布式事务版本
基于 Seata 1.4.0 版本 首先贴出此项目地址:Seata 分布式事务版本 先了未添加事务项目再看此版本:未添加事务版本 此文章是基于上一篇的项目基础上添加的内容,所以务必先看上一篇 Seat ...
- Alibaba seata 分布式事务介绍及配置使用
一.介绍 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata 将为用户提供了 AT.TCC.SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方 ...
- 关于seata分布式事务框架的几个问题
本文来说下关于seata分布式事务框架的几个问题 文章目录 概述 Seata 分布式事务解决方案比较 本文小结 概述 seata是两阶段提交事务,第一阶段解析业务sql并且生成对应快照,第二阶段是提交 ...
- SpringCloud Alibaba实战--第八篇:Seata分布式事务处理
系列文章目录 微服务新王SpringCloudAlibaba 文章目录 系列文章目录 前言 一.Seata简介 1. Seata是什么? 2. ID+三组件模型 3. 处理过程 二.Seata下载安装 ...
- SpringCloud微服务实战——搭建企业级开发框架(二十七):集成多数据源+Seata分布式事务+读写分离+分库分表
读写分离:为了确保数据库产品的稳定性,很多数据库拥有双机热备功能.也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器:第二台数据库服务器,主要进行读的操作. 目前有多种方式实现读写分 ...
- Seata分布式事务控制整合Mybatis-Plus导致事务控制失效
解决方案 1. pom文件引入Druid数据源 <!--druid--> <dependency> <groupId>com.alibaba</groupId ...
最新文章
- 损失函数之Cross-Entropy介绍及C++实现
- 2018-2019-1 20165226 《信息安全系统设计基础》第8周学习总结
- H.264编码系统几个比较重要的算法
- Cocos2dx学习笔记9:cocos2dx锚点(Anchor Point)
- iOS开发能用mysql吗_iOS开发之数据库的简单使用
- mysql教程 api_Mysql入门系列:MySQL可用的API
- tar打包排除某个文件夹
- github文件上传全流程-新手入门系列
- windows64下安装MySQLdb连接数据库
- linux之找出两个文件里面相同的数据
- volatile关键字的作用
- nginx 非80、443端口跳转到80、443
- QEMU/KVM原理概述
- python tcp实例_实现tcp的自动重连实例教程
- python算法实验是什么_PCA 算法实验代码(python)
- 再谈Android抓包工具与Android抓包思路
- 语法俱乐部1:基本句型及补语
- x战娘2服务器维护,x战娘2变态版攻略
- 如何把网吧计算机放到桌面,网吧电脑怎么切换游戏桌面
- [bib]论文参考文献的获取方式(持更)
热门文章
- PHY和网络变压器的PCB布局(Layout)规则
- 三种浏览器存储方案,你还担心数据无处放吗
- RSA Conference 2019 APJ宣布创智赢家(R)式创新计划入围者和早期阶段初创公司展览中极具前景的初创公司
- 概率质量函数(PMF)、概率密度函数(PDF)、累积分布函数(CDF)
- 小学课堂应如何用计算机,【计算机教学论文】小学课堂计算机教学论文(共2519字)...
- 独家:中邮消费金融董事长卸任,回归邮储银行
- SVN提交代码报错,怎么破?
- 【PSPnet2017】Pyramid Scene Parsing Network
- 惠普286Pro G2 MT电脑怎么用win10pe安装系统
- VR云展会深入解决展厅痛点