写点什么

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

  • 2007-07-05
  • 本文字数:1448 字

    阅读完需:约 5 分钟

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-07-05 23:271933
用户头像

发布了 61 篇内容, 共 14.6 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

RTE2021 实时互联网大会参会感想

轻口味

1024我在现场 10月月更

[架构实战营] 模块一作业

张祥

架构实战营

技术干货 | 闲鱼:一个优秀的 Push 平台,需要经历怎样的前世今生

蚂蚁集团移动开发平台 mPaaS

消息推送 push mPaaS

html5移动端开发2020,跳槽大厂必看

android 程序员 移动开发

netty系列之:使用netty实现支持http2的服务器

程序那些事

Java Netty 程序那些事 响应式系统

行云创新马洪喜出席云栖大会,解读云原生时代开发者工具变革探索与实践

行云创新

开发者 云原生 行云 云栖大会 马洪喜

5面阿里斩获offer(Java岗),原来阿里面试官总喜欢问这种问题

进击的王小二

Java java面试 大厂面试

html5移动开发即学即用网盘,面经解析

android 程序员 移动开发

kotlin开发网站,字节跳动大神讲座

android 程序员 移动开发

ironSource 斩获 2021 年度鲸鸣奖三大重量级奖项

GTLC 全球技术领导力峰会 | 渐进式的研发管理改进之路

万事ONES

研发管理 研发效能 ONES

game+defi系统开发需求(公司)

产业数字化的思考

Geek_vidmje

喜大普奔!BFE 控制平面正式开源发布!

百度开发者中心

负载均衡 云原生 Go 语言 开源技术

QCon 全球软件开发大会 | 大型团队研发效率持续改进实践

万事ONES

研发管理 研发效能 ONES

kotlin实现接口,已开源下载

android 程序员 移动开发

Python爬虫实战 | 利用多线程爬取 LOL 高清壁纸

JackTian

Python 程序员 爬虫 后端 实战

打造价值交付体系,企业 CIO 如何应对 DevOps 命题?

BoCloud博云

DevOps 云原生

Kafka是如何实现高性能的,程序员进阶知识点

android 程序员 移动开发

kotlinui库,字节跳动内部学习资料泄露

android 程序员 移动开发

kotlin协程实现原理,【绝对干货】

android 程序员 移动开发

华为全球首发《全光自动驾驶网络白皮书》,助力打造品质联接新体验

没有一个行业能比房地产中介更需要CRM

低代码小观

企业管理 房地产业 管理系统 企业管理系统 行业管理系统

kotlinalso函数,34岁程序员年薪50w

android 程序员 移动开发

企业系统太多?WorkPlus让工作事半功倍

BeeWorks

各位Oracle DBA们,你们期待的在线实训环境终于来了

墨天轮

MySQL 数据库 oracle redis 实训

端智能研发核心套件:MNN 工作台深度剖析

阿里巴巴终端技术

深度学习 ios android 移动端 端智能

kotlin入门教程百度网盘,阿里开发7年大牛

android 程序员 移动开发

kotlin库,大佬带你看源码

android 程序员 移动开发

EMQ 映云科技5G 边缘计算工业解决方案获中国移动创客马拉松大赛三等奖

EMQ映云科技

5G 物联网 边缘计算 移动互联网

面试官:如何防止 Java 源码被反编译?我竟然答不上来。。

Java 编程 程序员 架构 面试

微软推新一代事务性文件系统——TxF_.NET_王翔_InfoQ精选文章