摘 要:云計(jì)算是一種全新的IT服務(wù)模式,它是在網(wǎng)格計(jì)算的基礎(chǔ)上發(fā)展而來的。本文比較了當(dāng)今具有代表性的云計(jì)算定義,以谷歌的云計(jì)算為例,探討了云計(jì)算的數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)管理等關(guān)鍵技術(shù),指出了云計(jì)算的發(fā)展前景。
關(guān)鍵詞:云計(jì)算;數(shù)據(jù)的存儲(chǔ);數(shù)據(jù)的管理
中圖分類號(hào):TP3
隨著云計(jì)算技術(shù)的蓬勃發(fā)展,Google、亞馬遜、微軟、IBM等大型公司都開發(fā)了自己的云計(jì)算平臺(tái)。其中Google公司的App Engine云計(jì)算開發(fā)平臺(tái)為應(yīng)用服務(wù)提供商開發(fā)和部署云計(jì)算服務(wù)提供接口。Amazon等公司的云計(jì)算平臺(tái)提供可快速部署的虛擬服務(wù)器,實(shí)現(xiàn)了基礎(chǔ)設(shè)施的按需分配。MapReduce等新型并行編程框架簡化了海量數(shù)據(jù)處理模型。Salesforce公司的客戶關(guān)系管理(CRM,customerrelationship management)服務(wù)等云計(jì)算服務(wù)將桌面應(yīng)用程序遷移到互聯(lián)網(wǎng),實(shí)現(xiàn)應(yīng)用程序的泛在訪問。
作為一種全新的IT服務(wù)模式,云計(jì)算旨在實(shí)現(xiàn)大規(guī)模的分工協(xié)作與資源共享,以達(dá)到低成本、低能耗、高效率的計(jì)算目標(biāo)。它以效用為先,以客戶為中心,請(qǐng)求即響應(yīng)(On-demand)與按用量收費(fèi)(Pay-per-use)的服務(wù)模式,體現(xiàn)了計(jì)算機(jī)以人為本的服務(wù)理念,得到了產(chǎn)業(yè)界與學(xué)術(shù)界廣泛的認(rèn)可與關(guān)注。
1 云計(jì)算簡介
到目前為止,云計(jì)算還沒有統(tǒng)一的定義,各行各界的人從不同角度出發(fā)都有不同的理解,影響比較大的主要有以下幾種:(1)IBM的技術(shù)白皮書“Cloud Computing”中的云計(jì)算定義:云計(jì)算用于描述平臺(tái)以及應(yīng)用程序類型的一個(gè)專業(yè)術(shù)語。云平臺(tái)可以根據(jù)需要?jiǎng)討B(tài)地提供、配置、重新配置以及取消提供服務(wù)器。云計(jì)算也指那些經(jīng)過擴(kuò)展后可通過因特網(wǎng)進(jìn)行訪問的應(yīng)用程序;(2)NIST的Peter Mell和Tim Grance于2009年4月提出了云計(jì)算的定義:云計(jì)算指一種通過網(wǎng)絡(luò)以便利的、按需付費(fèi)的方式獲取計(jì)算資源并提高其可用性的模式,這些資源來自一個(gè)可以共享的、可配置的資源池,并且以最省力和無人干預(yù)的方式獲取和釋放;(3)專業(yè)的IT名詞百科Whatis.com,廣義地將云計(jì)算定義為一切能夠通過互聯(lián)網(wǎng)提供的服務(wù),而這些服務(wù)被分為三個(gè)層次:基礎(chǔ)設(shè)施即服務(wù)(IaaS)、平臺(tái)即服務(wù)(Paas)和軟件即服務(wù)(SaaS);(4)云是一個(gè)包含大量虛擬資源的資源池。而虛擬資源可以根據(jù)負(fù)載動(dòng)態(tài)地重新配置,達(dá)到更優(yōu)的資源利用率。這種資源池一般是由基礎(chǔ)設(shè)施提供商按照服務(wù)等級(jí)協(xié)議(SLA)采用時(shí)付費(fèi)(Pay-Per-Use,PPU)的模式開發(fā)管理的。
我們可以看出云計(jì)算技術(shù)具有以下特點(diǎn):(1)提供透明的彈性服務(wù)。用戶不需了解其具體的實(shí)現(xiàn)機(jī)制,就可以獲得所需服務(wù)。而且服務(wù)的規(guī)??梢愿鶕?jù)其應(yīng)用的需要進(jìn)行調(diào)整和彈性伸縮,有效地滿足了實(shí)際應(yīng)用和用戶規(guī)模不斷增長的需要;(2)根據(jù)需求提供服務(wù)。為用戶提供資源的同時(shí),可以根據(jù)用戶需求,自動(dòng)分配資源;(3)實(shí)現(xiàn)泛在訪問。用戶只需要通過各種終端設(shè)備(如筆記本電腦、上網(wǎng)本、PDA、智能手機(jī)等),就可以隨時(shí)隨地通過互聯(lián)網(wǎng)進(jìn)入云計(jì)算平臺(tái),方便快捷地獲得所需的服務(wù);(4)共享資源池。資源以共享資源池的方式進(jìn)行統(tǒng)一管理,利用虛擬化技術(shù),將資源分享給不同用戶,而其中資源的放置、管理與分配策略對(duì)用戶來說是透明的;(5)降低成本。云計(jì)算將計(jì)算設(shè)施從本地轉(zhuǎn)移到網(wǎng)絡(luò)中,將計(jì)算資源通過租用的方式提供給用戶,使用戶大量節(jié)省了架設(shè)基礎(chǔ)設(shè)施的成本同時(shí),由于自動(dòng)化的管理和配置,云計(jì)算數(shù)據(jù)中心軟件和硬件資源的利用率都得到了大幅提升,從而使供應(yīng)商提供服務(wù)的成本下降。
2 關(guān)鍵技術(shù)
云計(jì)算的關(guān)鍵技術(shù)很多,在這里只對(duì)數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)管理技術(shù)進(jìn)行介紹。
2.1 數(shù)據(jù)存儲(chǔ)技術(shù)。在云計(jì)算環(huán)境中,數(shù)據(jù)存儲(chǔ)既要考慮存儲(chǔ)系統(tǒng)的I/O性能,又要保證文件系統(tǒng)的可靠性、可用性和經(jīng)濟(jì)性,因此,特采用分布存儲(chǔ)的方式來存儲(chǔ)數(shù)據(jù),用冗余存儲(chǔ)的方式來保證可靠性等等。
目前關(guān)于云計(jì)算的數(shù)據(jù)存儲(chǔ)技術(shù)主要有谷歌的GFS和Hadoop的HDFS。
本文就以GFS為例。GFS文件系統(tǒng),是一個(gè)面向大規(guī)模數(shù)據(jù)密集型的、可伸縮的分布式文件系統(tǒng)。其運(yùn)行在廉價(jià)的硬件設(shè)備上,為客戶機(jī)提供高性能的服務(wù)。為保證數(shù)據(jù)的可靠性,GFS采用了冗余存儲(chǔ)的方式。將每一個(gè)數(shù)據(jù)塊在系統(tǒng)中都保存了3個(gè)以上的備份,而所有文件和數(shù)據(jù)塊副本的元數(shù)據(jù)都由元數(shù)據(jù)管理節(jié)點(diǎn)進(jìn)行管理。為保證數(shù)據(jù)的一致性,對(duì)數(shù)據(jù)的任何修改都在備份上進(jìn)行,并用版本號(hào)來確保所有備份相一致。當(dāng)客戶端從Master獲取到目標(biāo)數(shù)據(jù)塊的位置后,就和塊服務(wù)器直接交互進(jìn)行讀操作。
2.1.1 GFS系統(tǒng)架構(gòu)。GFS文件系統(tǒng)由一個(gè)Master和大量ChunkServer組成,并且可以被多個(gè)客戶端同時(shí)訪問。Master用于保存文件系統(tǒng)的元數(shù)據(jù)信息,管理該域下面的所有ChunkServer,其中元數(shù)據(jù)包括:目錄命名空間,文件名與數(shù)據(jù)塊信息的映射,文件塊的位置信息等等。在GFS中,文件并不是整體存儲(chǔ),而是將文件分成文件塊,以文件塊為單位存儲(chǔ)。Chunk Server就是用于保存文件的塊信息,塊的大小統(tǒng)一為64MB,每一塊數(shù)據(jù)由全局唯一64位ID進(jìn)行標(biāo)識(shí),客戶端通過該標(biāo)識(shí)符來操作塊數(shù)據(jù)。而Chunkserver接受Master的管理,負(fù)責(zé)存儲(chǔ)具體的chunk。當(dāng)客戶端訪問文件時(shí),其首先向Master獲取相關(guān)文件的元數(shù)據(jù)信息,然后再連接Chunkserver對(duì)文件數(shù)據(jù)進(jìn)行讀寫。
2.1.2 GFS的讀數(shù)據(jù)操作。(1)Client向MasterServer發(fā)送讀操作請(qǐng)求,請(qǐng)求中包括文件名和Chunk索引;(2)MasterServer接收請(qǐng)求并通過Chunk映射表映射后,向Client作出響應(yīng),響應(yīng)中包括Chunk句柄和Chunk副本的位置信息;(3)根據(jù)響應(yīng)的內(nèi)容,Client以文件名和Chunk索引為關(guān)鍵詞進(jìn)行緩存;(4)根據(jù)文件Chunk索引和位置信息,Client從多個(gè)ChunkServer中選擇一個(gè)離自己最近的Chunk服務(wù)器發(fā)出數(shù)據(jù)訪問請(qǐng)求。
而且數(shù)據(jù)訪問還具有空間局部性的特征。以后如果Client再次訪問同一個(gè)ChunkServer,它將不再向MasterServer發(fā)送訪問請(qǐng)求,而是直接向ChunkServer發(fā)送數(shù)據(jù)讀取請(qǐng)求。
2.1.3 GFS的寫操作。將控制信號(hào)和數(shù)據(jù)流分開,當(dāng)客戶端獲得了Master的寫授權(quán)后,將數(shù)據(jù)傳輸給所有的數(shù)據(jù)副本,這些數(shù)據(jù)副本都收到修改的數(shù)據(jù)后,客戶端發(fā)出寫請(qǐng)求控制信號(hào)。在所有的數(shù)據(jù)副本更新完數(shù)據(jù)后,主副本向客戶端發(fā)出寫操作完成控制信號(hào),GFS的寫操作過程結(jié)束。
2.2 數(shù)據(jù)管理技術(shù)。通過云計(jì)算可實(shí)現(xiàn)海量數(shù)據(jù)的存儲(chǔ),而且可實(shí)現(xiàn)海量數(shù)據(jù)的數(shù)據(jù)管理功能。其中最著名的是谷歌的BigTable數(shù)據(jù)管理技術(shù)。關(guān)于BigTable數(shù)據(jù)管理技術(shù),Google是這樣定義的:“BigTable是一種為了管理結(jié)構(gòu)化數(shù)據(jù)而設(shè)計(jì)的分布式存儲(chǔ)系統(tǒng),這些數(shù)據(jù)可以擴(kuò)展到非常大的規(guī)模,例如在數(shù)千臺(tái)商用服務(wù)器上的達(dá)到PB(Petabytes)規(guī)模的數(shù)據(jù)。”
BigTable通過行值、列值、時(shí)間戳(版本號(hào))來進(jìn)行檢索。其管理的數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)為:(row:string,column:string,time:int64)--->string
其中行值按照鍵進(jìn)行字典排序,一張Tablet表包含一定數(shù)量的行,一行數(shù)據(jù)中可以設(shè)置大量的列值屬性(列族),通過(名稱:標(biāo)識(shí))格式進(jìn)行設(shè)置,訪問控制和統(tǒng)計(jì)分析也是基于列值來展開。而列族是若干列的集合,BigTable中的存取權(quán)限是控制在列族的粒度進(jìn)行的。時(shí)間戳是一個(gè)64位的整數(shù),表示數(shù)據(jù)的不同版本。為了保證數(shù)據(jù)結(jié)構(gòu)的高可擴(kuò)展性,BigTable規(guī)定索引表最多不能超過三級(jí),在Chubby file中包含了Root Tablet的位置信息,而RootTablet有且僅有一個(gè),其包含了所有METADATA tablets的位置信息,其中每個(gè)METADATA tablet又包含了許多UserTable的位置信息。在客戶端讀取數(shù)據(jù)時(shí),首先從Chubby file中讀取RootTablet的位置信息,再從RootTablet中讀取相應(yīng)的METADATA tablet的位置信息。緊接著從該METADATA tablet中讀取UserTable的位置信息,然后從該UserTable中讀取目標(biāo)數(shù)據(jù)的位置信息。最后,根據(jù)此信息到服務(wù)器中的特定位置讀取數(shù)據(jù)。
以上是對(duì)云計(jì)算的數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)管理關(guān)鍵技術(shù)的討論,當(dāng)然云計(jì)算還有許多問題有待解決,相信隨著云計(jì)算的不斷發(fā)展和廣泛應(yīng)用,云計(jì)算將會(huì)得到更大的完善,我們拭目以待。
參考文獻(xiàn):
[1]Boss G,Malladi P,Quan D,Legregni L.Hall H,Cloud computing.IBM.WhitePaper,2007.http://download.boulder.ibm.corn/ibmdl/pub/soRware/dw/wes/hipods/Cloud_comp uting_wp_final-80ct.pdf.
[2]Cloud computing.http://fr.wikipedia.org/wiki/Cloud_computing.
作者單位:西北民族大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,蘭州 730030