分布式事务中的非阻塞注册的制作方法

文档序号:10517831阅读:230来源:国知局
分布式事务中的非阻塞注册的制作方法
【专利摘要】本文描述一种用于事务注册的方法。该方法包括:向事务管理器发送对事务的注册请求。该方法还在数据服务器上执行数据访问。该注册请求对数据访问是非阻塞的。该方法进一步包括如果该注册请求被接受,则执行该数据服务器的两阶段提交过程。此外,该方法包括如果该事务注册被拒绝,则应对回滚。
【专利说明】
分布式事务中的非阻塞注册
【背景技术】
[0001]横向扩展是用于在分布式计算环境中处理大数据的常用方法。横向扩展涉及在多个数据库服务器之间分割数据。利用被分割的数据,每个数据库服务器可以处理它的数据分割。以这种方式,通过在多个数据库服务器上运行事务的多个应用服务进程,可以获得并行性和负载均衡的效率。
[0002]将传统关系数据库系统和大数据平台组在一起以通过透明的和事务性的方式为顾客提供数据中心方案,越来越受关注。该大数据环境是分布式系统,在该分布式系统中可能存在数百个或数千个数据服务器。使大量数据服务器与复杂事务和混合工作负荷环境相协调是一种挑战。
【附图说明】
[0003]在下面的【具体实施方式】中并且参照附图描述特定示例,其中:
[0004]图1是根据示例的用于分布式事务中的非阻塞注册的系统的框图;
[0005]图2是根据示例的用于分布式事务中的非阻塞注册的示例流程的框图;
[0006]图3是根据示例的用于分布式事务的应用服务进程中的注册拒绝和内部回滚的流程的框图;
[0007]图4是根据示例的用于分布式事务中的非阻塞注册的示例方法的方法流程图;
[0008]图5是根据示例的可以对分布式事务中的非阻塞注册使用的示例系统的框图;以及
[0009]图6是根据示例的示出示例有形非暂时性机器可读介质的框图,该示例有形非暂时性机器可读介质存储适用于分布式事务中的非阻塞注册的代码。
【具体实施方式】
[0010]在分布式事务中,每个数据库服务器包括在处理其分割以前向事务注册的过程。注册涉及批准用于参与事务的进程。注册启用两阶段的提交协议,借此在该事务之下运行的所有进程得到相同结论,以或者提交由每个进程执行的改变,或者将它们全部回滚,即撤销改变。在第一阶段中,每个进程投票,即向事务管理器告知要提交进程改变还是要回滚进程改变。在第二阶段中,根据该投票的结果,提交或回滚事务。
[0011]典型地,注册阻止该进程修改其数据,直到批准该注册为止。然而,由于事务可能包括对其进行操作的数千个进程,所以注册延迟了该事务中许多的实际处理。本文描述的技术的实施例包括非阻塞事务注册方法,该非阻塞事务注册方法允许每个进程在注册完成之前继续,从而为整个事务节省时间。
[0012]图1是根据示例的用于分布式事务中的非阻塞注册的系统100的框图。系统100包括事务管理器102、数据服务器104、应用服务进程106以及应用主管器108。数据服务器104包括资源管理器,该资源管理器具有用于事务控制110和数据访问112的组件。资源管理器的示例是数据库管理系统。应用主管器108是发起该分布式事务的控制逻辑。事务或查询通常由主/子服务进程106执行,主/子服务进程106通过数据服务器进程并行访问数据。这种进程管理和数据移动的拓扑典型地由数据库管理系统查询优化器来规划。
[0013]应用主管器108通过从事务管理器102获取唯一的事务标识符来启动事务。所有接下来的数据访问和更新均基于该标识符。典型地,该应用主管器108通过启动很多子进程(即应用服务进程106))来执行该事务,并且将这些子进程协调为对该事务并行操作,以改进处理时间。该事务标识符被传递至应用服务进程106,应用服务进程106使用该标识符来与数据服务器104通信,并且实施事务的原子性、一致性、隔离性和持久性(ACID)的属性。
[0014]当数据服务器进程(例如,数据访问112)看到新的事务时,事务控制模块110向事务管理器102请求加入该事务的许可,因此事务控制模块110(作为资源管理器)可以被加入在该事务中并且参与该两阶段提交协议。此外,内部回滚机制应对注册失败,这样确保该事务的ACID属性。
[0015]如果进程106中的任何进程的注册失败,则整个事务被回滚。取代将事务从事务管理器102推入所有数据服务器104中,当数据服务器104首次看到事务时,该数据服务器将分布式事务从事务管理器102中拉出。以此方式,仅仅参与事务的数据服务器104牵涉在该两阶段提交处理中。
[0016]此外,在返回注册结果之前,数据服务器104针对那个事务处理任何到来的工作。这能够实现数据服务器104的更高并行度,并且可能获得比使用阻塞注册的方法更好的吞吐量和响应时间。进一步,由于按需注册的灵活性,所以该非阻塞方法可以容易地应用于数据服务器104的弹性模型(S卩,复制模型)。
[0017]取代事务管理器102将事务广播至所有数据服务器104,这种注册协议具有以下益处:其仅被真正为那个事务工作的数据服务器触发。对此事务没有任何数据访问或更新的数据服务器104将不被牵涉到此协议中,并且将不参与两阶段提交。这消除了不必要的消息传送并且减少了所使用的带宽。
[0018]进一步,实施例提供了一种非阻塞的方式来执行事务注册。在这种方法中,数据服务器104不被阻塞,即数据访问110不等待到事务注册完成。作为替代,在发送非等待注册请求以后,事务控制110假定成功注册并继续执行数据访问112,但记住它具有未处理的事务注册请求。对数据服务器102的首次请求发起对数据服务器104的注册。针对同一事务访问相同数据服务器104上的数据的其它子服务进程被允许在没有进一步注册的情况下继续并执行。以这种方式,可以在不延迟该注册过程的情况下实现高度并行性。
[0019]图2是根据示例的用于分布式事务中的非阻塞注册的示例流程的框图。除了第一个以外,可以处理和返回所有来自子服务进程的请求,因为第一个具有事务管理器102要完成的未处理的注册请求。允许第一进程早返回可能留下具有未处理的输入-输出的窗口,并且如果提交该事务,则可能引起事务一致性问题。一旦注册决策从事务管理器102返回,就如图2所示那样答复初始请求。
[0020]当事务管理器102接收到注册时,做出请求的数据服务器104被加入作为该事务的参与者,并且如果该事务处于活跃状态,则被牵涉到该两阶段提交处理中。如果事务已经经过该活跃状态,那么注册被看作晚登记,并且因为已经确定了事务的结果,所以拒绝该注册。该拒绝被回复至做出请求的数据服务器104。
[0021]该事务处理通过假设事务注册的大部分成功而获得时间节省。如果不对联机事务处理事务阻塞事务注册,则实验数据仓库系统中的这种方法可以将响应时间缩短十倍以上,并且可以不被同时运行的大型事务影响。这种最优方法在混合工作负荷的环境中是有用的。然而,存在例外。
[0022]图3是根据示例的与分布式事务的数据服务器104相关的用于注册拒绝和内部回滚的流程300的框图。如果分布式事务已经经过了活跃状态,则可以拒绝注册请求。例如,如果事务准备结束,则拒绝任何进一步的注册请求。在这种情境中,事务管理器102返回异常,并且不将做出请求的数据服务器104牵涉到提交处理中。该数据服务器具有退出任何更新的责任。还提出由于拒绝的注册而回滚改变的排队机制,以维持数据库一致性。这种方法维持符合ACID的数据库方案。此系统对成功的事务注册进行假设和优化,并且将注册拒绝看作异常。
[0023]注册可能不一直成功,并且可以以多种原因被事务管理器102拒绝。例如,服务主控器进程故障可以导致事务管理器102单方面地终止事务。在云环境中的特定资源限制下,也可以终止事务。此外,当事务管理器102接收到注册时,事务本身可能已经经过活跃状态并且不允许任何新加入。这种情况可能在进程管理可能是异步的分布式环境中发生。如果这种异常发生,则从事务管理器的立场来看,数据服务器104不被加入该事务中。对于那些异常情况,使用内部回滚机制。数据服务器104在没有来自事务管理器102的指令的情况下自身回滚更新,以确保数据库一致性。
[0024]当注册失败时,数据服务器104的事务控制110对内部回滚请求进行排队,该内部回滚请求充当来自事务管理器102的伪回滚请求。然后针对该事务回滚由数据服务器104以正常方式处理该请求。此机制确保了并发请求和内部回滚请求的顺序化的正确性。可以将相关状态改变和数据更新传送至被备份的进程(如果数据服务器104是进程对)或被复制的进程。
[0025]此非阻塞事务注册协议与内部回滚机制一起确保了事务的ACID属性,但是还使数据服务器进程以更高的并行性和吞吐量运行,而不必等待注册。由于减少的消息、带宽消耗量以及更短的响应时间,该行为在具有数千个数据服务器的大数据环境中是有用的。注意至IJ,用此协议锁定的数据访问没有改变。没有数据损坏或隔离违背的风险,因为分离的事务可以继续使用锁来阻挡对未提交的数据的访问。
[0026]有利地,该注册协议减少了事务管理器102和数据服务器104之间的消息的数量,同时减少了网络的总带宽。进一步,仅涉及参与该事务的数据服务器104,从而消除了向所有数据服务器104广播的步骤。这在工作负荷的一部分涉及触及到有限数据分割的小型事务的混合工作负荷环境中是有用的。
[0027]进一步,事务管理器102的工作负荷被降低,并且减少了事务完成响应时间。该协议还通过不断增长的数据服务器104的数量或者大量事务管理器102而横向扩展。
[0028]图4是根据示例的用于分布式事务中的非阻塞注册的示例方法400的方法流程图。方法400由数据服务器104和事务管理器102并行执行。方法400在框402处开始,在框402处,事务控制110发送注册请求至事务管理器102。在框404处,事务管理器102确定是否拒绝该请求。如果拒绝该请求,则在框406处,数据服务器104执行回滚。如果不拒绝,则在框408处,事务管理器102执行对发起该注册的应用服务进程106的回复。
[0029]与事务管理器102处理该注册请求同时,在框410处,数据服务器104访问数据。以此方式,数据访问可以在来自事务管理器102的注册回复之前执行。即使对于触发该注册的请求,情况也可以如此。框410继续,直到应用服务过程终止。
[0030]在框412处,确定是否具有来自事务管理器102的提交请求。如果有,则在框414处,做出请求的数据服务器104参与该两阶段提交过程中。如果没有,则在框414处,数据服务器104执行其数据更新的回滚。
[0031]图5是根据实施例的可以对分布式事务中的非阻塞注册使用的示例系统500的框图。系统500可以包括大数据系统、混合工作负荷环境等。图5中示出的功能块和设备可以包括:包含电路的硬件组件,包含在有形非暂时性机器可读介质上存储的计算机代码的软件组件,或者硬件组件和软件组件两者的组合。此外,系统500的功能块和设备仅是可以在示例中实现的功能块和设备的一个示例。系统500可以包括任意数量的计算设备,如蜂窝电话、个人数字助理(PDA)、计算机、服务器、膝上型计算机或者其它计算设备。
[0032]示例系统500可以包括事务服务器504和多个数据服务器502。数据服务器502具有一个或多个处理器504,一个或多个处理器504通过总线506连接至显示器508、键盘510以及输入设备512,如鼠标、触摸屏等。数据服务器502还可以包括用于存储操作软件和数据的有形计算机可读介质,如硬盘驱动器或存储器516。硬盘驱动器可以包括硬盘驱动器的阵列、光盘驱动器、光盘驱动器的阵列、闪驱等。存储器516可以用于程序、数据和操作软件的存储,并且可以包括例如B10S(未示出)。特别地,存储器516包括资源管理器518、应用服务进程520、子服务进程(子)528、事务控制530以及数据访问532,它们适于如本文所述的技术中所描述的那样操作。
[0033]数据库服务器502可以通过总线506连接至网络接口卡(NIC)522AIC 522可以将数据库服务器502连接至网络524。网络524可以是局域网(LAN)、广域网(WAN)或另一网络配置。网络524可以包括路由器、交换机、调制解调器或者用于互联的任意其它种类的接口设备。进一步,网络524可以包括因特网或企业网。数据服务器502可以通过网络524与事务服务器504通信。除了存储在存储器516内的组元之外,事务服务器504可以相似地被构建为数据服务器502。在示例性实施例中,事务服务器504包括依据本文描述的技术操作的事务管理器534。
[0034]图6是示出示例有形非暂时性机器可读介质600的框图,该示例有形非暂时性机器可读介质600存储适合于分布式事务中的非阻塞注册的、计算机实现的指令。该机器可读介质大体地由附图标记600指示。该机器可读介质600可以对应于存储由计算机实现的指令(如程序代码等)的任何典型的存储设备。此外,机器可读介质600可以包含在图5中所示的存储器516中。存储在机器可读介质600上的指令在由处理器602读取和执行时,适于使处理器602处理事务管理器606的指令。
[0035]事务管理器606适于依据本文描述的技术来执行。向事务管理器发送事务的注册请求。与接受或拒绝该请求同时,在发送该注册请求的数据服务器上执行数据访问。该注册请求对这些数据访问而言是非阻塞的。与数据服务器关联的第一注册请求对于该事务的终止而目是阻塞的。
[0036]如果该注册请求被接受,则在数据服务器上执行数据访问的被加入的子服务进程参与该数据服务器的两阶段提交过程。在事务终止或请求拒绝的情况下,数据服务器被回滚。在正常事务终止的情况下,提交在数据访问期间执行的更新。
【主权项】
1.一种用于注册事务的方法,该方法包括: 向事务管理器发送对事务的注册请求; 在数据服务器上执行数据访问,所述注册请求对与所述注册请求关联的数据访问是非阻塞的;以及 如果所述注册请求被接受,则执行所述数据服务器的两阶段提交过程。2.根据权利要求1所述的方法,包括向所述数据服务器发送对所述注册请求的回复。3.根据权利要求2所述的方法,主应用服务发送对在所述数据服务器上执行数据访问的子应用服务的注册请求。4.根据权利要求3所述的方法,包括: 确定所述注册请求是对所述数据服务器的第一请求;以及 确定所述注册请求不晚。5.根据权利要求3所述的方法,包括: 确定所述注册请求已晚;以及 拒绝所述注册请求。6.根据权利要求5所述的方法,包括响应于所述回复,由所述数据服务器执行回滚。7.根据权利要求1所述的方法,包括: 从附加的子应用服务接收对所述事务的注册请求,该注册请求对所述附加的子服务应用的数据访问是非阻塞的; 确定所述数据服务器已经发送之前的注册请求;以及 将所述附加的子应用服务加入所述事务中。8.根据权利要求1所述的方法,其中大数据环境包括所述数据服务器。9.根据权利要求1所述的方法,其中混合工作负荷环境包括所述数据服务器。10.—种系统,包括: 多个数据服务器,包括: 多个存储器设备;以及 多个数据服务器处理器,适于执行存储在所述多个存储器设备中的指令以: 向事务服务器发送对事务的注册请求;以及 在所述多个数据服务器中的一个数据服务器上执行数据访问,所述注册请求对所述数据访问是非阻塞的;以及事务服务器,包括: 存储器设备;以及 事务处理器,适于执行在所述存储器设备中存储的指令以: 确定所述注册请求是否已晚;以及 如果所述注册请求不晚,则将所述数据服务器加入所述事务中。11.根据权利要求10所述的系统,所述事务处理器适于执行在所述存储器设备中存储的指令以: 确定所述注册请求被拒绝;以及 发送拒绝所述注册请求的回复。12.根据权利要求11所述的系统,所述数据服务器处理器适于执行在所述多个存储器设备中存储的指令,以响应于所述回复而由所述数据服务器执行回滚。13.根据权利要求10所述的系统,所述事务处理器适于执行在所述存储器设备中存储的指令以: 确定所述请求被接受; 发送接受所述注册请求的回复;以及 将所述数据服务器包括在所述事务的两阶段提交过程中。14.根据权利要求13所述的系统,所述数据服务器处理器适于执行在所述多个存储器设备中存储的指令,以由与子应用服务关联的主应用服务发送对所述子应用服务的注册请求,所述子应用服务在所述一个数据服务器上执行数据访问。15.根据权利要求10所述的系统,包括混合工作负荷环境。
【文档编号】G06F15/16GK105874435SQ201380080576
【公开日】2016年8月17日
【申请日】2013年10月31日
【发明人】尚-胜·唐戈, 肖恩·L·布勒德, 罗纳德·M·卡苏, 约翰·斯图尔特·德·罗, 加里·斯蒂芬·史密斯
【申请人】慧与发展有限责任合伙企业
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1