InfoQ

新闻

微软推新一代事务性文件系统——TxF

作者 王翔 发布于 2007年7月5日 下午11时27分

社区
.NET
主题
事务处理
标签
事务,
微软,
XML

MSDN杂志7月刊中对新的文件系统作了介绍,作为Windows平台一项“革命性”的新技术特性,Vista和将要发布的Longhorn中会支持并不断加强具有事务性的文件系统——TxF

对于从事服务端开发的技术人员而言,使用事务,尤其是控制分布式操作的事务是个至关重要的能力,如果某个环节“拿捏”不当,将在系统运维过程中用数十倍甚至数百倍的精力来解决。之前文件系统一直被作为一个典型的非事务性对象使用,也就是当数据库、队列、WCF等事务性对象在某种条件下回退的时候,中间操作过的文件系统也会保留痕迹;与之不同的是,TxF = NTFS + Tx,也就是文件系统也具有操作上的“All or Nothing”的事务性特征。在文章中,作者列举了这一文件系统的三个优势“提升应用稳定性”、“提升平台稳定性”和“增加创新机会”:

借助TxF可以有效减少应用在异常情况下的“扫尾”工作,应用的可靠性交给操作系统保证。

在不使用TxF的时候,如果事务本身有多层嵌套,而且调用环境又是分布式环境,那么每处涉及文件访问的位置都需要“设防”。需要回退的话,如何通知远端文件系统本身就很困难(限于各种访问控制策略),加之错误本身很多时候就是因为连通性原因导致;在TxF环境下,应用不需要关心事务的层次,也不需要关心连通性故障。

另外,使用TxF对于在线软件更新之类的应用特性也很有用,“半拉子”的情况最令人头疼,这种情况下应该考虑TxF的All or Nothing了。

但另外一个重要的地方是提供了一个“选项”——文件操作在异常处理时怎么办。实现方式上,TxF依赖于操作系统中KTM(Kernel Transaction Manager),而KTM可以与大家熟悉的DTC进行交互,相当于TxF可以间接地和任何支持DTC的技术进行事务协同。包括:

  • 所有主流商用数据库平台、支持DTC分布式事务的开源数据库平台。
  • 通过WS-AtomicTransaction协议保证的Web Service调用。
  • 声明为OleTransactionProtocol的WCF。
  • 还有各主要商用队列产品。
  • 再外延的话,由于DTC本身对XA-Transactions有支持,所以TxF甚至可以把操作Enlist到异构操作系统平台的事务管理产品中。

虽然TxF为开发人员开辟了一个非常广阔的调用空间,但它只是个“选项”,非事务性的文件系统在很多应用情境下还是非常必要的,诸如:

  • “业务操作日志”,必须保证它不会随着业务操作的回退而被“擦”掉。
  • 还有就是长事务的情况,过多被打开而未关闭的文件将成为服务器的负载,尤其在宕机重启后,“扫尾”工作将成为系统的负担。
  • 另外就是文件系统本身不适合多Writer的情况,每次一个TxF文件仅允许一个Writer写入(除非其它Writer与之在同一个事务内)。
  • 还有就是各种“锁”的问题,尤其当TxF与其他事务性资源一起因为断电等原因恢复的时候,TxF文件本身会被持续锁定,直到其他资源(例如:SQL Server)恢复之后才开始可以被释放,但如果外层宿主程序本身是个随操作系统启动的后台服务,状况就很容易恶化。

与Longhorn一起到来的应该会是SOA渐入主流的开发时代,XML将成为消息方式的主流,届时XML数据库和文件系统均会被用来存储XML数据,保证报文的I/O与前端Service调用结果的事务性同步将会很重要。Txf作为一项革新技术,如何在有效隔离事务边界的情况下,被妥善地使用将是一个很大的挑战。


作者简介:王翔,全国海关信息中心高级架构师,从事海关主要广域分布式系统的设计和实施,多次参与各业务系统的优化。此外,作为信息安全工作组副组长,他还一直致力于应用密码技术和公钥基础设施保障海关业务的安全运行。此外,他还是《程序员》杂志的专栏作者。
加上事务肯定耗硬盘容量 发表人 陈 焕新 发表于 2007年7月6日 上午3时1分
  1. 返回顶部

    加上事务肯定耗硬盘容量

    2007年7月6日 上午3时1分 发表人 陈 焕新

    Vista出来后,要更好的显卡才能跑得顺畅,现在TxF出来了,还不知道要吃掉多少硬盘和内存容量了,其实微软是卖硬件的,呵呵

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。