[第1篇] SOA需要怎样的事务控制方式

在一个基于SOA架构的分布式系统体系中,服务(Service)成为了基本的功能提供单元,无论与业务流程无关的基础功能,还是具体的业务逻辑,均实现在相应的服务之中。服务对外提供统一的接口,服务之间采用标准的通信方式进行交互,各个单一的服务精又有效的组合、编排成为一个有机的整体。在这样一个分布式系统中某个活动(Activity)的实现往往需要跨越单个服务的边界,如何协调多个服务之间的关系使之为活动功能的实现服务,涉及到SOA一个重要的课题:服务协作(Service Coordination)。而具体来讲,一个分布式的活动可能会执行几秒钟,比如银行转帐;也可能执行几分钟、几个小时、几天甚至更长,比如移民局处理移民的申请。事务,无疑是属于短暂运行服务协作(Short-Running Service Coordination)的范畴。

[第2篇] 基于DTC的分布式事务管理模型之事务控制角色

通过上一篇的介绍,我们知道了SOA真正需要的是一个能够协调服务操作直接(通过服务自身访问的资源)或者间接(通过被调用服务访问的资源)访问的所有资源的分布式事务管理系统,这是一个复杂的架构体系。WCF,作为Windows平台下基于SOA的分布式框架,对分布式事务提供全面的支持。不过,WCF并不是另起炉灶,而是充分地利用了Windows现有的事务控制基础架构。本节着重讨论Windows事务处理模型,首先来看看在这个模型中各个事务参与者各自扮演怎样的角色。

[第3篇]基于DTC的分布式事务管理模型之事务登记于基于2PC的事务提交

当基于LTM或者KTM的事务提升到基于DTC的分布式事务后,DTC成为了本机所有事务型资源管理器的管理者;此外,当一个事务型操作超出了本机的范围,出现了跨机器的调用后,本机的DTC需要于被调用者所在机器的DTC进行协助。上级对下级(包括本机DTC对本机所有资源管理器,以及上下级 DTC)的管理得前提是下级在上级那里登记,即事务登记(Transaction Enlist)。所有事务参与者,包括所有资源管理器和事务管理器(即DTC)在进行了事务等级完成之后形成了一个树形的层级结构,该结构的形成是后续的事务提供成为可能,因此我们将其称之为事务提交树(Transaction Commit Tree)。

不同于基于单一资源管理器的本地事务,在一个分布式环境中时实现一个涉及到多个资源管理器的分布式事务,实现事务的ACID四大属性,要麻烦得多。当事务初始化服务(应用或者组件,为了更佳贴近WCF,我们都称服务)完成所有相关的操作,决定提交该事务。对于分布式事务的提交,最终的结果有两个:如果所有的操作能够顺利完成,需要持久化的数据被相应的资源管理器写入到目标资源;如果任何一个环节失败,所有持久化资源管理器将数据恢复到原来的状态。分布式事务的整个提交过程,采用两阶段提交(2PC:Two-Phase)Commit协议完成。顾名思义,“两阶段提交”意味整个整个事务提交阶段分两个阶段,我们现在就来详细介绍分别在这两个阶段中,都在做些什么。

[第4篇]System.Transactions事务之事务(Transaction)和可提交事务(CommittableTransaction)

在.NET 1.x中,我们基本是通过ADO.NET实现对不同数据库访问的事务。.NET 2.0为了带来了全新的事务编程模式,由于所有事务组件或者类型均定义在System.Transactions程序集中的System.Transactions命名空间下,我们直接称基于此的事务为System.Transactions事务。System.Transactions事务编程模型使我们可以显式(通过System.Transactions.Transaction)或者隐式(基于System.Transactions.TransactionScope)的方式进行事务编程。

在System.Transactions事务体系下,事务本身通过类型System.Transactions.Transaction类型表示。只有可提交事务才能被直接初始化,对可提交事务的提交驱动着对整个分布式事务的提交。可提交事务通过CommittableTransaction类型表示。

[第5篇]System.Transactions事务之依赖事务(DependentTransaction)和事务范围(TransactionScope)

Transaction的定义中,信息的读者应该看到了一个叫做DepedentClone的方法。该方法对用于创建基于现有Transaction对象的“依赖事务(DependentTransaction)”。不像可提交事务是一个独立的事务对象,依赖事务依附于现有的某个事务(可能是可提交事务,也可能是依赖事务)。依赖事务可以帮助我们很容易地编写一些事务型操作,当环境事务不存的时候,可以确保操作在一个独立的事务中执行;当环境事务存在的时候,则自动加入其中。

TransactionScope确实能够使我们的事务控制变得非常的简单。实际上,在利用System.Transactions事务进行编程的时候,我们一般不会使用到可提交事务,对于依赖事务也只有在异步调用的时候会使用到,基于TransactionScope的事务编程方式才是我们推荐的。 正如其名称所表现的一样,TransactionScope就是为一组事务型操作创建一个执行范围,而这个范围始于TransactionScope创建之时,结束于TransactionScope被回收(调用Dispose方法)。

作者:Artech
出处:http://artech.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/artech/archive/2010/01/31/1660433.html

谈谈分布式事务(Distributed Transaction)[共5篇]相关推荐

  1. 分布式事务(Distributed Transactions)概述

    分布式事务是分布式领域必须要面对的问题,同时也是衡量一个分布式系统成熟度的重要指标.那么什么是分布式事务,哪些场景会涉及到分布式事务,如何实现分布式事务?本文将重点讨论以上问题. 分布式事务定义 分布 ...

  2. 谈谈分布式事务之一:SOA需要怎样的事务控制方式

    在一个基于SOA架构的分布式系统体系中,服务(Service)成为了基本的功能提供单元,无论与业务流程无关的基础功能,还是具体的业务逻辑,均实现在相应的服务之中.服务对外提供统一的接口,服务之间采用标 ...

  3. 谈谈分布式事务之三: System.Transactions事务详解[下篇]

    在前面一篇给出的Transaction的定义中,信息的读者应该看到了一个叫做DepedentClone的方法.该方法对用于创建基于现有Transaction对 象的"依赖事务(Depende ...

  4. 分布式事务最终一致看这篇“大白话”的实践

    我们都知道微服务现在很火热,那么我们将业务才开后随之而来的数据一致性问题也很棘手,这篇博客我将阐述一下我是如何通过实践加理论来完成最终一致的高可用并且讲述一下dotnetcore下的cap是如何实现的 ...

  5. 一招让你拿下seata分布式事务框架,看这篇文章准没错!

    第一阶段:架构师筑基必备技能 我觉得,但凡是个成年人应该都清楚扎实的基本功对自己的工作帮助有多重要.从各大招聘网站的招聘要求来看,第一条都明确说明需要扎实的Java基础.因此,一般笔试以及面试的第一轮 ...

  6. JDBC高级特性3--JNDI,连接池,分布式事务

    2019独角兽企业重金招聘Python工程师标准>>> System.out.print(rs.getInt(1)+"\t"); System.out.print ...

  7. java 分布式事务_Java核心知识 Spring原理十五 JPA 原理

    1. 事务 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity ).一致性 ( Consistency ).隔离性 ( Isolation ) 和持久性 ( Dur ...

  8. 与基础事务管理器的通信失败 存货申请_图文并茂讲解分布式事务的实现原理...

    事务是数据库系统中非常有趣也非常重要的概念,它是数据库管理系统执行过程中的一个逻辑单元,它能够保证一个事务中的所有操作要么全部执行,要么全不执行:在 SOA 与微服务架构大行其道的今天,在分布式的多个 ...

  9. java 分布式事务总结

    编程式事务 TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition( ...

最新文章

  1. python中mainloop什么意思_Python Turtle mainloop()用法
  2. IBM专家谈(一)能源效率是POWER7的另一个优势
  3. php计算上个月是几月份
  4. 亚马逊 html格式转换,亚马逊七种产品描述常用HTML代码,文字颜色代码让Listing更出彩...
  5. 团队天梯赛L1-001
  6. php fread 逐行读取,php fread函数使用方法总结
  7. MAC苹果电脑装单win10系统
  8. 微信公众号开发接入_官方文档
  9. 用Python通过摄像头进行视频录制
  10. 全球虚拟化服务器排行榜,全球云服务器厂商排名
  11. linux hci0 进程,教程 - 在 Azure Stack HCI 上的 AKS 中部署 Linux 应用程序 - AKS-HCI | Microsoft Docs...
  12. last-winner-airdrop
  13. SylixOS学习三—— SylixOS的引导与安装2
  14. CF1463-D. Pairs
  15. 嵌入式主板上使用的插针式加密锁
  16. C++设计模式——模板方法模式(高屋建瓴)
  17. 理解tfrecord读取数据——错误OutOfRangeError (see above for traceback)的解决
  18. 【过关斩将7】面试谈薪资时,HR压价怎么办?
  19. 【笔记1】chrome网站技术分析插件:Wappalyzer
  20. dell r630 配置raid_DELL服务器硬件 配置RAID磁盘阵列 iDRAC配置

热门文章

  1. php linux 缓存文件,Linux下搭建网站提示缓存文件写入失败怎么办?
  2. python- 基础 map方法
  3. 如何利用 webpack 在项目中做出亮点
  4. 关于分区索引与全局索引性能比较的示例
  5. Angular之RouterModule的forRoot与forChild
  6. 转://RMAN跨平台可传输表空间和数据库
  7. PHP:6种GET和POST请求发送方法
  8. 微软Skype Translator将支持阿拉伯语即时语音翻译
  9. 检查你的项目的引用包依赖关系
  10. 自动性能统计信息(三)(Automatic Performance Statistics)