云計算(cloud computing)是由分布式計算(distributed computing)、并行處理(parallel computing)、網(wǎng)格計算(grid computing)發(fā)展來的,其最基本的概念,是透過網(wǎng)絡將龐大的計算處理程序自動分拆成無數(shù)個較小的子程序,再交由多部服務器所組成的龐大系統(tǒng)經(jīng)搜尋、計算分析之后將處理結(jié)果回傳給用戶。透過這項技術,網(wǎng)絡服務提供者可以在數(shù)秒之內(nèi),達成處理數(shù)以千萬計甚至億計的信息,達到和“超級計算機”同樣強大效能的網(wǎng)絡服務,是一種新興的商業(yè)計算模型。
云計算的核心技術
云計算系統(tǒng)運用了許多技術,其中以編程模型、數(shù)據(jù)管理技術、數(shù)據(jù)存儲技術、虛擬化技術、云計算平臺管理技術最為關鍵。
(1)編程模型
mapreduce是google開發(fā)的java、python、c++編程模型,它是一種簡化的分布式編程模型和高效的任務調(diào)度模型,用于大規(guī)模數(shù)據(jù)集(大于1tb)的并行運算。嚴格的編程模型使云計算環(huán)境下的編程十分簡單。mapreduce模式的思想是將要執(zhí)行的問題分解成map(映射)和reduce(化簡)的方式,先通過map程序?qū)?shù)據(jù)切割成不相關的區(qū)塊,分配(調(diào)度)給大量計算機處理,達到分布式運算的效果,再通過reduce程序?qū)⒔Y(jié)果匯整輸出。
(2) 海量數(shù)據(jù)分布存儲技術
云計算系統(tǒng)由大量服務器組成,同時為大量用戶服務,因此云計算系統(tǒng)采用分布式存儲的方式存儲數(shù)據(jù),用冗余存儲的方式保證數(shù)據(jù)的可靠性。云計算系統(tǒng)中廣泛使用的數(shù)據(jù)存儲系統(tǒng)是google的gfs和hadoop團隊開發(fā)的gfs的開源實現(xiàn)hdfs。
gfs即google文件系統(tǒng)(google file system),是一個可擴展的分布式文件系統(tǒng),用于大型的、分布式的、對大量數(shù)據(jù)進行訪問的應用。gfs的設計思想不同于傳統(tǒng)的文件系統(tǒng),是針對大規(guī)模數(shù)據(jù)處理和google應用特性而設計的。它運行于廉價的普通硬件上,但可以提供容錯功能。它可以給大量的用戶提供總體性能較高的服務。
一個gfs集群由一個主服務器(master)和大量的塊服務器(chunkserver)構(gòu)成,并被許多客戶(client)訪問。主服務器存儲文件系統(tǒng)所以的元數(shù)據(jù),包括名字空間、訪問控制信息、從文件到塊的映射以及塊的當前位置。它也控制系統(tǒng)范圍的活動,如塊租約(lease)管理,孤兒塊的垃圾收集,塊服務器間的塊遷移。主服務器定期通過heartbeat消息與每一個塊服務器通信,給塊服務器傳遞指令并收集它的狀態(tài)。gfs中的文件被切分為64mb的塊并以冗余存儲,每份數(shù)據(jù)在系統(tǒng)中保存3個以上備份。
客戶與主服務器的交換只限于對元數(shù)據(jù)的操作,所有數(shù)據(jù)方面的通信都直接和塊服務器聯(lián)系,這大大提高了系統(tǒng)的效率,防止主服務器負載過重。
(3) 海量數(shù)據(jù)管理技術
云計算需要對分布的、海量的數(shù)據(jù)進行處理、分析,因此,數(shù)據(jù)管理技術必需能夠高效的管理大量的數(shù)據(jù)。云計算系統(tǒng)中的數(shù)據(jù)管理技術主要是google的bt(bigtable)數(shù)據(jù)管理技術和hadoop團隊開發(fā)的開源數(shù)據(jù)管理模塊hbase。
bt是建立在gfs, scheduler, lock service和mapreduce之上的一個大型的分布式數(shù)據(jù)庫,與傳統(tǒng)的關系數(shù)據(jù)庫不同,它把所有數(shù)據(jù)都作為對象來處理,形成一個巨大的表格,用來分布存儲大規(guī)模結(jié)構(gòu)化數(shù)據(jù)。
google的很多項目使用bt來存儲數(shù)據(jù),包括網(wǎng)頁查詢,google earth和google金融。這些應用程序?qū)t的要求各不相同:數(shù)據(jù)大小(從url到網(wǎng)頁到衛(wèi)星圖象)不同,反應速度不同(從后端的大批處理到實時數(shù)據(jù)服務)。對于不同的要求,bt都成功的提供了靈活高效的服務。
(4)虛擬化技術
通過虛擬化技術可實現(xiàn)軟件應用與底層硬件相隔離,它包括將單個資源劃分成多個虛擬資源的裂分模式,也包括將多個資源整合成一個虛擬資源的聚合模式。虛擬化技術根據(jù)對象可分成存儲虛擬化、計算虛擬化、網(wǎng)絡虛擬化等,計算虛擬化又分為系統(tǒng)級虛擬化、應用級虛擬化和桌面虛擬化。
(5)云計算平臺管理技術
云計算資源規(guī)模龐大,服務器數(shù)量眾多并分布在不同的地點,同時運行著數(shù)百種應用,如何有效的管理這些服務器,保證整個系統(tǒng)提供不間斷的服務是巨大的挑戰(zhàn)。
云計算系統(tǒng)的平臺管理技術能夠使大量的服務器協(xié)同工作,方便的進行業(yè)務部署和開通,快速發(fā)現(xiàn)和恢復系統(tǒng)故障,通過自動化、智能化的手段實現(xiàn)大規(guī)模系統(tǒng)的可靠運營。