浅谈分布式事务解决方案

分布式事务是指涉及操作多个数据库的事务,目的是为了保证分布式系统中的数据一致性

XA(eXtend Architecture):

由X/Open组织提出的分布式事务规范/协议,它定义了事务管理器TM(Transaction Manager,即事务协调者)、资源管理器RM(Resource Manager,可以被看作一个数据库)和应用程序

一、二阶段提交(2PC)和三阶段提交(3PC)

XA规范的具体实现

1.2PC

分为投票和执行两个阶段

(1)投票阶段/准备阶段

TM向所有参与者发送prepare请求,询问是否可以执行事务,等待各个参与者的响应

(2)执行阶段/提交阶段

事务的提交阶段,需要考虑失败的情况

缺陷:

(1)同步阻塞

事务执行过程中,所有的数据库资源都被锁定,其他来访问这些资源的请求将会被阻塞,带来性能问题

(2)TM单点问题

只有一个TM,一旦TM宕机,那么整个流程无法继续完成

(3)数据不一致

如果在执行阶段,参与者脑裂或者其他故障导致没有收到commit请求,部分提交事务,部分未提交,那么就会产生数据不一致问题

2.3PC

分为CanCommit、PreCommit和DoCommit三个步骤

(1)CanCommit

先询问数据库是否执行事务,发送一个canCommit请求去询问,若可以就返回YES,反之返回NO

(2)PreCommit 等同于2PC的投票阶段

发送preCommit命令,然后执行SQL事务,成功返回YES,反之返回NO

参与者增加了超时机制,如果参与者超时未收到doCommit命令,默认将会提交事务

(3)DoCommit 等同于2PC的执行阶段

如果上一个阶段收到的都是YES的话,那么就会发送doCommit命令去提交事务,反之则会发送abort命令去中断事务的执行

二、TCC

Try、Confirm和Cancel,实际上是2PC的一个变种。实现这种模式,一个事务接口需要拆分成3个,也就是Try预占、Confirm确认提交和Cancel回滚

Try:锁定某个资源,设置一个预备状态,冻结部分数据

Confirm:事务管理器感知到各个服务的Try操作都成功了才进入本阶段,本阶段需要对Try阶段锁住的资源进行处理

Cancel:Try阶段阶段中,如果某个服务执行出错,事务管理器感知到后,会对整个分布式事务进行回滚

三、事务状态表

四、SAGA

主要思想是将长事务拆分成多个本地短事务,如果全部成功,就正常完成,反之,则会按照相反的顺序依次调用补偿

.消息队列

五、Seata框架

阿里开源的分布式框架,提供了对TCC、XA、Saga及AT模式的支持。

主要包含以下几个核心组件:

(1)Transaction Coordinator(TC)事务协调器

维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚

(2)Transaction Manager(TM)事务管理器

控制全局事务的边界,负责开启一个全局事务,并最终发起全局事务提交或全局回滚的决议

(3)Resource Manager(RM)资源管理器

控制分支事务,负责分支注册、状态汇报,并接收事务协调器的指令,驱动分支(本地)事务的提交或回滚

框架原理:

事务开启时,TM向TC注册全局事务,并且获得全局事务XID

多个微服务接口调用时,XID就会传播到各个微服务中,每个微服务执行事务也会向TC注册分支事务

TM可以管理每个XID的事务全局提交和回滚,RM完成分支的提交和回滚

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

推荐阅读更多精彩内容