关于Seata分布式事务的详细笔记,程序员吃透后,工资居然涨薪8K

分布式事务处理过程的-ID+三组件模型:

关于事务的基本概念

Seata是阿里开源的分布式事务解决方案中间件,对业务侵入小,在应用中Seata整体事务逻辑基于两阶段提交的模型,核心概念包含三个角色:

TM:事务发起者。用来告诉TC全局事务的开始,提交,回滚。
RM:事务资源,每一个RM都会作为一个分支事务注册在TC。
TC:事务协调者,即独立运行的seata-server,用于接收事务注册,提交和回滚。
Seata的运行分AT和MT两种模式。还有其他的模式如SAGA,还未研究。

AT(Auto Transaction)模式

这个模式需要模块为Java语言,并且数据库支持本地事务。一个典型的分布式事务过程:

  • TM 向 TC 申请开启一个全局事务,全局事务创建并生成一个全局唯一的XID。
  • XID 在微服务调用链路的上下文中传播。
  • RM 向 TC 注册分支事务,将其纳入 XID 对应全局事务的管辖。
  • TM 向 TC 发起针对 XID 的全局提交或回滚决议。
  • TC 调度 XID 下管辖的全部分支事务完成提交或回滚请求。

MT(Manual Transaction)模式

这个模式适合其他的场景,因为底层存储可能没有事务支持,需要自己实现 prepare、commit和rollback的逻辑


为什么Seata在第一阶段就直接提交了分支事务?

Seata能够在第一阶段直接提交事务,是因为Seata框架为每一个RM维护了一张UNDO_LOG表(这张表需要客户端自行创建),其中保存了每一次本地事务的回滚数据。因此,二阶段的回滚并不依赖于本地数据库事务的回滚,而是RM直接读取这张UNDO_LOG表,并将数据库中的数据更新为UNDO_LOG中存储的历史数据。

如果第二阶段是提交命令,那么RM事实上并不会对数据进行提交(因为一阶段已经提交了),而实发起一个异步请求删除UNDO_LOG中关于本事务的记录。

有些地方的官网文档写的可能比较难理解,那么接下来我会用简单的方式来描述一下如何搞定分布式事务

快速入门

譬如你有两个微服务,一个是库存模块StorageService,一个是订单模块OrderService,主业务是用户下单,然后需要分别调用上面的两个服务,完成减库存、用户扣款和下单操作。由于两个服务是不同的服务,并且是不同的数据库,那么这就是一个典型的分布式事务场景。我们希望要么全部成功,要么全部失败。

/**
 * 用户下单
 */
public void purchase(String userId, String commodityCode, int orderCount) {
        //减库存
        storageService.deduct(commodityCode, orderCount);
        //扣款、生成订单
        orderService.create(userId, commodityCode, orderCount);
    }

其中OrderService做了如下操作,扣减钱款、生成订单。库存Service就是减了一下库存。



那么要完成这次分布式事务,只需要在purchase方法上加个注解即可。看起来确实是一个注解,解决所有。

@GlobalTransactional
    public void purchase(String userId, String commodityCode, int orderCount) {
        ......
    }

炭烧有话说:
Springcloud Alibaba 里的steata 分布式事务的简单讲解就是这样了,由于篇幅原因,很多朋友可能还觉得干货讲得还不够多,我手里有一份关于SpringCloudAlibaba笔记,里面系统的讲解了springcloud Alibaba的各种内容,应有尽有!

笔记内容:

Seata--分布式事务

1.分布式事务基础、2.本地事务、3.全局事务、4.最大努力通知等更多笔记内容

由于篇幅原因内容无法全部截出,可看文末获取方式。


第一章微服务介绍

随着互联网的发展,网站应用的规模不断的扩大,进而导致系统架构也在不断的进行变化。本章就讲述了每种架构系统是什么样子的,以及有什么的作用。



介绍Spring cloud alibaba

第四章Sentinel--服务容错篇

在微服务架构中,我们将业务拆分成一个个的服务,服务于服务之间可以互相调用,但是由于网络原因或者自身原因,服务并不能保证服务100%可用,如果单个服务出现问题,调用整个服务就会出现网络延迟,此时若有大量网络进来,最终会导致服务瘫痪的,所以这篇便讲解了一个高并发带来的问题等。


总结

Seata分布式事务只是Springcloud Alibaba里面的一部分,想要真正的了解它,一定要系统的了解它的整个内容。

俗话说,知己知彼百战百胜,想要克服“Seata分布式”这一难题,先要了解springcloud alibaba整体的分布和内容,并抓住其关键和本质。

如果您对如何更好地系统性学习Springcloud Alibaba还没有好的办法,这份笔记可以很好地帮助到您!

想要获得更多关于Seata分布式事务的资料,彻底吃透,可以私信我关键词[资料],或者看下方,获取更多java相关知识.

~联系方式~
wechat: Mlzg5201314zz
扣扣:2967728282///

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容