跳到主要内容

第五章 强一致性分布式解决方案

一、强一致性事务概述

在分布式事务领域,最早采用的是符合 CAP 理论的强一致性事务来解决分布式事务问题。强一致性分布式事务要求在任意时刻查询参与全局事务的各节点的数据都是一致的

1.典型方案

在强一致性事务解决方案中,典型的方案包括 DTP 模型(全局事务模型)、2PC 模型(二阶段提交模型)和 3PC(三阶段提交模型)3 种

基于DTP 模型,典型的解决方案是分布式通信协议 XA 规范,MySQL 默认支持 XA 规范。另外 Atomikis 框架和 Dromara 开源社区的 RainCat 框架也在应用层支持 XA 规范,能够实现分布式事务

基于2PC 模型,典型的解决方案是 Dromara 开源社区开源的 RainCat 框架,在应用层实现了 2PC 模型,避免出现在数据库层实现 2PC 模型时阻塞数据库的情况

由于3PC 模型的设计过于复杂,在解决 2PC 问题的同时又引入了新的问题,因此在实际工作中的应用不是很广泛

2.适用场景

在分布式事务解决方案中,强一致性事务要求应用程序在任何时间,读取任意节点上的数据,都是最新写入的

强一致性事务主要用于对数据一致性要求比较高,在任意时刻都要查询到最新写入数据的场景,例如跨行转账业务中,张三向李四转账 100 元,则张三账户减少 100 元,李四账户增加 100 元,这两个操作要么都执行成功,要么都执行失败。不存在一个成功,另一个失败的情况

3.优缺点

强一致性事务解决方案存在如下优点:

1、 数据一致性比较高;
2、 在任意时刻都能够查询到最新写入的数据;

强一致性事务解决方案也存在着如下缺点:

1、 存在性能问题,在分布式事务未完全提交和回滚之前,应用程序不会查询到最新的数据;
2、 实现复杂;
3、 牺牲了可用性;
4、 不适合高并发场景;

二、DTP 模型

DTP模型是 X/Open 组织定义的一套分布式事务标准,这套标准主要定义了实现分布式事务的规范和 API,具体的实现则交给相应的厂商来实现。本节对 DTP 模型的重要概念和执行流程进行简单的介绍

1.DTP 模型的重要概念

DTP模型种定义了几个重要的概念,分别为事务、全局事务、分支事务和控制线程

1、 事务:一个事务就是一个完整的工作单元,具备ACID特性;