[2]分布式事务解决方案之强一致性分布式事务

940 阅读3分钟

内容概览

  1. DTP模型

  2. 2PC模型

  3. 3PC模型

a.强一致性分布式事务适用场景

主要用于对数据一致性要求比较高的场合。如跨行转账等。

b.优缺点

优点

  1. 数据一致性较高
  2. 任何时候都能查询到最新写入的数据

缺点

  1. 存在性能问题
  2. 实现复杂
  3. 牺牲了可用性
  4. 不适用高并发场景

c. 解决方案

1. DTP模型

X/Open DTP(X/Open Distributed Transaction Processing Reference Model) 是X/Open 这个组织定义的一套分布式事务的标准,也就是了定义了规范和API接口,由厂商进行具体的实现.

1.1. DTP模型的重要概念

  • 事务:一个事务是一个完整的工作单元,由多个独立的计算任务组成,这多个任务在逻辑上是原子的,具备ACID特性。
  • 全局事务:由事务管理器管理的事务,能够一次性操作多个资源管理器。
  • 分支事务:由事务管理器管理的全局事务中,每个资源管理器中独立执行的事务。
  • 控制线程:执行全局事务的线程,这个线程用来关联应用程序、事务管理器、和资源管理器三者之间的联系,即表示全局事务与分支事务的关系,也叫事务上下文环境。

1.2. DTP模型5个基础功能组件

  • AP:应用程序(Application Program)即参与DTP分布式事务模型的应用程序
  • RM:资源管理器(Resource Manager)可以理解为数据库或消息服务管理器。应用程序可以通过资源管理器对相应的资源进行控制,对应的资源需要实现XA定义的接口。
  • TM:事务管理器(Transaction Manager)负责协调和管理DTP模型中的事务,为应用程序提供编程接口同时管理资源管理器。
  1. AP可以和TM、RM通信,TM和RM可以相互通信。
  2. DTP模型定义XA接口,TM和RM能够通过XA接口进行双向通信。
  3. TM控制着全局事务,管理事务的生命周期并协调资源。
  4. RM控制和管理实际的资源。

(XA协议(XA Specification),指的是TM和RM之间的接口。数据库,如Mysql,Oracle, DB2等,都是实现了XA接口的)

image.png

2. 2PC模型

指两阶段提交协议模型,该模型将事务分为Prepare阶段和Commit阶段。

2.2. 执行流程

1.Prepare 阶段
在Prepare阶段,事务管理器给每个参与全局事务的资源管理器发送Prepare消息,资源管理器要么返回失败,要么在本地执行相应的事务操作,此时事务并没有提交。 2.Commit阶段
如果事务管理器接收到资源管理器返回的失败消息,则直接给Prepare阶段执行成功的资源管理器发送回滚消息,否则向每个资源管理器发送Commit消息。对应的资源管理器根据Commit消息执行对应的事务回滚或事务提交操作,并释放适用过的锁。

2.3. 2PC模型存在的问题

1.同步阻塞问题:参与事务的节点都会对其占用的公共资源加锁。
2.单点故障问题:如果事务管理器发生故障,则资源管理器会一直阻塞。
3.数据不一致问题:若在Commit阶段,由于网络或部分资源管理器发生故障,导致没有收到Commit消息,就会引起数据的不一致。

2. 3PC模型

该模型是在2PC的基础上改进,将2PC中的Prepare阶段分为两个阶段。形成:CanCommit、PreCommit、doCommit(doRollback) 三个阶段。

  • 对比2PC模型,3PC模型主要解决了单点故障问题,减少了事务执行过程中的阻塞现象