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