高貴升
(成都理工大學(xué)信息科學(xué)與技術(shù)學(xué)院,四川 成都 610059)
云計算技術(shù)的出現(xiàn)是并行計算技術(shù)、軟件技術(shù)、網(wǎng)絡(luò)技術(shù)發(fā)展的必然結(jié)果。云計算是一種動態(tài)的易擴張的且通常是通過互聯(lián)網(wǎng)提供虛擬化資源的計算方式,用戶不需要了解云計算的內(nèi)部細節(jié),只需要通過與瀏覽器交互便可以得到自己想要的信息。
當(dāng)今,很多國際大公司都推出了自己的“云計劃”,比如亞馬遜的AWS(Amazon Web Services)、故宮和IBM的“藍云”計劃等。可見云計算的發(fā)展已經(jīng)步入了商業(yè)模式。云計算作為一種全新的網(wǎng)絡(luò)服務(wù)方式,將傳統(tǒng)的以桌面為核心的任務(wù)處理轉(zhuǎn)變?yōu)橐跃W(wǎng)絡(luò)為核心的任務(wù)處理,利用互聯(lián)網(wǎng)完成自己要實現(xiàn)的一切任務(wù),使網(wǎng)絡(luò)成為傳遞服務(wù)、計算力和信息的綜合媒介,真正實現(xiàn)按需計算,多人協(xié)作。
云計算是一個強大的“云”網(wǎng)絡(luò),承載著眾多并發(fā)的網(wǎng)格計算和服務(wù),然后利用虛擬化技術(shù)擴展到每臺服務(wù)器,將各自的資源整合起來提供超級計算和儲存能力。如圖1所示:

客戶端:客戶端是用戶通過請求來獲取服務(wù)的界面,這里就是云的入口,用戶可以通過瀏覽器像常規(guī)一樣經(jīng)過注冊、登錄等取得服務(wù)和管理相關(guān)信息。打開實例與本地操作一樣。
服務(wù)節(jié)點:該節(jié)點是用戶操作的集合,用戶根據(jù)自己的權(quán)限選擇相應(yīng)的服務(wù),對服務(wù)可以在權(quán)限內(nèi)進行各種操作。
管理系統(tǒng)和部署工具:提供管理和服務(wù),管理用戶并對用戶授權(quán)、認證登錄進行管理,以及管理可用的計算資源和服務(wù),接受用戶發(fā)送請求,根據(jù)用戶請求轉(zhuǎn)發(fā)到相應(yīng)應(yīng)用程序,調(diào)度資源和自動部署資源和應(yīng)用,動態(tài)部署、配置和回收資源。
監(jiān)控:監(jiān)控和計算系統(tǒng)的資源使用情況,并迅速做出反應(yīng),完成節(jié)點同步部署,負載均衡和資源監(jiān)控,確保資源能分配給合適的用戶。
服務(wù)集群:虛擬的或物理的服務(wù)器,有管理系統(tǒng)管理,負責(zé)高并發(fā)量的請求處理、大運算量的計算處理,用戶web應(yīng)用服務(wù),云數(shù)據(jù)存儲時采用相應(yīng)的數(shù)據(jù)切割算法用并行方式上傳和下載大容量數(shù)據(jù)。
云計算的服務(wù)可以劃分成4個層次:應(yīng)用層,平臺層,基礎(chǔ)服務(wù)層和虛擬化層。云計算的層次結(jié)構(gòu)是可以分割的,每層都可以單獨完成一項用戶請求,不需要其它層次提供必要的服務(wù)和支持。
應(yīng)用層對應(yīng) SaaS軟件即服務(wù),如:Goole APPS,SoftWare+Services。通過瀏覽器將程序傳給要服務(wù)的用戶,這些服務(wù)可能通過訪問其它計算機的部件,比如軟件,直接和最終用戶通信,具體應(yīng)用如亞馬遜簡單排列服務(wù)(Simple Queuing Service),谷歌地圖(Google Maps)。
平臺層對應(yīng)PaaS平臺即服務(wù),如:Goole APPEngine。這種形式是提供開發(fā)環(huán)境、服務(wù)器平臺、硬件資源等服務(wù)給用戶,用戶可以在服務(wù)商提供的基礎(chǔ)架構(gòu)上開發(fā)程序并可以通過互聯(lián)網(wǎng)和其它服務(wù)器傳給其他用戶。
基礎(chǔ)設(shè)施層對應(yīng)IaaS基礎(chǔ)設(shè)施即服務(wù),如:Amazp EC2,IBM Blue。提供計算的基礎(chǔ)設(shè)施平臺,通常是虛擬化的環(huán)境作為一項服務(wù)。
虛擬化層對應(yīng)硬件即服務(wù),結(jié)合PaaS提供硬件服務(wù),包括服務(wù)集群即硬件檢測等服務(wù)。
云計算作為一種超級計算方式,是一種以數(shù)據(jù)為中心的密集型計算技術(shù)。
云計算作為一種商業(yè)化趨勢,已經(jīng)從理論產(chǎn)生出不同的架構(gòu)。如亞馬遜利用虛擬化技術(shù)提供的云計算服務(wù),推出S3 (Simple Storage Service)提供可靠、快速、可擴展的網(wǎng)絡(luò)存儲服務(wù),而彈性可擴展的云計算服務(wù)器EC2(Elastic Compute Clould)采用Xen虛擬化技術(shù),提供一個虛擬的執(zhí)行環(huán)境,讓用戶可以通過網(wǎng)絡(luò)執(zhí)行自己的程序。IBM將包括Xen和PowerVM虛擬的linux操作系統(tǒng)鏡像與hadoop并行工作負載調(diào)度。下面將以Google公司的云計算核心技術(shù)和架構(gòu)來講解。
谷歌的云計算框架是“Google文件系統(tǒng)”,“BigTable大表”,“MapReduce算法”,谷歌公司的MapReduce和GFS (Google File System)是該公司的保密技術(shù),而開源社區(qū)Apache的Hadoop項目則是此思想的克隆版。下面先看一下Google云的執(zhí)行過程。如圖2所示:

首先,系統(tǒng)把需要執(zhí)行的程序復(fù)制到hadoop中的master和每臺節(jié)點節(jié)worker中。然后master選擇節(jié)點機來執(zhí)行map和reduce程序,分配所有的數(shù)據(jù)塊到執(zhí)行map程序的節(jié)點機中執(zhí)行,將map后的結(jié)果放入節(jié)點機中,執(zhí)行reduce機器的節(jié)點機,遠程讀取每個map結(jié)果,整合匯總后執(zhí)行reduce程序,最后把結(jié)果返回給用戶端。
4.2.1 Google的GFS(Google File System)
GFS作為一種分布式文件系統(tǒng)與以前的分布式系統(tǒng)有類似的地方,比如性能、可擴展性、可靠性和可用性,應(yīng)用于對大量數(shù)據(jù)進行訪問。GFS隱藏下層負載均衡、冗余復(fù)制等細節(jié),對上層程序提供一個統(tǒng)一的文件系統(tǒng)API接口。Google根據(jù)自己的需求對它進行了特別優(yōu)化,盡量在普通的PC上運行,但它可以給大量用戶提供高性能的服務(wù)。Google文件系統(tǒng)為分布式結(jié)構(gòu),它是一個高度容錯的網(wǎng)絡(luò)文件系統(tǒng),主要 chunkserver由一個 Master和多個chunkserver構(gòu)成,體系結(jié)構(gòu)如圖3所示。
首先,客戶端使用固定大小的塊將應(yīng)用程序制定的文件名和字節(jié)偏移轉(zhuǎn)化成文件的一個小塊索引,向Master發(fā)送包含文件名和索引的請求。然后Master收到客戶端的請求,向服務(wù)器發(fā)出命令,同時監(jiān)控其它 chunkserver狀態(tài),chunkserver緩存Master從客戶端收到的文件名和索引等信息。Master和 chunkserver通過交互,向客戶端發(fā)送chunk-handle和副本位置,其中文件被分成若干個塊,每個塊都是一個全局的固定不變的唯一64位句柄標識。Handle是有Master再創(chuàng)建時分配的,一般每個文件默認會復(fù)制3次,以便在某個節(jié)點發(fā)生故障時可以從其它節(jié)點獲取。客戶端向其中一個副本發(fā)請求,請求中包含chunk handle和塊內(nèi)的一個字節(jié)空間。最后客戶端就從chunkserver獲取到塊數(shù)據(jù)。

Google的文件系統(tǒng)是可以被多個用戶訪問的,一般應(yīng)用程序和chunkserver是可以在同一臺機器上的,主要的數(shù)據(jù)流量是通過應(yīng)用程序和chunkserver之間,數(shù)據(jù)訪問的本地性極大減少了應(yīng)用程序與Master的交互,從而減少master的負荷,提高文件系統(tǒng)的性能。
Google文件系統(tǒng)總體上提供了高性能的服務(wù),它有以下優(yōu)勢。首先Google采用的是低成本的大量分散的普通服務(wù)器作為存儲方式,而且對大文件數(shù)據(jù)存取速度快。其次GFS容錯能力強,一式多份,保證了系統(tǒng)的安全性,并且它容易擴展支持動態(tài)插入節(jié)點。再次GFS是相對HDFS穩(wěn)定性較好的系統(tǒng),它通過bigtable實現(xiàn),支持高效訪問。
4.2.2 MapReduce編程模型
MapReduce作為一種編程模型,不僅使用戶能輕松享受到云帶來的服務(wù),更讓用戶能通過此模型來設(shè)計自己的程序。
這種模型的思想是將要執(zhí)行的任務(wù)分成map和reduce的方式進行,先通過map程序?qū)?shù)據(jù)切割成不相關(guān)的塊,分配給大量計算機出來來達到分布式效果,然后通過reduce匯總整合,返回最終結(jié)果。MapReduce實現(xiàn)的是一個map函數(shù),把鍵值對(key/value)映射成新的鍵值對(key/value),形成一系列中間形式的key/value對,然后把它們傳給reduce函數(shù),把具有相同中間形式key的value合并到一起,map和reduce函數(shù)具有一定的關(guān)聯(lián)性。

其中value1、value2可以是簡單數(shù)據(jù)或者是一組數(shù)據(jù),對應(yīng)不同的映射函數(shù)規(guī)則。在map里把數(shù)據(jù)并行,也就是映射到函數(shù)規(guī)則分開,在reduce把分開的數(shù)據(jù)用函數(shù)合并到一起。MapReduce應(yīng)用廣泛,包括海量計算的數(shù)據(jù)輸入、集群計算等。
4.2.3 分布式數(shù)據(jù)表BigTable
作為分布式平臺的MapReduce自然不可缺少其對應(yīng)的存儲表,這就是BigTable,BigTable是一個有序稀疏多維的映射表,有良好的伸縮性和高可用性,用來將數(shù)據(jù)存儲并部署到各個計算節(jié)點上。它把所有數(shù)據(jù)作為對象來處理,形成一個巨大表格,被設(shè)計用來存儲海量數(shù)據(jù)。
云計算的快速發(fā)展現(xiàn)在已經(jīng)初見規(guī)模,其應(yīng)用有Google的文檔、Google App Engine和Amazon的網(wǎng)絡(luò)服務(wù)等。
Google文檔是谷歌推出的在線辦公軟件,它是開源的、基于web的字處理、電子表格和演示文稿程序。Google文檔是Google實踐軟件即服務(wù)(SaaS)的云架構(gòu)思想典范,作為云集成的一項應(yīng)用,實現(xiàn)傳統(tǒng)辦公軟件的同時,又引入云計算的諸多技術(shù),多人協(xié)作辦公而且不受地域限制。App Engine是在Google的基礎(chǔ)架構(gòu)上運行自定義的網(wǎng)絡(luò)應(yīng)用程序。可以根據(jù)用戶的訪問量和存儲需要的增長進行擴展,其服務(wù)器的維護工作由Google負責(zé),用戶只需上傳應(yīng)用程序就可以立即為互聯(lián)網(wǎng)用戶服務(wù)。用戶也可以使用GoogleApps從用戶自己的域提供服務(wù),應(yīng)用程序可以設(shè)定通過互聯(lián)網(wǎng)共享,也可以限制為只有用戶組織內(nèi)的成員可以訪問。
2010年5月,中搜在科博會云計算分論壇上高調(diào)推出了國內(nèi)首個云應(yīng)用平臺,中搜以云計算為核心技術(shù),結(jié)合中搜特有的微件技術(shù)以及垂直搜索引擎技術(shù),面向細分化、垂直化市場為用戶孵化創(chuàng)新應(yīng)用的云服務(wù),實現(xiàn)企業(yè)上下線資源整合、信息采集、無限擴展等個性化定制,幫助企業(yè)最大限度的拓展經(jīng)營渠道。
浪潮集團在前不久也發(fā)布了“云海In-Cloud”戰(zhàn)略,浪潮表示將重點發(fā)展高端服務(wù)器、海量儲存等云硬件產(chǎn)品和云計算中心操作系統(tǒng),并提及浪潮正積極的部署“行業(yè)云”以及云計算操作系統(tǒng)。而后,東軟集團也與日本NEC公司簽署合作協(xié)議,宣布將面向國內(nèi)市場共同進軍云計算領(lǐng)域。
目前云計算的發(fā)展方興未艾,其各項技術(shù)都在不斷完善和發(fā)展,許多國際大公司都在這方面投入了很多,我國云計算也初見端倪。云計算的發(fā)展也面臨很多困難,比如數(shù)據(jù)的安全和隱私,數(shù)據(jù)訪問和存儲模型,缺乏標準和廠商鎖定等等,這既是機遇也是挑戰(zhàn),不過相信不久的將來這些困難終會被克服,會有更多的云計算投入實用,推動更多科學(xué)技術(shù)的發(fā)展。
[1]張健.云計算概念和影響力解析[J].電信網(wǎng)技術(shù),2009,(1):15-18.
[2]陳全,鄧倩妮.云計算及其關(guān)鍵技術(shù)[J].計算機應(yīng)用,2009,(9):2562-2567.
[3]李艷華. 云計算技術(shù)研究現(xiàn)狀綜述 [J]. 電腦知識與技術(shù),2009,5(22):6314-6315.
[4]王鵬,董靜宜.一種云計算架構(gòu)的實現(xiàn)方法研究[J].計算機工程與科學(xué),2009,31(A1):11-13.