谈谈分布式事务(Distributed Transaction)[共5篇]

[第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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件方面的词汇

1 SaaS是Software-as-a-service(软件级服务) SaaS提供商为企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台,并负责所有前期的实施、后期的维护等一系列服务,企业无需购买软硬件、建设机房、招聘IT人员,即…

一只蝙蝠的自述在朋友圈火了:千万不要再吃野味了!

全世界只有3.14 % 的人关注了青少年数学之旅来源:少女兔(ID:iiilass)、人民日报(ID:rmrbwx)从营养价值上来看野生动物和家养动物的差别微乎其微既不能延年益寿,也不能青春永驻它们不…

转载:xml文件中的特殊字符

在XML文档中预定义好的实体: < < 小于号 > > 大于号 &amp; & 和 &apos; 单引号 &quot; " 双引号 实体必须以符号"&"开头&#xff0c;以符号";"结尾。 注意: 只有"<" 字符和"&am…

掌握JVM 运行时数据区,其实不是很难,加薪也是要技巧可言的!!!

一、概念 Java 内存区域和内存模型是不一样的东西&#xff0c;内存区域是指 Jvm 运行时将数据分区域存储&#xff0c;强调对内存空间的划分。 而内存模型&#xff08;Java Memory Model&#xff0c;简称 JMM &#xff09;是定义了线程和主内存之间的抽象关系&#xff0c;即 J…

不要被约束的意思_俗话说:“娶妻不娶颧骨高,嫁汉不嫁连眉梢”,到底什么意思?...

“世有伯乐&#xff0c;然后有千里马。千里马常有&#xff0c;而伯乐不常有。”——《杂说》 唐韩愈传说春秋时期&#xff0c;有个叫伯乐的人很会选马&#xff0c;他选马的时候&#xff0c;并不需要骑着马真刀真枪地跑几圈&#xff0c;只是看看马的骨相、听听马的嘶鸣就能判断出…

终于来了!微软正式推出 VS Code 测试 API

随着 Visual Studio Code 1.59.0 正式版本的发布&#xff0c;全新的插件测试 API 也从试验版本进入了正式版本。自 2020 年 9 月起至今&#xff0c;经过了将近一年及数次版本迭代的打磨&#xff0c;不管是 API 的功能性还是易用性&#xff0c;与首个预览版本相比都获得了极大的…

发布软件之前,怎样告诉用户怎么用

这几年&#xff0c;大大小小的做过十来个项目&#xff0c;软件做好了&#xff0c;怎样告诉别人你的工作成果呢&#xff1f; 我的经验适合于公司内部项目&#xff0c;不适合向外发布的面对像上帝一样的客户的项目。 有几个项目是公司内部项目&#xff0c;虽然大家平时沟通的邮件…

MariaDB 10的复制 集群 高可用搭建 大表拆分【持续更新中】

视频地址 http://edu.51cto.com/course/course_id-1691.htmlMariaDB 10培训课程第一部分 复制1.基于GTID方式复制配置及注意事项2.基于表的并行复制3.多源复制&#xff08;MariaDB 10支持多主一从&#xff09;4.从库延迟如何找到那条执行慢的SQL5.复制异常处理1062,1032错误处理…

c++歌手大赛系统_计人即讯|第十届程序设计大赛

“第十届程序设计大赛”为激发学生学习计算机语言和科学使用计算机的热情&#xff0c;培养独立思考、勇于创新的探索精神和敢闯会创的意志品格&#xff0c;我院于12月5日13时30分在中主阶教201室成功举办了“第十届程序设计大赛”。本次大赛主要考察选手们应用计算机解决生活中…

限时9.9元 | 快速领取数学建模竞赛备战必备技巧与论文详解!

全世界只有3.14 % 的人关注了青少年数学之旅大家晚上好&#xff0c;随着美赛时间的公布以及大大小小的数学建模竞赛的进行&#xff0c;小天经常可以收到来自很多小伙伴们提出的问题&#xff0c;“竞赛中如何去考虑选题&#xff1f;”、“如何进行思路分析&#xff1f;”、“参考…

项目经理问我Java内存区域模型!急急急

也就这么点吧 Java内存区域主要分为&#xff1a;堆&#xff0c;栈&#xff0c;方法区三大部分 1、堆&#xff1a;是内存区域中最大的部分&#xff0c;所有线程共享&#xff0c;其中存放创建的对象和数组。由于堆是垃圾收集器管理的主要区域&#xff0c;因此也叫GC堆。 2、栈…

设计模式之中介者

中介者模式介绍中介者模式中介者模式是一种行为设计模式&#xff0c;能让你减少对象之间混乱无序的依赖关系&#xff0c;该模式会限制对象之间的直接交互&#xff0c;迫使它们通过一个中介者对象进行合作。中介者模式顾名思义&#xff0c;可以用我们平时生活中的房产中介去理解…

2010 本年度认证目标:坐沙发的熊

2月.wcf-------哎2月份没搞定啊。 3月.winform------3月份还有时间&#xff0c;不能被无数的破事儿占了&#xff01; 4月.web 3.5 5月.wpf转载于:https://www.cnblogs.com/zhuispeed/archive/2010/02/01/1660862.html

你的网页加载太慢了怎么办?

客户反映&#xff0c;“网页速度太慢了&#xff01;&#xff01;”&#xff0c;怎么办&#xff1f; 这个问题似乎有些难以解决&#xff0c;慢了就是慢了&#xff0c;也许用户使用就是一个56K猫&#xff0c;也许服务器只有256K的带宽&#xff0c;也许是网页设计有问题&#xff…

看了这个逻辑关系图,才更清晰为何不让你随便外出了

全世界只有3.14 % 的人关注了青少年数学之旅看了这个逻辑关系图&#xff0c;才更清晰为何不让你随便外出了。非常时期&#xff0c;爱国、爱家、爱自己&#xff0c;请近期减少不必要的外出&#xff0c;直到官方宣布疫情解除&#xff01;转载来源&#xff1a;刘小兔爱画画部分素材…

xen虚拟机管理xm的用法

目的&#xff1a;通过xm命令方便管理xen虚拟机。命令列表&#xff1a;xm list&#xff1a;所有已知的虚拟机列表 xm create&#xff1a;启动一个非托管的虚拟机 xm top&#xff1a;提供所有虚拟机的状态概貌 xm console&#xff1a;打开控制台管理虚拟机 xm new&#xff1a…

ef 关联依赖属性_基础巩固之:xmlns属性梳理

转载自&#xff1a;https://www.cnblogs.com/osttwz/p/6892999.html<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&q…

高德面试官问我:JVM内存溢出后服务还能运行吗,我一顿操作行云流水

文章开篇问一个问题吧&#xff0c;一个java程序&#xff0c;如果其中一个线程发生了OOM&#xff0c;那进程中的其他线程还能运行吗&#xff1f; 接下来做实验&#xff0c;看看JVM的六种OOM之后程序还能不能访问。 在这里我用的是一个springboot程序。 /*** author &#xff…

架构 | 聊聊我心中的架构设计观

【架构设计】| 总结/Edison Zhou在各种面试场合&#xff0c;可能都会被问到“你对架构设计的理解”&#xff0c;我也在最近的转正答辩中被技术委员会负责人问到&#xff0c;这里我重新整理一下思绪&#xff0c;聊聊我心中的的架构设计观。1系统的本质是什么&#xff1f;作为一个…