1. 二阶段提交协议的由来
X/Open 组织提出了分布式事务处理的规范 DTP 模型(Distributed Transaction Processing),该模型中主要定义了三个基本组件,分别是
应用程序(Application Program ,简称AP):用于定义事务边界(即定义事务的开始和结束),并且在事务边界内对资源进行操作。
资源管理器(Resource Manager,简称RM):如数据库、文件系统等,并提供访问资源的方式。
事务管理器(Transaction Manager ,简称TM):负责分配事务唯一标识,监控事务的执行进度,并负责事务的提交、回滚等。
一般,我们称TM为事务的协调者,而称RM为事务的参与者。TM 与 RM 之间的通信接口,则由 XA 规范来约定。
在 DTP 模型的基础上,才引出了二阶段提交协议来处理分布式事务。
2. 二阶段提交基本算法
2.1 前提
二阶段提交协议能够正确运转,需要具备以下前提条件:
存在一个协调者,与多个参与者,且协调者与参与者之间可以进行网络通信
参与者节点采用预写式日志,日志保存在可靠的存储设备上,即使参与者损坏,不会导致日志数据的消失
参与者节点不会永久性损坏,即使后仍然可以恢复
实际上,条件2和3所要求的,现今绝大多数关系型数据库都能满足。
2.2 基本算法
2.2.1 第一阶段
协调者节点向所有参与者节点询问是否可以执行提交操作,并开始等待各参与者节点的响应。
- <