SOA 事务管理(二):原型事务协调框架
本文来自于 Rational Edge:本文是两部分系列文章中的第二篇,介绍了用于以在面向服务的体系架构上安全的,而且一致的方式管理分布式事务的事务协调服务的原型设计。
我的两部分系列文章中的第一篇文章讨论了在定义及执行面向服务的体系架构中的复杂业务事务时的固有难点。作为解决此难题的一个手段,我们引入了事务协调服务(Transaction Coordination Service,TCS)的概念,原则上,它可以用于管理安全的且一致的分布式事务。此处是第二部分,我将介绍一个 TCS 的原型设计,包含 Java 开发的示例代码。此原型可以部署到任何 J2EE 容器中,并展示为 Web 服务。
此外,该原型阐明了一个用于由 XML 定义文件建立事务的潜在解决方案,用串行或并行的方式控制业务操作的执行和结束。我在最后以一个对可以实现来提供完整的(虽然很简单)基于服务的事务管理系统的附加功能的讨论作为结束。
事务协调服务框架
在分布式的、无状态,且透明的环境中的事务管理,以及作为面向服务的体系架构(Service-Oriented Architecture,SOA),呈现出明显的困难。SOA 底层的体系架构直接与确保关键业务操作完整性的需求是冲突的,该体系架构中,服务应该是无状态的,广大用户可以访问到的松耦合的业务操作。当事务广泛地分布在也许能或也许不能参与标准的、两阶段提交事务的商业伙伴系统时是尤其正确的。因此,必须找出某种方法来协调分布式的业务服务,以便请求者可以将多个不同的业务功能(也就是,Web 服务)组合成集成的业务操作。目前,有许多主机和微型计算机的事务处理和监控系统,例如,IBM Customer Information Control System (CICS) 和 Microsoft Distributed Transaction Coordinator (MDTC),并且事务管理包含于所有的认证的 J2EE 实现中,例如 WebSphere Application Server。与下面给出的原型相比,这些方法中的原则差别与面向服务的体系架构的性质有关 —— 也就是,许多服务是“察觉不到事务的”。这需要一个稍微不同的分布式管理方法来确保全部事务的完整性。同样,这里介绍的原型表现出复合的事务,其中有许多并行的操作,经常异步发生,并且需要在长期的持续时间内维持状态的能力。
在第一部分中,我揭示了事务协调服务(TCS)的概念,它能够管理以下与面向服务的体系架构中的分布式事务管理相关的情况:
- 业务功能和工作流定义。这涉及根据服务调用和消息设计核心业务操作,业务功能表示需要自动化系统的部分业务操作。
- 资源管理。TCS 要求控制关键系统资源的分配和释放,包括数据库记录、通信套接字、安全密钥,等等。
- 安全。在服务请求者和每个所需的业务服务之间安全通信的能力。这包括对非验证环境(例如,无状态的 Web 服务)中的安全的需求。
- 并发。TCS 必须控制对可修改记录的读/写访问,例如,客户订单,来防止竞争事务之间的数据坏损。
- 事务完整性。这涉及确保定义明确的业务事务工作流中的 ACID(原子性 - 一致性 - 独立性 - 持久性)属性。
- 事务嵌套。TCS 必须能够任意地嵌套多个事务,以便整个事务依赖于每个“子”事务的成功。
- 事务环境。这涉及从一个业务事务到另一个的传递信息,提供关键的连接信息(例如,与客户订单、工作订单,和营业量综述相关的“order-ID”)。
- 恢复,适度地从服务失败、网络错误,或其他防止业务事务成功执行的情况中恢复的能力,这包括重试失败事务的部分或全部的能力。
当我提出此原型时,心里面有许多目标。第一,我想为展示为有状态的 Web 服务的事务的创建、组织,和执行建立一个简单的基本框架。第二,我希望让定义文件简单且灵活,满足 Web 服务消费者变化的需求。第三,我想要提供一个工作原型,例举出许多事物协调服务的关键需求,例如,如何管理无状态的服务调用。图 1 中显示了整个系统架构,并且包含了四个重要的规则包:transaction、service、exception,和 utility。还包括的是 SOA Transaction Definition 文件,它定义了业务事务、环境映射,和每个服务消息中包含的数据。
TCS 包
如图 1 所说明的,组成 TCS 原型的类放入四个包中:transaction 包、service 包、utility 包,和 exception 包。
Transaction 包中包含所有事务管理类,包括四个表示核心事务处理的类:
- SOATransactionManager —— 负责事务执行和恢复的全部控制
- SOATransaction —— 负责每个 ManagedCommitter(以远程服务的形式实现)的控制,包括提交者之间传递的环境信息
- ManagedCommitter —— 为两阶段提交协议(例如,准备、执行、提交)定义事务控制语义的接口
- SOATransactionContext —— 提供一个 ManagedCommitter 和另一个之间的映射,来共享事务环境信息的通用类
图 1:原型事务协调服务(TCS)框架
- 本文关键词:


