薛博召
摘要:云計算(cloud computing)是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通常涉及通過互聯(lián)網(wǎng)來提供動態(tài)易擴展且經(jīng)常是虛擬化的資源,國內(nèi)外知名的大企業(yè)都在進行云計算架構(gòu)的相關(guān)研究。谷歌、亞馬遜、阿里巴巴均在部署并架構(gòu)自己的云計算平臺,云服務(wù)無疑將成為IT企業(yè)未來的主要贏利模式之一。該文主要對云計算的架構(gòu)技術(shù)進行分析、研究,以便為企業(yè)構(gòu)建可靠、高效的云服務(wù)平臺提供技術(shù)參考。
關(guān)鍵詞:云計算;云計算架構(gòu);云計算服務(wù);
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2015)03-0072-02
目前“云計算”的定義有很多,對于到底什么是云計算,至少可以找到100種解釋。云計算技術(shù)可以把大量零散的低運算能力單元集中起來,形成強大的運算能力,甚至可以達到每秒10萬億次的運算水平,如此強大的計算能力可以用來模擬核爆炸、預測氣候變化和市場發(fā)展趨勢。從易用性的角度,用戶無需了解云計算內(nèi)部的實現(xiàn)原理和方式,可以通過臺式機、筆記本、手機等方式直接接入數(shù)據(jù)中心,由數(shù)據(jù)中心提供所需的運算、存儲等資源。
1 云計算架構(gòu)
目前大家比較公認的云計算架構(gòu)主要劃分為基礎(chǔ)設(shè)施層(IaaS)、平臺層(PaaS)和軟件服務(wù)層(SaaS)三個層次,如下圖1所示:
圖1 云計算架構(gòu)示意圖
IaaS(Infrastructure as a Service)是基礎(chǔ)設(shè)施層,主要包括服務(wù)器、網(wǎng)絡(luò)通信設(shè)備、存儲設(shè)備等,可以根據(jù)用戶需求提供計算能力、存儲能力或網(wǎng)絡(luò)能力等IT基礎(chǔ)設(shè)施類服務(wù),也就是能在基礎(chǔ)設(shè)施層面提供的服務(wù)。今天IaaS能夠得到推廣使用得益于虛擬化技術(shù)的發(fā)展、成熟,利用虛擬化技術(shù)能夠?qū)⒏鞣N計算設(shè)備統(tǒng)一虛擬化為虛擬資源池中的計算資源,將存儲設(shè)備統(tǒng)一虛擬化為虛擬資源池中的存儲資源,將網(wǎng)絡(luò)設(shè)備統(tǒng)一虛擬化為虛擬資源池中的網(wǎng)絡(luò)資源。當用戶訂購這些資源時,數(shù)據(jù)中心管理者直接將訂購的份額打包提供給用戶,對外提供基礎(chǔ)設(shè)施服務(wù)。
PaaS(Platform as a Service)平臺即服務(wù),如果以傳統(tǒng)計算機架構(gòu)中“硬件+操作系統(tǒng)/開發(fā)工具+應(yīng)用軟件”的觀點來看待,那么云計算的平臺層應(yīng)該提供類似操作系統(tǒng)和開發(fā)工具的功能。實際上也的確如此,PaaS定位于通過互聯(lián)網(wǎng)為用戶提供一整套開發(fā)、運行和運營應(yīng)用軟件的支撐平臺。微軟公司的Windows Azure和谷歌公司的GAE,可以算是目前PaaS平臺中最為知名的兩個產(chǎn)品了。
SaaS(Software as a Service)軟件即服務(wù),是利用互聯(lián)網(wǎng)就可以提供軟件服務(wù)的一種應(yīng)用模式。在該模式下,用戶無需將大量資金用于軟件、硬件以及開發(fā)團隊建設(shè),只需支付一定費用,就能夠通過網(wǎng)絡(luò)享受到相應(yīng)的軟件服務(wù),而且整個系統(tǒng)的維護也由廠商負責。
2 云計算技術(shù)研究
2.1虛擬化技術(shù)
虛擬化,能夠?qū)⒁慌_計算機虛擬成多臺獨立的邏輯計算機,每臺邏輯計算機可以運行不同的操作系統(tǒng),運行在不同邏輯計算機上的應(yīng)用程序之間互不影響,可以顯著提高計算機的利用效率。虛擬化可以通過多種方法實現(xiàn),下面就目前主流的方法進行介紹:
1)完全虛擬,是指在虛擬服務(wù)器與底層硬件之間搭建一個抽象層hypervisor,hypervisor可以用來捕捉CPU指令,為指令訪問硬件控制器和外設(shè)充當中介。因此,通過完全虛擬化技術(shù)可以在虛擬服務(wù)器上安裝任何操作系統(tǒng),每個虛擬服務(wù)器都像是一臺獨立的物理服務(wù)器。完全虛擬的優(yōu)點是兼容各個版本的操作系統(tǒng),兼容性、通用性比較好,缺點是抽象層會占用一定的硬件資源,會帶來額外的資源開銷。
2)準虛擬,完全虛擬化的特點是處理器密集型,因為它是通過抽象層來管理每一個虛擬服務(wù)器,并讓虛擬服務(wù)器之間彼此獨立。減輕這種負擔的一種方式就是,改變客戶操作系統(tǒng),讓它以為自己運行在虛擬環(huán)境下,能夠與抽象層協(xié)同工作。準虛擬化的優(yōu)點是性能高,通過準虛擬化處理過的服務(wù)器可與抽象層協(xié)同工作,其響應(yīng)能力幾乎可以等同于未經(jīng)過虛擬化處理的服務(wù)器。
3)系統(tǒng)虛擬,是指在操作系統(tǒng)層面增加虛擬服務(wù)器功能,與完全虛擬化和準虛擬化相比,系統(tǒng)虛擬沒有抽象層,由主機操作系統(tǒng)自身負責在多個虛擬服務(wù)器之間分配硬件資源。另一個區(qū)別是,如果使用操作系統(tǒng)層虛擬化技術(shù),所有虛擬服務(wù)器只能運行同一操作系統(tǒng)(但是每個實例可以有自己的應(yīng)用程序和用戶賬戶)。操作系統(tǒng)層虛擬化具有靈活性較差的缺點,但是本機速度性能比較高。另外,由于所有虛擬服務(wù)器都使用單一、標準的操作系統(tǒng),所以與異構(gòu)環(huán)境相比要更容易管理一些。
2.2分布式并行架構(gòu)技術(shù)
隨著科學的發(fā)展,我們需要解決越來越多非常復雜的問題,這些問題通常需要相當大的計算能力才能解決,有很多都是跨學科的、富有挑戰(zhàn)性的,且是人類亟待解決的問題,比如:
1)解決復雜的數(shù)學難題,如:GIMPS(尋找最大梅森素數(shù));
2)尋找更安全的密碼系統(tǒng),如:RC-72(密碼破解);
3)生物病理研究,例如:研究蛋白質(zhì)折疊、誤解、聚合及由此引起的相關(guān)疾??;
4)各類疾病藥物研究,如:United Devices(尋找治療癌癥的藥物);
5)信號處理,如:SETI@Home(在家尋找地外文明)等。
從上述實例可以看出,有些項目規(guī)模非常龐大,需要很大計算量,單純靠一臺電腦在一個能讓人接受的時間內(nèi)完成計算是絕對不可能的。分布式計算可以把一個需要非常巨大計算能力才能解決的問題分解成許多小的組成部分,然后把這些分解后的任務(wù)分配給多個計算機進行處理,最后把這些計算機處理的結(jié)果綜合起來得到最終結(jié)果。
3 主流云計算框架
3.1 Hadoop
Hadoop是由Apache基金會開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。Hadoop框架的核心是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供存儲服務(wù),MapReduce則為海量的數(shù)據(jù)提供計算服務(wù)。
HDFS(Hadoop分布式文件系統(tǒng))被設(shè)計成適合運行在通用硬件上的分布式文件系統(tǒng)。其特點包括:
1)高容錯性,整個HDFS系統(tǒng)可以由成百上千個存儲著文件數(shù)據(jù)片斷的服務(wù)器組成,每一臺服務(wù)器都很可能出現(xiàn)故障,當其中某個服務(wù)器出現(xiàn)故障時不會對整個文件系統(tǒng)造成影響,HDFS仍然可以對外提供數(shù)據(jù)訪問服務(wù)。正是因為這一特性,HDFS非常適合部署在廉價的機器上。
2)高吞吐量數(shù)據(jù)訪問,運行在HDFS上的應(yīng)用程序必須通過流式訪問數(shù)據(jù),它不是運行在普通文件系統(tǒng)之上的普通程序。HDFS的設(shè)計適合批量處理,而非用戶交互,重點是提高數(shù)據(jù)吞吐量,而不是數(shù)據(jù)訪問的反應(yīng)時間。
3)大數(shù)據(jù)集,典型的HDFS文件大小是GB或者TB級別。因此HDFS在設(shè)計上支持大文件,應(yīng)該有很高的聚合數(shù)據(jù)帶寬,一個HDFS集群可以支持數(shù)百個節(jié)點,支持千萬級別的文件。
HDFS是一個的主從結(jié)構(gòu),一個HDFS集群包含一個名字節(jié)點,它是一個管理文件命名空間和調(diào)節(jié)客戶端訪問文件的主服務(wù)器,名字節(jié)點包含了每個文件的分割情況以及每個文件塊的映射表信息,用于接收用戶讀寫文件的請求。與名字節(jié)點不同,一個HDFS集群包含若干個數(shù)據(jù)節(jié)點,數(shù)據(jù)節(jié)點負責存儲文件數(shù)據(jù)。HDFS的工作機制是在存儲文件之前,將文件分割成塊,除了最后一塊以外,所有塊的大小都相同,HDFS將文件塊分布存儲在不同數(shù)據(jù)節(jié)點,為了保證高容錯性,防止由于數(shù)據(jù)節(jié)點故障或者網(wǎng)絡(luò)故障等導致數(shù)據(jù)丟失或者無法訪問,HDFS將文件塊按照一定算法復制到多個數(shù)據(jù)節(jié)點。
MapReduce是用于并行處理大數(shù)據(jù)集的軟件框架。MapReduce的核心內(nèi)容是函數(shù)性編程中的map函數(shù)和reduce函數(shù),它通常由很多map實例和很多reduce實例組成。map函數(shù)對接收到的一組數(shù)據(jù)進行轉(zhuǎn)換,輸出一個鍵/值對列表,其輸入域的每個元素也都是鍵/值對。reduce函數(shù)接收map函數(shù)生成的鍵/值對列表,然后以列表中的鍵作為唯一性標識,將具有相同鍵值的鍵值對進行合并、計算,最終縮小輸入的鍵值對列表,達到數(shù)據(jù)凝練、抽取的目的。
3.2 NoSQL
NoSQL(Not Only SQL)泛指非關(guān)系型數(shù)據(jù)庫,隨著Web2.0的發(fā)展,關(guān)系型數(shù)據(jù)庫在應(yīng)對大規(guī)模、高并發(fā)場景存在很多難以克服的問題,為了應(yīng)對海量數(shù)據(jù)存儲和訪問帶來的挑戰(zhàn),NoSQL應(yīng)運而生。與關(guān)系型數(shù)據(jù)庫不同,NoSQL數(shù)據(jù)庫沒有統(tǒng)一的架構(gòu),為了應(yīng)對各種不同的場合、應(yīng)用場景,市場上衍生出很多不同類型的NoSQL數(shù)據(jù)庫,比較主流的包括:Redis和MongoDB。
Redis是一個Key-Value存儲數(shù)據(jù)庫,它支持string、list、set、zset、hash(哈希)等多種value類型。傳統(tǒng)數(shù)據(jù)庫將數(shù)據(jù)保存到硬盤,每次從硬盤獲取數(shù)據(jù)效率不高。為了保證數(shù)據(jù)訪問效率,Redis將數(shù)據(jù)緩存在內(nèi)存中,然后將內(nèi)存中的數(shù)據(jù)周期性的寫入磁盤,此外還會將內(nèi)存數(shù)據(jù)修改操作追加到磁盤記錄文件,并且在此基礎(chǔ)上實現(xiàn)了master-slave(主從)同步。
MongoDB是基于分布式文件存儲的、介于關(guān)系型和非關(guān)系型之間的數(shù)據(jù)庫,它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,內(nèi)部采用類似json的格式存儲數(shù)據(jù)(MongoDB稱之為bson格式)。由于其性能很高,也可以作為系統(tǒng)架構(gòu)中的緩存使用。此外MongoDB具備高伸縮性,可以構(gòu)建由數(shù)十、數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫集群。
4 結(jié)束語
云計算作為近幾年IT行業(yè)討論的熱點話題,已經(jīng)由最初的概念炒作,變?yōu)槿缃駨V泛應(yīng)用的服務(wù)模式。本文主要從技術(shù)層面對云計算架構(gòu)以及常用的云計算框架技術(shù)進行介紹,旨在剖析云計算服務(wù)構(gòu)建過程中可能用到的技術(shù),可以為企業(yè)構(gòu)建公有云或者私有云提供技術(shù)參考。
參考文獻:
[1] 李舒磊.云計算及其架構(gòu)技術(shù)研究[J].中小企業(yè)管理與科技,2013(6).
[2] 孫健,賈曉菁. Google云計算平臺的技術(shù)架構(gòu)及對其成本的影響研究[J].電信科學,2010(1).
[3] 王鵬, 董靜宜. 一種云計算架構(gòu)的實現(xiàn)方法研究[J].計算機工程與科學,2009(S1).