BPEL中的原子事务和补偿服务区别和联系

文章仅供大家参考,所有评论, 错误报告, 其他信息以及批评, 请邮寄到 Jeffery.Lee AT gmail.com 或者访问我的个人blog同我交流( http://ibuddie.spaces.live.com/ )。本文遵从GNU 的自由文档许可证(Free Document License)的条款,欢迎转载,如若修改、散布,请注明文章原始出处和来源。


BPEL中的原子事务和补偿服务区别和联系

原子事务实现了常见的提交和回滚特性,以促进对跨服务事务的支持。 WS-原子事务规范提供的协议促成跨服务事务的功能,可与最常在分布式应用服务平台中发现的ACID兼容性事务相比较。管理跨越多服务参与者原子事务时常常采用两阶段提交(2PC)来实现

业务活动监管长期运行的、复杂的和具有不同范围和不同数量参与服务的活动。完成一个业务活动可能要用数小时、数天甚至数周。在此期间,活动可以执行无数任务,这些任务涉及很多参与者。业务活动与常规复杂活动的区别在于其参与者需要遵循协议所定义的特定规则。业务活动与基于协议的原子事务的主要区别在于其处理异常的方式和由协议规则引入的约束的本性。

例如业务活动协议不提供回滚的能力。假定业务活动是长期运行的,它不实现期望的ACID类型的事务功能。不过,业务活动提供可选的补偿流程/服务,类似于“B计划”,当遇到异常情形时即可调用。补偿不同于原子事务,因为参与服务所执行的任何变化都不期望回滚;通常其目的是当执行A计划失败时就执行B计划。
注意:使用补偿服务不会影响类似的原子事务系统,正如同实际生活中业务活动和原子事务的关系,即每个业务活动可以包含若干个原子事务。业务活动的使用也不排斥原子事务的使用。事实上,长期运行的业务活动在其生存期内很可能包括几个原子事务的执行。

业务活动于原子事务的不同之处还在于参与服务不需要在活动持续期间保留参与者。因为没有紧密控制服务执行的变化,它们在其各个工作完成后就可以离开业务活动。

下面结合BPEL来进一步谈一下原子事务和补偿服务在其中的体现。

未完待续……










你可能感兴趣的:(工作,生活,Blog,活动,Gmail)