圖6 BigTable系統的組織結構
與前述的系統類似,BigTable也是客戶端和服務器端的聯合設計,使得性能能夠最大程度地符合應用的需求,BigTable系統依賴于集群系統的底層結構,一個是分布式的集群任務調度器,一個是前述的Google文件系統,還有一個分布式的鎖服務Chubby,Chubby是一個非常魯棒的粗粒度鎖,BigTable使用Chubby來保存根數據表格的指針,即用戶可以首先從Chubby鎖服務器中獲得根表的位置,進而對數據進行訪問,BigTable使用一臺服務器作為主服務器,用來保存和操作元數據,主服務器除了管理元數據之外,還負責對tablet服務器(即一般意義上的數據服務器)進行遠程管理與負載調配,客戶端通過編程接口與主服務器進行元數據通信,與tablet服務器進行數據通信。
以上是Google內部云計算基礎平臺的3個主要部分,Google還構建其他云計算組件,包括一個領域描述語言以及分布式鎖服務機制等,文獻[5]描述了Google內部構建集群的方法,即使用了大量的x86服務器集群來構建整個計算的硬件基礎設施,Sawzall是一種建立在MapReduce基礎上的領域語言,專門用于大規模的信息處理,Chubby[9]是前述的一個高可用、分布式數據鎖服務,當有機器失效時,Chubby使用Paxos算法來保證備份的一致性,Chubby的小型分布式文件系統的每一個單元都可以用來提供鎖服務。
3 IBM“藍云”計算平臺
IBM的“藍云”計算平臺是一套軟、硬件平臺,將Internet上使用的技術擴展到企業平臺上,使得數據中心使用類似于互聯網的計算環境,“藍云”大量使用了IBM先進的大規模計算技術,結合了IBM自身的軟、硬件系統以及服務技術,支持開放標準與開放源代碼軟件,“藍云”基于IBM Almaden研究中心的云基礎架構,采用了Xen和PowerVM虛擬化軟件,Linux操作系統映像以及Hadoop軟件(Google File System以及MapReduce的開源實現),IBM已經正式推出了基于x86芯片服務器系統的“藍云”產品。
圖7 IBM“藍云”產品架構
由圖可知,“藍云”計算平臺由一個數據中心、IBM Tivoli部署管理軟件(Tivoli provisioning manager)、IBM Tivoli監控軟件(IBM Tivoli monitoring)、IBM WebSphere應用服務器、IBM DB2數據庫以及一些開源信息處理軟件和開源虛擬化軟件共同組成,“藍云”的硬件平臺環境與一般的x86服務器集群類似,使用刀片的方式增加了計算密度,“藍云”軟件平臺的特點主要體現在虛擬機以及對于大規模數據處理軟件Apache Hadoop的使用上,Hadoop是開源版本的Google File System軟件和MapReduce編程規范。
·“藍云”計算平臺中的虛擬化技術
“藍云”軟件的一個重要特點是虛擬化技術的使用,虛擬化的方式在“藍云”中有兩個級別,一個是在硬件級別上實現虛擬化,另一個是通過開源軟件實現虛擬化,硬件級別的虛擬化可以使用IBM p系列的服務器,獲得硬件的邏輯分區LPAR(logic partition),邏輯分區的CPU資源能夠通過IBM EntERPrise Workload Manager來管理,通過這樣的方式加上在實際使用過程中的資源分配策略,能夠使相應的資源合理地分配到各個邏輯分區,p系列系統的邏輯分區最小粒度是1/10顆中央處理器(CPU),Xen則是軟件級別上的虛擬化,能夠在Linux基礎上運行另外一個操作系統。
虛擬機是一類特殊的軟件,能夠完全模擬硬件的執行,運行不經修改的完整的操作系統,保留了一整套運行IBM Tivoli Tivoli provising WebSphere application Virtualization infrastructure based on open source Linux & Xen Monitoring Provisioning baremental & Xen VM環境語義,通過虛擬機的方式,在云計算平臺上獲得如下一些優點:
1) 云計算的管理平臺能夠動態地將計算平臺定位到所需要的物理節點上,而無須停止運行在虛擬機平臺上的應用程序,進程遷移方法更加靈活;
2) 降低集群電能消耗,將多個負載不是很重的虛擬機計算節點合并到同一個物理節點上,從而能夠關閉空閑的物理節點,達到節約電能的目的;
3) 通過虛擬機在不同物理節點上的動態遷移,遷移了整體的虛擬運行環境,能夠獲得與應用無關的負載平衡性能;
4) 在部署上也更加靈活,即可以將虛擬機直接部署到物理計算平臺上,而虛擬機本身就包括了相應的操作系統以及相應的應用軟件,直接將大量的虛擬機映像復制到對應的物理節點即可。
·“藍云”計算平臺中的存儲體系結構
“藍云”計算平臺中的存儲體系結構對于云計算來說也是非常重要的,無論是操作系統、服務程序還是用戶的應用程序的數據都保存在存儲體系中,“藍云”存儲體系結構包含類似于Google File System的集群文件系統以及基于塊設備方式的存儲區域網絡SAN。
在設計云計算平臺的存儲體系結構時,不僅僅是需要考慮存儲容量的問題,實際上,隨著硬盤容量的不斷擴充以及硬盤價格的不斷下降,可以通過組合多個磁盤獲得很大的磁盤容量,相對于磁盤的容量,在云計算平臺的存儲中,磁盤數據的讀寫速度是一個更重要的問題,因此需要對多個磁盤進行同時讀寫,這種方式要求將數據分配到多個節點的多個磁盤當中,為達到這一目的,存儲技術有兩個選擇,一個是使用類似于Google File System的集群文件系統,另一個是基于塊設備的存儲區域網絡SAN系統。
在藍云計算平臺上,SAN系統與分布式文件系統(例如Google File System)并不是相互對立的系統,SAN提供的是塊設備接口,需要在此基礎上構建文件系統,才能被上層應用程序所使用,而Google File System正好是一個分布式的文件系統,能夠建立在SAN之上,兩者都能提供可靠性、可擴展性,至于如何使用還需要由建立在云計算平臺上的應用程序來決定,這也體現了計算平臺與上層應用相互協作的關系。
4 Amazon的彈性計算云
Amazon是互聯網上最大的在線零售商,每天負擔著大量的網絡交易,同時Amazon也為獨立軟件開發人員以及開發商提供云計算服務平臺,Amazon將他們的云計算平臺稱為彈性計算云(elastic compute cloud,簡稱EC2),是最早提供遠程云計算平臺服務的公司,Amazon將自己的彈性計算云建立在公司內部的大規模集群計算的平臺上,而用戶可以通過彈性計算云的網絡界面去操作在云計算平臺上運行的各個實例(instance),用戶使用實例的付費方式由用戶的使用狀況決定,即用戶只需為自己所使用的計算平臺實例付費,運行結束后計費也隨之結束,這里所說的實例即是由用戶控制的完整的虛擬機運行實例,通過這種方式,用戶不必自己去建立云計算平臺,節省了設備與維護費用。
Amazon的彈性計算云由名為Amazon網絡服務(Amazon Web services)的現有平臺發展而來,2006年3月,Amazon發布了簡單存儲服務(simple storage service,簡稱S3),用戶使用SOAP協議存放和獲取自己的數據對象,在2007年7月,Amazon公司推出了簡單隊列服務(simple queue service,簡稱SQS),這項服務能夠使得托管虛擬主機之間發送的消息,支持分布式程序之間的數據傳遞,無須考慮消息丟失的問題,Amazon又繼續提供了EBS(elastic block storage)服務,為用戶提供塊級別的存儲接口,在提供這些基礎設施的同時,Amazon公司開發了彈性計算云EC2系統,開放給外部開發人員使用,圖8給出了一個EC2系統的使用模式。
從圖8中可以看出,彈性計算云用戶使用客戶端通過SOAP over HTTPS協議與Amazon彈性計算云內部的實例進行交互,這樣,彈性計算云平臺為用戶或者開發人員提供了一個虛擬的集群環境,在用戶具有充分靈活性的同時,也減輕了云計算平臺擁有者(Amazon公司)的管理負擔,彈性計算云中的每一個實例代表一個運行中的虛擬機,用戶對自己的虛擬機具有完整的訪問權限,包括針對此虛擬機操作系統的管理員權限,虛擬機的收費也是根據虛擬機的能力進行費用計算的,實際上,用戶租用的是虛擬的計算能力。
總而言之,Amazon通過提供彈性計算云,滿足了小規模軟件開發人員對集群系統的需求,減小了維護負擔,其收費方式相對簡單明了:用戶使用多少資源,只需為這一部分資源付費即可。
為了彈性計算云的進一步發展,Amazon規劃了如何在云計算平臺基礎上幫助用戶開發網絡化的應用程序,除了網絡零售業務以外,云計算也是Amazon公司的核心價值所在,必然會在彈性計算云的平臺上添加更多的網絡服務組件模塊,為用戶構建云計算應用提供方便。
圖8 Amazon彈性計算云使用模式
5 云計算的學術研究
本節我們將主要討論與上述系統有關的文獻資料以及分布式計算實際系統最新進展的論文,由于云計算技術在互聯網應用上的重要性,有很多論文都出自各個大公司的研究院,這包括傳統的軟件和服務公司(如Microsoft,惠普)以及新興的網絡服務公司(如Yahoo,Google等),關于云計算技術上的研究主要包括兩個方面,一個是如何構建分布式平臺的基礎設施,另一個是如何幫助開發人員在云計算的分布式平臺上進行編程。
在分布式平臺的基礎設施研究上,主要包括微軟的Dryad框架,Amazon公司的Dynamo框架,以及應用于Ask,com公司的Neptune框架,微軟公司為了方便應用程序開發人員進行分布式程序的開發,提供了一個平臺Dryad,以支持有向無環圖類型數據流的并行程序,Dryad是一個一般化的框架,能夠支持MapReduce類型的應用程序以及關系代數的一些操作,而Dryad的整體框架則根據程序的要求完成調度工作,自動完成任務在各個節點上的運行,Amazon公司的研究人員研究了如何通過集群的技術快速存取大量的(鍵值,數據)對的問題(即Key,Value對),并建立Dynamo系統來維護這些信息,由于Amazon公司的特殊性,其公司內部的應用程序在很多情況下需要處理(鍵值,數據)對,并且需要擴展到大規模集群上,在對于讀寫控制方面,傳統的讀寫處理方式是盡量簡化讀的操作,而將復雜性放在寫操作上,Dynamo系統則將復雜性放在讀的方面,將整個系統設計成總是可以寫入的,以提高網絡用戶購物的體驗,Dynamo主要使用結構化的P2P結構一致性哈希算法來對數據進行劃分與存儲,使用向量時鐘的方式幫助完成數據讀取,并采用哈希樹與Gossip協議等一些手段對錯誤進行處理,應用于Ask,com的Neptune技術則針對大量數據進行歸并,總體框架首先將數據分布到大規模集群網絡上,每一個網絡中的節點只需保存一部分數據即可,而后每一個節點在數據上做相應的操作,將操作輸出的中間結果進行歸并操作即可獲得最終的結果,這種歸并方式在網絡數據處理的應用上非常廣泛。
在幫助開發人員在云計算的分布式平臺上進行編程的研究方面,有很多研究機構開發了新的編程模式,對MapReduce編程模式進行擴展或者更新,Yahoo公司擴展了MapReduce框架,在MapReduce步驟之后加入一個Merge的步驟,從而形成一個新的MapReduceMerge框架,使用這樣的框架應用程序開發人員可以自己提供Merge函數,做兩個數據集合的合并操作,Stanford大學的研究人員將MapReduce的思想應用到多核處理器上,主要工作是在多核處理器的基礎上構建了一套MapReduce的編程框架,并結合各種不同的應用程序在多核上的表現與現有的使用pthread編程方式進行比較,結果表明,在適合MapReduce表達的應用程序上,MapReduce效率較高,在多核上的應用是有價值的,Wisconsin大學的研究人員在Cell處理器上運行了基于MapReduce的應用程序,由于Cell處理器是異構多核的處理器,由1個中央處理器和8個協處理器構成,對此編程比較困難,他們將MapReduce的框架移植到Cell處理器的架構上,實驗結果表明,Cell處理器上的MapReduce程序有一定程度的性能提高,在不同于MapReduce編程方面,HP的Sinfonia將注意力關注于分布式共享內存的使用,Sinfornia提供了一個新的編程接口,一個對于內存的讀寫操作三元組(Compare,Read,Write),在這個三元組中,Compare是比較列表,由應用程序提供一系列的值與相應的集群內存中的數值進行比較,類似地,Read和Write是讀出和寫入的列表,表明一系列的讀寫操作,其語意是首先進行Compare列表的比較,如果所有的比較都能得到滿足,則進行三元組中的讀寫操作,如果上述的任何一個部分操作失敗,則整個操作回卷到操作之前的狀態,保持系統一致,目前已經在這種模式上完成了分布式文件系統的構建以及分布式的垃圾收集系統等,同時,這樣的一種系統也能夠容忍大量節點的失敗,完成了對于可用性的保證。
6 云計算系統的特征比較與未來的發展
本節主要討論云計算的共同特征以及它們之間的差異點,從用戶的角度來看,云計算系統將各種數據包括用戶數據都通過網絡保存到遠端的云存儲平臺上,減小了用戶對于數據管理的負擔;同時,云計算系統也將處理數據的服務程序通過遠程的大規模云計算處理平臺進行,能夠負擔大量數據的處理工作,可以說,云計算是數據共享計算模式與服務共享計算模式的結合體,是下一代計算模式的發展方向,從平臺技術構建來看,云計算具有3個基本特征,即系統建立在大規模的廉價服務器集群之上,通過基礎設施與上層應用程序的協同構建以達到最大效率利用硬件資源的目的,以及通過軟件的方法容忍多個節點的錯誤,通過云計算對這3個方面基本特征的體現,達到了分布式系統兩個方面的目標,即系統的可擴展性和可靠性。
各個云計算平臺也各自具有不同的特點,特別是在平臺的使用上,透明計算平臺為用戶同時提供了用戶實際接觸的客戶端節點以及無法接觸的遠程虛擬存儲服務器,是一個半公開的環境,Google的云計算平臺環境是私有的環境,除了開放有限的應用程序接口,例如GWT(Google Web toolkit),Google App Engine以及Google Map API等以外,Google并沒有將云計算的內部基礎設施共享給外部的用戶使用,IBM的“藍云”計算平臺則是可供銷售的軟、硬件集合,用戶基于這些軟、硬件產品構建自己的云計算應用,Amazon的彈性計算云則是托管式的云計算平臺,用戶可以通過遠端的操作界面直接操作使用,看不到實際的物理節點,表1從其他角度比較了各個云計算系統的不同之處,可以看出,雖然云計算系統在很多方面具有共性,但實際上各個系統之間還是有很大不同的,這也給云計算用戶或者開發人員帶來了不同的體驗。
云計算未來主要有兩個發展方向:一個是構建與應用程序緊密結合的大規模底層基礎設施,使得應用能夠擴展到很大的規模;另一個是通過構建新型的云計算應用程序,在網絡上提供更加豐富的用戶體驗,第1個發展趨勢能夠從現有的云計算研究狀況中體現出來,詳見上一節的分析,而在云計算應用的構造上,很多新型的社會服務型網絡,如facebook等,已經體現了這個發展趨勢,而在研究上則開始注重如何通過云計算基礎平臺將多個業務融合起來。
7 結束語
本文討論了當前云計算技術發展的前沿技術,通過具體的云計算實例進行詳細分析與研究,使讀者能夠掌握云計算的內部含義,從總體上來說,云計算可以從大規模分布式的基礎架構以及平臺之上的云計算應用程序兩個方面去理解,而本文的重點則放在云計算的基礎架構建設方面,這是構建整個云計算平臺的根本,總結本文的云計算系統實例以及相關的研究現狀,相信隨著云計算概念的提出以及相應系統構建實踐經驗的獲得,在不久的將來,工業界和學術界對云計算的研究無疑會成為一個熱點。
轉載請注明出處:拓步ERP資訊網http://m.hanmeixuan.com/
本文標題:云計算:系統實例與研究現狀(下)
本文網址:http://m.hanmeixuan.com/html/consultation/1083979201.html