快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

澳门首家线上网址:谈谈分布式事务之二:基于DTC的分布式事务管理模型上篇



经由过程上一篇的先容,我们知道了SOA真正必要的是一个能够和谐办事操作直接(经由过程办事自身造访的资本)或者间接(经由过程被调用办事造访的资本)造访的所有资本的散播式事务治理系统,这是一个繁杂的架构体系。WCF,作为Windows平台下基于SOA的散播式框架,对散播式事务供给周全的支持。不过,WCF并不是重新努力别辟门户,而是充分地使用了Windows现有的事务节制根基架构。本节着重评论争论Windows事务处置惩罚模型,首先来看看在这个模型中各个事务介入者各自扮演如何的角色。

对付所有的事务介入者,按照各从容全部事务生命周期各个阶段所承担的本能机能,大年夜致扮演着如下三种角色:

利用(Application)、办事(Service)或者组件(Component):代表用户法度榜样,或者是承载着某功能的办事(Service)或者组件(澳门首家线上网址Component);

资本治理器(RM:Resource Manager):代表用于治理详细事务型资本的软件法度榜样,比如数据库或者行列步队(MSMQ)等;

事务治理器(TM: Transaction Manager):代表治理全部事务的中心件法度榜样,为利用和资本治理器供给基础的事务节制办事。

一、利用(Application)、办事(Service)和组件(Component)

事务终极为用户法度榜样、办事和组件办事的,后者使用了事务这种特殊的机制将一组相关的操作作为一个弗成瓜分的整体来履行,从而确保了数据的同等性。在全部模型中,利用(办事或者利用,为了论述简练,后续部分关于利用、办事和组件都简称为利用)主要认真如下一些事务相关的义务:

开始事务:事务开始的驱动者老是利用,然则并不是所有的利用都邑开始一个新的事务,只有最初的利用才才是事务的开启者;

事务的赠予(Marshaling)和传播(Propagation):将利用的本地事务封送、传播给另一个利用或者资本治理器;

提交事务:事务的开启者同时也是事务终极的提交者,当事务相关的操作顺利完成后,最初开缘由务的利用会提交该事务。

二、资本治理器(RM:Resource Manager)

在事务节制模型中,不论是利用照样资本治理器都不是直接地造访详细的事务型资本,而是经由过程一其中介间接地对目标资本进行操作,这其中介便是资本治理器。按照目标资本是否可被持久化,可以将响应的资本治理器分为如下两类:

持久化资本治理器(Durable Resource Manager):用于治理持久化资本,比如数据库和MSMQ,当事务回滚得时刻,具有可规复性(Recovery);

易掉资本治理器(Volatile Resource Manager):用于治理像内存数据这样的不会被持久化的易掉资本,易掉资本不具有可以规复性。

在后面先容的实现散播式事务的两阶段提交(2PC: Two-Phase Commit)协议中,对付这两种不合的资本治理器,采纳不合的挂号(Enlist)要领。总的来说,资本治理器在全部事务模型中主要承担如下几种本能机能:

赞助利用实现对目标资本的操作;

注册到响应的事务治理器,以便事务回滚得时刻可以从事务治理器中接管到规复哀求,实现对数据的规复;

向响应的事务治理器申报本地事务的结果;

三、事务治理器(Transaction Manager)

事务治理器是全部事务节制模型的核心和枢纽,是它节制着事务的所有介入者,和谐剂个事务从开始到完成的所有相关处置惩罚流程。事务治理器为利用和资本治理器供给一系列核心的事务性的办事,实现事务的开始、提交和回滚。Windows供给了三种不合的事务治理器,我们现在对它们进行逐个先容。

1、轻量级事务治理器(LTM: Lightweight Transaction Manager)

正如其名称隐含的意思,轻量级事务治理器(以下简称澳门首家线上网址LTM)具有最小的负载,是机能最高的事务治理器。LTM的感化范围仅限于开缘由务的利用法度榜样域(AppDomain)中,并且挂号到事务中的持久化资本(Durable Resource)数量不能跨越一个。

一样平常地,被开启的事务就由LTM治理,假如事务涉及到跨利用法度榜样域的操作,当前的事务回被赠予、传播到另一个履行高低文中,此时势务将离开LTM的统领。此外,基于LTM的事务中可以同时挂号(Enlist)多个易掉型资本(Volatile),然则仅仅容许挂号独逐一个持久化资本。当第二个持久化资本被挂号到当前事务中,该事务也将离开LTM的统领。

并不是所有的持久化资本都可以挂号到LTM,实际上到今朝为止,能够挂号到LTM这么一个高机能的事务治理器的事务型资本仅仅限于SQL Server 2005和SQL Server 2008,纵然是同属于Windows平台下SQL Server 2000和MSMQ均不支持LTM,更不用说Oracle和DB2。我们盼望微软能够和其他的厂商进行相助,让第三方开拓的事务型资本也能使用LTM机能的上风。

2、内核事务治理器(KTM:Kernel transaction Manager)

内核事务治理器(以下简称KTM)在Windows Vista中被引入,并被用于后续的Windows Server 2008和Windows 7。引入KTM的主要的目的在于实现将文件治理和注册表治理纳入事务的范畴。借助于KTM,我们可以以事务的要领操作NTFS文件系统下的文件资本,以及注册表资本。我们将支持事务的文件澳门首家线上网址系统和注册表成为事务型的文件系统(TxF)和事务型注册表(TxR)。

之以是被称为内核事务治理器,使由于基于KTM的事务节制引擎运行在内核模式(Kernel Mode),而不是用户模式(User Mode)下。和LTM一样,KTM对易掉型事务资本没有限定,却至于单一的持久化事务资本被涉及。

从上面的先容我们不丢脸出,无论是LTM照样KTM,其统领范围仅限于本地事务,对付散播式事务却力所不及。散播式事务依附于一个更为强大年夜的事务治理器,便是我们接下来着重先容的散播式事务和谐器。

3、散播式事务和谐器(DTC:Distributed Transaction Coordinator)

对付散播式事务和谐器,我们大年夜都简称为DTC,或者MS DTC,以下我们直接简称DTC。DTC用于治理跨界限(跨利用法度榜样域、进程、机械以至跨收集)履行的散播式事务,它采纳响应的事务治理协议,比如 Ole-Tx和W澳门首家线上网址S-Atomic Transaction(WS-AT),和谐一个散播式事务中的所有介入者。

每一台机械上具有一个独一的DTC,事务涉及的承载于某台机械的所有事务型资本均由当前机械的DTC治理。当事务超过多台机械时,它们各自的DTC必要按照响应的协议互相协作,实现对全部事务的同等性治理。

4、事务提升(Transaction Promotion)

以上我们先容了三种不合的事务治理器类型,从功能上讲,DTC能够和谐、治理一个散播式事务涉及的所有事务型资本,而不管详细的资本散播于何处。然则,因为其事务节制的繁杂性(一样平常采纳两阶段提交协议)并必要进行跨进程、跨机械以致跨收集通信,在机能上无疑是最差的。以是,我们弗成能在任何事务场景中都采纳 DTC,所谓“牛刀虽好、不便杀鸡”,我们应该根据事务节制的必要选择机能最高的事务治理器。

然则,事务是一个动态履行的操作序列,系统弗成能预知完备履行全部事务所有操作后的资本挂号环境,以是弗成以预先为其指定一个为响应事务多身定制的事务治理器。相反地,只能在事务详细的履行历程中,动态地选择最得当当前事务履行环境的事务治理器。Windows采纳事务提升的机制进行事务治理器的选择。

一样平常环境下,事务开始的时刻,LTM默认被作为当前的事务治理器。跟着事务操作的慢慢履行,若何该事务涉及到对某个内核事务资本的造访,那么澳门首家线上网址自动提升到基于KTM的事务。无论是基于LTM照样KTM的事务,在当呈现如下两种环境的时刻,会向基于DTC事务提升:

事务操作涉及到对多个LTM资本的造访或者造访的资本不被LTM支持:比如说,当事务利用开启两个基于SQL Server 2008(LTM事务型资本)的连接进行数据存取;或者,造访开启一个基于Oracle(非LTM事务型资本)的连接进行数据存取;

当前事务被跨利用法度榜样域封送(Marshaling):比如说,放一个办事调用另一个办事的时刻,将当前事务进行序列化以实现向被调用办事方传播。

因为WCF的事务体系办理的是事务在办事之间的流转,以及对办事操作直接或者间接造访的所有事务型资本的协作,这样的事务时经由过程基于DTC的散播式事务实现的。接下来,我们就来简单评论争论一下《基于DTC的散播式事务实现的》。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: