歐陽昕
摘要:該文介紹了云計算的概念和云計算系統(tǒng)的組成結(jié)構(gòu),并闡述了作為云計算技術(shù)核心的虛擬化技術(shù)、高速存儲技術(shù)和分布式計算技術(shù)的實(shí)現(xiàn)和發(fā)展現(xiàn)狀。
關(guān)鍵詞:云計算、虛擬化技術(shù)、分布式計算
中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)18-4360-03
云計算是近年來出現(xiàn)的一個熱門概念,也是未來互聯(lián)網(wǎng)發(fā)展的方向。從狹義上看,云計算是一種動態(tài)的、易擴(kuò)展的且通常是通過互聯(lián)網(wǎng)提供虛擬化資源的計算方式。從廣義上看,云計算是一種以互聯(lián)網(wǎng)為中心的面向應(yīng)用的服務(wù),用戶不需要了解云內(nèi)部的細(xì)節(jié).也不必具有云內(nèi)部的專業(yè)知識或直接控制基礎(chǔ)設(shè)施,便能使用的相關(guān)資源。云計算包括基礎(chǔ)設(shè)施即服務(wù)(Infrastructure as a Service,簡稱IaaS),平臺即服務(wù)(Platform as a Service,簡稱PaaS)和軟件即服務(wù)(Software as a Service,簡稱SaaS)以及其他依賴于互聯(lián)網(wǎng)滿足客戶計算需求的服務(wù)類型。云計算服務(wù)通常提供通用的通過瀏覽器訪問的在線商業(yè)應(yīng)用,軟件和數(shù)據(jù)則存儲在服務(wù)器上。
圖1云計算的組成
2.1基礎(chǔ)設(shè)施
云基礎(chǔ)設(shè)施,即IaaS。是計算機(jī)基礎(chǔ)設(shè)施,通常是虛擬化的平臺環(huán)境。作為一項(xiàng)服務(wù),具體應(yīng)用例如:Sun公司的Sun網(wǎng)格、亞馬遜的彈性計算云。它通過將服務(wù)器端強(qiáng)大的計算能力單位化,來為個人用戶提供PC機(jī)無法實(shí)現(xiàn)的海量數(shù)據(jù)計算服務(wù)。
2.2存儲
云存儲涉及提供數(shù)據(jù)存儲作為一項(xiàng)服務(wù),包括類似數(shù)據(jù)庫的服務(wù),通常以使用的存儲量為結(jié)算基礎(chǔ)。它既可以交付作為云計算服務(wù),又可以交付給單獨(dú)的數(shù)據(jù)存儲服務(wù),具體應(yīng)用包括亞馬遜簡單存儲服務(wù)和Google的BigTable服務(wù)。通過云存儲,由云端為用戶提供數(shù)據(jù)的備份和安全性保障,用戶可以在任何地點(diǎn)任何時刻進(jìn)行數(shù)據(jù)的存儲和讀取操作。
2.3平臺
云平臺,即PaaS,直接提供計算平臺和解決方案作為服務(wù).以方便應(yīng)用程序部署和開發(fā),從而節(jié)省購買和管理底層硬件和軟件的成本。比如Google的應(yīng)用程序引擎(Google AppEngine)可以讓開發(fā)人員編譯基于Python的應(yīng)用程序,并免費(fèi)使用谷歌的基礎(chǔ)設(shè)施來進(jìn)行托管。這種在云端的開發(fā)平臺為編程人員提供了快速開發(fā)網(wǎng)絡(luò)應(yīng)用程序的途徑,同時免去了繁瑣的服務(wù)器搭建、維護(hù)等工作。
圖3GFS架構(gòu)
3.3分布式計算
由于云計算系統(tǒng)中的計算單元分布在不同的地理區(qū)域,為了有效的利用這巨大的運(yùn)算能力,傳統(tǒng)的編程方式已不適用,而要采用分布式計算模型。當(dāng)前Map/Reduce模型在云計算系統(tǒng)中的使用最為廣泛。
Map/Reduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算。概念“Map(映射)”和“Reduce(化簡)”,以及它們的主要思想,都源自函數(shù)式編程語言和矢量編程語言。Map/Reduce為編程人員進(jìn)行分布式并行編程提供了一個框架,使得自己的程序可以方便的運(yùn)行在分布式系統(tǒng)上。
Map/Reduce編程的實(shí)現(xiàn)是指定一個Map(映射)函數(shù),用來把一組鍵值對映射成一組新的鍵值對,指定并發(fā)的Reduce(化簡)函數(shù),用來保證所有映射的鍵值對中的每一個共享相同的鍵組。
簡單說來,一個映射函數(shù)就是對一些獨(dú)立元素組成的概念上的列表(例如,一個測試成績的列表的每一個元素)進(jìn)行指定的操作(例如,如果發(fā)現(xiàn)所有學(xué)生的成績都被高估了一分,就可以定義一個“減一”的映射函數(shù),用來修正這個錯誤)。事實(shí)上,每個元素都是被獨(dú)立操作的,而原始列表沒有被更改,因?yàn)檫@里創(chuàng)建了一個新的列表來保存新的答案。這就是說,Map操作是可以高度并行的,這對高性能要求的應(yīng)用以及并行計算領(lǐng)域的需求非常有用。
而化簡操作指的是對一個列表的元素進(jìn)行適當(dāng)?shù)暮喜?。例如,如果需要知道班級的平均分,就可以先定義一個化簡函數(shù),通過讓列表中的元素跟自己的相鄰的元素相加的方式把列表減半,如此遞歸運(yùn)算直到列表只剩下一個元素,然后用這個元素除以人數(shù),就得到了平均分。雖然化簡不如映射函數(shù)那么并行,但是因?yàn)榛喛偸怯幸粋€簡單的答案,大規(guī)模的運(yùn)算相對獨(dú)立,所以化簡函數(shù)在高度并行環(huán)境下也很有用。
MapReduce通過把對數(shù)據(jù)集的大規(guī)模操作分發(fā)給網(wǎng)絡(luò)上的每個節(jié)點(diǎn)實(shí)現(xiàn)可靠性;每個節(jié)點(diǎn)會周期性的把完成的工作和狀態(tài)的更新報告回來。如果一個節(jié)點(diǎn)保持沉默超過一個預(yù)設(shè)的時間間隔,主節(jié)點(diǎn)記錄下這個節(jié)點(diǎn)狀態(tài)為死亡,并把分配給這個節(jié)點(diǎn)的數(shù)據(jù)發(fā)到別的節(jié)點(diǎn)。每個操作使用命名文件的原子操作以確保不會發(fā)生并行線程間的沖突;當(dāng)文件被改名的時候,系統(tǒng)可能會把他們復(fù)制到任務(wù)名以外的另一個名字上去。化簡操作工作方式很類似,但是由于化簡操作在并行能力較差,主節(jié)點(diǎn)會盡量把化簡操作調(diào)度在一個節(jié)點(diǎn)上,或者離需要操作的數(shù)據(jù)盡可能進(jìn)的節(jié)點(diǎn)上了。
目前,Google、亞馬遜等公司已經(jīng)開始推出云端存儲、高性能計算、在線文檔編輯系統(tǒng)等云計算相關(guān)的應(yīng)用,云計算的藍(lán)圖已經(jīng)呼之欲出:在未來,只需要一臺筆記本或者一個iPhone,就可以通過網(wǎng)絡(luò)服務(wù)來實(shí)現(xiàn)我們需要的一切,甚至包括超級計算這樣的任務(wù)??梢哉f,未來是一個以網(wǎng)絡(luò)為中心、網(wǎng)絡(luò)就是計算機(jī)的時代。然而,云計算的發(fā)展仍存在著不少障礙。首先,云計算系統(tǒng)的安全性還未得到廣泛認(rèn)可,如何確保用戶數(shù)據(jù)的安全尤其是私密性,是云計算急待解決的問題;其次,現(xiàn)在的云計算體系缺少標(biāo)準(zhǔn)化,只有整合出一個通用的系統(tǒng)架構(gòu)和編程接口才能推動全球范圍內(nèi)的云互聯(lián);最后,云計算面向的數(shù)據(jù)和用戶的數(shù)目巨大,如何有效地管理數(shù)據(jù)和計算資源也需要人們提出新的可伸縮性的體系架構(gòu)。