两阶段提交

给定的业务逻辑操作可能涉及在多台计算机上运行的多个程序。 在此设计中,除非涉及的所有程序都成功完成了执行,否则事务不会被视为已完成。 若要让这些程序验证属于事务的其他所有程序是否已完成其事务,它们必须使用两阶段提交 (2PC) 协议。

术语“事务”(或任何派生项,如“事务性”)可能会产生误导。 在许多情况下,术语“事务”描述在不使用 2PC 协议的大型机计算机上执行的单个程序。 但是,在其他情况下,它用于表示由使用 2PC 协议的多台计算机上的多个程序执行的操作。

2PC 协议被如此命名是因为它在提交已执行的操作之前使用以下两个阶段:

  • 阶段 1 - 准备。 在此阶段中,事务所涉及的每个程序都向 TP 管理器(例如 Microsoft 分布式事务处理协调器 (MS DTC))发送消息,通知 TP 管理器它已准备好并能够执行其部分操作。 此阶段称为“准备”,因为程序已准备好提交更改或回滚更改。 如果 TP 管理器收到来自每个相关程序的确认,则将继续执行阶段 2。

  • 阶段 2 - 提交或回滚。 在此阶段中,TP 管理器指示每个程序提交或回滚作为事务的一部分请求的所有更改。 正确执行的回滚应使系统还原回其原始状态。

注意

阶段 1 和阶段 2 之间的状态称为“不确定状态”。 在应用程序中使用 .NET 的开发人员可以决定应用程序的哪些部分需要访问 TP,哪些部分不需要访问 TP。 TI 通过处理需要事务以及不需要事务的调用来将此选项扩展到大型机。 对于需要在基于 Windows 的两阶段提交和基于大型机的同步级别 2 事务之间完全集成的应用程序,TI 提供了所有必需的功能。 无需更改客户端应用程序,无需在大型机上放置可执行代码,并在极少或没有更改大型机 TP 的情况下,TI 即可做到这一点。 客户端应用程序不需要区分 TI 组件和其他任何组件引用。

下图显示了基于 Windows 的客户端应用程序如何隐式使用 Microsoft 分布式事务处理协调器 (DTC) 协调涉及 SQL Server 和 CICS TP 的分布式事务的两阶段提交。 DTC 协调 2PC 事务。

显示客户端应用程序使用事务集成器和 DTC 协调SQL Server与 CICS 应用程序之间的两阶段提交的图像。
使用事务集成器和 DTC 来协调 SQL Server 与 CICS 应用程序之间的两阶段提交的客户端应用程序

注意

事务集成器仅在使用 Windows 启动处理通过 LU 6.2 (APPC) 连接到大型机时才支持 2PC。 当直接通过 TCP/IP 连接时,无法通过 TI 获取 2PC 支持。

使用 TI 和 DTC 的客户端应用程序

两阶段提交 (2PC) 事务涉及多个组件。 若要成功使用事务集成器 (TI),必须了解以下 2PC 组件和术语:

同步点级别 2
TP 可以通过在以下三个同步级别之一使用 LU 6.2 协议进行交互:同步级别 0、同步级别 1 或同步级别 2。 只有这三个同步级别中的一个同步级别(即同步级别 2)使用 2PC 协议。 同步级别 0 没有消息完整性,而同步级别 1 支持有限的数据完整性。

TP 管理器
事务程序 (TP) 管理器是一项系统服务,负责协调事务的结果,以实现原子性。 TP 管理器确保资源管理器就事务应提交还是应中止达成一致决策。 Windows TP 管理器是 MS DTC。

重新同步服务
LU6.2 重新同步服务是 Host Integration Server 的一个组件,它与 MS DTC 配合使用,在 2PC 事务中随时发生故障时执行自动恢复到一致状态。 安装 Host Integration Server 时,默认情况下会安装 LU6.2 重新同步服务。

资源管理器
资源管理器是用于管理持久数据的一项系统服务。 服务器应用程序使用资源管理器来维持应用程序的持久状态,例如可用库存的记录、待定订单和应收帐款。 资源管理器与事务管理器协调工作,为应用程序提供了原子性和隔离性的保证(使用 2PC 协议)。 Microsoft SQL Server™ 和 TI 是资源管理器的示例。

另请参阅

Windows 事务与大型机事务
联机事务处理