一:什么是事务?
1.1)什么是事物?
事务是逻辑上的一组执行单元,要么都执行,要么都不执行.
eg: 张三给李四转1000元钱, 涉及到二个操作
张三的账户-1000 李四的账户+1000
上诉二个步骤要么一起成功,要么一起失败. 不存在张三的钱扣了,李四
没收到转账.
1.2)事物的特性(ACID)
什么是ACID
ACID是指数据库管理系统DBMS中事物所具有四个特性
eg:在数据库系统中,一个事务由一系列的数据库操作组成一个完整的
逻辑过程,比如银行转账,从原账户扣除金额,目标账户增加金额
①:atomicity【原子性】
原子性表现为 操作不能被分割 ,那么这二个操作 要么 同时完成 ,要
么就 全部不完成 ,若事务出错了,那么事务就会回滚,
好像什么 都 没有发生过
②:Consistency【一致性】
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,
事务开始前是一个一致状态,事务结束后是另一个一致状态,
事务将数据库从一个一致状态转移到另一个一致状态
③:Isolation【隔离性】 所谓的独立性就是指并发的事务之间不会互相影响,如果一个事务
要访问的数据正在被另外一个事务修改,只要另外一个事务还未提交,它
所访问的数据就不受未提交事务的影响。换句话说,一个事务的影响在该
事务提交前对其它事务是不可见的
④:Durability【持久性】
若事务已经提交了,那么就回在数据库中永久的保存下来
  • 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 分布式解决方案:相关推荐

  1. seata 分布式事务没有传递xid导致事务失效解决方案

    seata 分布式事务没有传递xid导致事务失效解决方案 当spring cloud 设置全局开启分布式事务,在调用分支事务没有传递xid,原因是feign或者http调用时候 header 没有pu ...

  2. seata分布式事务解决方案

    下载地址:Releases · seata/seata · GitHub 一.什么是分布式事务 首先这是普通事务: 下面是分布式事务: 在微服务系统中,每个微服务应用都可能会有自己的数据库,它们首先需 ...

  3. Spring Cloud Alibaba 综合应用:Seata 分布式事务实战教程

    在前面的章节,我们分别讲解了 Spring Cloud Alibaba 中主要的组成部分,其中包括:注册中心与配置管理组件 Nacos.Ribbon 客户端负载均衡.OpenFeign 与 Dubbo ...

  4. SpringCloud分布式事务,版本二:添加 Seata 分布式事务版本

    基于 Seata 1.4.0 版本 首先贴出此项目地址:Seata 分布式事务版本 先了未添加事务项目再看此版本:未添加事务版本 此文章是基于上一篇的项目基础上添加的内容,所以务必先看上一篇 Seat ...

  5. Alibaba seata 分布式事务介绍及配置使用

    一.介绍 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata 将为用户提供了 AT.TCC.SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方 ...

  6. 关于seata分布式事务框架的几个问题

    本文来说下关于seata分布式事务框架的几个问题 文章目录 概述 Seata 分布式事务解决方案比较 本文小结 概述 seata是两阶段提交事务,第一阶段解析业务sql并且生成对应快照,第二阶段是提交 ...

  7. SpringCloud Alibaba实战--第八篇:Seata分布式事务处理

    系列文章目录 微服务新王SpringCloudAlibaba 文章目录 系列文章目录 前言 一.Seata简介 1. Seata是什么? 2. ID+三组件模型 3. 处理过程 二.Seata下载安装 ...

  8. SpringCloud微服务实战——搭建企业级开发框架(二十七):集成多数据源+Seata分布式事务+读写分离+分库分表

      读写分离:为了确保数据库产品的稳定性,很多数据库拥有双机热备功能.也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器:第二台数据库服务器,主要进行读的操作.   目前有多种方式实现读写分 ...

  9. Seata分布式事务控制整合Mybatis-Plus导致事务控制失效

    解决方案 1. pom文件引入Druid数据源 <!--druid--> <dependency> <groupId>com.alibaba</groupId ...

最新文章

  1. 损失函数之Cross-Entropy介绍及C++实现
  2. 2018-2019-1 20165226 《信息安全系统设计基础》第8周学习总结
  3. H.264编码系统几个比较重要的算法
  4. Cocos2dx学习笔记9:cocos2dx锚点(Anchor Point)
  5. iOS开发能用mysql吗_iOS开发之数据库的简单使用
  6. mysql教程 api_Mysql入门系列:MySQL可用的API
  7. tar打包排除某个文件夹
  8. github文件上传全流程-新手入门系列
  9. windows64下安装MySQLdb连接数据库
  10. linux之找出两个文件里面相同的数据
  11. volatile关键字的作用
  12. nginx 非80、443端口跳转到80、443
  13. QEMU/KVM原理概述
  14. python tcp实例_实现tcp的自动重连实例教程
  15. python算法实验是什么_PCA 算法实验代码(python)
  16. 再谈Android抓包工具与Android抓包思路
  17. 语法俱乐部1:基本句型及补语
  18. x战娘2服务器维护,x战娘2变态版攻略
  19. 如何把网吧计算机放到桌面,网吧电脑怎么切换游戏桌面
  20. [bib]论文参考文献的获取方式(持更)

热门文章

  1. PHY和网络变压器的PCB布局(Layout)规则
  2. 三种浏览器存储方案,你还担心数据无处放吗
  3. RSA Conference 2019 APJ宣布创智赢家(R)式创新计划入围者和早期阶段初创公司展览中极具前景的初创公司
  4. 概率质量函数(PMF)、概率密度函数(PDF)、累积分布函数(CDF)
  5. 小学课堂应如何用计算机,【计算机教学论文】小学课堂计算机教学论文(共2519字)...
  6. 独家:中邮消费金融董事长卸任,回归邮储银行
  7. SVN提交代码报错,怎么破?
  8. 【PSPnet2017】Pyramid Scene Parsing Network
  9. 惠普286Pro G2 MT电脑怎么用win10pe安装系统
  10. VR云展会深入解决展厅痛点