美文网首页程序员分布式
分布式事务- 二阶段协议

分布式事务- 二阶段协议

作者: 阿里加多 | 来源:发表于2018-06-21 19:34 被阅读25次

一、前言

在单个数据库实例时候,我们可以在一个数据源的事务(本地事务)内做多步数据库操作,在事务内的多个操作要么全部执行生效,要么全部不生效。在多数据实例节点时候,我们对多个实例的数据源进行操作时候就没办法把多个操作放到一个大的事务内来管理了,因为多个实例操作的是不同的数据源,而数据库自带的事务是针对单个数据源来说的。

二、二阶段协议

单个数据库实例内的事务我们称为本地事务,需要保证多个数据源的操作要么都做要么都不做的事务我们成为分布式事务,为了实现分布式事务,二阶段与三阶段协议就应运而生了。

分布式事务由事务发起者、资源管理器(参与者)、事务协调者组成,下面我们看看二阶段协议内容:

  • 第一阶段
    分布式事务发起方向事务协调器发起分布式事务,协调器则向所有事务参与者发起准备请求,事务参与者接受到请求后执行本地事务,但是不提交。如果所有事务参与者都返回了准备OK到事务协调器



    则事务协调器准备进入第二阶段。如果有一个参与者返回准备失败,则事务协调器向所有参与者发起事务回滚请求,事务参与者收到请求后回滚执行的本地事务,则分布式事务结束。


    image.png
  • 第二阶段
    事务协调器向所有事务参与者发起提交事务的请求,事务参与者接受到请求后,执行本地事务的提交操作。如果事务协调器收到所有参与者提交OK则分布式事务结束。


    image.png

如果协调器发现有些参与者返回事务提交失败,则执行具体的事务补偿策略。

三、总结

二阶段协议是个标准协议,协议只是规定了分布式事务实现的骨架,并没有规定具体如何实现,比如事务协调器是作为一个单独应用存在,还是与事务发起方一起部署的?事务参与者是单独的应用还是与发起方一起的?并且并没有考虑异常情况,比如第二阶段如果有部分参与者返回提交失败或者由于网络原因返回了提交OK,但是事务协调器没有收到,该怎么处理?

另外分布式事务并不是简单说对多个数据源操作的原子性,还可以是数据源操作与远程RPC的原子性,数据源与发送消息的原子性。

下文我们来谈谈2阶段的缺点以及三阶段协议的原理。

最后

想了解JDK NIO和更多Netty基础的可以单击我

想了解更多关于粘包半包问题单击我
更多关于分布式系统中服务降级策略的知识可以单击 单击我
想系统学dubbo的单击我
想学并发的童鞋可以 单击我

相关文章

  • 分布式事务

    目录 简介 单一分布式事务与嵌套分布式事务 原子提交协议两阶段提交协议嵌套事务的两阶段提交协议 分布式事务的并发控...

  • 分布式事务

    对分布式事务及两阶段提交、三阶段提交的理解 关于分布式事务、两阶段提交协议、三阶提交协议

  • 分布式事务

    本地事务 分布式事务 分布式事务模型 XA 优点:对应用侵入很小,用户可以像使用本地事务一样使用基于XA协议的分布...

  • 分布式事务(2)-两阶段提交协议

    分布式事务(2)-两阶段提交协议 两阶段协议(通常用来实现分布式事务)。有两类节点:一类是协调者,一类是事务参与者...

  • 浅谈大规模分布式系统中那些技术点

    分布式事务 分布式系统的特性 分布式事务的基本介绍 常用的分布式技术说明 理解2PC和3PC协议 「点击阅读」 分...

  • MySQL 中基于 XA 实现的分布式事务

    五、MySQL 中基于 XA 实现的分布式事务 5.1 XA协议 首先我们来简要看下分布式事务处理的XA规范 可知...

  • 2020-08-31:柔性事务是什么,分布式环境下为何要放弃传统

    前言 每日一题专栏 柔性事务是什么,分布式环境下为何要放弃传统事务? XA协议能搞定两个数据库的事务(分布式标准事...

  • 分布式事务:Saga - 数据一致性

    分布式事务实现方式 主要有二阶提交协议(Two Phase Commitment Protocol)、三阶提交协议...

  • 分布式事务:2PC、3PC协议

    两阶段提交协议-2PC 两阶段提交协议(2PC):是一种原子承诺协议,一种分布式算法,它协调参与分布式事务的所有应...

  • 事务的原理和分类

    一、事务的三种基本类型 1.1基于XA协议的两阶段提交 XA是一个分布式事务协议,由Tuxedo提出。XA中大致分...

网友评论

    本文标题:分布式事务- 二阶段协议

    本文链接:https://www.haomeiwen.com/subject/ncpcyftx.html