分布式系统及其事务处理方法

文档序号:8004033阅读:231来源:国知局
分布式系统及其事务处理方法
【专利摘要】本发明涉及一种分布式系统的分布式事务优化方法及将事物优化的分布式系统,并且涉及在分布式系统中处理事务的方法,该分布式系统包括多个节点且各个节点具有副本。本发明的方法包括如下步骤:一个协调者节点向其副本发送所述事物的提交日志;所述协调者节点从所述副本接收对于所述提交日志的答复;所述协调者节点向所有参与者节点发送用于请求所述事物的提交的提交消息;各个所述参与者节点基于所述提交消息执行所述事物的提交。
【专利说明】分布式系统及其事务处理方法
【技术领域】
[0001]本发明涉及一种分布式系统及其事务处理方法,具体地,涉及在分布式系统(Distributed System)中执行的分布式事务(Distributed Transaction)的优化,尤其涉及一种在分布式系统中使分布式事务的提交优化的方法及实现了事物优化的分布式系统。
[0002]本发明是从作为韩国知识经济部的产业融合源泉技术开发事业的一环而执行的研究中得出的(10040824,实时处理大容量传感器流数据的开放式传感器DBMS开发)。
【背景技术】
[0003]分布式系统包括在两个以上网络中相互连接的多个节点,例如,包括独立服务器、计算机或者数据库系统等。分布式系统是如下系统:在通过网络连接的各节点分散执行一个作业单位的事物,由此被看作是执行一个作业。因此,在分布式系统中,在各个本地资源(local resource)所发生的事物内容或结果与连接于网络的其他节点同步。在多个节点中将全部事物整合到一起而管理的一个节点会成为事物的协调者(coordinator)或主节点(master),而剩下的节点会成为参与者(participant)或从节点(slave)。此时,在多个节点中,产生事物的一个节点会成为事物的协调者,而剩下的系统会变成参与者。
[0004]在分布式系统中执行的分布式事务是指在分布于网络的资源中执行事物,通常在各个节点利用用于事物一致性(atomicity)的两阶段提交协议(2-phase commitprotocol)而进行处理。在两阶段提交协议中协调者请求参与者处理各个本地事物(localtransaction)。协调者在各阶段从所有参与者接收到成功的答复(reply)后决定事物的成功与否。若所有参与者的事物都成功了则该阶段便是成功,若不是则该阶段便是失败。当事物成功时向用户发送对提交(commit)的答复,当失败时,请求全体参与者中止(abort)各个本地事物。
[0005]两阶段提交协议一般分为两个阶段而执行。第一个阶段是处理准备(prepare)阶段。在该阶段中,协调者将要求准备本地事物的消息记录到自己的日志中,向各参与者发送处理准备消息。当各个参与者接收处理准备消息并各自能够执行本地事物时,将处理准备消息记录到自己的日志中,并向协调者发送处理准备消息。
[0006]这样,全体参与者和协调者通过日志永久地记录各个本地事物达到处理准备阶段的事实。在该过程中若一部分参与者无法处理本地事物,则协调者将意识到本地事物的失败,请求全体参与者中止各个本地事物。
[0007]第二个阶段是提交(commit)阶段。该阶段在确认所有参与者和协调者已处于处理准备阶段之后进行。协调者对全体参与者发出执行提交的请求,各参与者在执行提交后向协调者发送对此操作的答复。此时为了永久性,各参与者将对于提交的信息记录在自己的日志中。
[0008]若从所有参与者接收到提交成功的答复,则协调者便做出全局提交(globalcommit)成功的判断。即使在一部分参与者中本地事物提交失败,但也有可能在其他一部分参与者本地事物提交成功,因此无法立即判断成败。在这种情况下,为了分布式事务的一致性,需要执行后处理作业。后处理作业根据分布式系统的结构而定,作为这种后处理作业,可以列举例如预定丢弃(presumed abort)和预提交(presumed commit)。
[0009]在第一个阶段成功而尚未进行第二个阶段之前各参与者无法决定本地事物的提交与否。此时,若本地事物接近修改的数据则无法看到数据。换言之,只有完成第二个阶段的提交才能做出各事物成功的判断,因此处理准备阶段的事物等于未进行任何处理的状态。
[0010]两阶段提交协议使得与所有参与者之间发生两次请求-答复集(request-respons set),因此成为分布式系统的性能上的洋脚石。为解决该问题提出了使协议简单化的多种方法。
[0011]其中有一种方法是一阶段提交协议。一阶段提交导入了每次在协调者日志和参与者侧进行事物时提前使其处于准备阶段的Implicit yes_vote (隐含同意)。在这种情况下会留下追加日志,每次有新作业时都需要变更参与者的状态。
[0012]另外,必须确保将协调者的日志存储在如硬盘等数据存储装置,因此在数据存储装置的性能和速度相对低的情况下,提交的执行时间比较长。
[0013]近年来随着对大容量系统的要求增加,分布式系统环境为了确保数据的永久性(durability)和可用性(availability)而经常向系统导入副本(replica)。具体而言,针对特定的数据或机器设置副本,以在无法接近原数据或机器的情况下也能够利用副本来提供与原本相同的数据和服务。
[0014]但是,在具有副本的分布式系统环境下要适用现有分布式事务的处理方式有相当多的难处。即,这是因为,这种分布式系统为了处理分布式事务,不仅要支持两阶段提交协议,还要承担执行原本-副本之间的通信所需要的负荷。

【发明内容】

[0015]因此,本发明的目的在于提供一种通过在分布式系统中缩减分布式事务的提交步骤来对分布式事务的提交进行优化的方法。
[0016]为达到上述目的,根据本发明实施例,提供一种在分布式系统中处理事物的方法和用于实现所述方法的分布式系统。
[0017]在本发明实施例中,分布式系统包括多个节点,且各个节点具有自身的副本。在这种分布式系统中处理事物的方法包括如下步骤:各个节点向各自的副本发送所述事物的提交日志;各个节点从所述副本接收对于所述提交日志的答复,由此完成所述事物的提交。
[0018]在本发明实施例中,所述事物是本地事物,各个所述节点为了在所述分布式系统中确保永久性而具有一个以上的副本。
[0019]在本发明实施例中,分布式系统包括多个节点,且各个节点具有副本。在这种分布式系统中处理事物的方法包括如下步骤:一个协调者节点向其副本发送所述事物的提交日志;所述协调者节点从所述副本接收对于所述提交日志的答复;所述协调者节点向所有参与者节点发送用于请求所述事物的提交的提交消息;各个所述参与者节点基于所述提交消息执行所述事物的提交。
[0020]在本发明实施例中,所述协调者节点向各个参与者节点发送的提交消息是不需要各个所述参与者对于所述提交消息作出响应的提交请求。[0021]在本发明实施例中,所述方法还包括如下步骤:未接收到所述协调者节点发送的所述提交消息或者所述提交失败的参与者节点,就所述事物的提交向所述协调者节点进行事后确认;
[0022]进行所述事后确认的步骤包括:各个参与者节点周期性地确认是否接收到所述提交消息;各个参与者节点在未接收到所述提交消息的情况下,询问所述协调者节点是否发送了所述提交消息;各个参与者节点根据来自所述协调者的对于所述询问的答复,执行所述事物的提交或中止。
[0023]在本发明实施例中,所述副本在其原节点无法发挥功能时代替所述原节点来处理所述事物。
[0024]在本发明实施例中,所述分布式系统包括多个节点和属于各个所述节点的副本,并且各个所述节点向各自的副本发送事物的提交日志,并从所述副本接收对于所述提交日志的答复,由此完成本地事物。
[0025]在本发明实施例中,多个所述节点中的一个协调者节点向参加所述事物的剩余参与者节点发送用于请求所述事物的提交的提交消息;各个所述参与者节点基于所述提交消息执行所述事物的提交,从而完成全局事物。
[0026]在本发明实施例中,各个所述参与者节点对于所述协调者节点发送的提交消息不作出响应。
[0027]在本发明实施例中,未接收到所述协调者节点发送的所述提交消息或者所述提交失败的参与者节点周期性地确认是否接收到所述提交消息;在未接收到所述提交消息的情况下,询问所述协调者节点是否发送了所述提交消息;根据来自所述协调者的对于所述询问的答复,执行所述事物的提交或者中止。
[0028]在本发明实施例中,所述副本在其原节点无法发挥功能时代替所述原节点来处理所述事物。
[0029]根据本发明,为了确保数据的永久性而具备副本的分布式系统中,能够改善作为两阶段提交步骤的缺点的反应速度。
【专利附图】

【附图说明】
[0030]图1是适用本发明的分布式系统的概略框图。
[0031]图2是在图1中示出的各节点的详细框图。
[0032]图3是说明根据本发明实施例对分布式事务的提交进行优化的方法的时序图(Sequence Diagram)。
[0033]图4是说明根据本发明实施例为了应对遗失的提交消息而从协调者节点获得事物提交的事后确认的方法的时序图。
[0034]其中,附图标记的说明如下:
[0035]100:协调者节点
[0036]200:参与者节点
[0037]110、210:副本
[0038]102、202:事物管理器
[0039]104、204:数据存储器[0040]106、206:日志【具体实施方式】
[0041]图1示出适用本发明的分布式系统的概略框图。
[0042]如图所示,分布式系统包括通过网络120相互连接的多个节点100、200,例如包括服务器、计算机系统或者数据库系统。
[0043]在多个节点100、200中,将全部事物整合到一起而管理的一个节点,例如节点100担当事物的协调者(coordinator)或者主节点(master)的角色,而剩下的节点200担当参与事物的参与者(participant)或者从节点(slave)的角色。
[0044]另外,各个节点100、200具有自己的副本(replica) 110,210ο节点100、200和副本110、210分别具有相同的元件,副本110、210实时地使事物与自己的原节点100、200同步。由于各个节点100、200都由原本和副本构成,因此若在原节点100、200发生数据修改,则会生成与此对应的日志,而且相应的日志发送到副本110、210。因此,在副本110、210能够保持与原节点100、200的数据的同一性。
[0045]副本110、210为提高分布式系统的数据永久性和在原节点100、200执行的本地事物的提交性能而存在。在原节点100、200执行本地事物时生成的日志,不是存储到例如原节点100、200的硬盘等永久性的记录介质,而是传递到副本110、210来确保永久性。另外,副本110、210用于在原节点100、200因故障而丧失自身功能时代替原节点100、200来管理分布式事务。即,即使原节点100、200发生了故障也会由副本110、210来代替执行原节点100,200的角色,能够利用从原节点100、200发送的日志来生成数据,因此能够在分布式系统中确保数据的永久性,
[0046]因此,分布式系统具有优于硬盘性能的网络结构时可以提高提交性能。属于原节点100、200的副本个数可以根据分布式系统来设定,使得能够永久保存日志。例如,副本的个数根据系统设定的安全度而设定为大致两到三个。
[0047]图2是在图1中示出的各节点的详细框图。
[0048]节点100、200 分别包括事物管理器(TX manager (transaction manager)) 102、202、数据存储器104、204、日志106、206。相同地,节点100,200的副本110,210也分别包括事物管理器112、212、数据存储器114、214、日志116、216。
[0049]节点100、200的数据存储器104、204用于存储与在分布式系统中执行的事物相关联的数据。
[0050]节点100、200的日志106、206是用于存储如节点是何时连接的、进行了什么作业
等信息的文件或存储场所。
[0051]副本110、210的数据存储器114、214用于存储与存储于节点100、200的数据存储器104、204的数据同步的数据。
[0052]副本110,210的日志116、216执行与节点100,200的日志106、206相同的功能。
[0053]节点100、200的事物管理器102、202的功能根据其角色为协调者还是参与者而不同。例如,节点100起到协调者的角色时,协调者100的事物管理器102担当调整在协调者100和所有事物参与者200之间的通信的角色。因此,协调者100的事物管理器102不仅需要与在参与者200中执行的事物相关联的信息,还需要与参与者200的系统相关联的信息。相反,在节点200起到参与者的角色时,参与者200的事物管理器202需要协调者100的系
统信息。
[0054]图3是说明根据本发明实施例对分布式事务的提交进行优化的方法的时序图。在图3中,假设节点100是协调者节点,而节点200是参与者节点。
[0055]首先,在步骤302中,协调者节点100的事物管理器102向协调者100的副本110发送事物的提交日志。协调者节点100的提交日志并不记录于如协调者节点100的硬盘那样的存储介质,而是向副本110发送,从而永久保存。因此,可以减去对在协调者生成的日志进行永久保存的负担。但是,与此不同地,也可以将协调者的提交日志记录于协调者节点100的存储介质。
[0056]在下一个步骤304中,协调者节点100的事物管理器102从副本110的事物管理器112接收用于表示接收到提交日志的响应。
[0057]在下一个步骤306中,协调者节点100的事物管理器102通过向用户发出对于事物的提交响应,而通知用户请求的事物已完成。通过这种通知,在用户立场上可以认为提交已完成。
[0058]因此,通过执行一次协调者和其副本之间的上述一组提交请求和响应来完成本地事物的提交。
[0059]在下一个步骤308中,为了全局事物,协调者节点100的事物管理器102向所有参与者节点200发送请求事物提交的事物提交消息。根据实施例,从协调者节点100发送到参与者节点200的事物提交消息是不需要参与者节点200做出响应的提交请求(即,不需要向协调者节点100答复)。使用这种事物提交消息的目的在于,通过将其发送给参与者节点而在分布式系统中保持最小程度的一贯性。
[0060]在下一个步骤310中,对事物提交消息做出响应,各参与者节点200自发地进行提交。但是,如上所述,各个参与者节点200并不向协调者节点100做出对于提交的响应。
[0061]在各参与者节点200进行事物的提交时,各参与者节点200以与在上述步骤302中执行的方式相同的方式向各自的副本210发送提交日志从而确保本地事物的提交。因此,通过上述方式能够对在分布式系统中执行的本地及全局事物的提交步骤进行优化。
[0062]另一方面,在上述步骤308中有可能在从协调者节点100向各参与者节点200发送提交消息的途中发生提交消息的遗失。提交消息的遗失可能在如下情况下发生:在从协调者节点100发送的提交消息无法到达一部分参与者节点时;即使参与者节点接收到提交消息,但是在该参与者节点无法进行提交时。作为在参与者节点无法进行提交的情况,可以列举例如与协调者节点之间的会话断开的情况,或者在参与者节点发生电源故障的情况
坐寸O
[0063]图4示出了说明根据本发明实施例为了应对遗失的提交消息而从协调者节点获得事物提交的事后确认的方法的时序图。
[0064]关于图4,假设参与者节点200是未接收到从协调者节点100发送的提交消息或者本无法进行提交的参与者节点。
[0065]在事物提交的事后确认前,应先解决参与者节点的问题。例如,需要先进行恢复与协调者节点的会话或者恢复参与者节点的电源故障的步骤。
[0066]然后,在步骤402中,参与者节点200的事物管理器202周期性地确认是否接收了提交消息。若确认未接收到提交消息,则参与者节点200的事物管理器202可以预测有可能存在参与者节点有可能执行了的未知的事物提交消息。
[0067]然后,在步骤406中,参与者节点200的事物管理器202向协调者节点100的事物管理器102询问是否发送了事物的提交消息。
[0068]然后,在步骤408中,协调者节点100的事物管理器102掌握各个参与者节点200的事物管理器202的状态而判断由参与者节点200询问的事物应该提交还是应该中止。若判断为应该提交将要在参与者节点200执行的事物,则协调者节点100的事物管理器102向参与者节点200的事物管理器202发送进行提交的消息。但是,若判断为应该中止将要在参与者节点200执行的事物,则协调者节点100的事物管理器102向参与者节点200的事物管理器202发送中止的消息。
[0069]然后,在步骤410中,参与者节点200的事物管理器202确认从协调者节点100的事物管理器102发送来的消息,并根据消息而执行事物的提交或者中止。
[0070]如图3所示,在参与者节点200进行提交或者中止时,参与者节点200向其副本210发送提交日志,以从副本210接收响应的方式确保事物的提交。
[0071]因此,在一部分参与者节点没有从协调者节点接收提交请求或者提交失败时,通过获得来自协调者节点的事后确认,能够实现分布式系统的完善的一贯性。
[0072]如上所述,根据本发明实施例,在为了确保数据的永久性而具备副本的分布式系统中,能够改善作为两阶段提交步骤的缺点的反应速度。另外,通过本发明实施例的方法,可以使提交步骤比现有技术的提交步骤更快,并且可以减小为了变更参与者的状态而每次都生成新日志的负担。
【权利要求】
1.一种分布式系统的事物处理方法,用于在分布式系统中处理事务,所述分布式系统包括多个节点且各个节点具有自身的副本,其特征在于, 包括如下步骤: 各个节点向各自的副本发送所述事物的提交日志; 各个节点从所述副本接收对于所述提交日志的答复,由此完成所述事物的提交。
2.如权利要求1所述的分布式系统的事物处理方法,其特征在于,所述事物是本地事物。
3.如权利要求1所述的分布式系统的事物处理方法,其特征在于,各个所述节点为了在所述分布式系统中确保永久性而具有一个以上的副本。
4.一种分布式系统的事物处理方法,用于在分布式系统中处理事务,所述分布式系统包括多个节点且各个节点具有副本,其特征在于, 包括如下步骤: 一个协调者节点向其副本发送所述事物的提交日志; 所述协调者节点从所述副本 接收对于所述提交日志的答复; 所述协调者节点向所有参与者节点发送用于请求所述事物的提交的提交消息; 各个所述参与者节点基于所述提交消息执行所述事物的提交。
5.如权利要求4所述的分布式系统的事物处理方法,其特征在于,所述协调者节点向各个参与者节点发送的提交消息,是不需要各个所述参与者对于所述提交消息作出响应的提交请求。
6.如权利要求4所述的分布式系统的事物处理方法,其特征在于, 还包括如下步骤:未接收到所述协调者节点发送的所述提交消息或者所述提交失败的参与者节点,就所述事物的提交向所述协调者节点进行事后确认。
7.如权利要求6所述的分布式系统的事物处理方法,其特征在于, 所述进行事后确认的步骤包括: 各个参与者节点周期性地确认是否接收到所述提交消息; 各个参与者节点在未接收到所述提交消息的情况下,询问所述协调者节点是否发送了所述提交消息; 各个参与者节点根据来自所述协调者的对于所述询问的答复,执行所述事物的提交或中止。
8.如权利要求4所述的分布式系统的事物处理方法,其特征在于,所述副本在其原节点无法发挥功能时代替所述原节点来处理所述事物。
9.一种分布式系统,其特征在于, 包括: 多个节点, 属于各个所述节点的副本; 各个所述节点向各自的副本发送事物的提交日志,并从所述副本接收对于所述提交日志的答复,由此完成本地事物。
10.如权利要求9所述的分布式系统,其特征在于, 多个所述节点中的一个协调者节点向参加所述事物的剩余参与者节点发送用于请求所述事物的提交的提交消息; 各个所述参与者节点基于所述提交消息执行所述事物的提交,从而完成全局事物。
11.如权利要求10所述的分布式系统,其特征在于,各个所述参与者节点对于所述协调者节点发送的提交消息不作出响应。
12.如权利要求10所述的分布式系统,其特征在于, 未接收到所述协调者节点发送的所述提交消息或者所述提交失败的参与者节点,周期性地确认是否接收到所述提交消息; 在未接收到所述提交消息的情况下,询问所述协调者节点是否发送了所述提交消息; 根据来自所述协调者的对于所述询问的答复,执行所述事物的提交或者中止。
13.如权利要求9所述的分布式系统,其特征在于,所述副本在其原节点无法发挥功能时代替所述原节点来处理 所述事物。
【文档编号】H04L29/08GK103731465SQ201310349452
【公开日】2014年4月16日 申请日期:2013年8月12日 优先权日:2012年10月10日
【发明者】林昍映, 朴相永 申请人:株式会社特博睿
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1