【摘要】 面對“大數據”、“大系統”的蓬勃發展,越來越多的企業開始思考如何以更低的成本處理不斷以幾何指數增長的數據信息,于是可平滑擴展,動態分配資源,實現跨平臺互操作,看似計算資源無限大的云計算引起了廣泛關注。本文分別從分布式計算、網格計算、虛擬化以及SOA方面論述了云計算的技術體系。
【關鍵詞】 云計算 分布式計算 網格計算 虛擬化 SOA
一、云計算的概念
自2006年8月谷歌CEO Eric Schmidt在搜索引擎戰略大會上提出“云計算”一詞,使之名聲大噪,到今日,很多組織機構或個人都從自身角度對“云計算”的定義進行了闡述,但沒有一個可以被各方統一接受認可的定義。(1)美國國家標準和技術研究院(NIST):云計算作為一種模式,提供了便捷的,可隨時通過網絡訪問配置計算資源(包括網絡、服務器、存儲、應用和服務)共享池的能力,這些資源能夠快速部署,并只需要很少的管理工作或與服務供應商進行很少的交互。(2)維基百科(Wikipedia):一種基于互聯網的計算方式,通過這種方式,共享的軟硬件資源和信息可以按需提供給計算機和其他設備,整個運行方式和電網類似。(3)美國加州大學伯克利分校(UC Berkeley):云計算既指在互聯網上以服務形式提供的應用,也指在數據中心里提供這些服務的硬件和軟件。而這些數據中心里的硬件和軟件則被稱為云。
不難看出上述云計算概念的描述基本來自兩個角度,即商業模式或技術模式。只是有人強調其“應用服務性”,有人則重視其“技術實現方式”。兩者并無沖突。所以在大多數情況下,云計算可被視為一個劃分范疇的定語,具體所指取決于其所處的語義環境。
二、云計算的核心技術
長久以來,云計算的追捧者們一直在強調云計算所造就的全新的商業模式——計算資源首次以服務的形式通過互聯網自助方式銷售給客戶。然而,伴隨“大用戶”“大數據”、“大系統”等問題的出現,成就云計算背后的技術體系漸漸引起更多人的關注。
云計算融合了多種先進計算機技術理念,通過系統工程思想將各種技術不斷重組來解決應用時的具體問題。故在云計算平臺的技術實現中,會發現多種技術的影響,但如果我們只關注部分而忽略整體創新效應,則會出現“只見樹木,不見森林”的情況,不僅有失偏頗,還會導致錯誤的認識[1]。
2.1 云計算與并行計算、分布式計算
并行計算(Parallel Computing)是指多個指令可以同時被執行的計算模式,通常運行在并行計算機之上。并行計算是所有高性能計算機和超級計算機實現的基礎計算模式,它由串行計算演變而來,通過軟硬件技術仿真自然世界中一個序列中含有眾多同時發生的、復雜且相關事件的事物狀態。并行計算的優勢即為加快計算速度,為了達到這個目的,并行計算只可能是一個緊耦合的結構。由于并行計算的工作原理是將整體問題分割成為多個可被同時執行的指令,則其計算速度和可執行性都與其任務的分割方法密不可分,即在設計時,必須對相關任務進行良好的定義,制定具體的執行策略,對于定義之外的任務,系統將無法處理。這就使得并行計算模一旦定義完成之后,就只能處理定義類型的任務——計算能力強,但處理范圍窄。
分布式計算(Distributed Computing)的思想與并行計算類似,但其是利用了更多的不在同一物理地址的計算資源來解決大規模的復雜計算問題,即將“大”問題分解成為多個可被同時處理的“小”問題,之后再將這些“小”問題交由通過網絡連接起的多個不在同一物理地址的計算機執行。其中各個資源節點(物理的或邏輯的)既協同又獨立,在統一的管理下動態地進行任務和功能分配,并行地運行分布的程序。相比之下,分布式計算模式則是一個松耦合的結構,在分布式計算中被分解后的小問題間相對獨立,沒有很強的相關性;而并行計算中被分解之后的各個小任務間是有很強的相關性的。
云計算在傳統的分布式計算模式上有了一個躍升——計算資源虛擬化。它在硬件資源底層之上通過虛擬化技術使得物理上分布式的計算資源透明化,避免了硬件異構可能帶來的隱患,并在邏輯上形成一個巨大的資源共享池。它不再像傳統分布式計算的任務導向型,而在看似無限的資源共享池的基礎上形成需求導向的特點。云計算的結構雖在本質上是大規模分布式計算,但由于其又融入了很多并行計算的思想和技術(類似MPP大規模并行處理),才使得云計算逐步加入到超級計算機的行列中去。
2.2 云計算與集群計算、網格計算
集群計算(Cluster Computing)通俗來講就是多個計算機或服務器通過冗余互聯成為一個對用戶而言邏輯上單一的高可用性的系統。集群技術是一種相對較新的技術,通過集群技術,可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面的相對較高的收益。
集群計算被廣泛的用來進行低廉的并行計算。相比價格昂貴的中大型機,集群相對價格低廉可用性高,一般為同構,易于使用和維護,且采用集群可以有效實現負載均衡,極大的提高了其通信量和處理速度,成為實現超級計算機的技術之一。
網格計算(Grid Computing)從本質上講也是一種分布式計算模式,通過網絡將分散的閑置的計算機資源連接在一起,形成一個擁有超強性能的虛擬計算機,為用戶提供功能強大的計算和存儲能力,來處理特定的任務。[1]其工作方式也具有典型的分布式計算的特點:先將需要超強計算能力的問題分解為更小的問題,然后將已分解的各個小部分問題分發給多臺計算機進行處理,最后再將這些計算機反饋回來的計算結果綜合起來得出最后結論。網格計算的典例即是SETI@home.
由上述網格計算的定義中不難看出,網格計算是為了解決需要巨大計算力才能解決的問題而專門設立的。在網格計算中,使用者通常需要先基于某個網格的框架來構建自己的網格系統,如果一個新的應用程序想要使用網格系統,則在進行設計部署時,就要考慮網格的基本結構和其所提供的服務。應用開發者必須要知道如何把基礎設施的各個部分組合在一起,考慮編程語言、系統環境、數據管理、任務的分發和結果的打包、安全性和可用性的管理等諸多內容。這也就意味著網格計算更多的是任務導向型的“專用”計算模式,這就造成了其應用于商業上的局限性。
云計算綜合了集群與網格的優勢。利用集群技術在邏輯上形成云網絡中的單節點,而在物理層面通過集群技術有效的解決了單點失效(Single Point of Failure, SPoF)和負載均衡的問題,實現了云計算“彈性”“透明”的特點。利用網格計算的概念,云計算通過大規模分布式計算模式集中分散的閑置資源,形成巨大的計算資源共享池,同時不需要用戶關注整個云系統資源的管理和整合,更多的體現 了其“通用性”。
2.3 云計算虛擬化
虛擬化技術(Virtualization)是云計算理念實現的核心基礎,是將各種計算及存儲資源充分整合和高效利用的關鍵技術。從虛擬化理念角度來講,虛擬化是資源的邏輯表示,使它不受物理限制的約束。[3]從技術實現的角度來講,虛擬化將計算機資源抽象出來,形成不同的“虛擬層”,向上提供與“真實的層”相同或類似的功能。虛擬化技術為一組“類似資源”提供一個通用的抽象接口集,由此隱藏了大量分布異構的底層資源各自屬性和操作的差異性,使計算資源對上層應用透明,解除了上層應用與操作系統和硬件的緊耦合關系,并通過這個通用的接口實現通用統一的方式訪問和維護計算資源。
虛擬化技術分類方式多種多樣,例如按實現層次來劃分,大抵有硬件虛擬化、操作系統虛擬化、應用程序虛擬化,但其實他們實現的功能是一樣的,都是在一臺設備上虛擬化出多個操作系統,以達到資源的最大利用化,只是它們在實現這一目標時所采用的虛擬化層不一樣。所以雖然虛擬化技術的分類方式很多,卻相對含糊,故在此不多贅述,只詳細介紹從被應用的領域劃分的實現云計算三層基礎服務的虛擬化技術。
從本質上來講,云計算提供的服務實際上都是虛擬化的服務。從虛擬化到云計算的過程,實現了跨系統的資源動態調度,將大量的計算資源組成計算資源共享池,用于動態創建高度虛擬化的資源供用戶使用,從而最終實現應用程序、計算平臺和硬件資源以服務的方式通過互聯網提供給用戶,以更加便捷和彈性的模式滿足用戶需求。
2.4 云計算與SOA
SOA(Service Oriented Architecture)是面向服務的體系結構的簡稱。通常我們所說的SOA是一套設計和開發軟件的方法和原則,它將應用的不同模塊(即服務單元)通過一些定義良好的接口和協議聯接起來,使各類服務可以通過統一且通用的方式進行交互,形成整體服務平臺或系統。從技術層面上來講,SOA是一種組織和利用可能處于不同所有權范圍控制下的分散功能的范式[3],即給定一種標準接口和一個約束接口的服務協議,則任何應用滿足該服務協議,即可通過給定的標準接口進行通信和交互,實現“相互獨立”的對接。由于中立的接口定義,通過標準接口進行交互的功能模塊各自相對獨立,任何一方的功能發生變化,都不會影響整個系統的運行,其結構的松耦合性有效的實現了功能模塊的復用性。同時隨著業務應用的變化,SOA能夠便捷、快速、低耗的開發和組裝企業系統,并有效的解決在分布、異構的環境中數據、應用和系統集成的問題,大大提高了組織面對應對外界環境的敏捷性。
云計算是SOA思想在系統和硬件層面的延伸。SOA的使用,在本質上是一種用于交換系統與系統之間的消息的企業信息集成技術,它更關心如何使系統集成更有效率,在這方面它更類似于企業應用集成(Enterprise Application Integration,EAI)技術。不同的是EAI多是在事后打補丁,而SOA是事前預想的通用解決途徑,它可以達成企業架構中系統接口的統一,節約資源,同時在將來可能發生集成時提高速度以及組織的敏捷性。而相對比,云計算的重點在于通過資源的重新組合,來滿足不同的服務需求。在云計算平臺中,借鑒SOA服務導向的思想,可以實現更大范圍的“服務”的模塊化、流程化和松耦合,即可通過通用接口的定義屏蔽底層硬件資源的區別,實現云平臺的透明化。除此之外,還可以通過良好的接口定義實現數據交換的一致性,從而可以進行底層硬件資源和上層應用模塊的自由調度,從而實現云計算的積木化。
參 考 文 獻
[1] 姚宏宇,田溯寧. 云計算:大數據時代的系統工程[M]. 北京:電子工業出版社. 2013
[2] 雷萬云. 云計算:企業信息化建設策略與實踐[M]. 北京:清華大學出版社. 2010.12
[3] Mackenzie C M,Laskey K,McCabe F. Reference Model for Service Oriented Architecture 1.0:Committee Specification 1,2 August 2006[EB/OL]. OASIS,2006-08-02.