国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種可伸縮和高效的地址空間轉換算法的制作方法

      文檔序號:11778518閱讀:647來源:國知局
      一種可伸縮和高效的地址空間轉換算法的制作方法與工藝

      本發(fā)明屬于實時協(xié)同編輯技術領域,具體涉及一種可伸縮和高效的地址空間轉換算法。



      背景技術:

      為了隱藏網(wǎng)絡延遲帶來的影響,提高用戶訪問和操作數(shù)據(jù)的效率,一般在用戶的本地站點會保留一份數(shù)據(jù)的副本,作為多個用戶之間的共享資源。當多個用戶試圖并發(fā)訪問和編輯被共享資源時,如果不通過相應的算法對沖突操作進行檢測和消除,最終會造成共享資源的數(shù)據(jù)不一致。為了解決這一問題相關研究者提出了地址空間轉換算法,該算法需要依賴狀態(tài)向量從而對操作的地址空間進行回溯轉換,然后操作才能夠通過全序關系正確的執(zhí)行。然而狀態(tài)向量對于人數(shù)動態(tài)變化的web2.0應用顯然是不友好的,而隨著文檔的規(guī)模越來越大,回溯轉換的時間復雜度將會隨著上升。這些都制約了傳統(tǒng)地址空間轉換算法的發(fā)展和應用。

      針對上述情況,本發(fā)明引入其他一致性維護技術的方法,比如采用標量時間戳來減少對于用戶數(shù)目動態(tài)變化的影響從而增強伸縮性。以及對數(shù)據(jù)模型采用基于標識符的組織方式,來降低回溯的性能開銷。標量時間戳的數(shù)據(jù)長度是一個定值,存儲容量不隨用戶數(shù)目的變化而變化,已經(jīng)有不少一致性維護技術采用了類似的時間戳機制。而基于標識符的數(shù)據(jù)組織形式也被應用于一致性維護技術當中并取得了相應的成功。



      技術實現(xiàn)要素:

      為了解決傳統(tǒng)的地址空間轉換算法在伸縮性和效率上存在的問題,本發(fā)明通過改進現(xiàn)有的一致性維護技術,提出一種可伸縮和高效的地址空間轉換算法。

      本發(fā)明提出的地址空間轉換算法,是一種融合標識符和向量時間戳的地址空間轉換方法。該方法通過基于標識符對地址空間進行重新組織,地址空間中的操作單位不再通過絕對偏移量來尋找,而是通過唯一標識符來尋找,避免了不必要的回溯過程。此外通信協(xié)議基于客戶端/服務器架構,采用精心設計的標量時間戳,通信機制使得計時時間戳中的內容存在確認也能進行操作關系的判斷,從而支持同步和異步兩種工作模式。

      具體來說,本發(fā)明提出的地址空間轉換算法,所有客戶端保存一份工作副本,服務器負責處理用戶發(fā)過來的操作并且轉發(fā)給其他用戶,客戶端接收到這些操作并且在本地副本執(zhí)行,重復這個過程直到工作完成,通過改進的地址空間轉換算法來保持副本的一致性;采用客戶端/服務器結構,操作的產(chǎn)生和執(zhí)行都在客戶端完成,服務器只負責分發(fā)和處理,降低服務器負擔,通信協(xié)議基于標量時間戳,性能不受用戶人數(shù)的影響,伸縮性更強。

      服務器中的操作按照接收順序依次分配遞增序號并且存儲在歷史緩存隊列當中,操作可以根據(jù)工作方式的不同(同步異步),被服務器主動推送給參與的用戶,也可以等待用戶根據(jù)時間戳主動獲取。

      數(shù)據(jù)模型中有一個起始節(jié)點和終止節(jié)點,其他的所有節(jié)點包含一個下一個節(jié)點信息,從而形成一個線性鏈表。由于每個節(jié)點包含唯一標識符信息,改進的地址空間轉換算法可以通過標識符和時間戳來確認目標位置,避免回溯的過程,算法更加高效。

      本發(fā)明提出的地址空間轉換算法的具體步驟為:

      (1)重新構建地址空間

      首先,對于地址空間進行全新的組織構建,使地址空間的每一個單元都可以通過唯一標識信息進行訪問,在本發(fā)明系統(tǒng)中被稱為標識符(identifier)。每個節(jié)點定義如下:

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

      nextid為后繼節(jié)點標識符,通過該標識符可以查找后繼節(jié)點,tsins是創(chuàng)建該節(jié)點的操作的時間戳,tsdel是刪除該節(jié)點的操作中全序最小的時間戳,tsupd是修改該節(jié)點的操作中全序最大的時間戳。data是本節(jié)點具體保存的信息,根據(jù)應用而定。時間戳的具體意義將在下一節(jié)給出,為了支持更多的用戶,實現(xiàn)該算法的系統(tǒng)建議采用瀏覽器/服務器架構,附圖1展示了這種架構下的時序關系。該架構由一個特定的中央服務器和任意數(shù)目參與規(guī)劃的用戶組成,每個用戶本地都保存一份編輯副本,中央服務器負責轉發(fā)和處理用戶產(chǎn)生的操作,具體是指對每個操作分配一個連續(xù)遞增的序號,然后將該操作廣播給所有參與的用戶,包括產(chǎn)生該操作的用戶,告知分配的序號(圖中的‘確認’)。

      (2)建立消息通信協(xié)議

      算法的正確執(zhí)行依賴于消息通信協(xié)議,通信協(xié)議可以判斷操作之間的關系。比較常見的通信模式有同步和異步兩種。如附圖2所示,同步指的是如果客戶端需要獲取服務器最新狀態(tài),需要客戶端顯式的發(fā)起一次請求,而異步指的是當服務器狀態(tài)更新,那么將會主動的將新的狀態(tài)推送給需要通知的用戶。傳統(tǒng)的工作方式通常是采用同步模式,然而顯然異步模式的效率更高。本發(fā)明采用的通信協(xié)議支持兩種工作方式,為了便于理解,假設服務器存在一個虛擬操作歷史隊列(vshb),所有用戶發(fā)過來的操作都會被保存在vshb當中,操作在vshb當中的序號,就是服務器給該操作所對應的時間戳分配的序號(srn)。而用戶端我們維護兩個操作歷史隊列,分別是本地操作歷史隊列(lhb)和遠程操作隊列(rhb)。lhb中存放的是用戶自身產(chǎn)生的操作,而rhb中存放的是接收到的遠程操作,給所有操作分配一個唯一的時間戳。

      本發(fā)明給出這種新的時間戳定義,具體如下:

      ts=<user,opcnt,lastupdatesrn,srn>

      其中user標識時間戳所對應的操作的產(chǎn)生者,opcnt標識操作產(chǎn)生時lhb的大小,lastupdatesrn指的是lhb和rhb中已知的最大srn,srn是操作在vshb中的序號。附圖3給出了一次通信工作過程。當一個操作o被用戶1創(chuàng)造時,一個時間戳ts0同時被創(chuàng)建并且附加在操作o上,ts0的前三個屬性(user,opcnt,lastupdatesrn)可以直接通過本地站點提供的信息獲取。這個時候,lhb和rhb中的所有操作均因果先與該操作,因為之前的操作均先于該操作執(zhí)行完畢。包含了操作信息o和時間戳信息ts0的消息會被發(fā)送到服務器上。原本為空的srn會在服務器上根據(jù)vshb中的序號分配srni,操作的確認信息會被發(fā)送給原作者,確認信息中附加srni,的信息。然后原作者的srn不再為空。確認消息發(fā)送的同時,該操作也被廣播給所有參與協(xié)作的用戶,比如圖中的用戶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中的其他的操作與該操作是并發(fā)關系。在lhb中的操作ol可分為三種:

      (1)ol的srn為空,那么顯然跟操作o是并發(fā)關系,因為他在vshb中一定排在操作o的后面,分配一個比操作o更大的srn,該srn>o.lastupdatesrn;

      (2)ol中的srn不為空,并且滿足ol.srn>o.lastupdatesrn.ol和操作o也是并發(fā)關系;

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

      綜上所述,本發(fā)明給出時間戳的判別規(guī)律:

      (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所示,該協(xié)作會話的所有歷史操作將會被發(fā)送給新加入的用戶,從而形成一個副本。該副本是其他用戶協(xié)作之后的成果,當該會話還沒有用戶操作產(chǎn)生時,則副本為空。接下來,當本地產(chǎn)生操作時,產(chǎn)生的操作可以在本地副本上立刻執(zhí)行而不會被阻塞,因為此時本地所有已經(jīng)執(zhí)行過的操作都因果先于該操作,執(zhí)行完畢后將生成一個包含<user,opcnt,lastupdatesrn>的時間戳ts,其中srn為空,user為該站點標識符,opcnt為操作產(chǎn)生時lhb的大小,lastupdatesrn為操作產(chǎn)生時rhb和lhb中所有操作中出現(xiàn)的最大srn。然后將操作信息和時間戳ts一起作為消息mes=<op,ts>添加到lhb尾部,然后發(fā)送到服務器端。srn等待服務器進行分配后的確認消息,因此需要先將mes添加到尾部,在發(fā)送,防止確認的時候lhb中無該消息。

      (3)地址空間轉換(改進的地址空間轉換算法)

      傳統(tǒng)的地址空間轉換算法需要回溯整個地址空間從而確定操作的實際插入位置,而這個過程是算法的性能瓶頸,為了克服這個性能瓶頸,我們采用標識符來縮短需要進行回溯的地址空間范圍。通過標識符我們可以不依賴回溯過程來找到目標地址空間的起始節(jié)點,然后通過時間戳對后繼節(jié)點進行遍歷,從而確認目標插入位置。本發(fā)明的地址空間轉換算法支持三種基本操作:插入(insert),刪除(delete)以及更新(update),執(zhí)行步驟如下所示:

      步驟1:從服務器獲取所有歷史操作,在本地執(zhí)行完成副本;

      步驟2:如果接收到遠程操作或者本地產(chǎn)生操作,調用相應的插入、刪除和更新操作來完成執(zhí)行;

      步驟3:執(zhí)行后的副本反映到相應的應用當中。

      該發(fā)明的系統(tǒng)架構圖如附圖4所示,主要有服務器和客戶端組成,客戶端可以分為用戶圖形化界面,是用戶可以操作和看到結果的界面;服務層,由封裝地址空間轉換算法提供的原始操作;ast引擎主要執(zhí)行上面提到的三個操作,共享工作空間跟具體的應用有關。

      本發(fā)明的有益效果是:

      1、隱藏了網(wǎng)絡延遲和用戶人數(shù)的影響,讓用戶的操作能夠立刻在本地執(zhí)行,操作不需要經(jīng)過復雜的處理即可在遠程執(zhí)行,并且保證所有副本的一致性;

      2、相對于傳統(tǒng)的地址空間轉換算法性能大大提高,適用的應用場景更多。

      附圖說明

      圖1為系統(tǒng)工作時序圖。

      圖2為同步工作模式(左)和異步工作模式(右)。

      圖3為同步流程示意圖。

      圖4系統(tǒng)的模塊構成。

      圖5應用實現(xiàn)。

      具體實施方式

      下面給出本發(fā)明有關算法及其偽代碼,進一步描述本發(fā)明具體實施方式。

      一、插入操作

      二、刪除操作

      三、更新操作

      四、范圍掃描

      上面四個算法能夠完成ast引擎的基本操作,還需要通信管道去進行網(wǎng)絡通訊,采用websocket或者其他支持異步工作模式的框架均可,附圖5給出了基于發(fā)明的一個協(xié)同旅游規(guī)劃系統(tǒng)的效果,采用了谷歌地圖的相應api,來完成協(xié)同旅游路線規(guī)劃任務。

      以上所述僅為本發(fā)明的較佳實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的原則和精神之內所作的任何修改、等同替換和改進等,均就包含在本發(fā)明的保護范圍之內。

      當前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1