樂觀複製演算法 2 採用樂觀複製技術的應用

2021-06-14 12:19:58 字數 2001 閱讀 4019

樂觀複製被應用到許多重要領域,包括廣域網的資料管理,移動資訊系統,和基於計算機的協作。為後續技術的討論提供背景,我們將選取這些領域中的一些主要服務,介紹它們的功能和結構。

對於站點間通訊緩慢和不可靠的情況,樂觀複製特別具有吸引力,對於網際網路上的應用這一點十分突出。我們將考察兩種網際網路應用,乙個是廣播資訊的應用,另乙個是具有更多資訊互動的應用。

很多網際網路資料傳播服務採用樂觀複製保證可用性和效能。例如www,ftp,nntp快取,以及目錄伺服器,例如grapevine,clearinghouse, dns,活動目錄。

dns是乙個樂觀復**務,它允許從節點上的內容滯後主節點,客戶端可以看到不一致。有三個原因使得樂觀複製非常適合dns和與之類似的服務。第一,樂觀複製允許在長距離,不穩定網路上覆制資料。第二,它避免了昂貴的硬體組成,這些對於提供高可靠的悲觀複製是必須的(比如,遠距離的光纖連線)。最後,因為dns執行客戶端和中間伺服器快取資料,使用樂觀複製演算法以及寬鬆的一致性,並不會明顯地降低端到端的服務質量。dns是乙個單主節點(所有該域的寫請求,發生在該域的主節點上),狀態傳輸系統(主節點傳送拷貝和註冊資訊到從節點)。

usenet是乙個廣域網的公告板系統,部署於2023年,是最老並仍是最流行的樂觀復**務。usenet開始執行在uucp上,乙個無互動的儲存傳送網路。uucp僅能和固定的鄰居通訊,網路連線僅支援在直接連線的服務期間,間歇性的檔案拷貝。

usenet是由上千臺伺服器組成乙個強連通圖,由一些列人工協商而成。每個伺服器複製所有的新聞文章,這樣使用者能從最近的伺服器獲取任意文章。usenet允許任何使用者將文章傳送到任何伺服器。上傳到一台伺服器的文章週期性的推送到鄰近的伺服器上。接收伺服器,儲存並再周期性地傳送到它鄰近的伺服器。這樣,每篇文章通過服務期間的連線最終傳播到全世界所有的伺服器上。無限的傳播迴圈,通過每個節點僅接受自己缺少的檔案而避免。文章通過設定強制性的過期時間刪除,或者使用者傳送取消資訊刪除,該資訊會和通常的訊息一樣在伺服器間傳播,但會強迫伺服器刪除特定訊息。

usenet週期性的文章傳播策略,造成了延遲時間的不確定,一篇文章從乙個伺服器傳送到另一台伺服器可能需要一周之久。雖然這樣的變化經常讓使用者混淆,但它傑出的可用性使得這是乙個合理的代價。

usenet是乙個多主節點(寫操作能在任意節點發生),操作傳輸的系統(主節點傳送文章建立、取消操作到其它節點),使用乙個週期性更新傳播協議(任意節點可以傳送更新到其它節點)。

樂觀複製特別適合計算機經常離開的網路環境。採用樂觀複製的移動儲存系統有lotus notes,palm,coda,以及bayou。

下面討論bayou系統。它允許使用者在移動裝置上覆制資料庫(比如,筆記本),在斷開連線時修改它,使用者重新連線到網路上時合併其它裝置上的變化。bayou將對站點上的修改,記錄為一系列高層次的操作,利用時間戳向量來最小化站點間需要交換的操作。更新在它到來時暫時性地被應用,但到達順序可能和所有站點最後同意的順序不一樣。

(思考:所有站點需要達成一致的到達順序,可以通過設定某個全域性伺服器來統一)

因此,臨時性的更新會被取消或者重做,當站點逐步了解到最後順序。衝突的檢測和解決,可以通過應用程式定義的指令碼,挖掘應用程式語義來控制。

在演算法上,bayou是乙個多主節點,使用週期性傳送高層次操作的系統。兩種時間戳來控制臨時執行的操作和最終排程順序,應用層指令碼來解決語義衝突。bayou是本文中論述到的最為精緻和複雜系統,因為移動環境的挑戰,比如緩慢和不可靠的網路連線,不可忽視的更新衝突。

cvs(併發版本系統)為一組檔案儲存一系列歷史更新,允許使用者在需要時兼做檔案的歷史版本。cvs中的通訊是通過單個中心節點進行。中心伺服器有乙個倉庫,管理著檔案副本的授權,以及過去他們發生的所有變化。更新檔案前,使用者先建立乙個私有的檔案拷貝,利用標準工具比如emacs進行編輯。任意數目的使用者可以擁有他自己的副本,併發的修改副本。當工作完成,使用者提交他自己的副本到倉庫。如果沒有其他使用者修改同乙個檔案,提交立即成功。否則,cvs將會逐行比較不同版本的檔案。只有這些行的更新集合沒有重疊,cvs就會自動的合併它們,讓使用者提交合併後的版本。

這一節總體介紹了採用樂觀複製的常見系統。樂觀複製覆蓋了廣泛並重要的應用,從usenet的發明開始。注意,這些系統使用多種不同的機制來維持副本一致性。餘下的章節將仔細分析這些系統。

樂觀複製演算法 附件C 一致性模型

對一致性模型的描述主要從三個出發點進行考慮 1 響應前還是響應後,即在完成對所有副本資料集的同步前返回使用者,還是完成同步後再給使用者反饋。2 進行同步物件的多少,是對每次更新進行同步還是在多次更新後再同步。3 對更新順序的維護,維護更新操作間不同的順序會提供不同的一致性,當完全不考慮更新順序,甚至...

樂觀鎖 CAS演算法

cas全稱 compare and swap 比較與交換 是一種無鎖演算法。在不使用鎖 沒有執行緒被阻塞 的情況下實現多執行緒之間的變數同步。j a.util.concurrent包中的原子類就是通過cas來實現了樂觀鎖。cas演算法涉及到三個運算元 當且僅當 v 的值等於 a 時,cas通過原子方...

GoldenGate採用PUMP單向複製 五

五 部署goldengate pump方式單向複製 1.配置源端goldengate 1 將之前的抽取程序刪除並重新配置 delete extract eini 1 2 配置管理程序和抽取程序 ggsci dblogin userid ogg,password ufsoft edit params ...