專利名稱::云計算應(yīng)用自動部署系統(tǒng)及方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于云計算應(yīng)用
技術(shù)領(lǐng)域:
,特別是涉及一種云計算應(yīng)用自動部署系統(tǒng)及方法。
背景技術(shù):
:云計算(CloudComputing),是一種基于互聯(lián)網(wǎng)的計算方式,通過這種計算方式,共享的軟硬件資源和信息可以按需提供給計算機(jī)和其他設(shè)備,整個運行方式很像電網(wǎng)。云計算可以認(rèn)為包括以下幾個層次的服務(wù):基礎(chǔ)設(shè)施即服務(wù)(InfrastructureasaService,IaaS),平臺即服務(wù)(PlatformasaService,PaaS)和軟件即服務(wù)(SaaS)。其中,基礎(chǔ)設(shè)施即服務(wù)是使用者使用的處理、儲存、網(wǎng)絡(luò)以及各種基礎(chǔ)運算資源,部署與執(zhí)行操作系統(tǒng)或應(yīng)用程式等的各種軟件,在云端計算中,通常提供通用的通過瀏覽器訪問的在線商業(yè)應(yīng)用,軟件和數(shù)據(jù)可存儲在數(shù)據(jù)中心。平臺即服務(wù)是一種云端運算服務(wù),提供運算平臺與解決方案堆棧即服務(wù),在云端運算的典型層級中,平臺即服務(wù)層介于軟件即服務(wù)與基礎(chǔ)設(shè)施即服務(wù)之間。通過平臺即服務(wù)使用者能將云端基礎(chǔ)設(shè)施部署與建立至用戶端,或者借此獲得使用編程語言、程式庫與服務(wù),使用者不需要管理與控制云端基礎(chǔ)設(shè)施,包含網(wǎng)絡(luò)、月艮務(wù)器、操作系統(tǒng)或儲存,但需要控制上層的應(yīng)用程式部署與應(yīng)用代管的環(huán)境;平臺即服務(wù)將軟件研發(fā)的平臺做為一種服務(wù),以軟件即服務(wù)的模式交付給用戶,因此,PaaS也是SaaS模式的一種應(yīng)用,但是,PaaS的出現(xiàn)可以加快SaaS的發(fā)展,尤其是加快SaaS應(yīng)用的開發(fā)速度。為了實現(xiàn)平臺即服務(wù),如何分配集群內(nèi)的計算資源是云計算數(shù)據(jù)中心的重要問題,把任務(wù)靜態(tài)分配到服務(wù)器上會導(dǎo)致低負(fù)載時浪費服務(wù)器,而高負(fù)載時無法實時擴(kuò)容。隨著云計算應(yīng)用的數(shù)量急劇增長,如何高效地部署云計算應(yīng)用并實時監(jiān)控應(yīng)用的運算狀態(tài)并做出相應(yīng)的處理成為急需解決的問題。為了提高集群內(nèi)服務(wù)器的利用率,實現(xiàn)動態(tài)資源共享,需要一個中間件進(jìn)行集群內(nèi)的任務(wù)調(diào)度,申請?zhí)枮镃N201010583597.9的中國專利提出了一種云計算環(huán)境中分布式計算模式下的任務(wù)動態(tài)調(diào)度方法,該方法因采用主節(jié)點接收子節(jié)點的心跳信息并加以分析,然后再為子節(jié)點部署應(yīng)用;由于每個子節(jié)點有多個任務(wù),如此需要依次分析并更新每個任務(wù)描述信息,顯然分析和更新心跳信息的過程需要花費較多時間,不利于主節(jié)點即時處理子節(jié)點的心跳信息并為其部署應(yīng)用,從而不能很好地實現(xiàn)云計算技術(shù)的效能,降低調(diào)度性能,并且不能夠?qū)υ朴嬎銘?yīng)用的運行狀態(tài)進(jìn)行實時監(jiān)控。同時,因為沒有根據(jù)應(yīng)用運行需求進(jìn)行相應(yīng)調(diào)度的機(jī)制,降低了系統(tǒng)的性能,影響了云服務(wù)的質(zhì)量。
發(fā)明內(nèi)容本發(fā)明的目的在于,提供一種云計算應(yīng)用自動部署系統(tǒng)及方法,旨在解決現(xiàn)有的云計算部署系統(tǒng)不能夠?qū)υ朴嬎銘?yīng)用的運行狀態(tài)進(jìn)行實時監(jiān)控,且不能根據(jù)應(yīng)用運行需求進(jìn)行相應(yīng)調(diào)度的機(jī)制的技術(shù)問題。本發(fā)明提供的技術(shù)方案為:一種云計算應(yīng)用自動部署系統(tǒng)包括客戶端、提交模塊和集群處理系統(tǒng),所述客戶端用于提交作業(yè)需求,所述提交模塊用于根據(jù)作業(yè)需求生成作業(yè)描述信息并提交作業(yè)描述信息;所述集群處理系統(tǒng)用于接收作業(yè)描述信息,根據(jù)作業(yè)需求將作業(yè)描述信息添加到不同的作業(yè)描述信息隊列中,并接收任務(wù)節(jié)點信息,根據(jù)作業(yè)需求及任務(wù)節(jié)點信息為任務(wù)節(jié)點部署任務(wù)。本發(fā)明的技術(shù)方案還包括:所述作業(yè)描述信息包括作業(yè)ID、用戶信息、作業(yè)類型、作業(yè)需求、作業(yè)提交時間、所含任務(wù)個數(shù)以及其中的任務(wù)描述信息隊列;所述任務(wù)節(jié)點信息包括該任務(wù)節(jié)點的機(jī)器名、IP、CPU個數(shù)、CPU平均使用率、CPU負(fù)載、任務(wù)槽個數(shù)、內(nèi)存總量、內(nèi)存利用率、可用內(nèi)存、硬盤總量、硬盤使用率、可用硬盤總量以及運行任務(wù)描述信息隊列,所述運行任務(wù)描述信息隊列用于保存部署到該任務(wù)節(jié)點的任務(wù)描述信息。本發(fā)明的技術(shù)方案還包括:所述集群處理系統(tǒng)包括主控節(jié)點和任務(wù)節(jié)點,所述主控節(jié)點對外提供三個接口,分別是:為提交模塊提供的作業(yè)提交接口、為任務(wù)節(jié)點提供的心跳信息接口和任務(wù)狀態(tài)報告接口;所述主控節(jié)點還包括任務(wù)節(jié)點信息隊列和任務(wù)部署隊列,所述任務(wù)節(jié)點信息隊列用于存儲任務(wù)節(jié)點信息,并記錄任務(wù)節(jié)點的更新時間;所述任務(wù)部署隊列用于存放部署到任務(wù)節(jié)點的任務(wù)描述信息,并將任務(wù)部署隊列返回到任務(wù)節(jié)點運行任務(wù)。本發(fā)明的技術(shù)方案還包括:所述主控節(jié)點還包括:作業(yè)提交處理子模塊:用于根據(jù)作業(yè)描述信息生成唯一的作業(yè)ID并通過作業(yè)提交接口返回到提交模塊;同時分析并處理作業(yè)描述信息,根據(jù)作業(yè)描述信息的作業(yè)需求將作業(yè)描述信息添加到對應(yīng)的作業(yè)描述信息隊列中;任務(wù)部署模塊:用于根據(jù)作業(yè)需求及任務(wù)節(jié)點信息為任務(wù)節(jié)點部署任務(wù),將部署到任務(wù)節(jié)點的任務(wù)描述信息存放在任務(wù)部署隊列,并將任務(wù)部署隊列返回到該任務(wù)節(jié)點;心跳信息處理子模塊:用于分析并處理任務(wù)節(jié)點提供的任務(wù)節(jié)點信息,根據(jù)任務(wù)節(jié)點信息更新任務(wù)節(jié)點信息隊列中相應(yīng)的任務(wù)節(jié)點信息,并記錄更新時間;任務(wù)狀態(tài)報告處理子模塊:用于分析任務(wù)節(jié)點提供的任務(wù)狀態(tài)信息,根據(jù)任務(wù)ID在作業(yè)描述信息隊列中找到對應(yīng)的任務(wù),并根據(jù)運行動作及運行狀態(tài)更新作業(yè)描述信息;所述任務(wù)狀態(tài)信息包括任務(wù)ID、任務(wù)動作及任務(wù)運行狀態(tài)。本發(fā)明的技術(shù)方案還包括:所述任務(wù)節(jié)點還包括:初始化模塊:用于收集任務(wù)節(jié)點信息,并調(diào)用主控節(jié)點提供的心跳信息端口發(fā)送給主控節(jié)點;任務(wù)執(zhí)行模塊:用于接收主控節(jié)點返回的任務(wù)部署隊列,根據(jù)任務(wù)部署隊列中的任務(wù)描述信息運行任務(wù);心跳收集模塊:用于間隔一定時間重新調(diào)用系統(tǒng)環(huán)境的接口收集本機(jī)的任務(wù)節(jié)點信息以及本機(jī)運行的任務(wù)描述信息,將任務(wù)描述信息添加到任務(wù)節(jié)點信息中運行任務(wù)描述信息隊列的尾端,并將任務(wù)節(jié)點信息和任務(wù)描述信息封裝為心跳信息后通過心跳信息端口將發(fā)送給主控節(jié)點;狀態(tài)報告模塊:用于監(jiān)控本機(jī)每個運行的任務(wù)進(jìn)程,當(dāng)進(jìn)程狀態(tài)改變或是進(jìn)程出現(xiàn)異常時,收集該任務(wù)進(jìn)程相關(guān)的任務(wù)狀態(tài)信息數(shù)據(jù)并將其封裝為任務(wù)狀態(tài)報告后調(diào)用任務(wù)狀態(tài)報告接口發(fā)送給主控節(jié)點。本發(fā)明的技術(shù)方案還包括:所述作業(yè)按需求分為Web應(yīng)用、普通應(yīng)用、系統(tǒng)應(yīng)用及科學(xué)計算應(yīng)用,并對四類作業(yè)依次采用從高到低的優(yōu)先級進(jìn)行調(diào)度。本發(fā)明提供的另一技術(shù)方案,一種云計算應(yīng)用自動部署方法,包括:步驟a:提交作業(yè)描述信息,并提交任務(wù)節(jié)點信息;步驟b:接收作業(yè)描述信息及任務(wù)節(jié)點信息,并根據(jù)作業(yè)需求將作業(yè)描述信息添加到不同的作業(yè)描述信息隊列中;步驟c:根據(jù)作業(yè)需求及任務(wù)節(jié)點信息為任務(wù)節(jié)點部署任務(wù)。本發(fā)明的技術(shù)方案還包括:在所述步驟a中,所述作業(yè)描述信息包括作業(yè)ID、用戶信息、作業(yè)類型、作業(yè)需求、作業(yè)提交時間、所含任務(wù)個數(shù)以及其中的任務(wù)描述信息隊列;所述任務(wù)描述信息包括任務(wù)ID、任務(wù)類型、任務(wù)路徑、任務(wù)動作、任務(wù)可執(zhí)行文件、任務(wù)參數(shù)、所在機(jī)器IP、任務(wù)狀態(tài)及任務(wù)需求;所述任務(wù)節(jié)點信息包括該任務(wù)節(jié)點的機(jī)器名、IP、CPU個數(shù)、CPU平均使用率、CPU負(fù)載、任務(wù)槽個數(shù)、內(nèi)存總量、內(nèi)存利用率、可用內(nèi)存、硬盤總量、硬盤使用率、可用硬盤總量以及運行任務(wù)描述信息隊列,所述運行任務(wù)描述信息隊列用于保存部署到該任務(wù)節(jié)點的任務(wù)描述信息。本發(fā)明的技術(shù)方案還包括:所述步驟b還包括:根據(jù)作業(yè)描述信息生成唯一的作業(yè)ID并通過作業(yè)提交接口返回到提交模塊;所述作業(yè)描述信息隊列包括作業(yè)等待隊列、作業(yè)分發(fā)隊列、作業(yè)運行隊列、作業(yè)刪除隊列、暫停隊列及作業(yè)完成隊列,用于存放不同作業(yè)需求的作業(yè)描述信息。本發(fā)明的技術(shù)方案還包括:在所述步驟b還包括:分析任務(wù)節(jié)點信息,根據(jù)作業(yè)需求及任務(wù)節(jié)點信息為任務(wù)節(jié)點部署任務(wù),將部署到該任務(wù)節(jié)點的任務(wù)描述信息存放在任務(wù)部署隊列,并將任務(wù)部署隊列返回到該任務(wù)節(jié)點。本發(fā)明的技術(shù)方案還包括:所述步驟c還包括:接收主控節(jié)點返回的任務(wù)部署隊列,根據(jù)任務(wù)部署隊列中的任務(wù)描述信息運行任務(wù),間隔一定時間調(diào)用系統(tǒng)環(huán)境的接口重新收集本機(jī)的任務(wù)節(jié)點信息以及本機(jī)運行的任務(wù)描述信息,將任務(wù)節(jié)點信息和任務(wù)描述信息封裝為心跳信息后提交給主控節(jié)點;并監(jiān)控本機(jī)每個運行的任務(wù)進(jìn)程,當(dāng)進(jìn)程狀態(tài)改變或是進(jìn)程出現(xiàn)異常時,收集該任務(wù)進(jìn)程相關(guān)的任務(wù)狀態(tài)信息數(shù)據(jù)并將其封裝為任務(wù)狀態(tài)報告提交給主控節(jié)點;所述任務(wù)狀態(tài)信息包括任務(wù)ID、任務(wù)動作及任務(wù)運行狀態(tài)。本發(fā)明的技術(shù)方案還包括:所述步驟c還包括:接收任務(wù)節(jié)點返回的任務(wù)節(jié)點信息及任務(wù)描述信息,根據(jù)任務(wù)節(jié)點信息及任務(wù)描述信息更新任務(wù)節(jié)點信息隊列,并記錄更新時間;接收任務(wù)節(jié)點返回的任務(wù)狀態(tài)信息,根據(jù)任務(wù)ID在作業(yè)描述信息隊列中找到對應(yīng)的任務(wù),并根據(jù)運行動作及運行狀態(tài)更新作業(yè)描述信息;其中,所述任務(wù)節(jié)點信息隊列用于存儲任務(wù)節(jié)點信息,并記錄任務(wù)節(jié)點的更新時間。本發(fā)明的技術(shù)方案具有如下優(yōu)點或有益效果:本發(fā)明實施例的云計算應(yīng)用自動部署系統(tǒng)及方法通過將任務(wù)節(jié)點心跳信息及任務(wù)狀態(tài)信息分開發(fā)送,從而實時采集任務(wù)運行狀態(tài),使得主控節(jié)點能夠?qū)崟r地更新作業(yè)信息,而不需要在心跳信息到來時再分析和更新作業(yè)信息,可以節(jié)省較多時間,能夠及時地對心跳信息做出回應(yīng),為任務(wù)節(jié)點部署任務(wù),提高云計算的調(diào)度性能;并將作業(yè)描述信息按照作業(yè)需求存放于不同隊列當(dāng)中進(jìn)行自動部署,節(jié)省查找作業(yè)描述信息的時間,更利于任務(wù)的調(diào)度;同時,本發(fā)明實施例通過將應(yīng)用按照需求進(jìn)行分類,并對應(yīng)用類別依次采用從高到低的優(yōu)先級,根據(jù)應(yīng)用需求及類別進(jìn)行相應(yīng)調(diào)度,提高云服務(wù)的性能和質(zhì)量。附圖1是本發(fā)明實施例的云計算應(yīng)用自動部署系統(tǒng)的結(jié)構(gòu)示意圖;附圖2是本發(fā)明實施例的主控節(jié)點中作業(yè)描述信息狀態(tài)變化的更新示意圖;附圖3是本發(fā)明實施例的云計算應(yīng)用自動部署方法的流程圖;附圖4是本發(fā)明實施例的主控節(jié)點部署任務(wù)的方法的流程圖;附圖5是本發(fā)明實施例的任務(wù)節(jié)點運行任務(wù)的方法的流程圖。具體實施例方式為更進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實施例,對依據(jù)本發(fā)明提出的用戶原創(chuàng)內(nèi)容的推薦方法及推薦裝置其具體實施方式、方法、步驟、結(jié)構(gòu)、特征及其功效,詳細(xì)說明如下。有關(guān)本發(fā)明的前述及其他技術(shù)內(nèi)容、特點及功效,在以下配合參考圖式的較佳實施例的詳細(xì)說明中將可清楚呈現(xiàn)。通過具體實施方式的說明,當(dāng)可對本發(fā)明為達(dá)成預(yù)定目的所采取的技術(shù)手段及功效得以更加深入且具體的了解,然而所附圖式僅是提供參考與說明之用,并非用來對本發(fā)明加以限制。請參閱圖1,是本發(fā)明實施例的云計算應(yīng)用自動部署系統(tǒng)的結(jié)構(gòu)示意圖。本發(fā)明實施例的云計算應(yīng)用自動部署系統(tǒng)包括客戶端(Submitter)、提交模塊及集群處理系統(tǒng)。其中,客戶端用于用戶提交作業(yè)需求,并查詢集群處理系統(tǒng)資源或任務(wù)狀態(tài),對任務(wù)進(jìn)行相應(yīng)操作,例如暫?;蚪K止等;客戶端在集群處理系統(tǒng)外的用戶機(jī)器上運行,例如開發(fā)機(jī)器或管理機(jī)器等,客戶端可向權(quán)限范圍內(nèi)的所有集群處理系統(tǒng)提交作業(yè);本發(fā)明實施例將應(yīng)用視為一個作業(yè),每個作業(yè)可以包含多個任務(wù),在提交作業(yè)時,用戶可通過以下方式部署軟件:將可執(zhí)行文件從客戶端拷貝到共享文件系統(tǒng),供任務(wù)節(jié)點(TaskEngine)拉取,客戶端有命令行界面(Co_andLineInterface,簡寫:CLI)及Web界面。本發(fā)明實施例將應(yīng)用分為四大類:Web應(yīng)用、普通應(yīng)用、系統(tǒng)應(yīng)用及科學(xué)計算應(yīng)用,對四類作業(yè)依次采用從高到低的優(yōu)先級,從而使云計算所提供的服務(wù)更加合理,更加適應(yīng)當(dāng)前云計算應(yīng)用的需求;按照計算環(huán)境的計算能力可以采用不同的調(diào)度策略,當(dāng)任務(wù)數(shù)量較少并且單位時間提交的任務(wù)數(shù)量不多時,使用FIFtXFirstInputFirstOutput,先入先出隊列)方式即可實現(xiàn)較好的性能,也可以保證優(yōu)先級較高的Web應(yīng)用優(yōu)先執(zhí)行;當(dāng)任務(wù)數(shù)量較多并且單位時間提交的任務(wù)數(shù)量較多時,則需要按照應(yīng)用的優(yōu)先級與應(yīng)用的等待時間來對任務(wù)進(jìn)行調(diào)度;可以按照優(yōu)先級順序分別賦予應(yīng)用不同的權(quán)重值,對于Web應(yīng)用則需要一個較大的權(quán)重,例如四種應(yīng)用分別賦予的權(quán)重值依次為6、2、1、1;采用最顯著的計算特征即(權(quán)重X等待時間)的方式來對任務(wù)進(jìn)行調(diào)度,等待時間即是任務(wù)的提交時間與當(dāng)前時間的差值。提交模塊用于根據(jù)作業(yè)需求生成作業(yè)描述信息并提交作業(yè)描述信息,并接收集群處理系統(tǒng)返回的作業(yè)ID,將作業(yè)的可執(zhí)行文件及數(shù)據(jù)文件發(fā)送到網(wǎng)絡(luò)文件系統(tǒng)中的以作業(yè)ID命名的文件夾中,通過該文件夾獲取作業(yè)的計算結(jié)果及日志;其中,作業(yè)描述信息主要包括作業(yè)ID、用戶信息、作業(yè)類型、作業(yè)需求、作業(yè)提交時間、所含任務(wù)個數(shù)以及其中的任務(wù)描述信息隊列;任務(wù)描述信息主要包括任務(wù)ID、任務(wù)類型、任務(wù)路徑(任務(wù)可執(zhí)行文件及數(shù)據(jù)在網(wǎng)絡(luò)文件系統(tǒng)中的存儲位置)、任務(wù)動作、任務(wù)可執(zhí)行文件、任務(wù)參數(shù)、所在機(jī)器IP、任務(wù)狀態(tài)及任務(wù)需求,其中,任務(wù)動作是指用戶指定任務(wù)將要實施的動作,包括運行、刪除、掛起;任務(wù)狀態(tài)包括任務(wù)等待、任務(wù)開始、任務(wù)完成及任務(wù)失??;運行任務(wù)描述信息隊列中保存了分發(fā)到該任務(wù)節(jié)點的任務(wù)描述信息,任務(wù)節(jié)點會監(jiān)控運行的任務(wù)并實時更新該隊列中的信息。在Web頁面中,用戶需要通過選擇或是填寫提供作業(yè)描述信息的各項數(shù)據(jù),提交模塊調(diào)用集群處理系統(tǒng)提供的作業(yè)提交接口將作業(yè)描述信息提交到集群處理系統(tǒng)的主控節(jié)點(CentralManager)進(jìn)行任務(wù)部署。集群處理系統(tǒng)包括一個主控節(jié)點和多個任務(wù)節(jié)點,主控節(jié)點是集群處理系統(tǒng)任務(wù)調(diào)度的中心,包括:UMaster線程:負(fù)責(zé)啟動/重啟其他進(jìn)程;2、Scheduler線程:管理高/中/低三個優(yōu)先度的任務(wù)隊列,根據(jù)任務(wù)描述文件生成任務(wù)Classad(分類廣告),通過Negotiator匹配任務(wù)與資源,下發(fā)任務(wù)至任務(wù)節(jié)點;其中,在condor中的Classad機(jī)制提供了匹配資源請求(如作業(yè))和資源供應(yīng)(如機(jī)器)的極為靈活和快速的基本框架。Classad使得Lape適應(yīng)幾乎所有的資源利用策略,還可以適應(yīng)整合網(wǎng)格資源的計劃方法;每個任務(wù)都有任務(wù)描述文件以描述任務(wù)的屬性及對資源的需求,用戶編寫任務(wù)描述文件XML,通過提交任務(wù)描述文件提交任務(wù),一個任務(wù)對應(yīng)一個可執(zhí)行文件,可能以多個進(jìn)程在多臺機(jī)器上運行;任務(wù)對資源的需求分Requirement和Rank。Requirement為必須滿足的條件;Rank為Requirement滿足之后,優(yōu)先考慮的條件;任務(wù)描述文件可包括以下要點:可執(zhí)行文件的路徑,對于有Setup(格局VTearDown(拆解)要求的任務(wù),可用Linux腳本進(jìn)行封裝,如pre-script(前腳本)/post-script(頁面描述語言);任務(wù)的運行環(huán)境;任務(wù)的運行參數(shù);任務(wù)需要獨占機(jī)器,還是可以與其他應(yīng)用復(fù)用機(jī)器;任務(wù)需要多少臺機(jī)器,或多少個核;任務(wù)對硬件的要求MemorySize,等;任務(wù)對軟件的要求,OS版本,glibc版本,軟件包,等<job><user></user><group></group><deadline></dead!ine><1;o></to><from></from><task><pre_script></pre_script><executable></executab]e><args></args><env></env><posl_script></post_script><repeat></repeat><requirements><arch></arch><memoryX/memory><disk></disk>〈operating—system></operating—system〉<host><7host><core></core>〈/requirements〉<rank><,,ra.nk></Task></job>3、Negotiator線程:對任務(wù)與資源的ClassAd(分類廣告)進(jìn)行匹配(MatchMaking);4、Collector線程:從任務(wù)節(jié)點收集機(jī)器及任務(wù)狀態(tài);機(jī)器的動態(tài)信息由任務(wù)節(jié)點上報,一些靜態(tài)信息及機(jī)器無法上報的信息如機(jī)位等從CMDB(ConfigurationManagementDatabase配置管理數(shù)據(jù)庫)拉??;主控節(jié)點通過Collector監(jiān)控任務(wù)執(zhí)行及機(jī)器情況,如果機(jī)器宕機(jī),Scheduler將尋找新的機(jī)器運行宕機(jī)機(jī)器上的任務(wù),實現(xiàn)自動容錯,主控節(jié)點將用戶操作及任務(wù)匹配信息寫入本地Log文件;5、Query線程:Collector也運行HTTPServer(網(wǎng)頁服務(wù)器),提供集群處理系統(tǒng)及任務(wù)信息給瀏覽器查詢,例如集群處理系統(tǒng)有多少臺機(jī)器,有多少任務(wù),任務(wù)在哪些機(jī)器上運行等等。具體地,主控節(jié)點對外提供三個接口:分別是為提交模塊提供的作業(yè)提交接口、為任務(wù)節(jié)點提供的心跳信息接口和任務(wù)狀態(tài)報告接口;主控節(jié)點包括作業(yè)描述信息隊列、任務(wù)節(jié)點信息隊列和任務(wù)部署隊列,通過作業(yè)提交接口接受提交模塊發(fā)送的作業(yè)描述信息,并分析作業(yè)描述信息,按照作業(yè)需求將作業(yè)描述信息分別存儲于不同的作業(yè)描述信息隊列當(dāng)中,以便于查詢作業(yè)運行狀況或獲取作業(yè)的運行結(jié)果及日志;并通過心跳信息接口和任務(wù)狀態(tài)報告接口接收任務(wù)節(jié)點發(fā)送的心跳信息和任務(wù)狀態(tài)報告,并更新作業(yè)描述信息隊列和任務(wù)節(jié)點信息隊列以控制任務(wù)部署隊列向任務(wù)節(jié)點部署任務(wù)。其中,作業(yè)描述信息隊列包括作業(yè)等待隊列、作業(yè)分發(fā)隊列、作業(yè)運行隊列、作業(yè)刪除隊列及作業(yè)完成隊列,用于存放不同作業(yè)需求的作業(yè)描述信息;任務(wù)節(jié)點信息隊列用于存儲任務(wù)節(jié)點信息,并記錄任務(wù)節(jié)點的更新時間;任務(wù)節(jié)點信息即是任務(wù)節(jié)點向主控節(jié)點發(fā)送的心跳信息,主要包括該任務(wù)節(jié)點的機(jī)器名、IP、CPU個數(shù)(任務(wù)節(jié)點的計算能力,當(dāng)前計算機(jī)大部分為多核)、(PU平均使用率、CPU負(fù)載、任務(wù)槽個數(shù)、內(nèi)存總量、內(nèi)存利用率、可用內(nèi)存、硬盤總量、硬盤使用率、可用硬盤總量以及運行任務(wù)描述信息隊列;運行任務(wù)描述信息隊列中保存了分發(fā)到該任務(wù)節(jié)點的任務(wù)描述信息,任務(wù)節(jié)點會監(jiān)控運行的任務(wù)并實時更新該隊列中的信息;主控節(jié)點每隔一定時間會掃描任務(wù)節(jié)點信息隊列,并查看記錄的任務(wù)節(jié)點更新時間,當(dāng)任務(wù)節(jié)點超過規(guī)定的時間沒有發(fā)送心跳信息,即判斷該任務(wù)節(jié)點宕機(jī),主控節(jié)點會依據(jù)記錄的任務(wù)節(jié)點信息回收分發(fā)到該任務(wù)節(jié)點的任務(wù),并刪除該任務(wù)節(jié)點在任務(wù)節(jié)點信息隊列中的記錄;任務(wù)部署隊列用于存放部署到任務(wù)節(jié)點的任務(wù)描述信息,并將任務(wù)部署隊列返回到任務(wù)節(jié)點運行任務(wù)。具體地,主控節(jié)點包括作業(yè)提交處理子模塊、任務(wù)部署模塊、心跳信息處理子模塊和任務(wù)狀態(tài)報告處理子模塊。作業(yè)提交處理子模塊用于以提交模塊提交的作業(yè)描述信息作為輸入?yún)?shù),生成唯一的作業(yè)ID并通過作業(yè)提交接口返回到提交模塊;同時分析并處理作業(yè)描述信息,根據(jù)作業(yè)描述信息的作業(yè)需求將作業(yè)描述信息添加到對應(yīng)的作業(yè)描述信息隊列中;其中,作業(yè)描述信息被提交到主控節(jié)點時,進(jìn)入作業(yè)等待隊列等候分發(fā),如果是提交請求,則將作業(yè)描述信息添加到作業(yè)分發(fā)隊列的尾端,此時任務(wù)處于等待狀態(tài);如果是刪除請求,則需要在多個作業(yè)描述信息隊列中尋找目標(biāo)作業(yè),直到找到該作業(yè),然后根據(jù)目標(biāo)作業(yè)的狀態(tài)做出相應(yīng)處理,未分配的作業(yè)則直接刪除,已分配的則將目標(biāo)作業(yè)信息移動到作業(yè)刪除隊列的尾端;如果已經(jīng)作業(yè)完成隊列匹配并被下發(fā)至任務(wù)節(jié)點運行時,則將該作業(yè)描述信息添加到執(zhí)行隊列,此時任務(wù)進(jìn)入RUNNING狀態(tài);用戶可重新發(fā)送暫停請求到主控節(jié)點的Scheduler(進(jìn)度表),Scheduler發(fā)終止信號到運行任務(wù)的任務(wù)節(jié)點終止任務(wù),并把任務(wù)添加到暫停隊列,此時任務(wù)處于暫停狀態(tài);若是有用戶請求刪除某個作業(yè)或是作業(yè)中某個任務(wù)運行失敗,則將該作業(yè)移入作業(yè)刪除隊列,以刪除該作業(yè)中其它正在運行的任務(wù);本發(fā)明實施例根據(jù)作業(yè)需求將作業(yè)描述信息分別存放在多個隊列中,節(jié)省許多不必要的查找作業(yè)描述信息的時間,同時更利于任務(wù)的調(diào)度。任務(wù)也可由等待狀態(tài)進(jìn)入暫停狀態(tài),當(dāng)用戶希望任務(wù)繼續(xù)執(zhí)行時,Scheduler將任務(wù)從暫停隊列移到作業(yè)等待隊列重新等候分發(fā),任務(wù)狀態(tài)也變成等待狀態(tài);任務(wù)完成或用戶要求終止,則將該作業(yè)描述信息移動到作業(yè)完成隊列,任務(wù)進(jìn)入結(jié)束狀態(tài);具體請一并參閱圖2,是本發(fā)明實施例的主控節(jié)點中作業(yè)描述信息狀態(tài)變化的更新示意圖。其中,作業(yè)分發(fā)隊列及作業(yè)刪除隊列中的作業(yè)描述信息即是任務(wù)部署模塊部署任務(wù)時的調(diào)度對象。用戶也可提交延遲類作業(yè),定義作業(yè)在什么時間之后執(zhí)行(類似Linuxat命令),以利用夜間集群處理系統(tǒng)空閑時間。任務(wù)部署模塊用于根據(jù)作業(yè)需求及主控節(jié)點收到的心跳信息為任務(wù)節(jié)點部署任務(wù),將部署到任務(wù)節(jié)點的任務(wù)描述信息存放在任務(wù)部署隊列,并將任務(wù)部署隊列返回到該任務(wù)節(jié)點;在部署任務(wù)時,按照作業(yè)需求及任務(wù)節(jié)點信息在作業(yè)分發(fā)隊列中查找符合條件的任務(wù)進(jìn)行部署,并添加到任務(wù)部署隊列的尾端;如果作業(yè)分發(fā)隊列沒有可以分發(fā)的任務(wù),則在作業(yè)等待隊列中取出一部分作業(yè)描述信息添加到作業(yè)分發(fā)隊列中,并按照作業(yè)需求及任務(wù)節(jié)點信息給當(dāng)前的任務(wù)節(jié)點部署任務(wù);部署任務(wù)的具體方式包括:根據(jù)任務(wù)節(jié)點信息判斷該任務(wù)節(jié)點是否有任務(wù)正在運行,如果任務(wù)節(jié)點中沒有任務(wù)正在運行,則為其部署任務(wù);若任務(wù)節(jié)點的任務(wù)槽全部被占用,則查看是否需要刪除其中的任務(wù);其他情況則需要在部署任務(wù)的同時查看是否包含需要刪除的任務(wù);任務(wù)的刪除僅需要查看作業(yè)刪除隊列,并與任務(wù)節(jié)點信息中的任務(wù)信息對照,如果有需要刪除的任務(wù),則將其添加到任務(wù)部署隊列的尾端;部署任務(wù)一般是在一個作業(yè)中的所有任務(wù)全部部署完成后才會部署下一個作業(yè)。心跳信息處理子模塊用于分析并處理任務(wù)節(jié)點提供的任務(wù)節(jié)點信息,根據(jù)任務(wù)節(jié)點信息更新任務(wù)節(jié)點信息隊列中相應(yīng)的任務(wù)節(jié)點信息,并記錄更新時間;具體更新方式為:查找任務(wù)節(jié)點信息隊列,如果在任務(wù)節(jié)點信息隊列中找到該任務(wù)節(jié)點信息,則更新該任務(wù)節(jié)點信息,同時記錄該任務(wù)節(jié)點的更新時間;如果在任務(wù)節(jié)點信息隊列中未找到該任務(wù)節(jié)點信息,則將該任務(wù)節(jié)點信息添加到任務(wù)節(jié)點信息隊列的尾端,并調(diào)用任務(wù)部署模塊為該任務(wù)節(jié)點部署任務(wù);其中,部署任務(wù)分為兩種,一種為需要運行的任務(wù),在作業(yè)分發(fā)隊列中獲取,另一種為需要刪除的任務(wù),在作業(yè)刪除隊列中獲取。任務(wù)狀態(tài)報告處理子模塊用于分析任務(wù)節(jié)點提供的任務(wù)狀態(tài)信息,根據(jù)任務(wù)ID在作業(yè)描述信息隊列中找到對應(yīng)的任務(wù),并根據(jù)運行動作及運行狀態(tài)更新作業(yè)描述信息;具體為:接收到任務(wù)狀態(tài)報告時,則在作業(yè)分發(fā)隊列及作業(yè)運行隊列中依次查找,如果是在作業(yè)分發(fā)隊列中找到該任務(wù),且對應(yīng)的作業(yè)中的所有任務(wù)全部運行成功,則將該作業(yè)描述信息移動到作業(yè)運行隊列中;若是在作業(yè)運行隊列中找到該任務(wù),且對應(yīng)的作業(yè)中的所有任務(wù)全部運行完成,則將該作業(yè)描述信息移動到作業(yè)完成隊列中;其中,任務(wù)狀態(tài)信息是任務(wù)節(jié)點向主控節(jié)點發(fā)送的任務(wù)狀態(tài)描述,包括任務(wù)ID、任務(wù)動作、任務(wù)運行狀態(tài)等,任務(wù)運行狀態(tài)是指對任務(wù)節(jié)點中的任務(wù)實施相應(yīng)的任務(wù)動作后所產(chǎn)生的狀態(tài),即任務(wù)所實施的動作成功或是失敗。任務(wù)節(jié)點是集群處理系統(tǒng)內(nèi)運行任務(wù)的機(jī)器,用于運行主控節(jié)點部署的任務(wù),收集本機(jī)的任務(wù)節(jié)點信息及任務(wù)狀態(tài)信息并通過主控節(jié)點提供的相關(guān)接口發(fā)送到主控節(jié)點;任務(wù)節(jié)點包括:UMaster線程:負(fù)責(zé)啟動/重啟其他進(jìn)程;2、Starter線程:接受主控節(jié)點下發(fā)的任務(wù),產(chǎn)生一個進(jìn)程去運行任務(wù);接受主控節(jié)點對任務(wù)暫停/終止/繼續(xù)的命令,發(fā)相應(yīng)Signal(信號)給任務(wù)進(jìn)程;把任務(wù)ExitStatus(退出狀態(tài))上報給主控節(jié)點;定期上報機(jī)器狀態(tài)給主控節(jié)點的Collector(收集器);3>Query線程:提供機(jī)器狀態(tài)及任務(wù)情況(占用CPU,Heap/StackSize)給瀏覽器查詢。任務(wù)下發(fā)到任務(wù)節(jié)點后由OSScheduler(操作系統(tǒng)調(diào)度器)調(diào)度。任務(wù)節(jié)點具體包括初始化模塊、任務(wù)執(zhí)行模塊、心跳收集模塊、及狀態(tài)報告模塊,其中,初始化模塊用于收集節(jié)點的機(jī)器名、IP、CPU個數(shù)(任務(wù)節(jié)點的計算能力,當(dāng)前計算機(jī)大部分為多核)、CPU平均使用率、CPU負(fù)載、任務(wù)槽個數(shù)、內(nèi)存總量、內(nèi)存利用率、可用內(nèi)存、硬盤總量、硬盤使用率、可用硬盤總量等任務(wù)節(jié)點信息,將其封裝為心跳信息后調(diào)用主控節(jié)點提供的心跳信息端口發(fā)送給主控節(jié)點。任務(wù)執(zhí)行模塊用于接收主控節(jié)點返回的任務(wù)部署隊列,根據(jù)任務(wù)部署隊列中的任務(wù)描述信息運行任務(wù);具體運行方式為:依次分析任務(wù)類型,如果需要運行任務(wù),需要查看任務(wù)描述信息中的任務(wù)路徑,并按照此路徑將任務(wù)運行所需的數(shù)據(jù)從網(wǎng)絡(luò)文件系統(tǒng)拷貝到本地,然后根據(jù)可執(zhí)行文件及其參數(shù)運行任務(wù);同時將任務(wù)描述信息添加到運行任務(wù)描述信息隊列的尾端,并記錄該任務(wù)的進(jìn)程ID及開始運行時間;如果需要刪除任務(wù),則在運行任務(wù)描述信息隊列中查找該任務(wù)運行的進(jìn)程ID,并對該進(jìn)程使用kill指令,同時調(diào)用系統(tǒng)指令將該任務(wù)在本地運行時所使用的數(shù)據(jù)以及生成的中間數(shù)據(jù)全部刪除。心跳收集模塊用于間隔一定時間重新調(diào)用系統(tǒng)環(huán)境的接口收集本機(jī)的任務(wù)節(jié)點信息以及本機(jī)運行的任務(wù)描述信息,將任務(wù)描述信息添加到任務(wù)節(jié)點信息中運行任務(wù)描述信息隊列的尾端,并將任務(wù)節(jié)點信息和任務(wù)描述信息封裝為心跳信息后通過心跳信息端口將發(fā)送給主控節(jié)點。狀態(tài)報告模塊用于監(jiān)控本機(jī)每個運行的任務(wù)進(jìn)程,當(dāng)進(jìn)程狀態(tài)改變或是進(jìn)程出現(xiàn)異常,例如任務(wù)運行成功或運行失敗時,收集該任務(wù)進(jìn)程相關(guān)的任務(wù)狀態(tài)信息數(shù)據(jù)并將其封裝為任務(wù)狀態(tài)報告后調(diào)用任務(wù)狀態(tài)報告接口及時發(fā)送給主控節(jié)點;本發(fā)明實施例通過將任務(wù)節(jié)點心跳信息及任務(wù)狀態(tài)信息分開發(fā)送,從而實時采集任務(wù)運行狀態(tài),使得主控節(jié)點能夠?qū)崟r地更新作業(yè)信息,而不需要在心跳信息到來時再分析和更新作業(yè)信息,可以節(jié)省較多時間,能夠及時地對心跳信息做出回應(yīng),為任務(wù)節(jié)點部署任務(wù),提高云計算的調(diào)度性倉泛。任務(wù)節(jié)點可以部署在實體機(jī)或是虛擬機(jī)中,主控節(jié)點和任務(wù)節(jié)點之間以及主控節(jié)點和提交模塊之間通過遠(yuǎn)程過程調(diào)用方式實現(xiàn)信息的交互;客戶端、主控節(jié)點和任務(wù)節(jié)點間的通信采用Thrift(—個軟件框架,用來進(jìn)行可擴(kuò)展且跨語言的服務(wù)的開發(fā))自動產(chǎn)生構(gòu)建RPC(RemoteProcedureCallProtocol-遠(yuǎn)程過程調(diào)用協(xié)議),實現(xiàn)跨語言,可靠通信。本發(fā)明實施例使用網(wǎng)絡(luò)文件系統(tǒng)作為主要存儲結(jié)構(gòu),用戶提交的應(yīng)用數(shù)據(jù)、經(jīng)過運算得出的應(yīng)用計算結(jié)果及日志均存放于網(wǎng)絡(luò)文件系統(tǒng)中。ZooKeeper(Hadoop的正式子項目,是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:配置維護(hù)、名字服務(wù)、分布式同步、組服務(wù)等)提供了分布式系統(tǒng)常需要的協(xié)調(diào)同步服務(wù),可用來實現(xiàn)分布式鎖,分布式選舉等機(jī)制;為避免數(shù)據(jù)在不同機(jī)器間遷移,Lape的應(yīng)用應(yīng)使用共享文件系統(tǒng)(SharedFileSystem),如分布式文件系統(tǒng)GLUSTER或網(wǎng)絡(luò)文件系統(tǒng)NFS,讀寫數(shù)據(jù);任務(wù)運行的Log文件也可寫到共享文件系統(tǒng)中,軟件包也可預(yù)發(fā)布在共享文件系統(tǒng),供TaskEngine拉取。請參閱圖3,是本發(fā)明實施例的云計算應(yīng)用自動部署方法的流程圖。本發(fā)明實施例的云計算應(yīng)用自動部署方法包括以下步驟:步驟300:通過客戶端調(diào)用提交模塊提交作業(yè)描述信息,并通過任務(wù)節(jié)點提交任務(wù)節(jié)點信息;在步驟300中,客戶端在集群處理系統(tǒng)外的用戶機(jī)器上運行,例如開發(fā)機(jī)器或管理機(jī)器等,客戶端可向權(quán)限范圍內(nèi)的所有集群處理系統(tǒng)提交作業(yè);本發(fā)明實施例將應(yīng)用視為一個作業(yè),每個作業(yè)可以包含多個任務(wù),并按照作業(yè)需求分為四大類:Web應(yīng)用、普通應(yīng)用、系統(tǒng)應(yīng)用及科學(xué)計算應(yīng)用,對四類作業(yè)依次采用從高到低的優(yōu)先級,從而使云計算所提供的服務(wù)更加合理,更加適應(yīng)當(dāng)前云計算應(yīng)用的需求;在提交作業(yè)時,用戶可通過以下方式部署軟件:將可執(zhí)行文件從客戶端拷貝到共享文件系統(tǒng),供任務(wù)節(jié)點拉取,客戶端有命令行界面及Web界面;任務(wù)節(jié)點信息即是任務(wù)節(jié)點向主控節(jié)點發(fā)送的心跳信息,主要包括該任務(wù)節(jié)點的機(jī)器名、IP、CPU個數(shù)(任務(wù)節(jié)點的計算能力,當(dāng)前計算機(jī)大部分為多核)、CPU平均使用率、CPU負(fù)載、任務(wù)槽個數(shù)、內(nèi)存總量、內(nèi)存利用率、可用內(nèi)存、硬盤總量、硬盤使用率、可用硬盤總量以及運行任務(wù)描述信息隊列;運行任務(wù)描述信息隊列中保存了分發(fā)到該任務(wù)節(jié)點的任務(wù)描述信息,任務(wù)節(jié)點會監(jiān)控運行的任務(wù)并實時更新該隊列中的信息;作業(yè)描述信息主要包括作業(yè)ID、用戶信息、作業(yè)類型、作業(yè)需求、作業(yè)提交時間、所含任務(wù)個數(shù)以及其中的任務(wù)描述信息隊列;任務(wù)描述信息主要包括任務(wù)ID、任務(wù)類型、任務(wù)路徑(任務(wù)可執(zhí)行文件及數(shù)據(jù)在網(wǎng)絡(luò)文件系統(tǒng)中的存儲位置)、任務(wù)動作、任務(wù)可執(zhí)行文件、任務(wù)參數(shù)、所在機(jī)器IP、任務(wù)狀態(tài)、任務(wù)需求,其中,任務(wù)動作是指用戶指定任務(wù)將要實施的動作,包括運行、刪除、掛起;任務(wù)狀態(tài)包括任務(wù)等待、任務(wù)開始、任務(wù)完成、任務(wù)失?。辉谖?6頁面中,用戶需要通過選擇或是填寫提供作業(yè)描述信息的各項數(shù)據(jù)。步驟310:通過主控節(jié)點根據(jù)作業(yè)描述信息的作業(yè)狀態(tài)將作業(yè)描述信息添加到對應(yīng)的作業(yè)描述信息隊列中,并根據(jù)作業(yè)需求和任務(wù)節(jié)點信息向各個任務(wù)節(jié)點部署任務(wù);在步驟310中,作業(yè)描述信息隊列包括作業(yè)等待隊列、作業(yè)分發(fā)隊列、作業(yè)運行隊列、作業(yè)刪除隊列、暫停隊列及作業(yè)完成隊列,用于存放不同作業(yè)需求的作業(yè)描述信息;作業(yè)描述信息被提交到主控節(jié)點時,進(jìn)入作業(yè)等待隊列等候分發(fā),如果是提交請求,則將作業(yè)描述信息添加到作業(yè)分發(fā)隊列的尾端,此時任務(wù)處于等待狀態(tài);如果是刪除請求,則需要在多個作業(yè)描述信息隊列中尋找目標(biāo)作業(yè),直到找到該作業(yè),然后根據(jù)目標(biāo)作業(yè)的狀態(tài)做出相應(yīng)處理,未分配的作業(yè)則直接刪除,已分配的則將目標(biāo)作業(yè)信息移動到作業(yè)刪除隊列的尾端;如果已經(jīng)作業(yè)完成隊列匹配并被下發(fā)至任務(wù)節(jié)點執(zhí)行時,則將該作業(yè)描述信息添加到執(zhí)行隊列,此時任務(wù)進(jìn)入RUNNING狀態(tài);用戶可重新發(fā)送暫停請求到主控節(jié)點的Scheduler,Scheduler發(fā)終止信號到運行任務(wù)的任務(wù)節(jié)點終止任務(wù),并把任務(wù)添加到暫停隊列,此時任務(wù)處于暫停狀態(tài);若是有用戶請求刪除某個作業(yè)或是作業(yè)中某個任務(wù)運行失敗,則將該作業(yè)移入作業(yè)刪除隊列,以刪除該作業(yè)中其它正在運行的任務(wù);本發(fā)明實施例根據(jù)作業(yè)狀態(tài)將作業(yè)描述信息分別存放在多個隊列中,節(jié)省許多不必要的查找作業(yè)描述信息的時間,同時更利于任務(wù)的調(diào)度。步驟320:通過任務(wù)節(jié)點根據(jù)部署的任務(wù)描述信息運行任務(wù),間隔一定時間重新收集本機(jī)任務(wù)節(jié)點信息以及本機(jī)運行的任務(wù)描述信息,并將任務(wù)節(jié)點信息和任務(wù)描述信息封裝為心跳信息發(fā)送到主控節(jié)點,主控節(jié)點通過心跳信息更新作業(yè)描述信息及任務(wù)節(jié)點信息;在步驟320中,主控節(jié)點每隔一定時間會掃描任務(wù)節(jié)點信息隊列,并查看記錄的任務(wù)節(jié)點更新時間,當(dāng)任務(wù)節(jié)點超過規(guī)定的時間沒有發(fā)送心跳信息,即判斷該任務(wù)節(jié)點宕機(jī),主控節(jié)點會依據(jù)記錄的任務(wù)節(jié)點信息回收分發(fā)到該任務(wù)節(jié)點的任務(wù),并刪除該任務(wù)節(jié)點在任務(wù)節(jié)點信息隊列中的記錄。步驟330:監(jiān)控任務(wù)節(jié)點每個運行的任務(wù)進(jìn)程,當(dāng)進(jìn)程狀態(tài)改變或是進(jìn)程出現(xiàn)異常時,收集該任務(wù)進(jìn)程相關(guān)的任務(wù)狀態(tài)信息數(shù)據(jù)并將其封裝為任務(wù)狀態(tài)報告及時發(fā)送給主控節(jié)點,主控節(jié)點根據(jù)任務(wù)狀態(tài)信息更新作業(yè)描述信息。在步驟330中,接收到任務(wù)狀態(tài)報告時,則在作業(yè)分發(fā)隊列及作業(yè)運行隊列中依次查找,如果是在作業(yè)分發(fā)隊列中找到該任務(wù),且對應(yīng)的作業(yè)中的所有任務(wù)全部運行成功,則將該作業(yè)描述信息移動到作業(yè)運行隊列中;若是在作業(yè)運行隊列中找到該任務(wù),且對應(yīng)的作業(yè)中的所有任務(wù)全部運行完成,則將該作業(yè)描述信息移動到作業(yè)完成隊列中;其中,任務(wù)狀態(tài)信息是任務(wù)節(jié)點向主控節(jié)點發(fā)送的任務(wù)狀態(tài)描述,包括任務(wù)ID、任務(wù)動作、任務(wù)運行狀態(tài)等,任務(wù)運行狀態(tài)是指對任務(wù)節(jié)點中的任務(wù)實施相應(yīng)的任務(wù)動作后所產(chǎn)生的狀態(tài),即任務(wù)所實施的動作成功或是失敗。請一并參閱圖4,是本發(fā)明實施例的主控節(jié)點部署任務(wù)的方法的流程圖。本發(fā)明實施例的主控節(jié)點部署任務(wù)的方法包括以下步驟:步驟400:根據(jù)作業(yè)描述信息生成唯一的作業(yè)ID并通過作業(yè)提交接口返回到提交模塊,并分析作業(yè)描述信息,根據(jù)作業(yè)描述信息的作業(yè)需求將作業(yè)描述信息添加到對應(yīng)的作業(yè)描述信息隊列中;在步驟400中,主控節(jié)點包括作業(yè)描述信息隊列、任務(wù)節(jié)點信息隊列和任務(wù)部署隊列,作業(yè)描述信息隊列用于存放不同作業(yè)需求的作業(yè)描述信息;任務(wù)節(jié)點信息隊列用于存儲任務(wù)節(jié)點信息,并記錄任務(wù)節(jié)點的更新時間;任務(wù)節(jié)點信息即是任務(wù)節(jié)點向主控節(jié)點發(fā)送的心跳信息,主要包括該任務(wù)節(jié)點的機(jī)器名、IP、CPU個數(shù)(任務(wù)節(jié)點的計算能力,當(dāng)前計算機(jī)大部分為多核)、CPU平均使用率、CPU負(fù)載、任務(wù)槽個數(shù)、內(nèi)存總量、內(nèi)存利用率、可用內(nèi)存、硬盤總量、硬盤使用率、可用硬盤總量以及運行任務(wù)描述信息隊列;運行任務(wù)描述信息隊列中保存了分發(fā)到該任務(wù)節(jié)點的任務(wù)描述信息,任務(wù)節(jié)點會監(jiān)控運行的任務(wù)并實時更新該隊列中的信息;主控節(jié)點每隔一定時間會掃描任務(wù)節(jié)點信息隊列,并查看記錄的任務(wù)節(jié)點更新時間,當(dāng)任務(wù)節(jié)點超過規(guī)定的時間沒有發(fā)送心跳信息,即判斷該任務(wù)節(jié)點宕機(jī),主控節(jié)點會依據(jù)記錄的任務(wù)節(jié)點信息回收分發(fā)到該任務(wù)節(jié)點的任務(wù),并刪除該任務(wù)節(jié)點在任務(wù)節(jié)點信息隊列中的記錄;任務(wù)部署隊列用于存放部署到任務(wù)節(jié)點的任務(wù)描述信息,并將任務(wù)部署隊列返回到任務(wù)節(jié)點運行任務(wù)。步驟410:分析任務(wù)節(jié)點信息,根據(jù)作業(yè)需求及任務(wù)節(jié)點信息為任務(wù)節(jié)點部署任務(wù),將部署到該任務(wù)節(jié)點的任務(wù)描述信息存放在任務(wù)部署隊列,并將任務(wù)部署隊列返回到該任務(wù)節(jié)點;在步驟410中,部署任務(wù)時,按照作業(yè)需求及任務(wù)節(jié)點信息在作業(yè)分發(fā)隊列中查找符合條件的任務(wù)進(jìn)行部署,并添加到任務(wù)部署隊列的尾端;如果作業(yè)分發(fā)隊列沒有可以分發(fā)的任務(wù),則在作業(yè)等待隊列中取出一部分作業(yè)描述信息添加到作業(yè)分發(fā)隊列中,并按照作業(yè)需求及任務(wù)節(jié)點信息給當(dāng)前的任務(wù)節(jié)點部署任務(wù);部署任務(wù)的具體方式包括:根據(jù)任務(wù)節(jié)點信息判斷該任務(wù)節(jié)點是否有任務(wù)正在運行,如果任務(wù)節(jié)點中沒有任務(wù)正在運行,則為其部署任務(wù);若任務(wù)節(jié)點的任務(wù)槽全部被占用,則查看是否需要刪除其中的任務(wù);其他情況則需要在部署任務(wù)的同時查看是否包含需要刪除的任務(wù);任務(wù)的刪除僅需要查看作業(yè)刪除隊列,并與任務(wù)節(jié)點信息中的任務(wù)信息對照,如果有需要刪除的任務(wù),則將其添加到任務(wù)部署隊列的尾端;部署任務(wù)一般是在一個作業(yè)中的所有任務(wù)全部部署完成后才會部署下一個作業(yè)。步驟420:接收任務(wù)節(jié)點返回的任務(wù)節(jié)點信息及任務(wù)描述信息,根據(jù)任務(wù)節(jié)點信息及任務(wù)描述信息更新任務(wù)節(jié)點信息隊列,并記錄更新時間;在步驟420中,具體更新方式為:查找任務(wù)節(jié)點信息隊列,如果在任務(wù)節(jié)點信息隊列中找到該任務(wù)節(jié)點信息,則更新該任務(wù)節(jié)點信息,同時記錄該任務(wù)節(jié)點的更新時間;如果在任務(wù)節(jié)點信息隊列中未找到該任務(wù)節(jié)點信息,則將該任務(wù)節(jié)點信息添加到任務(wù)節(jié)點信息隊列的尾端,并調(diào)用任務(wù)部署模塊為該任務(wù)節(jié)點部署任務(wù);其中,部署任務(wù)分為兩種,一種為需要運行的任務(wù),在作業(yè)分發(fā)隊列中獲取,另一種為需要刪除的任務(wù),在作業(yè)刪除隊列中獲取。步驟430:接收任務(wù)節(jié)點返回的任務(wù)狀態(tài)信息,根據(jù)任務(wù)ID在作業(yè)描述信息隊列中找到對應(yīng)的任務(wù),并根據(jù)運行動作及運行狀態(tài)更新作業(yè)描述信息。在步驟430中,更新作業(yè)描述信息的方式具體包括:接收到任務(wù)狀態(tài)報告時,則在作業(yè)分發(fā)隊列、作業(yè)運行隊列中依次查找,如果是在作業(yè)分發(fā)隊列中找到該任務(wù),且對應(yīng)的作業(yè)中的所有任務(wù)全部運行成功,則將該作業(yè)描述信息移動到作業(yè)運行隊列中;若是在作業(yè)運行隊列中找到該任務(wù),且對應(yīng)的作業(yè)中的所有任務(wù)全部運行完成,則將該作業(yè)描述信息移動到作業(yè)完成隊列中;其中,任務(wù)狀態(tài)信息是任務(wù)節(jié)點向主控節(jié)點發(fā)送的任務(wù)狀態(tài)描述,包括任務(wù)ID、任務(wù)動作、任務(wù)運行狀態(tài)等,任務(wù)運行狀態(tài)是指對任務(wù)節(jié)點中的任務(wù)實施相應(yīng)的任務(wù)動作后所產(chǎn)生的狀態(tài),即任務(wù)所實施的動作成功或是失敗。請一并參閱圖5,是本發(fā)明實施例的任務(wù)節(jié)點運行任務(wù)的方法的流程圖。本發(fā)明實施例的任務(wù)節(jié)點運行任務(wù)的方法包括以下步驟:步驟500:收集節(jié)點的機(jī)器名、IP、CPU個數(shù)、CPU平均使用率、CPU負(fù)載、任務(wù)槽個數(shù)、內(nèi)存總量、內(nèi)存利用率、可用內(nèi)存、硬盤總量、硬盤使用率、可用硬盤總量等任務(wù)節(jié)點信息,將其封裝為心跳信息后發(fā)送給主控節(jié)點;步驟510:接收主控節(jié)點返回的任務(wù)部署隊列,根據(jù)任務(wù)部署隊列中的任務(wù)描述信息運行任務(wù);在步驟510中,具體運行方式為:依次分析任務(wù)類型,如果需要運行任務(wù),需要查看任務(wù)描述信息中的任務(wù)路徑,并按照此路徑將任務(wù)運行所需的數(shù)據(jù)從網(wǎng)絡(luò)文件系統(tǒng)拷貝到本地,然后根據(jù)可執(zhí)行文件及其參數(shù)運行任務(wù);同時將任務(wù)描述信息添加到運行任務(wù)描述信息隊列的尾端,并記錄該任務(wù)的進(jìn)程ID及開始運行時間;如果需要刪除任務(wù),則在運行任務(wù)描述信息隊列中查找該任務(wù)運行的進(jìn)程ID,并對該進(jìn)程使用kill指令,同時調(diào)用系統(tǒng)指令將該任務(wù)在本地運行時所使用的數(shù)據(jù)以及生成的中間數(shù)據(jù)全部刪除。步驟520:間隔一定時間調(diào)用系統(tǒng)環(huán)境的接口重新收集本機(jī)的任務(wù)節(jié)點信息以及本機(jī)運行的任務(wù)描述信息,并將任務(wù)節(jié)點信息和任務(wù)描述信息封裝為心跳信息后發(fā)送給主控節(jié)點;步驟530:監(jiān)控本機(jī)每個運行的任務(wù)進(jìn)程,當(dāng)進(jìn)程狀態(tài)改變或是進(jìn)程出現(xiàn)異常時,收集該任務(wù)進(jìn)程相關(guān)的任務(wù)狀態(tài)信息數(shù)據(jù)并將其封裝為任務(wù)狀態(tài)報告及時發(fā)送給主控節(jié)點。本發(fā)明實施例的云計算應(yīng)用自動部署系統(tǒng)及方法通過將任務(wù)節(jié)點心跳信息及任務(wù)狀態(tài)信息分開發(fā)送,從而實時采集任務(wù)運行狀態(tài),使得主控節(jié)點能夠?qū)崟r地更新作業(yè)信息,而不需要在心跳信息到來時再分析和更新作業(yè)信息,可以節(jié)省較多時間,能夠及時地對心跳信息做出回應(yīng),為任務(wù)節(jié)點部署任務(wù),提高云計算的調(diào)度性能;并將作業(yè)描述信息按照作業(yè)需求存放于不同隊列當(dāng)中進(jìn)行自動部署,節(jié)省查找作業(yè)描述信息的時間,更利于任務(wù)的調(diào)度;同時,本發(fā)明實施例通過將應(yīng)用按照需求進(jìn)行分類,并對應(yīng)用類別依次采用從高到低的優(yōu)先級,根據(jù)應(yīng)用需求及類別進(jìn)行相應(yīng)調(diào)度,提高云服務(wù)的性能和質(zhì)量。以上所述,僅是本發(fā)明的較佳實施例而已,并非對本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實施例揭露如上,然而并非用以限定本發(fā)明,任何熟悉本專業(yè)的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的技術(shù)內(nèi)容作出些許更動或修飾為等同變化的等效實施例,但凡是未脫離本發(fā)明技術(shù)方案內(nèi)容,依據(jù)本發(fā)明的技術(shù)實質(zhì)對以上實施例所作的任何簡單修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。權(quán)利要求1.一種云計算應(yīng)用自動部署系統(tǒng),包括客戶端,所述客戶端用于提交作業(yè)需求,其特征在于,還包括提交模塊和集群處理系統(tǒng),所述提交模塊用于根據(jù)作業(yè)需求生成作業(yè)描述信息并提交作業(yè)描述信息;所述集群處理系統(tǒng)包括任務(wù)節(jié)點和主控節(jié)點,所述任務(wù)節(jié)點用于提交任務(wù)節(jié)點信息,所述主控節(jié)點用于接收作業(yè)描述信息和任務(wù)節(jié)點信息,根據(jù)作業(yè)需求將作業(yè)描述信息添加到對應(yīng)的作業(yè)描述信息隊列中,并根據(jù)作業(yè)需求及任務(wù)節(jié)點信息為任務(wù)節(jié)點部署任務(wù)。2.根據(jù)權(quán)利要求1所述的云計算應(yīng)用自動部署系統(tǒng),其特征在于,所述作業(yè)描述信息包括作業(yè)ID、用戶信息、作業(yè)類型、作業(yè)需求、作業(yè)提交時間、所含任務(wù)個數(shù)以及其中的任務(wù)描述信息隊列;所述任務(wù)節(jié)點信息包括該任務(wù)節(jié)點的機(jī)器名、IP、CPU個數(shù)、CPU平均使用率、CPU負(fù)載、任務(wù)槽個數(shù)、內(nèi)存總量、內(nèi)存利用率、可用內(nèi)存、硬盤總量、硬盤使用率、可用硬盤總量以及運行任務(wù)描述信息隊列,所述運行任務(wù)描述信息隊列用于保存部署到該任務(wù)節(jié)點的任務(wù)描述信息。3.根據(jù)權(quán)利要求1或2所述的云計算應(yīng)用自動部署系統(tǒng),其特征在于,所述主控節(jié)點對外提供三個接口,分別是:為提交模塊提供的作業(yè)提交接口、為任務(wù)節(jié)點提供的心跳信息接口和任務(wù)狀態(tài)報告接口;所述主控節(jié)點還包括任務(wù)節(jié)點信息隊列和任務(wù)部署隊列,所述任務(wù)節(jié)點信息隊列用于存儲任務(wù)節(jié)點信息,并記錄任務(wù)節(jié)點的更新時間;所述任務(wù)部署隊列用于存放部署到任務(wù)節(jié)點的任務(wù)描述信息,并將任務(wù)部署隊列返回到任務(wù)節(jié)點運行任務(wù)。4.根據(jù)權(quán)利要求3所述的云計算應(yīng)用自動部署系統(tǒng),其特征在于,所述主控節(jié)點還包括:作業(yè)提交處理子模塊:用于根據(jù)作業(yè)描述信息生成唯一的作業(yè)ID并通過作業(yè)提交接口返回到提交模塊;同時分析并處理作業(yè)描述信息,根據(jù)作業(yè)描述信息的作業(yè)需求將作業(yè)描述信息添加到對應(yīng)的作業(yè)描述信息隊列中;任務(wù)部署模塊:用于根據(jù)作業(yè)需求及任務(wù)節(jié)點信息為任務(wù)節(jié)點部署任務(wù),將部署到任務(wù)節(jié)點的任務(wù)描述信息存放在任務(wù)部署隊列,并將任務(wù)部署隊列返回到該任務(wù)節(jié)點;心跳信息處理子模塊:用于分析并處理任務(wù)節(jié)點提供的任務(wù)節(jié)點信息,根據(jù)任務(wù)節(jié)點信息更新任務(wù)節(jié)點信息隊列中相應(yīng)的任務(wù)節(jié)點信息,并記錄更新時間;任務(wù)狀態(tài)報告處理子模塊:用于分析任務(wù)節(jié)點提供的任務(wù)狀態(tài)信息,根據(jù)任務(wù)ID在作業(yè)描述信息隊列中找到對應(yīng)的任務(wù),并根據(jù)運行動作及運行狀態(tài)更新作業(yè)描述信息;所述任務(wù)狀態(tài)信息包括任務(wù)ID、任務(wù)動作及任務(wù)運行狀態(tài)。5.根據(jù)權(quán)利要求4所述的云計算應(yīng)用自動部署系統(tǒng),其特征在于,所述任務(wù)節(jié)點還包括:初始化模塊:用于收集任務(wù)節(jié)點信息,并調(diào)用主控節(jié)點提供的心跳信息端口發(fā)送給主控節(jié)點;任務(wù)執(zhí)行模塊:用于接收主控節(jié)點返回的任務(wù)部署隊列,根據(jù)任務(wù)部署隊列中的任務(wù)描述信息運行任務(wù);心跳收集模塊:用于間隔一定時間重新調(diào)用系統(tǒng)環(huán)境的接口收集本機(jī)的任務(wù)節(jié)點信息以及本機(jī)運行的任務(wù)描述信息,將任務(wù)描述信息添加到任務(wù)節(jié)點信息中運行任務(wù)描述信息隊列的尾端,并將任務(wù)節(jié)點信息和任務(wù)描述信息封裝為心跳信息后通過心跳信息端口將發(fā)送給主控節(jié)點;狀態(tài)報告模塊:用于監(jiān)控本機(jī)每個運行的任務(wù)進(jìn)程,當(dāng)進(jìn)程狀態(tài)改變或是進(jìn)程出現(xiàn)異常時,收集該任務(wù)進(jìn)程相關(guān)的任務(wù)狀態(tài)信息數(shù)據(jù)并將其封裝為任務(wù)狀態(tài)報告后調(diào)用任務(wù)狀態(tài)報告接口發(fā)送給主控節(jié)點。6.根據(jù)權(quán)利要求1或2所述的云計算應(yīng)用自動部署系統(tǒng),其特征在于,所述作業(yè)按需求分為Web應(yīng)用、普通應(yīng)用、系統(tǒng)應(yīng)用及科學(xué)計算應(yīng)用,并對四類作業(yè)依次采用從高到低的優(yōu)先級進(jìn)行調(diào)度。7.一種云計算應(yīng)用自動部署方法,包括:步驟a:提交作業(yè)描述信息,并提交任務(wù)節(jié)點信息;步驟b:接收作業(yè)描述信息及任務(wù)節(jié)點信息,并根據(jù)作業(yè)需求將作業(yè)描述信息添加到對應(yīng)的作業(yè)描述信息隊列中;步驟c:根據(jù)作業(yè)需求及任務(wù)節(jié)點信息為任務(wù)節(jié)點部署任務(wù)。8.根據(jù)權(quán)利要求7所述的云計算應(yīng)用自動部署方法,其特征在于,在所述步驟a中,所述作業(yè)描述信息包括作業(yè)ID、用戶信息、作業(yè)類型、作業(yè)需求、作業(yè)提交時間、所含任務(wù)個數(shù)以及其中的任務(wù)描述信息隊列;所述任務(wù)描述信息包括任務(wù)ID、任務(wù)類型、任務(wù)路徑、任務(wù)動作、任務(wù)可執(zhí)行文件、任務(wù)參數(shù)、所在機(jī)器IP、任務(wù)狀態(tài)及任務(wù)需求;所述任務(wù)節(jié)點信息包括該任務(wù)節(jié)點的機(jī)器名、IP、CPU個數(shù)、CPU平均使用率、CPU負(fù)載、任務(wù)槽個數(shù)、內(nèi)存總量、內(nèi)存利用率、可用內(nèi)存、硬盤總量、硬盤使用率、可用硬盤總量以及運行任務(wù)描述信息隊列,所述運行任務(wù)描述信息隊列用于保存部署到該任務(wù)節(jié)點的任務(wù)描述信息。9.根據(jù)權(quán)利要求8或9所述的云計算應(yīng)用自動部署方法,其特征在于,所述步驟b還包括:根據(jù)作業(yè)描述信息生成唯一的作業(yè)ID并通過作業(yè)提交接口返回到提交模塊;所述作業(yè)描述信息隊列包括作業(yè)等待隊列、作業(yè)分發(fā)隊列、作業(yè)運行隊列、作業(yè)刪除隊列、暫停隊列及作業(yè)完成隊列,用于存放不同作業(yè)需求的作業(yè)描述信息。10.根據(jù)權(quán)利要求9所述的云計算應(yīng)用自動部署方法,其特征在于,在所述步驟b還包括:分析任務(wù)節(jié)點信息,根據(jù)作業(yè)需求及任務(wù)節(jié)點信息為任務(wù)節(jié)點部署任務(wù),將部署到該任務(wù)節(jié)點的任務(wù)描述信息存放在任務(wù)部署隊列,并將任務(wù)部署隊列返回到該任務(wù)節(jié)點。11.根據(jù)權(quán)利要求10所述的云計算應(yīng)用自動部署方法,其特征在于,所述步驟C還包括:接收主控節(jié)點返回的任務(wù)部署隊列,根據(jù)任務(wù)部署隊列中的任務(wù)描述信息運行任務(wù),間隔一定時間調(diào)用系統(tǒng)環(huán)境的接口重新收集本機(jī)的任務(wù)節(jié)點信息以及本機(jī)運行的任務(wù)描述信息,將任務(wù)節(jié)點信息和任務(wù)描述信息封裝為心跳信息后提交給主控節(jié)點;并監(jiān)控本機(jī)每個運行的任務(wù)進(jìn)程,當(dāng)進(jìn)程狀態(tài)改變或是進(jìn)程出現(xiàn)異常時,收集該任務(wù)進(jìn)程相關(guān)的任務(wù)狀態(tài)信息數(shù)據(jù)并將其封裝為任務(wù)狀態(tài)報告提交給主控節(jié)點;所述任務(wù)狀態(tài)信息包括任務(wù)ID、任務(wù)動作及任務(wù)運行狀態(tài)。12.根據(jù)權(quán)利要求11所述的云計算應(yīng)用自動部署方法,其特征在于,所述步驟c還包括:接收任務(wù)節(jié)點返回的任務(wù)節(jié)點信息及任務(wù)描述信息,根據(jù)任務(wù)節(jié)點信息及任務(wù)描述信息更新任務(wù)節(jié)點信息隊列,并記錄更新時間;接收任務(wù)節(jié)點返回的任務(wù)狀態(tài)信息,根據(jù)任務(wù)ID在作業(yè)描述信息隊列中找到對應(yīng)的任務(wù),并根據(jù)運行動作及運行狀態(tài)更新作業(yè)描述信息;其中,所述任務(wù)節(jié)點信息隊列用于存儲任務(wù)節(jié)點信息,并記錄任務(wù)節(jié)點的更新時間。全文摘要本發(fā)明屬于云計算應(yīng)用
技術(shù)領(lǐng)域:
,特別涉及一種云計算應(yīng)用自動部署系統(tǒng)及方法。本發(fā)明的云計算應(yīng)用自動部署系統(tǒng)包括客戶端、提交模塊和集群處理系統(tǒng),所述客戶端用于提交作業(yè)需求,所述提交模塊用于根據(jù)作業(yè)需求生成作業(yè)描述信息并提交作業(yè)描述信息;所述集群處理系統(tǒng)包括任務(wù)節(jié)點和主控節(jié)點,所述任務(wù)節(jié)點用于提交任務(wù)節(jié)點信息,所述主控節(jié)點用于接收作業(yè)描述信息和任務(wù)節(jié)點信息,根據(jù)作業(yè)需求將作業(yè)描述信息添加到對應(yīng)的作業(yè)描述信息隊列中,并根據(jù)作業(yè)需求及任務(wù)節(jié)點信息為任務(wù)節(jié)點部署任務(wù)。本發(fā)明實施例作業(yè)描述信息按照作業(yè)需求存放于不同隊列當(dāng)中進(jìn)行自動部署,節(jié)省查找作業(yè)描述信息的時間,更利于任務(wù)的調(diào)度,提高云計算的調(diào)度性能。文檔編號G06F9/50GK103092698SQ20121056782公開日2013年5月8日申請日期2012年12月24日優(yōu)先權(quán)日2012年12月24日發(fā)明者王明陽,須成忠,洪爵,李宇飛,林棟申請人:中國科學(xué)院深圳先進(jìn)技術(shù)研究院