2021-03-05

分布式事务

OceanBase 数据库使用两阶段提交协议来实现分布式事务,以分布式转账为例,假设服务器节点 A 上的账户 UA 向服务器节点 B 上的账户 UB 转账,则两阶段提交的步骤是:

第一阶段,即 prepare 阶段,节点 A 和节点 B 分别检查账户 UA 和 UB 的状态是否正常、账户 UA 的余额充足且可以转出(没有超限)、账户 UB 可以转入(没有被冻结),检查通过则锁定账户 UA 和 UB。

第二阶段,即 commit 阶段,如果在第一阶段账户 UA 和 UB 的 prepare 操作都成功,则通知节点 A 对账户 UA 的余额进行扣减和通知节点 B 对账户 UB 的余额进行添加,转账成功;否则通知节点 A 和节点 B 对相应账户的操作进行回滚,转账取消。

然而,如果两阶段事务执行期间,某个节点,如 A,发生了故障,则无从知道 A 对账户 UA 的操作的状况:账户 UA 的 prepare 可能没有完成、或者完成且成功、或者完成但失败,节点 A 可能很快恢复、也可能很长时间没有恢复或者永久损坏,甚至无法简单地判断节点 A 是否故障或故障后是否恢复(例如监控节点并不总是能确定被监控节点的状态,因为监控节点本身或其与被监控节点之间的通信可能异常),因此该分布式事务的执行结果是不确定的。

Paxos + 两阶段提交协议:


OceanBase 数据库将 Paxos 分布式一致性协议引入到两阶段提交,使得分布式事务具备自动容错能力。如上图所示,两阶段提交的每个参与者包含多个副本,副本之间通过 Paxos 协议实现高可用。当某个参与者节点发生故障时,通过 Paxos 协议可以很快(秒级)选举出另外一个副本代替原有参与者继续提供服务,并恢复原有参与者的状态,从而确定分布式事务的执行结果并继续推进两阶段提交协议的完成。


为了提升系统的分布式事务处理能力,降低延迟,OceanBase 数据库进一步改进了传统的两阶段提交协议,采用参与者即协调者的优化,让每个分布式事务的第一个参与者承担两阶段提交协议中协调者的工作。如上图所示,传统的两阶段提交协议包含独立的协调者,协调者维护分布式事务的状态,执行 prepare 和 commit 操作后应答客户端,且每一个操作之前都需要记录日志,用于协调者故障后恢复分布式事务的状态,一次两阶段提交的延迟相当于 2 次 RPC 和 4 次写日志操作。OceanBase 数据库采用协调者无状态设计,协调者不再维护分布式事务的状态,而是在宕机恢复时,通过所有参与者的局部状态动态构造分布式事务的全局状态。这种方式避免了协调者写日志,一次两阶段提交的延迟降低到 1 次 RPC 和 1 次写日志操作。

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

推荐阅读更多精彩内容