一种云数据库中分布式事务的实现方法技术

技术编号:9668079 阅读:186 留言:0更新日期:2014-02-14 06:40
本发明专利技术提供一种云数据库中分布式事务的实现方法,该方法包括数据节点执行下发的命令并将执行的结果返回给事务交易控制器,事务交易控制器调取事务交易结果分析器,通过事务交易结果分析器按照预先设定的规则判断该被选取的数据节点执行命令是否成功,若成功,事务交易控制器给客户端一个命令执行成功的响应;若不成功,则选择新的数据节点重新执行命令;使用本发明专利技术方法构建的云数据库系统将增强存储数据的完整性,可用性,一致性,以及系统的健壮性。

【技术实现步骤摘要】

本专利技术涉及事务处理
,尤其涉及。
技术介绍
云数据库是将物理上分散的多个数据单元(即数据节点)连接起来组成的一个逻辑上统一的数据库,而分布式数据库同单个数据节点相比,有较大差别。其中一个较大差别为事务的处理方式。目前现有的分布式事务处理方式主要有以下两种:第一,把事务分别放到每个数据节点上操作,分别由每个数据节点控制自己的事务,当数据节点执行事务完毕后,客户端发送提交命令,各个数据节点分别提交。然而,当事务操作分别下发至每个数据节点,由节点单独控制,一旦有某个数据节点执行事务失败回滚,而其他数据节点执行事务成功提交,则将造成数据丢失或形成脏数据。第二,基于两阶段提交方式,当应用开启事务时,分布式数据系统中代理端开启各个节点的分布式事务,当客户端提交事务时,代理端询问每个数据节点是否可以提交事务,当代理端得到所有数据节点的肯定回复时,客户端下发统一提交命令,各个数据节点提交事务。基于两阶段事务提交方式,当参与事务中任意一个数据节点事务失败,要求事务回滚后,全局事务失败,其他数据节点事务回滚,分布式数据系统对外宣布事务失败。
技术实现思路
本专利技术的目的在于解决上述现有技术存在的缺陷,提供一种云数据库中高可用的分布式事务的实现方法。,以一个节点组为一个节点组池,每个节点组里包括至少2个数据相同的数据节点,包括以下步骤:步骤一、代理端根据客户端的请求开启事务交易存储器、事务交易结果分析器、事务交易控制器;所述事务交易存储器用于存储客户端下发的命令、所述事务交易结果分析器用于分析数据节点执行命令的结果;所述事务交易控制器用于控制各个数据节点的分布式事务、以及用于调取事务交易存储器存储的命令、调取事务交易结果分析器的分析结果;步骤二、事务交易控制器判断节点组中是否有未开启过分布式事务的数据节点;如果有,事务交易控制器从节点组中任意选取一个未开启过分布式事务的数据节点并进入步骤三;如果无,则对外宣布失败;步骤三、事务交易控制器判断被选取的数据节点将要执行的命令是之前出错需要重新执行的命令还是一条新的命令将要执行,如果是一条新的命令将要执行,则进入步骤四;如果是之前出错需要重新执行的命令,那么事务交易控制器从事务交易存储器中取出客户端之前下发给该数据节点所属的节点组的所有命令,并按客户端下发的顺序将这些命令重新下发给新选取的未开启过分布式事务的数据节点,然后进入步骤五;步骤四、事务交易控制器将命令下发至被选取的数据节点并将该条命令通过事务交易存储器进行存储;步骤五、数据节点执行下发的命令并将执行的结果返回给事务交易控制器;步骤六、事务交易控制器调取事务交易结果分析器,通过事务交易结果分析器按照预先设定的规则判断该被选取的数据节点执行命令是否成功,若成功,事务交易控制器给客户端一个命令执行成功的响应,然后进入步骤七;若不成功,则返回步骤二 ;步骤七、在上一条命令执行成功的数据节点的基础上,根据客户端逐次下发的命令逐次反复执行步骤二至六,直到所有的命令下发完毕;步骤八、事务交易控制器根据客户端下发的提交命令调取事务交易结果分析器,通过交易结果分析器按照预先设定的规则判断数据节点执行提交命令是否成功,若成功,则进入步骤九;若不成功,返回步骤二 ;步骤九、事务交易控制器给客户端一个提交命令成功的响应。进一步地,如上所述云数据库中分布式事务的实现方法,以至少2个节点组为一个节点组池,每个节点组里包括至少2个数据相同的数据节点,所述步骤一包括代理端根据客户端的请求开启事务交易存储器、事务交易结果分析器、事务交易控制器、事务交易拆分器;所述事务交易拆分器用于将客户端下发的命令拆分为各个节点组对应的分命令;在所述步骤三之后,还包括步骤A ;步骤A、事务交易拆分器将客户端下发的命令拆分为各个节点组对应的分命令;所述步骤四包括事务交易控制器将各个分命令分别下发至各个节点组中被选取的数据节点、并且将各个分命令按与节点组的对应关系存储在事务交易存储器中。进一步地,如上所述云数据库中分布式事务的实现方法,所述步骤八包括以下步骤:步骤B、根据客户端下发的提交命令,事务交易拆分器将所述提交命令拆分为各个节点组对应的分提交命令;步骤C、事务交易拆分器将各个分提交命令分别下发至对应的节点组,同时将各个分提交命令置于事务交易存储器按与节点组的对应关系进行存储;步骤D、在之前所有命令执行成功的数据节点的基础上,继续执行当前分提交命令,并将执行结果返回给事务交易控制器;步骤E、事务交易控制器调取事务交易结果分析器,通过事务交易结果分析器按照预先设定的规则分析数据节点执行当前分提交命令是否成功,若成功,则进入步骤九;若不成功,返回步骤二。进一步地,如上所述云数据库中分布式事务的实现方法,在步骤二之前,还包括步骤F:步骤F、事务交易控制器判断节点组池中是否有需要的节点组,若有,则进入步骤二,若无,则对外宣布失败。进一步地,如上所述云数据库中分布式事务的实现方法,包括至少一个事务交易控制器,每个事务交易控制器对应至少一个数据节点,每个事务交易控制器对应的数据节点不可交叉对应至其他事务交易控制器对应的数据节点。进一步地,如上所述云数据库中分布式事务的实现方法,代理端包括至少2个事务交易存储器,每个事务交易存储器不可重复存储客户端下发的命令。进一步地,如上所述云数据库中分布式事务的实现方法,包括至少2个事务交易结果分析器,每个事务交易结果分析器不可分析同一个数据节点的同一个执行结果。进一步地,如上所述云数据库中分布式事务的实现方法,包括至少2个事务交易拆分器,每个事务交易拆分器不可拆分客户端下发的同一条命令。进一步地,如上所述云数据库中分布式事务的实现方法,所述预先设定的规则包括:数据节点是否在线、数据节点命令是否可到达、数据节点命令执行是否超时、数据节点是否拒绝执行命令、数据节点响应与设定结果不符。进一步地,如上所述云数据库中分布式事务的实现方法,当数据节点响应结果与设定不符时,事务交易控制器从节点组中删除该数据节点;当出现剩余情形时,事务交易控制器回滚该数据节点,并关闭该数据节点的分布式事务,同时标示出该数据节点不可用。本专利技术提供的云数据库中分布式事务的实现方法,提高了云数据库中分布式事务的高可用性,而分布式事务的高可用性增强了客户端应用系统的高可用性,从而提高了用户体验。使用本专利技术方法构建的云数据库系统将增强存储数据的完整性,可用性,一致性,以及系统的健壮性。【附图说明】图1为本专利技术云数据库中分布式事务的实现方法流程图;图2为本专利技术云数据库中分布式事务实现系统结构图。【具体实施方式】为使本专利技术的目的、技术方案和优点更加清楚,下面将结合本专利技术中的附图,对本专利技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。实施例1:附图1为本专利技术云数据库中分布式事务的实现方法流程图,如图1所示,本实施例一个节点组池中只有一个节点组,一个节点组里包括至少2个数据相同的数据节点,该方法包括以下步骤:步骤101:代理端根据客户端的请求开启事务交易存储器、事务交易结果分析器、事务交易控制器;所本文档来自技高网...

【技术保护点】
一种云数据库中分布式事务的实现方法,其特征在于,以一个节点组为一个节点组池,每个节点组里包括至少2个数据相同的数据节点,包括以下步骤:步骤一、代理端根据客户端的请求开启事务交易存储器、事务交易结果分析器、事务交易控制器;所述事务交易存储器用于存储客户端下发的命令、所述事务交易结果分析器用于分析数据节点执行命令的结果;所述事务交易控制器用于控制各个数据节点的分布式事务、以及用于调取事务交易存储器存储的命令、调取事务交易结果分析器的分析结果;步骤二、事务交易控制器判断节点组中是否有未开启过分布式事务的数据节点;如果有,事务交易控制器从节点组中任意选取一个未开启过分布式事务的数据节点并进入步骤三;如果无,则对外宣布失败;步骤三、事务交易控制器判断被选取的数据节点将要执行的命令是之前出错需要重新执行的命令还是一条新的命令将要执行,如果是一条新的命令将要执行,则进入步骤四;如果是之前出错需要重新执行的命令,那么事务交易控制器从事务交易存储器中取出客户端之前下发给该数据节点所属的节点组的所有命令,并按客户端下发的顺序将这些命令重新下发给新选取的未开启过分布式事务的数据节点,然后进入步骤五;步骤四、事务交易控制器将命令下发至被选取的数据节点并将该条命令通过事务交易存储器进行存储;步骤五、数据节点执行下发的命令并将执行的结果返回给事务交易控制器;步骤六、事务交易控制器调取事务交易结果分析器,通过事务交易结果分析器按照预先设定的规则判断该被选取的数据节点执行命令是否成功,若成功,事务交易控制器给客户端一个命令执行成功的响应,然后进入步骤七;若不成功,则返回步骤二;步骤七、在上一条命令执行成功的数据节点的基础上,根据客户端逐次下发的命令逐次反复执行步骤二至六,直到所有的命令下发完毕;步骤八、事务交易控制器根据客户端下发的提交命令调取事务交易结果分析器,通过交易结果分析器按照预先设定的规则判断数据节点执行提 交命令是否成功,若成功,则进入步骤九;若不成功,返回步骤二;步骤九、事务交易控制器给客户端一个提交命令成功的响应。...

【技术特征摘要】
1.一种云数据库中分布式事务的实现方法,其特征在于,以一个节点组为一个节点组池,每个节点组里包括至少2个数据相同的数据节点,包括以下步骤: 步骤一、代理端根据客户端的请求开启事务交易存储器、事务交易结果分析器、事务交易控制器;所述事务交易存储器用于存储客户端下发的命令、所述事务交易结果分析器用于分析数据节点执行命令的结果;所述事务交易控制器用于控制各个数据节点的分布式事务、以及用于调取事务交易存储器存储的命令、调取事务交易结果分析器的分析结果;步骤二、事务交易控制器判断节点组中是否有未开启过分布式事务的数据节点;如果有,事务交易控制器从节点组中任意选取一个未开启过分布式事务的数据节点并进入步骤三;如果无,则对外宣布失败; 步骤三、事务交易控制器判断被选取的数据节点将要执行的命令是之前出错需要重新执行的命令还是一条新的命令将要执行,如果是一条新的命令将要执行,则进入步骤四;如果是之前出错需要重新执行的命令,那么事务交易控制器从事务交易存储器中取出客户端之前下发给该数据节点所属的节点组的所有命令,并按客户端下发的顺序将这些命令重新下发给新选取的未开启过分布式事务的数据节点,然后进入步骤五; 步骤四、事务交易控制器将命令下发至被选取的数据节点并将该条命令通过事务交易存储器进行存储; 步骤五、数据节点执行下发的命令并将执行的结果返回给事务交易控制器; 步骤六、事务交易控制器调取事务交易结果分析器,通过事务交易结果分析器按照预先设定的规则判断该被选取的数据节点执行命令是否成功,若成功,事务交易控制器给客户端一个命令执行成功的响应,然后进入步骤七;若不成功,则返回步骤二 ; 步骤七、在上一条命令执行成功的数据节点的基础上,根据客户端逐次下发的命令逐次反复执行步骤二至六,直到所有的命令下发完毕; 步骤八、事务交易控制器根据客户端下发的提交命令调取事务交易结果分析器,通过交易结果分析器按照预先设定的规则判断数据节点执行提交命令是否成功,若成功,则进入步骤九;若不成功,返回步骤二 ; 步骤九、事务交易控制器给客户端一个提交命令成功的响应。2.根据权利要求1所述的云数据库中分布式事务的实现方法,其特征在于,以至少2个节点组为一个节点组池,每个节点组里包括至少2个数据相同的数据节点,所述步骤一包括代理端根据客户端的请求开启事务交易存储器、事务交易结果分析器、事务交易控制器、事务交易拆分器;所述事务交易拆分器用于将客户端下发的命令拆分为各个节点组对应的分命令; 在所述步骤三之后,还包括步骤A ; 步骤A、事务交易...

【专利技术属性】
技术研发人员:马军石辉裴文斌曹玉清王俊民
申请(专利权)人:西安雷迪维护系统设备有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1