服务组合应用中的事务具有较长的生命周期,一个事务被划分成多个分布的子事务.补偿机制是保证长事务原子性的一种有效方法,允许在语义上逆转一个已提交子事务的结果.然而,补偿的代价可能是巨大的.针对该问题。在分析并定义事务补偿代价的基础上,提出一种子事务延迟提交算法——STCD(subtransactions committing delay)算法,与传统子事务执行后立即提交的方法相比,STCD算法允许某个全局事务的子事务在提交前根据自身的补偿代价和全局事务的运行状态动态确定提交时间,使可能的补偿操作变更为回滚操作.算法的正确性得以证明.模拟实验结果表明.在事务失败时,STCD算法可以有效地减少补偿活动的数目,降低补偿代价.
Transaction of service composition has long-lived feature which a global-transaction is divided into several distributed sub-transactions. Atomicity property is preserved by using compensating transactions, which semantically undo the effects of the completed sub-transactions, in case of global-transaction abort. However, the cost of compensation may be expensive and methods may be complex. To overcome this limitation, a novel scheduling algorithm named STCD (SubTransaction committing delay) is presented based on analysis of compensation. Different from traditional methods, sub-transactions determine the time of committing according to both the cost of compensation and the state of execution dynamically. The correctness of proposed algorithm is proved. Simulations show that STCD algorithm can confine the compensation sphere and reduce the cost of compensation.