云計算作為當前互聯網行業當中的熱門技術,其系統的運行離不開多項核心技術的支撐。中培偉業負責講授《云計算與虛擬化最佳實踐》培訓課程的王老師對云計算的五大核心技術,進行了介紹。王老師指出,云計算系統運用了許多技術,其中以編程模型、數據管理技術、數據存儲技術、虛擬化技術、云計算平臺管理技術最為關鍵,是云計算系統當中的5大核心技術。
(1)編程模型
MapReduce是Google開發的java、Python、C++編程模型,它是一種簡化的分布式編程模型和高效的任務調度模型,用于大規模數據集(大于1TB)的并行運算。嚴格的編程模型使云計算環境下的編程十分簡單。MapReduce模式的思想是將要執行的問題分解成Map(映射)和Reduce(化簡)的方式,先通過Map程序將數據切割成不相關的區塊,分配(調度)給大量計算機處理,達到分布式運算的效果,再通過Reduce程序將結果匯整輸出。
(2)海量數據分布存儲技術
云計算系統由大量服務器組成,同時為大量用戶服務,因此云計算系統采用分布式存儲的方式存儲數據,用冗余存儲的方式保證數據的可靠性。云計算系統中廣泛使用的數據存儲系統是Google的GFS和Hadoop團隊開發的GFS的開源實現HDFS。
GFS即Google文件系統(Google File System),是一個可擴展的分布式文件系統,用于大型的、分布式的、對大量數據進行訪問的應用。GFS的設計思想不同于傳統的文件系統,是針對大規模數據處理和Google應用特性而設計的。它運行于廉價的普通硬件上,但可以提供容錯功能。它可以給大量的用戶提供總體性能較高的服務。
一個GFS集群由一個主服務器(master)和大量的塊服務器(chunkserver)構成,并被許多客戶(Client)訪問。主服務器存儲文件系統所以的元數據,包括名字空間、訪問控制信息、從文件到塊的映射以及塊的當前位置。它也控制系統范圍的活動,如塊租約(lease)管理,孤兒塊的垃圾收集,塊服務器間的塊遷移。主服務器定期通過HeartBeat消息與每一個塊服務器通信,給塊服務器傳遞指令并收集它的狀態。GFS中的文件被切分為64MB的塊并以冗余存儲,每份數據在系統中保存3個以上備份。
客戶與主服務器的交換只限于對元數據的操作,所有數據方面的通信都直接和塊服務器聯系,這大大提高了系統的效率,防止主服務器負載過重。
(3)海量數據管理技術
云計算需要對分布的、海量的數據進行處理、分析,因此,數據管理技術必需能夠高效的管理大量的數據。云計算系統中的數據管理技術主要是Google的BT(BigTable)數據管理技術和Hadoop團隊開發的開源數據管理模塊HBase。
BT是建立在GFS, Scheduler, Lock Service和MapReduce之上的一個大型的分布式數據庫,與傳統的關系數據庫不同,它把所有數據都作為對象來處理,形成一個巨大的表格,用來分布存儲大規模結構化數據。
Google的很多項目使用BT來存儲數據,包括網頁查詢,Google earth和Google金融。這些應用程序對BT的要求各不相同:數據大小(從URL到網頁到衛星圖象)不同,反應速度不同(從后端的大批處理到實時數據服務)。對于不同的要求,BT都成功的提供了靈活高效的服務。
(4)虛擬化技術
通過虛擬化技術可實現軟件應用與底層硬件相隔離,它包括將單個資源劃分成多個虛擬資源的裂分模式,也包括將多個資源整合成一個虛擬資源的聚合模式。虛擬化技術根據對象可分成存儲虛擬化、計算虛擬化、網絡虛擬化等,計算虛擬化又分為系統級虛擬化、應用級虛擬化和桌面虛擬化。
(5)云計算平臺管理技術
云計算資源規模龐大,服務器數量眾多并分布在不同的地點,同時運行著數百種應用,如何有效的管理這些服務器,保證整個系統提供不間斷的服務是巨大的挑戰。
云計算系統的平臺管理技術能夠使大量的服務器協同工作,方便的進行業務部署和開通,快速發現和恢復系統故障,通過自動化、智能化的手段實現大規模系統的可靠運營。