楊志和
(1.上海電機學院電子信息學院,上海200240;2.華東師范大學教育科學學院,上海200062)
基于志愿計算的云平臺的構建方法與架構研究
楊志和1,2
(1.上海電機學院電子信息學院,上海200240;2.華東師范大學教育科學學院,上海200062)
提出了基于志愿計算模式的云計算平臺的構想,在對比分析了傳統的志愿計算平臺和云計算平臺架構的基礎上,闡述了志愿計算的云平臺的理論模型和實現框架,并提出了今后的研究內容與方向。
志愿計算;云計算;軟件即服務;基礎設施即服務;資源池
Abstract:This paper proposes a construction scheme of cloud computing infrastructure using a voluntary computing model.Based on comparison between traditional volunteer computing platforms and the cloud computing platform architecture,a theoretical model and an implementation framework based on voluntary computing model are proposed.Future research is outlined.
Key words:volunteer computing;cloud computing;software-as-a-service(SaaS);infrastructure as s service(IaaS);resource pool
據估計,一臺個人計算機用來執行重要任務的資源消耗小于其處理能力的 5%,而大多數服務器只使用了其10%~15%的處理能力來滿足用戶的需要,剩下的個人計算機或服務器計算資源(CPU,RAM及硬盤等)仍然閑置而未被利用[1];另一方面,如今在醫療、金融、軍事、科研等領域,計算密集型項目迫切地需要高性能低成本的計算資源的支持。構建這些高性能計算環境的方法基本上有2種:①傳統的自我構建法,即直接購買所需的硬件和軟件,以滿足相關機構的計算需求。其優點是完全擁有對計算資源調度和管理的控制權,缺點是成本太高,無論是初期基礎設施的購買,還是后期系統的日常運行和維護,都需要高昂的費用。②成立志愿計算項目,開發志愿計算平臺,以匯聚、管理和使用大規模閑置的計算能力。這里的志愿者是指提供項目計算所需的計算資源的人或機構,他們通過 Internet自愿貢獻出個人計算機或服務器的閑置計算資源,以此來組成一個可共享的、相對穩定的強大計算資源池[2]。
本文分析了現有的高性能計算平臺的構建方法,提出了一種基于志愿計算模式的云計算平臺構建模型及實現該模型的框架結構。基于志愿計算的云平臺(Volunteer2Cloud Computing Infrastructure)可以實現每秒一百萬萬億次浮點計算(ExaFLOPS)的目標,避免了集群系統和超級計算機將遭遇能耗和散熱的瓶頸問題,該平臺一旦建成,可以讓更多的科研用戶方便而廉價地使用云計算,使得科研界也可以享受這種為商業用戶帶來巨大益處的計算架構[3]。本文的研究旨在通過把互聯網中大量節點的、空閑的、可用的CPU計算資源以志愿計算的方式集中并利用起來,形成大規模的安全的計算資源池,實現一個低碳綠色的公共計算平臺。
1999年開展的在家搜索地外文明(Search for ExtraTerrestrial Intelligence at Home,SETI@home)可以說是創造了一個劃時代的先例,至今已有10多年的時間了。在這期間,Folding@home,United Devices,SaaS,Google Docs等一系列的計劃和工程都在表明,網絡已經開始在信息交流之外的另一個領域——信息處理,逐漸取代PC成為主導力量。
志愿計算和分布式計算研究如何把一個需要非常巨大計算能力才能解決的問題分成若干個小部分,然后把這些部分分配給許多計算機進行處理,最后將計算結果綜合起來得到最終的結果。這種革命性的想法充分地整合了互聯網上各個節點CPU的閑置能力,已經在各領域取得了不錯的成績,也必然使它的商業價值凸現出來。于是,網格服務出現了,但是由于網格服務的安全性、可用性、技術局限性、可操作性等原因,使它的使用范圍受到限制。
隨著分布式計算、并行計算和網格計算的發展,云計算開始形成并逐步完善。其基于虛擬化技術,將IT資源構筑成一個動態資源池,通過把計算任務進行分布式處理,將數據網絡化,實現資源的最優分配和最大利用,并且革命性地使計算變成了一種商品,按照第三方的付費方式動態的供其使用[4]。
志愿計算的主要思想是:志愿者出于對項目的信任,自愿地貢獻出自己閑置的計算資源來處理由項目服務器分發的任務,最后由項目服務器完成結果的回收和驗證等工作。而本文提出的Volunteer2Cloud Computing Infrastructure的思想則更進一步:成員自愿地加入系統,并貢獻自己閑置的計算資源,系統把互聯網中所有成員閑置的計算資源進行有效地匯聚、管理和調度,根據客戶的積分或付費方式,動態地供其使用,實現一種基于志愿計算模式的公共云計算平臺。
伯克利開放式網絡計算平臺(Berkeley Open Infrastructure for Network Computingm,BOINC)是用于志愿計算和網格計算的開放的中間件系統。其最早是為了支持SETI@home項目而開發的,之后逐漸成為最為主流的分布式的志愿計算平臺,為數學、物理、化學、生命科學、地球科學等學科類別的項目所使用。BOINC的開發目的是為了幫助研究人員更方便地獲得分布在世界各地的志愿者的計算資源[5]。2008年IBM的軍用超級計算機RoadRunner成為首臺計算能力達到每秒一千萬億次浮點計算(PetaFLOPS)的通用超級計算機。但在這之前,已有多個志愿者計算項目達到了這一計算能力,如斯坦福大學的 Folding@Home和數個采用BOINC中間件系統的項目。
現有的云計算基本上都是基于服務器端的云計算,即計算任務完全是在服務器端完成,客戶端只需能運行瀏覽器即可,針對標準的3層Web架構或Web 2.0應用,服務器端有專門的節點通過MapReduce算法,將一個大型的計算任務分解為若干個小任務,以并行方式運行在不同的服務器(一般是數千臺)節點上。在這種結構中,服務器端的計算資源和存儲資源都得到了充分利用,且進行了相對集中的部署和管理。但是這些計算資源僅僅是互聯網中可用資源的冰山一角,有很多客戶端擁有強大的計算資源,并經常處于閑置狀態而得不到充分利用。

圖1 基于志愿計算的云平臺示意圖Fig.1 Schematic diagram of cloud computing infrastructure based on volunteer computing
Volunteer2Cloud Computing Infrastructure是基于客戶端的云計算,每個志愿者的機器作為一個云計算終端,他們的閑置計算資源被虛擬化成一個新的云服務器。由于能夠參與志愿計算的終端數量非常龐大,而且所提供的計算資源可用性在一定范圍內具有規律性和周期性,如果把這個龐大的可用資源看成是一個非線性的動力系統,其長周期內最小的穩定動力值就是云平臺連續可用的動力均值,在實際應用中,可根據這個資源池的動態變化,分配適量的任務,以充分利用這些資源。
志愿計算終端經過管理、調度服務器的資源管理和虛擬化,形成一個虛擬云,基于MapReduce的應用程序可以被系統自動并行化后在云計算機群上調度和運行。系統平臺負責處理數據分割、容錯、調度、任務間通信以及錯誤處理等細節。來自大量客戶的計算請求,經由負載均衡節點將大量的任務合理分流到 MapReduce Master上,由 MapReduce Master將計算任務分解為很多小的任務,以并行分布的方式在志愿計算節點上計算,經過分析和驗證,再將結果反饋給客戶,從而可以更好地利用互聯網中龐大的閑置的計算資源。云計算服務提供商可以利用這個虛擬的云計算平臺提供軟件即服務(Software-as-a-Service,SaaS)或基礎設施服務(Infrastructure as a Service,IaaS)。需要計算的客戶需要付費,而注冊的志愿者用戶可以根據所提供的計算量來獲取傭金或積分,積分可兌換一定量的某些服務。基于志愿計算的云平臺架構圖如圖1所示。
基于志愿計算的云平臺邏輯結構如圖2所示。整個平臺包括云計算客戶端和云計算服務管理中心,客戶端的分類有兩種:①按客戶端的配置情況可分為胖客戶端和瘦客戶端;②按是否參與志愿計算可分為志愿者和非志愿者。一般只有胖客戶端才參與志愿計算,但并不是所有的胖客戶端都會參與志愿計算;瘦客戶端一般不參與志愿計算。應用層是應用程序本身與云計算基礎設施之間的連接,客戶端的應用層可僅保留瀏覽器,其他的基本上都可以使用云中軟件服務,所以客戶端的應用層用虛線標識。
Volunteer2Cloud云計算服務管理中心的實現框架主要包括管理子系統和資源子系統[4];從系統的縱向邏輯層面上,又可分為表現層、虛擬層和物理層。整個系統的核心組織框架圖如圖3所示[6]。
在圖3中,表現層提供客戶計算需要的工具、軟件和管理服務,包括設置界面,獲取客戶請求數據傳給虛擬層,計算任務分解,從虛擬層接收計算結果并輸出等。虛擬層是一個基于物理層虛擬的云平臺,由共享的中間件系統組成,這些中間件包括應用服務器和數據庫服務器、過程管理服務器和監控服務器等。讓眾多用戶基于多租戶技術快速透明地使用各種虛擬的強大的資源。物理層的主要任務是采用虛擬化技術將分散的志愿計算節點虛擬成云計算虛擬服務器,并管理和監控這些資源。

管理子系統是云服務提供方給有計算需求的客戶提供服務接口、工具和環境的集合,它主要分為客戶前端模塊、SaaS軟件管理中心、資源引擎和策略管理等4個部分。
客戶前端模塊提供與客戶的交互工具和接口,用戶通過它們與“服務器”端龐大的計算中心、數據中心和軟件租賃中心連接。
SaaS軟件管理中心是為客戶服務的軟件租賃中心,客戶可在此查找、訂閱所需要的軟件服務,同時進行計費和付費管理。這些SaaS應用程序一般由云服務提供方提供并部署,也可由第三方獨立軟件提供方提供,有云服務提供方部署并管理。
資源引擎主要是幫助客戶使用資源,其具備5個特點:獲取、共享、搜索、分類、定制。可快速地搜索并獲取資源,通過集成服務器技術達到資源的獲取,判斷有效的連接和可用的資源,然后發布并共享,在過程中有效地控制使用方式,也可定制需要的相關服務和使用過程。
策略管理系統是一種配置(設置)任務執行單元的機制,包括規劃、執行及其控制過程,其主要目的是以敏銳的網絡環境偵測來發掘任務執行成敗的原因,用更具彈性的策略來反映多變的網絡環境。
資源子系統根據所提供的服務,在邏輯上可分為兩個部分:計算云和存儲云。通過管理子系統的支持,可以對外提供計算和存儲服務。計算云根據從管理子系統傳遞過來的客戶的請求來控制和管理志愿計算虛擬機。
計算云由虛擬機調度模塊、虛擬機提供者、計算資源管理程序、計算資源監控模塊等4個部分組成。其中,虛擬機調度模塊主要運行一個負載均衡系統;計算資源監控模塊主要負責監視志愿計算節點的可用資源動態變化,將實時的資源分布信息反饋給虛擬機調度模塊,形成任務與機器的映射[7]。
存儲云由存儲資源管理模塊、存儲塊提供者組成。存儲資源管理模塊主要是監視志愿存儲節點的可用存儲資源的動態變化,將實時的資源分布信息反饋給資源引擎模塊,形成數據地址與機器存儲塊的映射。
Volunteer2Cloud云平臺的管理服務器可以基于開源軟件的策略來實現:用Java搭建出一套Hadoop框架,用于實現MapReduce算法,能夠把應用程序分割成許多很小的工作單元,每個單元可在任何志愿計算機上執行或重復執行。此外,Hadoop還提供一個分布式文件系統(HDFS)及分布式數據庫(HBase),用來將數據存儲或部署到各個計算節點上。Hadoop框架具有高容錯性和對數據讀寫的高吞吐率,能自動處理失敗節點。
由于志愿計算的客戶端是動態變化的,隨時可能加入或退出資源池,而一般的云計算的資源池是很安全且穩定的,故針對本平臺建立特殊的容錯備份系統至關重要。該功能需要在各志愿計算機之間相互備份重要數據,它的設計包括備份策略和備份內容。備份策略采用完全備份、增量備份和實時備份共同作用的方式;備份內容包括數據庫信息和文件。備份的數據庫信息包括應用程序信息、志愿者信息、志愿機統計信息;備份的文件包括應用程序二進制代碼、數據以及計算結果。當失效的服務器恢復后,檢查數據庫系統和文件系統是否被破壞,若被破壞,可從備份信息中恢復。
一旦需要進行“云調度”,則必先征求志愿者的同意(如彈出對話框,以征求志愿者的意見)。這里的“云調度”涉及計算任務的調度及“云設備”的調度。調度系統包括分派和調度2個模塊,分派模塊負責從作業池中選擇一批作業,封裝成任務。當志愿計算機請求任務時,調度模塊根據該志愿計算機的操作系統類型和硬件類型,選擇合適的任務分配給它。基于計算任務時間限定機制,志愿計算機必須在指定時間內返回計算結果,一旦超時,服務器會重新調度該任務。這樣避免了由于網絡計算的不確定性帶來的負面作用,保證計算任務最終能夠完成。
本文提出的Volunteer2Cloud Computing Infrastructure是一個由互聯網中的普通志愿計算機組成的大型集群,具有一定的持續穩定的計算力,其實現框架具有一定的可操作性,具體實現有待今后進一步研究。今后的工作主要有:
(1)規劃和啟動基于志愿計算的 Volunteer2Cloud@home項目,基于 Volunteer2Cloud Computing Infrastructure模型以及已有的開源的系統開發、實現云管理平臺及中間件,實現基于MapReduce的志愿計算環境,對數據進行分布式處理,將典型應用部署并上線運營,在實際環境中測試和使用。
(2)要解決真正實現Volunteer2Cloud平臺的關鍵問題,即如何保證客戶的計算任務可持續性、完整性及安全性。如:云中的志愿計算機突然下線或出現異常;云服務管理中心為避免出現不可預料的結果,該如何處理未完成的計算任務;如何保證用戶數據的完整性、一致性和安全性等云計算平臺走向實用階段普遍需要面對和解決的問題。
[1]孫毓忠.基于虛擬化技術設計高端商用服務器面臨的挑戰[EB/OL].(2007-11-07)[2010-4-14].http:∥lib.ict.ac.cn/ITL/data/2007/2/基于虛擬化技術設計高端商用服務器面臨的挑戰.pdf.
[2]王 宇,王志堅,黃曉萍,等.基于可用性模型的志愿計算[J].計算機工程,2009,35(3):18-20.
[3]楊志和,梁 云.物流聯盟企業的云計算公共技術平臺的體系結構[J].上海電機學院學報,2009,12(3):212-215.
[4]中國分布式計算總站.伯克利開放式網絡計算平臺(BOINC)[EB/OL].[2010-4-04].http:∥www.equn.com/wiki/BOINC.
[5]楊志和,顧小清,祝智庭.CSCL支撐技術的新發展[J].中國電化教育,2009(12):110-115.
[6]Cunsolo V D,Distefano S,Puliafito A,et al.Cloud@Home:Bridging the gap between volu-nteer and cloud computing[C]∥Emerging Intell-igentComputing Technology and Applications.Springer Berlin/Heidelberg:Springer-Vorlag,2009:423-432.
[7]楊志和.云計算:教育信息化轉型的助推器[J].中國教育信息化:高教職教,2010(3):9-12.
[8]唐 川.在“云”中做科研[J].科學研究動態監測快報:信息科技專輯,2008(21):1-2.
Construction and Structure of Cloud Computing Infrastructure Based on Volunteer Computing
YA N G Zhihe1,2
(1.School of Electronics and Information,Shanghai Dianji University,Shanghai 200240,China;2.School of Education Science,East China Normal University,Shanghai 200062,China)
TP 311.52;TP 393
A
2095-0020(2010)04-0223-05
2010-03-14
全國教育科學“十一五”規劃教育部重點課題(DCA060101)
楊志和(1979-),男,講師,博士生,專業方向為計算機網絡與中間件,E-mail:yangzh@sdju.edu.cn