交互云应用中ast部分复制和同步方法

文档序号:7771017阅读:271来源:国知局
交互云应用中ast部分复制和同步方法
【专利摘要】本发明属于计算机支持的协同工作【技术领域】,具体为一种交互云应用中AST部分复制和同步方法。具体包括:(1)数据的部分复制和副本的增量构建方法;(2)基于标量时间戳的副本同步协议;(3)部分复制下的地址空间转换方法。该方法适用于基于树型共享数据的交互云应用,能够在任何网络条件下为用户提供快速的本地响应体验;允许对树型数据的任意部分进行复制和副本的增量式构建;能够为拥有大规模用户的交互云应用提供高效的副本同步和数据一致性保证。
【专利说明】交互云应用中AST部分复制和同步方法
【技术领域】
[0001]本发明属于计算机支持的协同工作【技术领域】,具体涉及一种交互云应用中AST部分复制和同步方法。
【背景技术】
[0002]交互云应用
随着云计算技术的发展,越来越多的传统应用被部署成云服务,交互云应用是其中较为重要的一类,例如 Google Docs, Microsoft Office 365, Facebook Comment, Disqus 等。在这类应用中,通常涉及多用户对共享数据的并发访问和操作,例如Google Docs中的共享文档,Facebook Comment中的评论会话等。数据的一致性维护是构建交互云应用的重要基石出之一O
[0003]与此同时,移动设备和移动网络技术的发展在一定程度上也促进了云应用的发展和普及,移动技术的发展使得用户可以通过任意设备,随时随地的访问云应用。我们甚至可以认为,移动应用和云应用是一对孪生姊妹。然而,断断续续和高延迟的移动网络往往给流畅的用户体验带来了很大的挑战,这一点是设计实现交互云应用时,需要考虑的。传统协同编辑技术能够在为用户提供快速本地响应体验的同时保证共享数据的一致性,但是,所采用的数据全复制架构在一定程度上受制于移动设备的电源、存储、网络流量等资源限制。
[0004]针对移动访问作出的优化,不应该仅仅局限于考虑移动设备的屏幕大小。此外,移动设备在电源、存储空间、网络流量等方面的资源限制,也是交互式云应用需要考虑的因素。
[0005]地址空间转换技术AST
地址空间转换技术AST (Address Space Transformation)最初是为实时协同编辑应用提出的一种并发控制和数据一致性维护方法。在典型的实时协同编辑应用中,共享文档被完全复制在各客户端上,AST技术允许用户对文档进行无约束的编辑操作,从而为用户提供快速的本地响应体验。当一组相同操作在所有协作站点上得到执行后,所有副本将处于最终一致状态。作为一种无锁的并发控制方法,AST技术非常适合作为交互式应用中的数据一致性维护技术。
[0006]AST技术的基本思想是:在执行一个远程操作之前,将文档状态(即地址空间)回溯到操作产生时的状态,从而该操作可以按照其原始形式被执行,操作执行后,再将文档状态恢复到最新状态。为了实现地址空间转换,即实现文档状态的回溯和恢复,执行过的历史操作将被记录下来,并保存在对应的目标节点中;被删除的节点并不从地址空间中被移除,而是将其设置成无效状态。
[0007]然而,值得注意的是,AST技术是针对数据全复制体系架构提出的,其中的地址空间转换则通过遍历整个地址空间并设置所有节点的有效状态标志来实现。
[0008]基于向量时间戳的操作关系判定
操作间的因果先序关系和并发关系判定是多用户交互式应用中数据一致性维护的基础。基于向量时间戳的操作关系判定方法是最为常见的一种。对于一个有N个站点参与的交互式应用中,向量时间戳SFi是由N个逻辑时钟组成的一个向量,其中表示站点5上
已经执行了来自站点?的操作个数。给定两个操作4和02,它们分别产生于站点?和站点?,
操作产生时的文档向量时间戳分别为之间的关系可以通过如下方式判定:
(1)O1 4 O2。O1因果先序于O2,当且仅当对于任意的O <k.<N,Si<si,K
存在O S fc <』V ,使得〈 si ;
(2)0l n O2。O1 并发于σ2
,=3 且仅 ξ!ξι O1 -ri O。且0.? -f) O1 °
[0009]在操作传向其它站点时,操作产生时的文档状态向量时间戳也随操作一同传向目标站点,以确定操作之间的关系。由于向量时间戳的长度等于参与站点的数目,因此,基于向量时间戳的操作关系判定方法仅适用于小规模用户的交互式应用,并且随着用户的退出或新用户的加入,向量时间戳的长度也要随之改变。
[0010]需要解决的关键问题
虽然已有的协同编辑技术(如AST)可以实现快速的本地响应体验并维护共享数据的一致性,然而,所采用的数据全复制架构在一定程度上受制于移动设备的电源、存储、网络流量等方面的资源限制。因此在数据部分复制的体系结构下,有以下几个关键问题需要解决:
(I)如何对共享数据进行部分复制并增量式的构建客户端副本?
用户可能对共享数据中的任意部分感兴趣,并且需要通过连续的数据复制请求更新客户端副本,因此,需要设计一种共享数据的部分复制和副本的增量式构建方法。
[0011](2)如何确定并发操作并正确的执行地址空间转换?
如前所述,已有的协同编辑技术均是针对数据全复制架构提出的,AST技术则需要通过遍历整个地址空间实现地址空间转换,因此,需要对该技术进行一定的改进以作为数据部分复制架构下的一致性维护技术。
[0012](3)如何实现可扩展的数据同步协议以支持大规模用户参与的交互云应用? 向量时间戳常被用于判定操作间的因果先序和并发关系,然而,其固定的长度仅适用
于小规模用户参与的交互应用,因此,需要设计一种可扩展的数据同步协议以支持大规模用户参与的交互云应用并能够支持用户的动态加入和退出。

【发明内容】

[0013]本发明的目的在于提供交互云应用中AST部分复制和同步方法。该方法允许客户端对共享树型数据的任意部分进行复制,并支持用户无约束的本地操作,从而在任何网络条件下为交互云应用用户提供快速的本地响应体验。方法中基于标量时间戳的数据同步协议,能够高效的实现本地副本和云端主副本之间的自动同步,并能够支持大规模用户对云端共享数据的并发访问。该方法还对面向数据全复制架构的地址空间转换(AST)技术进行了改进,使其能够适用于部分复制的数据一致性维护。
[0014]本发明提供的一种交互云应用中AST部分复制和同步方法,服务器保存主副本,客户端副本包含树型数据中的任意部分,客户端通过节点复制请求增量构建副本,通过副本同步请求保持复制节点与主副本中对应节点的同步,通过改进的地址空间转换方法维护数据一致性;具体如下:其采用客户端-服务器架构,客户端遵循规则“如果一个节点被复制,其父节点如果存在,也必须被复制”对节点进行复制,服务器跟踪副本中的节点复制状态增量响应客户端的节点复制请求,副本同步协议基于标量时间戳并通过二分查找确定并发操作,客户端和服务器之间通过交换增量操作实现对应节点的数据同步。具体的技术方案在以下部分详细阐述。
[0015]树型数据的部分复制和副本的增量构建方法
树型数据结构通常被用于描述一组数据对象间的层次关系,是一类被广泛采用的数据模型。例如网页、格式化文档、评论会话等均可使用树型数据结构对其进行建模。我们将树型结构定义为一个四元组集合:
I = {N, = (iiparratcitiirfiijtriwff)}
其中,N.1d表示节点N的全局标识符;N.parem表示N的父节点;N,cMdren表示N的
子节点列表;Niattfibllte是由一组键值对构成的属性集合。树型结构T上定义的四个元操作如下:
Append(parentld?id, attribues):创建一个新T点,该T点的标识付和属性集分别为id^pattribues ,并将该节点添加到节点parentld的子节点列表的末尾。
[0016]InsertBefore(parentld,refld,id,attributes):创建一个新节点,该节点的标识符和
属性集分别为i^Pattributes,并将该节点插入到节点parentld的子节点;refM之前。
[0017]Delete(id):删除节点id。
[0018]UpdateCiinameivalue):将节点id中键名为n3_的属性更新为新值对細。
[0019]操作Append、InsertBefore和1^^能够实现在树型结构中的任意位置插入或删
除一个节点;操作Update能够被用于更新已有节点的内容。节点属性集表示成键值对集合 以支持面向不同数据类型的云应用。每个节点包含一个操作缓冲区以记录在该节点上已经执行的历史操作。
[0020]云应用通常采用的是C/S或B/S架构。在基于树型共享数据的交互云应用中,云端服务器维护一个共享数据的主副本,各客户端则可以请求并复制树型结构中的任意节点。为了维护复制节点间的关系,即父子关系和兄弟关系,节点复制需要满足如下规则:“如果一个节点被复制,其父节点(如果存在)也必须被复制。”如图1(b)所示,当节点C和F被复制时,它们的父节点B和T也必须被复制在客户端。显然,该规则可以使得复制在客户端的节点构成一个树型结构,从而保持这些节点在主副本中的关系。我们将这种树型结构的客户端副本称作骨架树(Skeleton Tree),其中B和T这样的父节点被称作骨架父节点(Skeleton Parent Node)。
[0021]当复制一个节点时,该节点操作缓冲区中保存的历史操作也会被传回客户端并在客户端副本上得到执行。如图1 (b)所示,骨架树叶节点A、D、E也被维护在客户端副本中,它们是通过分别执行传回的T和B节点上的历史操作而产生的。这些叶节点并不是由客户端显式请求复制的,但是却对维护复制节点间的兄弟关系起到了重要作用,这一点我们将在
【发明内容】
的第三部分介绍。值得注意的是,为了节省用户网络流量,骨架节点(即骨架父节点或骨架叶节点)中的属性集将不被复制。
[0022]客户端是通过一连串的节点复制请求动态构建本地副本的。初始的客户端副本可以通过执行传回的历史操作从上到下构建起来。对于后续的节点复制请求,被请求的节点可能已经存在于客户端副本中,因此,为了节省用户流量,服务器将根据客户端副本的状态只返回增量的操作,用于更新客户端的骨架树。
[0023]服务器端为每个副本维护了一个副本元数据以跟踪副本状态并决定如何以增量的方式响应客户端的节点复制请求。元数据中记录了副本已经复制的节点标识符以及复制
的类型,其中》J表示客户端显式请求的节点,SN表示客户端复制的骨架父节点。
[0024]给定一个副本元数据I令客户端在一次节点复制请求中请求的节点集合为S,根据节点复制规则所确定的复制节点集合为Q,其中SG q。对于任一节点N E CJ,服务器将根据如下四种情况决定如何响应对N的复制请求:
情况1:NgRANgS。N将被复制为新的骨架父节点,如图1(C)中的节点D。节点N的操作缓冲区中的历史操作将被返回,不包括Update操作以及Append、tesertBefore操作中的attrftutes域。节点N的复制类型被设置成SM。
[0025]情况2:N g RAM e S。W为客户端显式请求的新节点,如图1 (C)中的节点H。与情况I类似,节点N的操作缓冲区中的历史操作将被返回,此夕丨N的属性集也将被传回客户端。节点N的复制类型被设置成CN。
[0026]情况3:NeRAN6S。节点N已经存在于客户端副本中且并非客户端显式请求复制的节点,如图1(c)中的节点7,因此不需要返回任何数据。
[0027]情况4:NG RAN GS。节点N已经存在于客户端副本中,如果当前的复制类型为骨架父节点(SN),如图1 (c)中的节点B,节点N的属性集将被返回,并将其复制类型更新为CT ;否则,不需要范围任何数据,如图1 (c)中的节点C。
[0028]需要注意的是,对于情况3和情况4而言,即1^| g R,节点N已经存在于客户端副
本,然而,在接收到该节点副本请求之前,主副本中的对应节点N可能已经集成了来自于其
他客户端的并发操作,这些并发操作(如果存在)也需要被传回客户端以保持客户端副本与主副本中对应节点的同步。因此,在响应客户端的节点复制请求之前,服务器需要执行一次数据同步操作以识别出需要返回客户端的并发操作。接下来的部分将阐述客户端副本和云端主副本之间的数据同步方法,以及数据一致性维护方法。
[0029]基于标量时间戳的副本同步协议
客户端和云端服务器之间通过操作交换实现对应节点的状态同步。云端服务器将接收到的来自不同客户端的操作序列按照执行顺序存储在对应节点的操作序列缓冲区SHB中;在客户端,如果一个操作在本地副本以及云端主副本上均已执行则被记录在对应节点的操作序列缓冲区SHB中,未提交的本地操作则被存储在本地历史缓冲区LHB中。
[0030]一个操作序列S被表示成四元组其中:S.R表示产生序列S的客户端副
本;S.L表示组成序列S的操作列表;s,t表示序列5在服务器端的执行结束时间;S.T,表示
副本S.R与服务器上一次同步的结束时间。这里,S?T和g?:T为全局的标量时间戳,具体可以使用服务器的系统时间或逻辑时钟实现。
[0031]在一次客户端与服务器的数据同步过程中,对于节点N的操作序列缓冲区SHB中的任一操作序列5,必产生于s,*r之后;副本s-R中所有产生于s.t之前的操作序列一定在该副本上已经得到执行;并且S.T'之后的操作序列均未返回至S.R。因此,给定N.SHB中的
任意两个操作序列民和5〗(O < ? <j <丨IV.SIiS丨之间的关系可以定义为:
因果前序关系5, — Si,当且仅当耳 < SrTt VSiJi = 5,.β ;
并发关系5, Il Sj ,当且仅当5Zr > Λ5?.^本。
[0032]根据上述关系定义,给定任一操作序列S其并发操作序列可以按照如下方式确定:即为操作目标节点操作序列缓冲区ISHB中执行结束时间T大于S.f的来自于其他副本的操作序列。由于操作序列按照在云端主副本上的执行时间排序,因此1S的并发操作序列可以通过在N.SHB上执行一次二分查找确定。
[0033]给定客户端副本元数据R,按照如下步骤对一次同步请求进行响应:
步骤1:对于请求同步节点N中的任一操作序列i按照如下步骤执行i中包含的操作:
【权利要求】
1.一种交互云应用中AST部分复制和同步方法,其特征在于:服务器保存主副本,客户端副本包含树型数据中的任意部分,客户端通过节点复制请求增量构建副本,通过副本同步请求保持复制节点与主副本中对应节点的同步,通过改进的地址空间转换方法维护数据一致性;具体如下: 采用客户端-服务器架构,客户端遵循规则“如果一个节点被复制,其父节点如果存在,也必须被复制”对节点进行复制,服务器跟踪副本中的节点复制状态增量响应客户端的节点复制请求,副本同步协议基于标量时间戳并通过二分查找确定并发操作,客户端和服务器之间通过交换增量操作实现对应节点的数据同步。
2.根据权利要求1所述的交互云应用中AST部分复制和同步方法,其特征在于:所述服务器跟踪副本中的节点复制状态增量响应客户端的节点复制请求,具体方法如下:假设给定一个客户端副本元数据R,元数据B中记录了副本已经复制的节点标识符以及复制的类型;CN表示客户端显式请求的节点,SN表示客户端复制的骨架父节点;令客户端在一次节点复制请求中请求的节点集合力S根据节点复制规则所确定的复制节点集合为Q,其中S C Q ;对于任一节点N E Q,服务器将根据如下四种情况决定如何响应对1^的复制请求:情况I =N € RANCS ; N将被复制为新的骨架父节点,节点N的操作缓冲区中的历史操作将被返回,不包括Update操作以及Append、InsertBefore操作中的attributes域,节点N的复制类型被设置成SN ; 情况2:Ng RANES ;N为客户端显式请求的新节点,节点N的操作缓冲区中的历史操作将被返回,此外,N的属性集也将被传回客户端;节点N的复制类型被设置成GW ; 情况3:N e RA N € S ;节 点N已经存在于客户端副本中且并非客户端显式请求复制的节点,不需要返回任何数据; 情况4:NG RAN GS。节点N已经存在于客户端副本中,如果当前的复制类型为骨架父节点SN,节点N的属性集将被返回,并将其复制类型更新为CN ;否则,不需要范围任何数据。
3.根据权利要求1所述的交互云应用中AST部分复制和同步方法,其特征在于:所述基于标量时间戳的副本同步协议包括:历史操作按照在主副本上的执行时间存储在对应节点的操作历史缓冲区中,根据副本的上次同步时间对操作历史缓冲区执行二分查找确定并发操作,一次同步请求中包含副本上产生的本地操作序列,同步响应中包含来自其他副本的并发操作和该次同步的完成时间;给定客户端副本元数据R,按照如下步骤对一次同步请求进行响应:步骤1:对于请求同步节点N中的任一操作序列S按照如下步骤执行S中包含的操作: 步骤1-1:确定操作序列S的并发操作序列CSL = {5?5" e N.SHB AS' I 5}; 步骤1-2:将S的执行时间设置为服务器的当前时间; 步骤1-3:执行$中操作,并将新产生节点加入副本元数据中且将复制类型设置Scn ; 步骤1-4:将S加入到N, SHB的末尾; 步骤2:对于副本元数据H中的任一节点N ,确定继上次同步之后服务端所接收到的其他并发操作CSL = {S.'|S..e N.SHB Λ SM > R^tAS1M Ψ R},并将CSL加入到同步请求的响应中; 步骤3:将副本元数据和响应中的最后同步时间设置为服务器的当前时间; 客户端处理同步响应的具体方法如下:当客户端接收到来自服务器的同步响应时,首先执行响应中所包含的操作以更新本地副本;除了对应节点SHB中包含的并发操作外,本地历史缓冲区LHB中所包含的操作也与传回的操作呈并发关系;执行完传回的操作后,中操作序列的上次同步时间将被设置,其中已被提交的本地操作将从LHB中移入至SHB。
4.根据权利 要求1所述的交互云应用中AST部分复制和同步方法,其特征在于:所述改进的地址空间转换方法中,历史操作被存储在操作目标节点的父节点中,各节点维护一个有效性计数器,地址空间转换通过直接操作并发操作目标节点的有效性计数器实现;令操作序列S是待执行的操作,给定S的并发操作序列集合CSL ,按照如下步骤执行地址空间转换和S中所包含的操作: 步骤1:去除eSL中所有并发操作的执行效果;对于任一操作& e CSL: (1)若of.type= Delete ,对0目标节点的执行加I操作实现; (2)若Ot Jype = InsertBeforeV o'type = Append,对乂 目标节点EC 执行减 I 操作; (3)若of,type= Update ,不作任何处理; 步骤2:执行S中的操作;对于任一待执行操作0 E S: (1)若ο.type= Delete ,对目标节点0.1d的有效性计数器EC执行减I操作; (2)若ο.type= InsertBefore V0.type = Append,在父节点0.paremtld 的子节点列表中确定出新节点OJd的插入位置,并执行原AST算法中的RangeScan过程将新节点插入到左右节点之间的正确位置;(3)若0.type = Update,如果该操作所更新的属性为操作兼容型属性,则操作被直接执行;否则,通过“Last-Write-Win”方式自动解决冲突;特别的,服务端接收到的更新操作在云端主副本上直接执行;在客户端,如果存在未提交的相同节点属性上的本地更新操作,则接收到的并发远程更新操作被丢弃; 步骤3:恢复CSL中所有并发操作的执行效果,对于任一操作o; G CSL: (1)若.type= Delete ,对0.’目标节点的EG执行减I操作实现; (2)右o;,type= IiisertBeforeVo1.type 二 Append,对0目标下点的EC执行加I操作; (3)若type= Update,`不作任何处理。
【文档编号】H04L29/08GK103491161SQ201310430182
【公开日】2014年1月1日 申请日期:2013年9月22日 优先权日:2013年9月22日
【发明者】夏欢欢, 卢暾, 邵斌, 李果, 丁向华, 顾宁 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1