??这里是【秒懂·云原生】,关注我学习云原生不迷路
??如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位??点赞??评论收藏

??专栏介绍

【秒懂·云原生】 目前主要更新微服务,一起学习一起进步。

??本期介绍

主要介绍Spring Cloud Alibaba —— 分布式事务组件

文章目录

  • ??专栏介绍
  • ??本期介绍
    • Seata 的发展历程
    • 分布式事务相关概念
    • Seata 整体工作流程
      • XID
      • 核心组件

随着业务的不断发展,单体架构已经无法满足我们的需求,
分布式微服务架构逐渐成为大型互联网平台的首选,但所有
使用分布式微服务架构的应用都必须面临一个十分棘手的问
题,那就是“分布式事务”问题。
在分布式微服务架构中,几乎所有业务操作都需要多个服务
协作才能完成。对于其中的某个服务而言,它的数据一致性
可以交由其自身数据库事务来保证,但从整个分布式微服务
架构来看,其全局数据的一致性却是无法保证的。
例如,用户在某电商系统下单购买了一件商品后,电商系统
会执行下 4 步:

  1. 调用订单服务创建订单数据
  2. 调用库存服务扣减库存
  3. 调用账户服务扣减账户金额
  4. 最后调用订单服务修改订单状态
    为了保证数据的正确性和一致性,我们必须保证所有这些操
    作要么全部成功,要么全部失败,否则就可能出现类似于商
    品库存已扣减,但用户账户资金尚未扣减的情况。各服务自
    身的事务特性显然是无法实现这一目标的,此时,我们可以
    通过分布式事务框架来解决这个问题。
    Seata 就是这样一个分布式事务处理框架,它是由阿里巴巴
    和蚂蚁金服共同开源的分布式事务解决方案,能够在微服务
    架构下提供高性能且简单易用的分布式事务服务。

Seata 的发展历程

阿里巴巴作为国内最早一批进行应用分布式(微服务化)改
造的企业,很早就遇到微服务架构下的分布式事务问题。
阿里巴巴对于分布式事务问题先后发布了以下解决方案:
2014 年,阿里中间件团队发布 TXC(Taobao
Transaction Constructor),为集团内应用提供分布式
事务服务。
2016 年,TXC 在经过产品化改造后,以 GTS(Global
Transaction Service) 的身份登陆阿里云,成为当时业
界唯一一款云上分布式事务产品。在阿云里的公有云、
专有云解决方案中,开始服务于众多外部客户。
2019 年起,基于 TXC 和 GTS 的技术积累,阿里中间件
团队发起了开源项目 Fescar(Fast & EaSy Commit And
Rollback, FESCAR),和社区一起建设这个分布式事务
解决方案。
2019 年 fescar 被重命名为了seata(simple
extensiable autonomous transaction
architecture)。
TXC、GTS、Fescar 以及 seata 一脉相承,为解决微服
务架构下的分布式事务问题交出了一份与众不同的答
卷。

分布式事务相关概念

分布式事务主要涉及以下概念:
事务:由一组操作构成的可靠、独立的工作单元,事务
具备 ACID 的特性,即原子性、一致性、隔离性和持久
性。
本地事务:本地事务由本地资源管理器(通常指数据库
管理系统 DBMS,例如 MySQL、Oracle 等)管理,严
格地支持 ACID 特性,高效可靠。本地事务不具备分布式
事务的处理能力,隔离的最小单位受限于资源管理器,
即本地事务只能对自己数据库的操作进行控制,对于其
他数据库的操作则无能为力。
全局事务:全局事务指的是一次性操作多个资源管理器
完成的事务,由一组分支事务组成。
分支事务:在分布式事务中,就是一个个受全局事务管
辖和协调的本地事务。
我们可以将分布式事务理解成一个包含了若干个分支事务的
全局事务。全局事务的职责是协调其管辖的各个分支事务达
成一致,要么一起成功提交,要么一起失败回滚。此外,通
常分支事务本身就是一个满足 ACID 特性的本地事务。

Seata 整体工作流程

Seata 对分布式事务的协调和控制,主要是通过 XID 和 3 个
核心组件实现的。

XID

XID 是全局事务的唯一标识,它可以在服务的调用链路中传
递,绑定到服务的事务上下文中。

核心组件

Seata 定义了 3 个核心组件:
TC(Transaction Coordinator):事务协调器,它是事
务的协调者(这里指的是 Seata 服务器),主要负责维
护全局事务和分支事务的状态,驱动全局事务提交或回
滚。
TM(Transaction Manager):事务管理器,它是事务
的发起者,负责定义全局事务的范围,并根据 TC 维护的
全局事务和分支事务状态,做出开始事务、提交事务、
回滚事务的决议。
RM(Resource Manager):资源管理器,它是资源的
管理者(这里可以将其理解为各服务使用的数据库)。
它负责管理分支事务上的资源,向 TC 注册分支事务,汇
报分支事务状态,驱动分支事务的提交或回滚。
以上三个组件相互协作,TC 以 Seata 服务器(Server)形
式独立部署,TM 和 RM 则是以 Seata Client 的形式集成在
微服务中运行,其整体工作流程如下图。

Seata 的整体工作流程如下:

  1. TM 向 TC 申请开启一个全局事务,全局事务创建成功
    后,TC 会针对这个全局事务生成一个全局唯一的 XID; 2. XID 通过服务的调用链传递到其他服务; 3. RM 向 TC 注册一个分支事务,并将其纳入 XID 对应全局
    事务的管辖;
  2. TM 根据 TC 收集的各个分支事务的执行结果,向 TC 发
    起全局事务提交或回滚决议;
  3. TC 调度 XID 下管辖的所有分支事务完成提交或回滚操
    作。

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

Spring Cloud Alibaba —— 分布式事务组件相关推荐

  1. Spring Cloud Alibaba微服务组件快速上手

    文章目录 Nacos 什么是Nacos Nacos的启动 将项目注册到Nacos 项目pom依赖 yaml配置 Nacos心跳机制 Dubbo 什么是RPC 什么是Dubbo Dubbo服务的注册与发 ...

  2. Spring cloud的分布式事务解决方案(txlcn)

    Spring cloud的分布式事务解决方案 一.分布式CAP定律 C:Consistency一致性 所有节点访问最新的数据副本. A:Availability 可用性 当一个节点宕机,不影响数据的读 ...

  3. 【Spring Cloud Alibaba】Spring Cloud Alibaba 分布式配置Nacos实践

    课程说明 本次课程,你将会学习如下: 使用 Nacos Config 作为 Spring Cloud 分布式配置 使用 Nacos Config 实现 Bean 动态刷新 了解 Nacos Confi ...

  4. Spring Cloud的分布式事务框架压测第一轮

    前言 分布式事务对微服务开发者而言是既想努力避免又无法完全回避的蛋疼问题.通过使用分布式事务处理框架可以很大程度上解决分布式事务所带来的事务性能.可靠性问题,以及引入的编码复杂性.本文由海信HICS技 ...

  5. Spring Cloud 中 分布式事务解决方案 -- 阿里GTS的使用

    1:依赖引入 <!--gts相关--> <!--数据库连接--> <dependency> <groupId>org.springframework.b ...

  6. 芋道 Spring Cloud Alibaba 介绍

    点击上方"芋道源码",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 RP ...

  7. Spring Cloud Alibaba Nacos 分布式配置

    Spring Cloud Alibaba 分布式配置 1. 简介 Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持.使用 Spr ...

  8. 用Spring Cloud Alibaba开发微服务会更香吗?

    关注DD,除了前沿消息,还有每周福利哦 Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案,它是Spring Cloud组件被植入Alibaba元素之后的产物. 利用Spri ...

  9. 如何成为 Spring Cloud Alibaba committer ?

    简介:Spring Cloud Alibaba 开源两年时间,已经成为了最受开发者关注.最活跃的 Spring Cloud 实现.它之所以能这么快的受到开发者的认可,一方面是它生态中的组件丰富且经过阿 ...

最新文章

  1. 会话保持之iRule脚本
  2. 深入探讨struts的ActionMessages消息机制(转)
  3. webpack(一) 配置
  4. zimbra邮件系统详细配置教程
  5. HDU多校1 - 6759 Leading Robots(单调栈)
  6. as5.4安装gcc和g++
  7. J.U.C - 其它组件
  8. [转载] LeetCode题解(面试16.22):兰顿蚂蚁(Python)
  9. [转载]windows 7 IIS 7.5 ASP.Net 文件上传大小限制
  10. 微信公众号制作简单线上预约系统,公众号预约系统怎么做
  11. 计算机信息技术和网络技术的区别,信息技术计算机技术网络技术通信技术的区别与联系...
  12. 【问题笔记】Android Studio运行或打包时报错:Some file crunching failed, see logs for details
  13. MISC总结——隐写术(一)
  14. GitHub上AI岗位面试笔记(机器学习算法/深度学习/ NLP/计算机视觉)
  15. Ubuntu下 vim安装失败的解决方法 以及安装vim
  16. iPhoneX(刘海屏)适配
  17. 灵飞经4·西城八部 第十七章 八部之主 6
  18. 《并行计算》期末总结
  19. [笔记]通信与信号系统篇 通信原理、计算机网络、DSP基础知识
  20. windows 激活

热门文章

  1. Java 设定工作日日历
  2. python中save 函数_Tensorflow之Saver的用法详解
  3. QuartusII 13.0.1添加cpld库方法
  4. 条件编译指令(符号),C语言条件编译指令完全攻略
  5. 虹软开发心得---多线程实战开发避坑分享(C#)
  6. 新库上线 | CnOpenData中国邮政储蓄银行网点信息数据
  7. 高频电压信号注入算法搬运
  8. 我国十大盗版网站:百度占前三
  9. Ansible搭建LNMP
  10. 揭秘闲鱼引流内幕,你不会还不知道吧!