InfoQ

新闻

开发者应该书写他们自己的事务协调逻辑吗?

作者 Jean-Jacques Dubray译者 王志雄 发布于 2008年1月16日 上午3时14分

社区
Architecture,
SOA
主题
Web服务,
业务流程管理,
事务处理,
Web服务标准
标签
ACID,
事务,
WS-CAF,
WS_TX,
WS-BusinessActivity

Mark Little是Red Hat的JBoss部门的标准主管和开发经理。他把大部分的职业时间都投入到了分布式计算和分布式事务协议上。他是好几个工作组的成员,这些工作组试图为Web服务定义一个事务协议,比如BTP,WS-CAF和WS-TX。

在十二月,Mark发表了博文“大规模分布式事务”。他解释说,由于他过去从事复制(replication)协议方面的工作,他得出一个结论:为了获得性能和可用性,需要牺牲一致性。这与Werner Vogels在QCon伦敦2007大会上的发言一致。

Mark声称:

对事务来说,有一点也是一样的(译注:即和服务实现一样,事物实现也是各异的):事实上,如果你想将不同的服务和域粘合在一起,在Web服务中这是必须的。在服务边界的背后,它们中的一部分可能并不是使用相同的事务实现。

他指出,其他人比如Pat Helland也考虑过放宽事务能力。Mark用海森堡测不准原理(Heisenberg's Uncertainty Principle)来阐明他的观点: 

你可以知道所有的参与者的任一状态,但不知道何时到达;反之亦然。

他还给我们指出WS-BP规范是WS-CAF(组合应用框架)规范集的一部分:

业务流程事务模型和传统的2PC事务模型的一个关键差异是它假定成功。也就是说BP模型是乐观,它假设失败的案例是少数,在需要情况下可以被处理或者离线解决,或者通过重试(replay)/空操作(void)/补偿(compensation),但不会始终是自动的,经常需要人工交互。

这个方法在Pat用于阐明他的论文的例子中得到回应:

考虑一个买房者以及他和第三方担保(escrow)公司的关系。购买者和第三方担保公司达成一个信任协议。卖家、抵押公司、以及事务中涉及的所有其他方也是如此。

当你签了一份购买一套房子的文件,你并不知道交易的结果。你承认,除非第三方担保公司倒闭你才会是不可靠的。控制决策的唯一方是第三方担保公司。这是一个两方关系的星型(hub-and-spoke)集合,被用于一大群当事人在不使用分布式事务下取得一致意见。

Pat补充:

当你考虑几乎无限规模的情形时,再去回想两方关系就很有意思了。这可以通过从两方试探/取消/确认(就像传统的工作流)逐步进行构造。

Greg Pavlik,也是许多Web服务事务规范的合作者,开始思考不同的方面

应用系统可能包含协调者的角色,在某种程度上它变得越来越不清晰,为什么协议的必要性要远大于业务逻辑本身?

这里有些需要被应用开发人员理解的模式。它们可能被一些框架支持。但是有一点很明显:事务管理不会在上下文中扮演主要角色。

Mark答复,是的,

[他不]认为分布式ACID事务(译注:原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)在大规模系统上有很大的前途。

但是,

仍然有一个可靠的协调者,它控制状态转换、在故障和恢复的时候“做正确的事情”。

去年夏天,Juval Löwy ——IDesign.net的首席架构师——在一个播客(podcast)里暗示了相似的结论

当几个软件代理参与执行一个公共工作单元的时候,重新发明专用事务协议去完成状态调整不是一个好主意。
查看英文原文Should developers write their own transaction coordination logic?
译者简介:王志雄,长期从事软件开发工作,项目集中在EAM和设备点检管理领域。2004年转入JAVA领域,曾经在项目中使用过Hibernate、Struts、Spring 等。关心软件技术和相关工具的动态,将其中成熟的技术和工具应用到实际的项目之中。关心开源软件的发展动态以及软件过程和敏捷开发的实践探索。

没有回复

回复

深度内容

Flex与JSON及XML的互操作

平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。

用Qi4j进行面向组合编程

本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。

系统开发——新学科,新教育

一门新的计算机学科——“系统开发”,强调人性化、匠艺、设计、创意、创新和新事物的涌现,并建议用被称为“bottega”的工作室替代乏善可陈的教室。

图书聚焦:Visual Studio 2008 揭秘

Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。

BPEL为何不是BPM的圣杯?

Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。

基于范型的多语言编程

你是否仔细思考过,为什么人们总在讨论“要正确的语言做恰当的事情”?在这篇文章中,Sadek Drobi向你解释了为什么应该在系统内部混合使用多种语言。

采访与书摘《Pro Web 2.0 Application Development with GWT》

Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。

时刻准备着,迎接IT业的春天

我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!