在动态网络下实现分布式共享存储
共享內存系統是普通單機程序開發人員熟悉的開發范式,通過簡單的使用讀、寫命令,就能確保將我們需要的值在內存中進行輸入和讀取。數據的一致性等問題,在單機系統中,開發人員根本不需要考慮。然而在分布式環境下,由于數據出現多個副本,且副本的數量有可能動態增加或減少,要實現同樣的功能,又要保證讀寫性能,就需要新的算法和實現。本文介紹了分布式環境下實現共享內存模型會遇到的問題和挑戰,針對不同問題,介紹多種算法,并比較其優劣性。本文是對現階段該領域研究現狀的總體介紹,通過閱讀該文,我們能了解動態分布式共享內存研究的前沿狀況,了解該領域的挑戰與機遇。
所謂3R(Reading、wRiting、aRithmetic)依然是大多數人類智力活動的基礎,同時,3R也是現代計算科技的重要組成部分。實際上,無論圖靈機還是馮 · 諾依曼體系,都遵循讀、寫、算模型,所有投入實際使用的單處理器實現,都基于3R進行工作。隨著網絡科技的發展,通信雖然成為了重要系統活動,但在高層次的抽象上,使用讀、寫、算模型進行思考仍然顯然更為自然。
理想的系統必須具備一定的容錯性,同時系統必須支持大量并發訪問。唯一能保證可用性的方法只有冗余,也就是說使用多個服務器制造對象內容的副本。由于所有節點都有可能被更換,因此存儲系統必須提供數據的實時無縫遷移。
由數據副本帶來的主要問題是一致性問題,一致性的概念通過原子性或者等效的線性一致性來實現。
原子性是最強大的一致性概念,同時實現代價也比較高,Eric Brewer的CAP定理已證明沒有分布式系統可以完全同時實現一致性、可用性、分區容忍性;盡管如此,在某些限定情況下,實現簡單和直觀的原子一致性仍然非常必要。
基礎工具:靜態化網絡系統條件下的共享內存系統
靜態環境下的方法可以作為我們動態系統的基礎工具,然而為靜態系統設計的算法不能被直接用于動態系統,因為他們缺乏處理拷貝集合變化的能力。
能夠處理共享內存的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?。
譯文全文鏈接:http://blog.csdn.net/yizhu2000/article/details/37594703
總結
以上是生活随笔為你收集整理的在动态网络下实现分布式共享存储的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android P正式版即将到来:后台应
- 下一篇: 跨平台2D/3D游戏开发框架libGDX