分布式交易方法及其系统的制作方法

文档序号:7917823阅读:154来源:国知局
专利名称:分布式交易方法及其系统的制作方法
技术领域
本发明涉及数据处理技术,特别涉及一种分布式交易方法及其系统。
背景技术
伴随着网络技术的发展,资源共享逐渐成为网络用户的主要需求,从而也成为网络技术的重要推动力。随着网络规模的不断扩展,用户数量以及数据通讯量迅速增长,传统的集中式网络服务器的存储空间和数据处理能力成为制约网络发展的瓶颈。为了解决上述问题,分布式网络技术获得了越来越多的关注。在分布式网络中,网络拓扑结构成分布式结构,每个节点对应一个具体实例。共享资源分布在网络中的各个实例中,网络中不再存在集中式的服务器节点,各实例之间为逻辑对等的网络节点,资源的共享、数据的传输均在这些对等的实例之间直接进行,从而避免了集中式网络因为中心节点集中存储、处理数据而造成的瓶颈问题。然而,在分布式网络中,所述资源共享在实例之间直接进行的方式也引入了一系列问题,其中之一就是分布式交易的处理。通常一个会话由多个交易事务组成,与传统的交易方式不同,各实例在处理交易时,具有各自独立性,如何保证整个会话的数据完整性以及系统如何追踪交易进程使其可控是一个需要解决的问题。

发明内容
本发明目的是提供一种分布式交易方法及其系统,在交易中保持会话过程中数据完整性以及交易进程的可控性。本发明的一种分布式交易系统,包括通过支持广播方式的高速互连网络相互连接的若干实例以及会话服务器;所述会话服务器接收来自外部访问者的会话请求,并根据所述会话请求生成操作队列关联;所述实例包括会话管理器,所述会话管理器接收来自会话服务器的操作队列关联,并根据所述操作队列关联控制本实例按序操作会话中的交易事务。可选的,所述会话服务器根据会话请求从所述实例中选定用于管理操作实例执行交易事务操作的协调实例;当实例被选定为协调实例时,其会话管理器还用于协调并控制参与会话的操作实例执行交易事务的操作,包括控制操作实例执行交易事务、提交交易事务的操作结果或回滚至交易事务开始之前的状态。可选的,所述会话服务器转发会话发起端的操控指令,管理参与会话的实例,包括开始执行交易事务、提交交易事务的操作结果以及回滚至交易事务开始之前的状态。本发明还提供了一种采用上述系统的分布式交易方法,包括所述分布式交易系统从外部接收会话请求,产生用于控制操作实例按序执行交易事务的操作队列关联,并选取协调实例来协调管理操作实例执行会话中的交易事务;所述协调管理操作实例包括控制操作实例提交交易事务的操作结果或回滚至交易事务开始前的状态。可选的,所述选取协调实例包括分布式交易系统的会话服务器从外部访问者接收会话请求后,根据监控当前网络中的实例负载情况,获取一组实例列表,且该实例列表中均为非操作实例;然后从列表中随机选取一个非操作实例作为协调实例。可选的,所述协调实例向操作实例发出执行指令,使得所述参与会话的各操作实例根据操作队列关联按序执行交易事务,并在执行交易事务后,向协调实例发送操作结果, 进入等待状态。可选的,所述会话过程中,当操作实例执行交易事务超时,未反馈操作结果,协调实例视该操作实例执行交易事务失败。可选的,所述会话过程中,当存在操作实例执行交易事务失败时,协调实例指示所有操作实例回滚。可选的,当所有操作实例进入等待状态,所述协调实例根据外部访问者的请求向各操作实例发送提交或者回滚指令。本发明提供的另一种分布式交易方法,包括所述分布式交易系统从会话发起端接收会话请求,产生用于控制操作实例按序执行交易事务的操作队列关联,并转发来自于会话发起端的控制指令;所述控制指令包括控制参与会话的实例执行交易事务的执行指令,控制所述实例提交交易事务的操作结果的提交指令以及回滚至交易事务开始前状态的回滚指令。可选的,所述会话发起端发出执行指令时,会话服务器根据操作队列关联将所述执行指令发送至参与会话的实例,使其根据操作队列关联按序执行交易事务的操作,并在执行交易事务后,向会话发起端发送操作结果。可选的,所述会话过程中,当存在实例执行交易事务失败,会话发起端发出回滚指令使得所有操作实例回滚;反之,若所有实例执行交易事务成功,则发出提交指令。本发明具有以下优点本发明所述分布式交易方法,即使会话过程中产生部分交易事务的失败,也能够回滚到初始状态,而不会影响数据的正确性,便于进行后续的其他会话操作。


图1是本发明分布式交易系统的框架示意图;图2是本发明实施例分布式交易系统的示意图;图3是第一实施例的分布式交易方法示意图;图4是第二实施例的分布式交易方法示意图。
具体实施例方式为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合本发明的分布式交易方法及其系统的具体实施方式
做详细的说明。本发明的分布式交易方法依附于分布式交易系统进行,如图1所示,本发明所述分布式交易系统包括通过支持广播方式的高速互连网络相互连接的若干实例以及会话服务器;所述会话服务器接收来自外部的会话请求,产生操作队列关联(操作队列关联包括会话中各交易事务之间的关联信息,例如交易事务的从属关系、执行顺序等);所述实例包括一台会话管理器(Session),所述会话管理器接收来自会话服务器的操作队列关联,并根据所述操作队列关联管理实例按序操作会话中的交易事务;当某一实例被选定为协调实例时,该实例的会话管理器还可以协调并控制其他实例执行交易事务的操作,包括提交交易事务的操作结果或者回滚至交易事务开始之前的状态。通常在一个会话中包括多个交易事务,每个交易事务由实例来进行操作,多个实例承担该次会话,而各个实例在操作执行交易事务时具有ACDI特性所述A⑶I特性包括原子性(Atomicity)整个交易事务的操作,要么完成,要么不完成,不停滞在中间状态。当交易事务的执行过程中发生错误时,可以被回滚至交易事务开始前的状态,即视为该交易事务从未执行过。一致性(Consistency):在交易事务开始前以及交易事务结束后,保持实例中存储数据的完整性约束不被破坏。隔离性(Isolation)两个交易事务之间是相互独立,不干扰的,一个交易事务不会看到其他交易事务的运行时,某一个中间数据。持久性(Durability)在交易事务完成后,该交易事务对实例中数据所做的更改便持久保存,并不会被回滚。进一步的,上述ACDI特性是基于快照事务模型而实现的,在分布式交易系统的一个实例内部,所有用于执行交易事务的数据对象可以用一个标识符0ID(0bject ID)来标识,对象索引是一个以OID为下标的数组,记录了数据对象的类型和地址。为了进行事务的回滚,恢复原有数据,实例中保存有两份对象索引当前工作索引和影子索引。在实体集头部保存有两份索引的指针和一个标识符,指明哪个索引是当前工作索引。在交易事务的执行过程中,为每个需要修改的数据对象分配一个0ID。当前工作索引中的该OID的记录存放被修改对象的地址指针,同时为该数据对象建立一个拷贝,影子索引中该OID的记录存放着拷贝的地址指针,所有的修改都在被修改的对象上进行而保持对象拷贝的内容不变。在交易事务提交的时候,释放掉影子索引中的OID指向的地址空间对象拷贝,然后将当前工作索引和影子索引清除,所有对数据的修改生效。在交易事务需要回滚的时候,将影子索引中的OID指向的地址空间的内容对象拷贝到当前工作索引中的OID指向的地址空间对象,释放掉影子索引中的OID指向的地址空间对象拷贝,然后当前工作索引和影子索引清除,所有对数据的修改被消除。对交易事务处理中被修改的数据对象的数量可以做合理的限制,这样可以控制当前工作索引和影子索引的大小。此外,会话中的交易事务还可以嵌套构成主、从事务,当一个交易事务为子事务时,它是否能够成功完成影响包含其的上级事务的提交,但是上级事务是否完成并不影响已经提交的子事务。在实际的会话操作中,分布式交易系统可以采用多种分布式交易架构。第一实施例作为一个可选实施例,本发明所述分布式交易方法可以采用两阶段提交模式的事务架构,具体包括
当外部访问者向分布式交易系统发起会话时,首先会话请求发送至会话服务器, 由其产生操作队列关联,并随机选取一个实例,使得该次会话依附于该实例进行(定义为协调实例,管理会话操作),该实例在整个会话过程中仅对参与操作交易事务的实例(定义为操作实例)起到协调作用,而自身并不参与交易事务的操作;且会话不允许在实例中转移,当该实例失效时,依附于该实例的会话也将被取消。当会话的交易事务被分配至相应操作实例后,执行如下操作第一阶段,协调实例根据操作队列关联向操作实例发送执行指令,操作实例执行交易事务可能成功也可能失败,失败原因有很多,可能因为网络障碍,也可能因为本地数据存在异常。各执行交易事务操作的操作实例要么直接返回失败,要么在本地完成交易事务但不提交,达到待提交状态,保持ACDI特性中的原子性。第二阶段,如果协调实例收到了操作实例的失败信息或者超时未收到任何处理结果,则直接给所有操作实例发送回滚指令,重新回到会话开始前的状态;如果所有操作实例进入待提交状态,协调实例将根据来自外部访问者的控制指令,向操作实例发送提交指令或者回滚指令,由各操作实例自行提交交易事务结果或回滚至初始状态。图2为本发明实施例分布式交易系统的示意图。图3为本发明第一实施例分布式交易方法的示意图。结合图2以及图3所示,假设某一会话包括两层交易事务A、交易事务B、交易事务 C以及交易事务D ;其中,交易事务C与交易事务D为交易事务A的子事务;即仅有当交易事务C与交易事务D均提交后,交易事务A才能够成功提交,而交易事务A与交易事务B成功提交后,该次会话才算完成。当外部访问者访问分布式交易系统时,首先向会话服务器发起上述会话请求,所述会话服务器产生会话操作队列关联,并随机指定实例0作为协调实例,而实例1、实例2、 实例3以及实例4作为操作实例,分别执行上述交易事务A、交易事务B、交易事务C以及交易事务D的操作。同时,各实例的会话管理器会接收来自会话服务器的操作队列关联决定各交易事务的执行顺序。例如,由于交易事务B与交易事务C为交易事务A的子事务,后者的操作执行必须基于前两者的完成提交,因此上述交易事务存在先后的操作执行的顺序。所述会话服务器指定协调实例,可以是无限定条件从其他非操作实例中随机选取的,也可以是根据监控当前分布式网络中的实例负载情况(所谓负载指硬件负载,例如该节点数据流量、执行任务的进程数目等),选取的负载较轻的实例承担协调实例的任务。具体的,可以预先设定硬件的负载值,会话服务器对低于该负载值的实例列表,且该实例列表中的实例均为非操作实例,从中随机选取一个作为协调实例。需要指出的是,操作实例并非随机选定的,而是根据会话的要求选择需要进行交易事务的实例,这是因为会话的交易事务的执行实质是数据的处理以及流动,而数据是依托于实例存储的。某个交易事务的执行,必须由存储有进行该交易事务操作所需数据的实例来完成。当会话开始后,作为协调实例的实例0向所有操作实例(实例1、实例2、实例3以及实例4)发出执行指令(由协调实例的会话管理器根据来自会话服务器的操作队列关联处理),各操作实例执行会话服务器指派的交易事务,并在交易事务完成后向协调实例反馈
7已成功待提交或已失败的信息。假设在执行过程中,某个操作实例返回操作失败的信息,或者经过规定时间也未有任何反馈(超时),同样将被协调实例视为执行失败。虽然其他操作实例的交易事务均执行成功,但此次会话已经无法完成,而其他操作实例中数据已经完成了处理或者移动,为了保证数据的完整性,便于后续其他会话的进行,协调实例将向各操作实例发出回滚指令,所有操作实例回复到会话开始前的数据状态,即视此次会话未执行。假设各操作实例均完成交易事务,并向协调实例反馈操作已成功,便进入了待提交状态。此时协调实例,将根据外部访问者的请求,决定是否提交以完成本次会话。例如, 当外部访问者发出提交的指示,所述实例O向实例1、实例2、实例3以及实例4发出提交指令,由于实例1进行的交易事务A是否能够成功提交还取决于实例2以及实例3的提交结果,故各实例的成功提交具有先后的顺序,当所有实例均成功提交后,该次会话便完成。假如外部访问者因为其他原因放弃此次会话,所述实例0向实例1、实例2、实例3以及实例4 发出回滚指令,所有操作实例同样回复到会话开始前的数据状态,视此次会话未执行。在会话完成或者回滚放弃执行后,所述会话服务器即清除缓存中的所有的指令信息,例如操作队列关联、来自外部访问者的会话请求等。分布式交易系统重新回到待会话的状态。而其中未参与该次会话的实例,始终与该次会话的操作无关,保证了会话的隔离性。第二实施例作为另一个可选实施例,本发明所述分布式交易方法还可以采用 TCC(Try-Commit-Cancel)模式事务架构,其中TCC缩写的含义T :try,它是一种试图去完成当前交易事务结点下的操作,它是事务提交或回滚之前做的所有动作。C :Commit,交易事务提交的操作。Chancel,交易事务回滚的操作。这些动作也就是一个完整的TCC的事务服务,上述三个动作都由一个交易事务上下文的ID来关联,当try执行完后,操作实例不会提交本地的事务,而是把事务现场(所谓事务现场指代当前实例内存储或处理的数据现状,也即执行完try后的数据状态),根据key (事务)-value (事务现场)的形式保存起来, 通过另一个commit或cancel操作来提交或回滚本地交易事务。这时操作实例根据交易事务的ID找到事务现场,然后提交或回滚本地事务。图4为本发明第二实施例分布式交易方法的示意图。如图4所示,当需要在分布式交易系统的多个实例中完成多个交易事务的时候,可按以下步骤进行1.会话发起端(类似于第一实施例的外部访问者)开始一个包括多个交易事务的会话,并对应各交易事务生成事务ID ;2.会话发起端进行try操作,将所述事务ID发送到分布式交易系统中的不同实例中;(需要借助分布式交易系统的会话服务器)3.实例收到事务ID后,开始执行相应的交易事务,并保存所述交易事务上下文和事务ID的对应关系;上述过程即会话发起端通过会话服务器向参与会话的实例转发执行指令,且执行过程需要依据会话服务器产生的操作队列关联。4.会话发起端根据try操作的结果,进行commit或cancel操作;具体的,实例向会话发起端返回交易事务的操作结果,由于没有等待状态,会话发起端是直接根据返回的结果发出提交指令或回滚指令的;例如,当会话过程中,存在操作实例执行交易事务失败,会话发起端发出回滚指令,使得所有实例回滚,反之则发出提交指令。5.实例根据接收到的事务ID,找到对应的事务上下文,并进行提交或回滚;6.事务提交或回滚完成。需要指出的是,以上步骤仅仅说明了本实施例分布交易方法的架构模型工作原理,为便于示意,图4中省略了会话服务器;但实际上,会话发起端,也即第一实施例中外部访问者,需要通过分布式交易系统中的会话服务器,并依据其产生的操作关联队列,向各参与事务的实例发送相关控制指令(try、c0mmit、cancel等操作),各控制指令对应的控制结果与第一实施例是相似的。上述分布式交易方法与第一实施例采用相同的分布式交易系统,但在具体执行交易事务的方式上存在差异;具体的,本实施例的分布式交易方法并不需要指派协调实例对其他实例的交易事务进行协调监控,而是直接由会话发起端也即第一实施例中的外部访问者通过会话服务器发出控制指令,控制各参与会话的实例的动作。同二阶段提交模式的事务模型相比,TCC模式的事务架构中会话服务器协助外部访问者管控会话,而无需产生协调实例,架构简单性能较好。实际操作可根据分布式交易系统的具体应用,而决定采用哪种事务模型。综上所述,本发明实施例所述分布式交易方法,均能够保证会话的数据完整性,即使会话过程中产生部分交易事务的失败,也能够回到初始状态,而不会影响数据的正确性, 便于进行后续的其他会话操作。另一方面,通过两阶段提交的交易方式,保证了整个会话过程的进程可控性,使得外部访问者能够介入并控制会话进程。本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
权利要求
1.一种分布式交易系统,其特征在于,包括通过支持广播方式的高速互连网络相互连接的若干实例以及会话服务器;所述会话服务器接收来自外部访问者的会话请求,并根据所述会话请求生成操作队列关联;所述实例包括会话管理器,所述会话管理器接收来自会话服务器的操作队列关联,并根据所述操作队列关联控制本实例按序操作会话中的交易事务。
2.如权利要求1所述的分布式交易系统,其特征在于,所述会话服务器根据会话请求从所述实例中选定用于管理操作实例执行交易事务操作的协调实例;当实例被选定为协调实例时,其会话管理器还用于协调并控制参与会话的操作实例执行交易事务的操作,包括控制操作实例执行交易事务、提交交易事务的操作结果或回滚至交易事务开始之前的状态。
3.如权利要求1所述的分布式交易系统,其特征在于,所述会话服务器转发会话发起端的操控指令,管理参与会话的实例,包括开始执行交易事务、提交交易事务的操作结果以及回滚至交易事务开始之前的状态。
4.一种采用权利要求1所述系统的分布式交易方法,其特征在于,包括所述分布式交易系统从外部接收会话请求,产生用于控制操作实例按序执行交易事务的操作队列关联, 并选取协调实例来协调管理操作实例执行会话中的交易事务;所述协调管理操作实例包括控制操作实例提交交易事务的操作结果或回滚至交易事务开始前的状态。
5.如权利要求4所述的分布式交易方法,其特征在于,所述选取协调实例包括分布式交易系统的会话服务器从外部访问者接收会话请求后,根据监控当前网络中的实例负载情况,获取一组实例列表,且该实例列表中均为非操作实例;然后从列表中随机选取一个非操作实例作为协调实例。
6.如权利要求4所述的分布式交易方法,其特征在于,还包括所述协调实例向操作实例发出执行指令,使得所述参与会话的各操作实例根据操作队列关联按序执行交易事务, 并在执行交易事务后,向协调实例发送操作结果,进入等待状态。
7.如权利要求6所述的分布式交易方法,其特征在于,所述会话过程中,当操作实例执行交易事务超时,未反馈操作结果,协调实例视该操作实例执行交易事务失败。
8.如权利要求6或7所述的分布式交易方法,其特征在于,所述会话过程中,当存在操作实例执行交易事务失败时,协调实例指示所有操作实例回滚。
9.如权利要求6所述的分布式交易方法,其特征在于,当所有操作实例进入等待状态, 所述协调实例根据外部访问者的请求向各操作实例发送提交或者回滚指令。
10.一种采用权利要求1所述系统的分布式交易方法,其特征在于,包括所述分布式交易系统从会话发起端接收会话请求,产生用于控制操作实例按序执行交易事务的操作队列关联,并转发来自于会话发起端的控制指令;所述控制指令包括控制参与会话的实例执行交易事务的执行指令,控制所述实例提交交易事务的操作结果的提交指令以及回滚至交易事务开始前状态的回滚指令。
11.如权利要求10所述的分布式交易方法,其特征在于,所述会话发起端发出执行指令时,会话服务器根据操作队列关联将所述执行指令发送至参与会话的实例,使其根据操作队列关联按序执行交易事务的操作,并在执行交易事务后,向会话发起端发送操作结果。
12.如权利要求11所述的分布式交易方法,其特征在于,所述会话过程中,当存在实例执行交易事务失败,会话发起端发出回滚指令使得所有操作实例回滚;反之,若所有实例执行交易事务成功,则发出提交指令。
全文摘要
本发明提供了分布式交易方法及其系统,所述分布式交易系统包括通过支持广播方式的高速互连网络相互连接的若干实例以及会话服务器;所述会话服务器接收来自外部访问者的会话请求,并根据所述会话请求生成操作队列关联;所述实例包括会话管理器,所述会话管理器接收来自会话服务器的操作队列关联,并根据所述操作队列关联控制本实例按序操作会话中的交易事务。本发明所述分布交易系统在进行分布式交易时,即使会话过程中产生部分交易事务的失败,也能够回滚到初始状态,而不会影响数据的正确性,便于进行后续的其他会话操作。
文档编号H04L29/08GK102413166SQ201110283510
公开日2012年4月11日 申请日期2011年9月22日 优先权日2011年9月22日
发明者虞钢 申请人:上海西本网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1