一种可伸缩和高效的地址空间转换算法的制作方法

文档序号:11778518阅读:581来源:国知局
一种可伸缩和高效的地址空间转换算法的制作方法与工艺

本发明属于实时协同编辑技术领域,具体涉及一种可伸缩和高效的地址空间转换算法。



背景技术:

为了隐藏网络延迟带来的影响,提高用户访问和操作数据的效率,一般在用户的本地站点会保留一份数据的副本,作为多个用户之间的共享资源。当多个用户试图并发访问和编辑被共享资源时,如果不通过相应的算法对冲突操作进行检测和消除,最终会造成共享资源的数据不一致。为了解决这一问题相关研究者提出了地址空间转换算法,该算法需要依赖状态向量从而对操作的地址空间进行回溯转换,然后操作才能够通过全序关系正确的执行。然而状态向量对于人数动态变化的web2.0应用显然是不友好的,而随着文档的规模越来越大,回溯转换的时间复杂度将会随着上升。这些都制约了传统地址空间转换算法的发展和应用。

针对上述情况,本发明引入其他一致性维护技术的方法,比如采用标量时间戳来减少对于用户数目动态变化的影响从而增强伸缩性。以及对数据模型采用基于标识符的组织方式,来降低回溯的性能开销。标量时间戳的数据长度是一个定值,存储容量不随用户数目的变化而变化,已经有不少一致性维护技术采用了类似的时间戳机制。而基于标识符的数据组织形式也被应用于一致性维护技术当中并取得了相应的成功。



技术实现要素:

为了解决传统的地址空间转换算法在伸缩性和效率上存在的问题,本发明通过改进现有的一致性维护技术,提出一种可伸缩和高效的地址空间转换算法。

本发明提出的地址空间转换算法,是一种融合标识符和向量时间戳的地址空间转换方法。该方法通过基于标识符对地址空间进行重新组织,地址空间中的操作单位不再通过绝对偏移量来寻找,而是通过唯一标识符来寻找,避免了不必要的回溯过程。此外通信协议基于客户端/服务器架构,采用精心设计的标量时间戳,通信机制使得计时时间戳中的内容存在确认也能进行操作关系的判断,从而支持同步和异步两种工作模式。

具体来说,本发明提出的地址空间转换算法,所有客户端保存一份工作副本,服务器负责处理用户发过来的操作并且转发给其他用户,客户端接收到这些操作并且在本地副本执行,重复这个过程直到工作完成,通过改进的地址空间转换算法来保持副本的一致性;采用客户端/服务器结构,操作的产生和执行都在客户端完成,服务器只负责分发和处理,降低服务器负担,通信协议基于标量时间戳,性能不受用户人数的影响,伸缩性更强。

服务器中的操作按照接收顺序依次分配递增序号并且存储在历史缓存队列当中,操作可以根据工作方式的不同(同步异步),被服务器主动推送给参与的用户,也可以等待用户根据时间戳主动获取。

数据模型中有一个起始节点和终止节点,其他的所有节点包含一个下一个节点信息,从而形成一个线性链表。由于每个节点包含唯一标识符信息,改进的地址空间转换算法可以通过标识符和时间戳来确认目标位置,避免回溯的过程,算法更加高效。

本发明提出的地址空间转换算法的具体步骤为:

(1)重新构建地址空间

首先,对于地址空间进行全新的组织构建,使地址空间的每一个单元都可以通过唯一标识信息进行访问,在本发明系统中被称为标识符(identifier)。每个节点定义如下:

node<identifier,data,nextid,tsins,tsdel,tsupd>

nextid为后继节点标识符,通过该标识符可以查找后继节点,tsins是创建该节点的操作的时间戳,tsdel是删除该节点的操作中全序最小的时间戳,tsupd是修改该节点的操作中全序最大的时间戳。data是本节点具体保存的信息,根据应用而定。时间戳的具体意义将在下一节给出,为了支持更多的用户,实现该算法的系统建议采用浏览器/服务器架构,附图1展示了这种架构下的时序关系。该架构由一个特定的中央服务器和任意数目参与规划的用户组成,每个用户本地都保存一份编辑副本,中央服务器负责转发和处理用户产生的操作,具体是指对每个操作分配一个连续递增的序号,然后将该操作广播给所有参与的用户,包括产生该操作的用户,告知分配的序号(图中的‘确认’)。

(2)建立消息通信协议

算法的正确执行依赖于消息通信协议,通信协议可以判断操作之间的关系。比较常见的通信模式有同步和异步两种。如附图2所示,同步指的是如果客户端需要获取服务器最新状态,需要客户端显式的发起一次请求,而异步指的是当服务器状态更新,那么将会主动的将新的状态推送给需要通知的用户。传统的工作方式通常是采用同步模式,然而显然异步模式的效率更高。本发明采用的通信协议支持两种工作方式,为了便于理解,假设服务器存在一个虚拟操作历史队列(vshb),所有用户发过来的操作都会被保存在vshb当中,操作在vshb当中的序号,就是服务器给该操作所对应的时间戳分配的序号(srn)。而用户端我们维护两个操作历史队列,分别是本地操作历史队列(lhb)和远程操作队列(rhb)。lhb中存放的是用户自身产生的操作,而rhb中存放的是接收到的远程操作,给所有操作分配一个唯一的时间戳。

本发明给出这种新的时间戳定义,具体如下:

ts=<user,opcnt,lastupdatesrn,srn>

其中user标识时间戳所对应的操作的产生者,opcnt标识操作产生时lhb的大小,lastupdatesrn指的是lhb和rhb中已知的最大srn,srn是操作在vshb中的序号。附图3给出了一次通信工作过程。当一个操作o被用户1创造时,一个时间戳ts0同时被创建并且附加在操作o上,ts0的前三个属性(user,opcnt,lastupdatesrn)可以直接通过本地站点提供的信息获取。这个时候,lhb和rhb中的所有操作均因果先与该操作,因为之前的操作均先于该操作执行完毕。包含了操作信息o和时间戳信息ts0的消息会被发送到服务器上。原本为空的srn会在服务器上根据vshb中的序号分配srni,操作的确认信息会被发送给原作者,确认信息中附加srni,的信息。然后原作者的srn不再为空。确认消息发送的同时,该操作也被广播给所有参与协作的用户,比如图中的用户2。该操作会被放在user2的rhb当中,注意到rhb的所有远程操作均是按照srn升序排列的。在rhb中的操作or:

(1)满足or.srn<=o.lastupdatesrn条件的操作,是因果先于该操作的操作(rhb中的绿色部分);

(2)满足or.srn>o.lastupdatesrn,并且or.user=o.user以及or.opcnt<o.opcnt的操作,是因果先于该操作的操作(rhb中的黄色部分的一部分)。

rhb中的其他的操作与该操作是并发关系。在lhb中的操作ol可分为三种:

(1)ol的srn为空,那么显然跟操作o是并发关系,因为他在vshb中一定排在操作o的后面,分配一个比操作o更大的srn,该srn>o.lastupdatesrn;

(2)ol中的srn不为空,并且满足ol.srn>o.lastupdatesrn.ol和操作o也是并发关系;

(3)ol中的srn不为空,并且满足ol.srn<=o.lastupdatesrn.ol因果先于o。

综上所述,本发明给出时间戳的判别规律:

(1)ts1→ts2,当且仅当1)ts1.user=ts2.user并且ts1.opcnt<ts2.opcnt;2)ts1.srn!=null并且ts1.srn<ts2.lastupdatesrn;

(2)ts1‖ts2,当且仅当既不满足ts1→ts2,也不满足ts2→ts1。

通过以上方式,可以直接判断两个时间戳的关系,适用于同步或者异步工作模式。

具体的工作流程如附图4所示,该协作会话的所有历史操作将会被发送给新加入的用户,从而形成一个副本。该副本是其他用户协作之后的成果,当该会话还没有用户操作产生时,则副本为空。接下来,当本地产生操作时,产生的操作可以在本地副本上立刻执行而不会被阻塞,因为此时本地所有已经执行过的操作都因果先于该操作,执行完毕后将生成一个包含<user,opcnt,lastupdatesrn>的时间戳ts,其中srn为空,user为该站点标识符,opcnt为操作产生时lhb的大小,lastupdatesrn为操作产生时rhb和lhb中所有操作中出现的最大srn。然后将操作信息和时间戳ts一起作为消息mes=<op,ts>添加到lhb尾部,然后发送到服务器端。srn等待服务器进行分配后的确认消息,因此需要先将mes添加到尾部,在发送,防止确认的时候lhb中无该消息。

(3)地址空间转换(改进的地址空间转换算法)

传统的地址空间转换算法需要回溯整个地址空间从而确定操作的实际插入位置,而这个过程是算法的性能瓶颈,为了克服这个性能瓶颈,我们采用标识符来缩短需要进行回溯的地址空间范围。通过标识符我们可以不依赖回溯过程来找到目标地址空间的起始节点,然后通过时间戳对后继节点进行遍历,从而确认目标插入位置。本发明的地址空间转换算法支持三种基本操作:插入(insert),删除(delete)以及更新(update),执行步骤如下所示:

步骤1:从服务器获取所有历史操作,在本地执行完成副本;

步骤2:如果接收到远程操作或者本地产生操作,调用相应的插入、删除和更新操作来完成执行;

步骤3:执行后的副本反映到相应的应用当中。

该发明的系统架构图如附图4所示,主要有服务器和客户端组成,客户端可以分为用户图形化界面,是用户可以操作和看到结果的界面;服务层,由封装地址空间转换算法提供的原始操作;ast引擎主要执行上面提到的三个操作,共享工作空间跟具体的应用有关。

本发明的有益效果是:

1、隐藏了网络延迟和用户人数的影响,让用户的操作能够立刻在本地执行,操作不需要经过复杂的处理即可在远程执行,并且保证所有副本的一致性;

2、相对于传统的地址空间转换算法性能大大提高,适用的应用场景更多。

附图说明

图1为系统工作时序图。

图2为同步工作模式(左)和异步工作模式(右)。

图3为同步流程示意图。

图4系统的模块构成。

图5应用实现。

具体实施方式

下面给出本发明有关算法及其伪代码,进一步描述本发明具体实施方式。

一、插入操作

二、删除操作

三、更新操作

四、范围扫描

上面四个算法能够完成ast引擎的基本操作,还需要通信管道去进行网络通讯,采用websocket或者其他支持异步工作模式的框架均可,附图5给出了基于发明的一个协同旅游规划系统的效果,采用了谷歌地图的相应api,来完成协同旅游路线规划任务。

以上所述仅为本发明的较佳实施例而已,并不用于限制本发明,凡在本发明的原则和精神之内所作的任何修改、等同替换和改进等,均就包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1