雲計算儲存技術分析

2023-02-14 00:09:03 字數 3668 閱讀 2527

隨著網路應用業務量的不斷增長,雲儲存技術作為雲計算系統的重要應用之一,也得到了更多的關注。對雲儲存技術的研究實質上是研究分布式儲存技術。不同於傳統的儲存體系,雲計算儲存技術需要解決更多的資料以及運算的負載,需要保證更好的資料可用性以及資料一致性,需要提供更快的系統響應時間。

針對這些需求,各大公司都開發出可以很好的解決方案,本文主要針對主流的雲儲存系統(google file system、 amazon dynamo等)進行分析,主要分析其在冗餘備份、動態擴充套件、負載均衡等方面的解決策略。

關鍵詞:雲儲存, 冗餘備份,動態擴充套件,負載均衡

as with the rapid growth of web application, cloud storage is getting more and more attention. in fact, research on cloud storage is essentially research on distributed storage technology. distinguished from conventional storage system, distributed storage technology needs to better support enormous amount of data and computing workload, guarantee better data **ailability and integrity, and provide shorter system response time.

to meet those requirements, lots of giant companies h**e come up with great solutions, this article mainly analyses mainstream cloud storage system, such as google file system, amazon dynamo etc. and the main focus is on strategy for redundant backup, dynamic extension, workload balance.

keywords:cloud storage, redundant backup, dynamic extension, workload balance

近年來,雲計算無疑是最熱門的技術話題之一,越來越多的it企業推出了自己的雲計算產品,它的商業價值被給予了巨大的肯定,被認定是未來發展的必然趨勢之一。

那麼什麼是雲計算呢?目前,對於雲計算的認識還在不斷地發展變化,並沒有乙個統一的定義。號稱「網格之父」的ian foster是這樣定義雲計算的:

「雲計算是由規模經濟拖動,為網際網路上的外部使用者提供一組抽象的、虛擬化的、動態可擴充套件的、可管理的計算資源能力、儲存能力、平台和服務的一種大規模分布式計算的聚合體」。[1]從概念上看,雲計算實質上是一種分布式計算,雲計算的核心思想,是將大量用網路連線的計算資源統一管理和排程,構成乙個計算資源池向使用者按需服務,提供資源的網路被稱為「雲」。

當雲計算系統需要運算和處理大量資料的儲存和管理時,雲計算系統中就需要配置大量的儲存裝置,高效能的雲儲存也就成為了實現雲計算服務的基本條件。雲儲存是指通過集群應用、網格技術或分布式系統等功能,將網路中大量不同型別的儲存裝置通過應用軟體集合起來協同工作,共同對外提供資料儲存和業務訪問功能。事實上,幾乎在所有的基於雲計算服務的應用中都需要高效能的雲儲存來滿足資料處理的需求。

2. 雲計算儲存技術

從雲計算和雲儲存的概念中可以看出,雲儲存實質上是一種分布式儲存,因此對於雲計算儲存技術的研究的核心在於對分布式儲存技術的研究。由於雲儲存底層裝置的軟硬體環境各不相同,且所處的網路也是乙個多變的環境,因此雲計算的儲存技術除了需要解決基本的海量資料的儲存與獲取之外,還需要解決負載均衡、提高容錯性、動態擴充套件等許多傳統儲存系統沒有遇到過的挑戰。

針對上面提到的幾點挑戰,本文將對現有的技術進行介紹、分析及對比。

分布式儲存系統(如amazon dynamo和gfs)都是應用在實際伺服器上的系統,每一次出錯都會帶來巨大的損失,然而由於分布式系統的執行環境決定了其需要面對巨大的壓力。據google說,其每1000臺伺服器的集群中,平均每天壞掉一台機器,因此容錯性是分布式儲存系統在設計時就必須優先考慮的問題。[2]為了提供較高的容錯性,常用的方法主要是冗餘存放。

具體的做法就是將同乙份資料複製為多份(具體的數量是根據不同的應用場景決定),同時儲存在多個節點上,這樣就可以在某一節點出現故障(臨時故障或永久性故障)時,儲存在其他節點上的資料備份可以繼續提供服務。由之前所述平均每1000臺伺服器每天會有一台故障,那麼其實只需要將同乙份資料儲存在三颱伺服器上,那樣在同一天三颱機器同時出錯的概率就降低為10-9,幾乎可以視作完全安全了。所以amazon dynamo和google file system都採用了這個策略。

在提供了較高的資料可用性的同時,冗餘存放還能帶來分流資料請求,降低伺服器平均負載壓力的好處。同乙份資料儲存在多處地理位置不同、網路情況不同的伺服器中,對於處於正常服務狀態的資料節點來說,使用者在對資料進行讀取操作時,距離使用者較近並且網路狀況較好的伺服器節點可以提供更多的服務,同時其他節點可以同時提供資料傳輸,降低了各自的負載壓力,提高了使用者獲取資料的速度。

下面對amazon dynamo和google file system在提高容錯性方面的策略(主要是冗餘存放)進行具體的分析和比較。

策略定義了n,w,r三個引數,其中n代表系統中每條記錄的副本數,w代表每次記錄成功寫操作需要寫入的副本數,r代表每次記錄讀請求最少需要讀取的副本數。只要w+r>n 就可以保證資料的一致性,因為w+r>n時讀寫總會有交集——必定最少有w+r-n個讀請求會落到被寫的副本上,所以必然會讀到「最後」被更新的副本資料。至於誰 「最後」的判斷需採用時間戳或時鐘向量等技術完成,有邏輯關係先後由時鐘向量判斷,否則簡單的用時間戳先後判斷。

這種做法相比我們最樸素的想法——我們直觀的想法一定認為如果系統要求記錄冗餘n 份,那麼每次就寫入n 份,而在讀請求時讀取任意乙份可用記錄即可——要更安全,也更靈活。

說其更安全是指資料一致性更能被保證:比如說客戶寫入一條記錄,該記錄有三個副本在三個不同點上,但是其中乙個點臨時故障了,因此記錄沒有被寫入或更新。那麼在對該記錄再讀取時,如果取兩點(r=2 )則必然會讀取到最少乙個正確的值(臨時故障點有可能在讀是恢復,那麼讀出的值則不存在或者不是最新的;若臨時故障點還未恢復,則讀請求無法訪問其上副本)。

而使用我們傳統方法可能讀到發生臨時故障的那點,此刻就有可能讀出現錯誤記錄(舊的或者不存在),因此可以看到加大w,r 可提高系統安全性;說其更靈活則是指可通過配置n,w,r 這幾個引數以滿足包括訪問方式、速度和資料安全等迥異需求的各種場景:比如對於寫多讀少的操作,可將w 配低,r 配高;對於寫少讀多的操作,則可將w 配高,r 配低。

dynamo對於臨時故障的處理方式是:找到一台可用機器,將資料暫時寫到其上的臨時表中,待臨時故障恢復後,臨時表中的資料會自動寫回原目的地。這樣做得目的是達到永遠可寫,即使該雲中只有一台機器可用,那麼寫請求的資料就不會丟失。

該策略主要通過gfs來實現資料的冗餘儲存。gfs將整個系統的節點分為三種: master、chunkserver和client。

gfs中的檔案被分成大小固定的資料塊,並由master節點在建立時分配乙個64位全域性唯一的資料塊控制代碼。資料塊被chunkserver以普通linux檔案的形式儲存在磁碟中。為了保證資料的可用性,資料塊預設儲存三份。

master節點中則維護著系統的元資料(檔案及資料塊名字節點、gfs檔案到資料塊之間的對映和資料塊位置資訊等),同時也負責gfs的全域性控制(資料塊租約管理、垃圾資料塊**、資料塊複製等)。master節點定期與chunkserver通過心跳的方式交換資訊,獲得節點的活動狀態。

主要雲計算廠商技術差異分析

當今最著名的主機服務 商當屬amazon公司 google以及 這是從應用程式開發的角度來看待主機服務 商,因為它們能夠提供或者 不提供 語言,不同的api和基礎設施都可以幫助實施這些資源。所有的趨勢使雲計算成為可能,我認為以下的幾個趨勢起了十分重要的作用。虛擬化應用和作業系統解除了使用者對基礎硬體...

2023年資料儲存雲計算和大資料行業分析報告

2014年7月 目錄一 監管體制 主要法律法規及政策 3二 行業市場規模 4 1 資料儲存市場規模 4 2 資料安全市場規模 6 3 雲計算 雲儲存 大資料市場規模 7三 主要風險 7 1 資訊化建設投資規模和投資方式的變化 82 國內外廠家的競爭激烈 9 3 傳統儲存產品和解決方案面臨轉型 94 ...

雲計算的關鍵技術 資料儲存技術 資料管理技術 程式設計模型

雲計算的關鍵技術 資料儲存技術 資料管理技術 程式設計模型 雲計算系統運用了許多技術,其中以程式設計模型 資料管理技術 資料儲存技術 虛擬化技術 雲計算平台管理技術最為關鍵。1.1 程式設計模型 mapreduce是google開發的j a python c 程式設計模型,它是一種簡化的分布式程式設...