技术开发 频道

SOA 事务管理

    协调点(事务划分) 

    一旦确定了业务活动,并且定义并将服务集分了组,那么下一个步骤就是指示 事务划分点。不是所有的业务运作都需要事务管理,只有那些包含多个操作,需要以所有操作必须成功完成的方式协调的。在图 5 中所示的实例中,LookupCustomer 和 CreateCustomerRecord 没有包装到事务中,但 FinalizeCustomerOrder 参与了一个 Create Order Transaction 划分了的服务集。在此实例中,FinalizeCustomerOrder 服务使用 Transaction Management Service(TCS)来控制其他四个服务的顺序操作,并提供对 TCS 进行的每个操作所必要的消息(显示为 FinalizeCustomerRequest 的附件)。

    事务协调图用来显示确定的事务的构成、处理顺序(顺序的 vs. 并行的),及嵌套的事务。在图 5 中的实例中,GenerateShippingRequest 是 Assign Inventory Item 服务所创建的嵌套事务。嵌套事务出现的原因可能有许多,例如,如果打算将服务独立使用,或作为更大事务环境的一部分。注意到嵌套的事务可以使用同一个 TCS,确保如果嵌套事务失败了,那么父事务也将失败。

    当事务处理完结时,TCS 轮询事务的所有参与者,决定该事务是否应该提交。在一个两阶段提交协议中,TCS 首先轮询参与者,看是否它们准备好了,然后依次向每个参与者发布提交。如果事务参与者没有准备好,那么所有其他的参与者得到回滚命令。在参与的服务察觉不到事务(举例来说,无状态的)的情况下,TCS 将调用补偿操作(也就是,“取消”)。


图 5. 提交订单事务划分

    处理控制(串行的或并行的)

    如上面所提到的,事务控制可能是串行的、并行的,或两者的组合。定义为串行的事务必须按照特定顺序发生,且典型的是在来自一个操作的完成的事务环境信息是另一个的必需输入时(举例来说,当订单号记录在存货分配或记账记录参考上的时候)需要串行事务。另一方面,并行操作是互相独立的,因此可以同时执行。例如,由空中旅行、饭店逗留,及汽车租赁所组成的旅行计划可能并行执行,因为一个操作的结果不是完成另一个所必要的,如图 6 所示。当事务的一个部分是串行的,而其他部分是并行的时,会出现组合的处理。此类型的事务的一个实例是光缆产品的订单,在此第三方供应商独立供应。


图 6. 并行事务处理

    处理环境(内部映射、外部映射)

    最后,TCS 要求在事务开始之前分配事务环境信息映射。这意味着服务协调者(Service Coordinator)必须知道每个服务所需的信息,并确保每个服务调用都配备必要的事务环境。在之前图 5 中所示的串行实例中,CreateOrder 服务生成一个其他两个服务所需的接口上的一部分,OrderID。服务协调者该提供内部映射和外部映射信息来考虑要添加到随后的服务调用中的环境信息。如图 7 所示,外部映射将显示 CreateOrder 服务创建的 OrderID 映射到 Billing 和 Inventory 操作的输入内部映射。此映射让 TCS 将环境信息传播到事务的所有单元。


图 7. 事务环境映射

0
相关文章