什么是云計算?
云計算(cloudcomputing)是基于互聯網的相關服務的增加、使用和交付模式,通常涉及通過互聯網來提供動態易擴展且經常是虛擬化的資源。云是網絡、互聯網的一種比喻說法。過去在圖中往往用云來表示電信網,后來也用來表示互聯網和底層基礎設施的抽象。因此,云計算甚至可以讓你體驗每秒10萬億次的運算能力,擁有這么強大的計算能力可以模擬核爆炸、預測氣候變化和市場發展趨勢。用戶通過電腦、筆記本、手機等方式接入數據中心,按自己的需求進行運算。
對云計算的定義有多種說法。對于到底什么是云計算,至少可以找到100種解釋。現階段廣為接受的是美國國家標準與技術研究院(NIST)定義:云計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問,進入可配置的計算資源共享池(資源包括網絡,服務器,存儲,應用軟件,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的交互。
云計算的特點
(1)超大規模
“云”具有相當的規模,Google云計算已經擁有100多萬臺服務器,Amazon、IBM、微軟、Yahoo等的“云”均擁有幾十萬臺服務器。企業私有云一般擁有數百上千臺服務器。“云”能賦予用戶前所未有的計算能力。
(2)虛擬化
云計算支持用戶在任意位置、使用各種終端獲取應用服務。所請求的資源來自“云”,而不是固定的有形的實體。應用在“云”中某處運行,但實際上用戶無需了解、也不用擔心應用運行的具體位置。只需要一臺筆記本或者一個手機,就可以通過網絡服務來實現我們需要的一切,甚至包括超級計算這樣的任務。
(3)高可靠性
“云”使用了數據多副本容錯、計算節點同構可互換等措施來保障服務的高可靠性,使用云計算比使用本地計算機可靠。
(4)通用性
云計算不針對特定的應用,在“云”的支撐下可以構造出千變萬化的應用,同一個“云”可以同時支撐不同的應用運行。
(5)高可擴展性
“云”的規模可以動態伸縮,滿足應用和用戶規模增長的需要。
(6)按需服務
“云”是一個龐大的資源池,你按需購買;云可以像自來水,電,煤氣那樣計費。
(7)極其廉價
由于“云”的特殊容錯措施可以采用極其廉價的節點來構成云,“云”的自動化集中式管理使大量企業無需負擔日益高昂的數據中心管理成本,“云”的通用性使資源的利用率較之傳統系統大幅提升,因此用戶可以充分享受“云”的低成本優勢,經常只要花費幾百美元、幾天時間就能完成以前需要數萬美元、數月時間才能完成的任務。
云計算可以徹底改變人們未來的生活,但同時也要重視環境問題,這樣才能真正為人類進步做貢獻,而不是簡單的技術提升。
(8)潛在的危險性
云計算服務除了提供計算服務外,還必然提供了存儲服務。但是云計算服務當前壟斷在私人機構(企業)手中,而他們僅僅能夠提供商業信用。對于政府機構、商業機構(特別像銀行這樣持有敏感數據的商業機構)對于選擇云計算服務應保持足夠的警惕。一旦商業用戶大規模使用私人機構提供的云計算服務,無論其技術優勢有多強,都不可避免地讓這些私人機構以“數據(信息)”的重要性挾制整個社會。對于信息社會而言,“信息”是至關重要的。另一方面,云計算中的數據對于數據所有者以外的其他用戶云計算用戶是保密的,但是對于提供云計算的商業機構而言確實毫無秘密可言。所有這些潛在的危險,是商業機構和政府機構選擇云計算服務、特別是國外機構提供的云計算服務時,不得不考慮的一個重要的前提。
云計算技術的架構層
1.顯示層
多數數據中心云計算架構的這層主要是用于以友好的方式展現用戶所需的內容和服務體驗,并會利用到下面中間件層提供的多種服務,主要有五種技術:
HTML:標準的Web頁面技術,現在主要以HTML4為主,但是將要推出的HTML5會在很多方面推動Web頁面的發展,比如視頻[1]和本地存儲等方面。
JavaScript:一種用于Web頁面的動態語言,通過JavaScript,能夠極大地豐富Web頁面的功能,并且用以JavaScript為基礎的AJAX創建更具交互性的動態頁面。
CSS:主要用于控制Web頁面的外觀,而且能使頁面的內容與其表現形式之間進行優雅地分離。
Flash[2]:業界最常用的RIA(RichInternetApplications)技術,能夠在現階段提供HTML等技術所無法提供的基于Web的富應用,而且在用戶體驗方面,非常不錯。
Silverlight:來自業界巨擎微軟的RIA技術,雖然其現在市場占有率稍遜于Flash,但由于其可以使用C#[5]來進行編程,所以對開發者非常友好。
2.中間層
這層是承上啟下的,它在下面的基礎設施層所提供資源的基礎上提供了多種服務,比如緩存服務和REST服務等,而且這些服務即可用于支撐顯示層,也可以直接讓用戶調用,并主要有五種技術:
REST:通過REST技術,能夠非常方便和優雅地將中間件層所支撐的部分服務提供給調用者。
多租戶:就是能讓一個單獨的應用實例可以為多個組織服務,而且保持良好的隔離性和安全性,并且通過這種技術,能有效地降低應用的購置和維護成本。
并行處理:為了處理海量的數據,需要利用龐大的X86集群進行規模巨大的并行處理,Google的MapReduce是這方面的代表之作。
應用服務器:在原有的應用服務器的基礎上為云計算做了一定程度的優化,比如用于GoogleAppEngine的Jetty應用服務器。
分布式緩存:通過分布式緩存技術,不僅能有效地降低對后臺服務器的壓力,而且還能加快相應的反應速度,最著名的分布式緩存例子莫過于Memcached。
3.基礎設施層
這層作用是為給上面的中間件層或者用戶準備其所需的計算和存儲等資源,主要有四種技術:
虛擬化:也可以理解它為基礎設施層的“多租戶”,因為通過虛擬化技術,能夠在一個物理服務器上生成多個虛擬機,并且能在這些虛擬機之間能實現全面的隔離,這樣不僅能減低服務器的購置成本,而且還能同時降低服務器的運維成本,成熟的X86虛擬化技術有VMware的ESX和開源的Xen。
分布式存儲:為了承載海量的數據,同時也要保證這些數據的可管理性,所以需要一整套分布式的存儲系統。
關系型數據庫:基本是在原有的關系型數據庫的基礎上做了擴展和管理等方面的優化,使其在云中更適應。
NoSQL:為了滿足一些關系數據庫所無法滿足的目標,比如支撐海量的數據等,一些公司特地設計一批不是基于關系模型的數據庫。
4.管理層
這層是為橫向的三層服務的,并給這三層提供多種管理和維護等方面的技術,主要有下面這六個方面:
帳號管理:通過良好的帳號管理技術,能夠在安全的條件下方便用戶地登錄,并方便管理員對帳號的管理。
SLA監控:對各個層次運行的虛擬機,服務和應用等進行性能方面的監控,以使它們都能在滿足預先設定的SLA(ServiceLevelAgreement)的情況下運行。
計費管理:也就是對每個用戶所消耗的資源等進行統計,來準確地向用戶索取費用。
安全管理:對數據,應用和帳號等IT[6]資源采取全面地保護,使其免受犯罪分子和惡意程序的侵害。
負載均衡:通過將流量分發給一個應用或者服務的多個實例來應對突發情況。
運維管理:主要是使運維操作盡可能地專業和自動化,從而降低云計算中心的運維成本。
云計算架構其中有三層是橫向的,分別是顯示層、中間件層和基礎設施層,通過這三層技術能夠提供非常豐富的云計算能力和友好的用戶界面,云計算架構還有一層是縱向的,稱為管理層,是為了更好地管理和維護橫向的三層而存在的。
云計算架構分層
一般來說,目前大家比較公認的云架構是劃分為基礎設施層、平臺層和軟件服務層三個層次的。對應名稱為IaaS,PaaS和SaaS。IaaS,InfrastructureasaService,中文名為基礎設施即服務,有點拗口,大家習慣了就好。如圖1所示。
圖1云計算架構示意圖
IaaS主要包括計算機服務器、通信設備、存儲設備等,能夠按需向用戶提供的計算能力、存儲能力或網絡能力等IT基礎設施類服務,也就是能在基礎設施層面提供的服務。今天IaaS能夠得到成熟應用的核心在于虛擬化技術,通過虛擬化技術可以將形形色色計算設備統一虛擬化為虛擬資源池中的計算資源,將存儲設備統一虛擬化為虛擬資源池中的存儲資源,將網絡設備統一虛擬化為虛擬資源池中的網絡資源。當用戶訂購這些資源時,數據中心管理者直接將訂購的份額打包提供給用戶,從而實現了IaaS。
PaaS, Platform as a Service,中文名為平臺即服務。如果以傳統計算機架構中“硬件+操作系統/開發工具+應用軟件”的觀點來看待,那么云計算的平臺層應該提供類似操作系統和開發工具的功能。實際上也的確如此,PaaS定位于通過互聯網為用戶提供一整套開發、運行和運營應用軟件的支撐平臺。就像在個人計算機軟件開發模式下,程序員可能會在一臺裝有Windows或Linux操作系統的計算機上使用開發工具開發并部署應用軟件一樣。微軟公司的Windows Azure和谷歌公司的GAE,可以算是目前PaaS平臺中最為知名的兩個產品了。
SaaS,軟件即服務。簡單地說,就是一種通過互聯網提供軟件服務的軟件應用模式。在這種模式下,用戶不需要再花費大量投資用于硬件、軟件和開發團隊的建設,只需要支付一定的租賃費用,就可以通過互聯網享受到相應的服務,而且整個系統的維護也由廠商負責。
云計算和大數據的區別
云計算就是硬件資源的虛擬化;大數據就是海量數據的高效處理。云計算相當于我們的計算機和操作系統,將大量的硬件資源虛擬化之后再進行分配使用,在云計算領域目前的老大應該算是Amazon,可以說為云計算提供了商業化的標準,另外值得關注的還有VMware(其實從這一點可以幫助你理解云計算和虛擬化的關系),開源的云平臺最有活力的就是Openstack了;
大數據相當于海量數據的“數據庫”,而且通觀大數據領域的發展也能看出,當前的大數據處理一直在向著近似于傳統數據庫體驗的方向發展,Hadoop的產生使我們能夠用普通機器建立穩定的處理TB級數據的集群,把傳統而昂貴的并行計算等概念一下就拉到了我們的面前,但是其不適合數據分析人員使用(因為MapReduce開發復雜),所以PigLatin和Hive出現了(分別是Yahoo!和facebook發起的項目,說到這補充一下,在大數據領域Google、facebook、twitter等前沿的互聯網公司作出了很積極和強大的貢獻),為我們帶來了類SQL的操作,到這里操作方式像SQL了,但是處理效率很慢,絕對和傳統的數據庫的處理效率有天壤之別,所以人們又在想怎樣在大數據處理上不只是操作方式類SQL,而處理速度也能“類SQL”,Google為我們帶來了Dremel/PowerDrill等技術,Cloudera(Hadoop商業化最強的公司,Hadoop之父cutting就在這里負責技術領導)的Impala也出現了。
整體來看,未來的趨勢是,云計算作為計算資源的底層,支撐著上層的大數據處理,而大數據的發展趨勢是,實時交互式的查詢效率和分析能力,借用Google一篇技術論文中的話,“動一下鼠標就可以在秒級操作PB級別的數據”。
評論
查看更多