在動態網絡下實現分佈式共享存儲

摘要:本文介紹了分佈式環境下實現共享內存模型會遇到的各類問題和挑戰,並針對不一樣問題介紹多種算法的優劣性。本文是對現階段該領域研究現狀的整體介紹,經過本文能瞭解動態分佈式共享內存研究的前沿情況、挑戰與機遇。算法

共享內存系統是普通單機程序開發人員熟悉的開發範式,經過簡單的使用讀、寫命令,就能確保將咱們須要的值在內存中進行輸入和讀取。數據的一致性等問題,在單機系統中,開發人員根本不須要考慮。然而在分佈式環境下,因爲數據出現多個副本,且副本的數量有可能動態增長或減小,要實現一樣的功能,又要保證讀寫性能,就須要新的算法和實現。本文介紹了分佈式環境下實現共享內存模型會遇到的問題和挑戰,針對不一樣問題,介紹多種算法,並比較其優劣性。本文是對現階段該領域研究現狀的整體介紹,經過閱讀該文,咱們能瞭解動態分佈式共享內存研究的前沿情況,瞭解該領域的挑戰與機遇。服務器

所謂3R(Reading、wRiting、aRithmetic)依然是大多數人類智力活動的基礎,同時,3R也是現代計算科技的重要組成部分。實際上,不管圖靈機仍是馮 · 諾依曼體系,都遵循讀、寫、算模型,全部投入實際使用的單處理器實現,都基於3R進行工做。隨着網絡科技的發展,通訊雖然成爲了重要系統活動,但在高層次的抽象上,使用讀、寫、算模型進行思考仍然顯然更爲天然。網絡

理想的系統必須具有必定的容錯性,同時系統必須支持大量併發訪問。惟一能保證可用性的方法只有冗餘,也就是說使用多個服務器製造對象內容的副本。因爲全部節點都有可能被更換,所以存儲系統必須提供數據的實時無縫遷移。併發

由數據副本帶來的主要問題是一致性問題,一致性的概念經過原子性或者等效的線性一致性來實現。異步

原子性是最強大的一致性概念,同時實現代價也比較高,Eric Brewer的CAP定理已證實沒有分佈式系統能夠徹底同時實現一致性、可用性、分區容忍性;儘管如此,在某些限定狀況下,實現簡單和直觀的原子一致性仍然很是必要。分佈式

基礎工具:靜態化網絡系統條件下的共享內存系統ide

靜態環境下的方法能夠做爲咱們動態系統的基礎工具,然而爲靜態系統設計的算法不能被直接用於動態系統,由於他們缺少處理拷貝集合變化的能力。工具

可以處理共享內存的ABD算法實現了原子內存,拷貝的同時提高了容錯能力和可用性。給定的總拷貝數是n,系統可以容忍 f 個拷貝失效,n>2f。性能

在動態網絡環境中模擬共享內存系統設計

動態系統的節點可能隨時退出或加入服務。ABD算法不能應用在這個場景中,由於它是創建在原有的拷貝主機集合一直可用的基礎上。爲了可以在動態環境中使用相似ABD方法,必需要提供方法對複製主機的集合進行管理,並保證閱讀者和寫入者能訪問可用的集合。

咱們首先從獲取共識的問題開始,由於它經過創建共同的操做順序,爲實現內存服務的原子性提供了天然的基礎。其次,咱們將提出組通訊服務(GCS)解決方案:使用強通訊原語,好比徹底排序廣播來對操做排序。最後,咱們聚焦一些方法,這些方法經過用顯式的拷貝主機集合管理,能夠用於擴展ABD算法至動態環境。

共識:在分佈式環境中如何協調並達成一致是計算機科學的基本問題。在分佈式環境下達成一致的問題被稱做共識問題。因爲不一樣節點提供了多個參考值,一組進程須要對該值達成一致。

共識算法能夠應用於原子化的數據服務,咱們只須要讓參與者對全局全部操做順序取得一致。但對於每一個操做都使用共識是一個笨拙的實現方式,特別是一些干擾會延遲甚至阻止操做終止。

組通訊服務(GCS):在分佈式系統中最重要的基礎材料就是GCS,GCS使得在不一樣節點上運行的操做共同以組的方式工做。操做經過GCS多播服務發送消息到全部組成員以實現分組協做。GCS負責保證消息傳輸的順序和可靠性。

GCS經過基於視圖及虛擬同步技術的有序組播來實現動態網絡的共享內存。這種解決方案的主要缺點是對大多數GCS實現,造成一個新的視圖須要大量時間,即便只有一個節點故障,性能降低也很是明顯。

dynastore算法:dynastore是多寫入者/多閱讀者動態原子存儲服務的實現。它集成了ABD算法,並容許副本主機集合重構,並且不須要共識的使用。另外一方面,向配置中增長和刪除單個節點,可能致使較大開銷,與之相比,直接用一個完整的配置替換原有配置性能可能更高。因此讀寫操做的延遲更依賴重構的速度。

從理論到實踐

咱們在這裏介紹並評估兩個實現。第一是從Rambo算法思想派生的分佈式磁盤陣列。第二是基於dynastore算法的實現。

FAB:聯合磚塊陣列(FAB)是由HP實驗室開發和評估的存儲系統,FAB系統中使用的計算機被稱爲「磚塊(brick)」,一般配備普通商用的磁盤和網絡接口。爲實現分佈,FAB將存儲切爲若干邏輯存儲塊,使用擦除碼(erasure-coding)算法複製每一個邏輯塊到bricks子集。

對FAB實現的評估結果代表,FAB性能相似於集中式的解決方案,同時能提供連續的服務和高可用性。

ynadisk:ynadisk是用於評估的dynastore算法實現,其設計支持在無共識的條件下從新配置服務,或採用共識進行部分同步。

評估結果代表,在無重構的狀況下,兩個版本算法有着相似的讀寫延遲,當多個重構同時發生時,異步無共識方法的延遲有明顯增長。

討論

本文中提到的方法只是衆多分佈式存儲服務實現方法的表明。這些方法,每個都有其優缺點。基於共識的解決方案,雖然概念簡單,但一般須要協調員的參與以獲取共識,其性能可能會嚴重依賴於可用的協調員。組通訊服務(GCS)是構建高可用性低延遲網絡中的有效工具,但當視圖發生變化時開銷很高,理論上更加優雅的方法,好比dynastore、Rambo、GeoQuorums,雖然實現更復雜,但具備更大的靈活性。

什麼時候進行重構也是必須解決的挑戰。例如,在任意一個節點加入或退出服務都要求進行重構。但當節點不斷加入和離開服務時,這種方法可能會形成沒必要要的開銷。另外一種方法是把決策權交給另外一個分佈式服務,經過觀察和推理性預判,找到重構的最佳時機。

一致性存儲系統一直是活躍的研究方向,一旦出現具備優越的容錯性以及高性能的動態存儲系統,將在構建複雜的分佈式應用程序中發揮重要的做用。分佈式應用程序對一致性和高性能的需求將不斷催生對原子的讀/寫存儲器需求。(譯者:朱燚)

本文選編自CACM 2014年6月刊《Implementing Distributed Shared Memory for Dynamic Networks》。

原文連接:http://cacm.acm.org/magazines/2014/6/175173-implementing-distributed-shared-memory-for-dynamic-networks/fulltext 。

相關文章
相關標籤/搜索