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

内容概览

  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模型主要解决了单点故障问题,减少了事务执行过程中的阻塞现象

Guess you like

Origin juejin.im/post/7049702762765877285