專利名稱:一種部署在云計算環(huán)境中部署服務的方法
技術領域:
本發(fā)明涉及計算機應用技術領域,尤其涉及服務在云計算中軟件即服務平臺 (Software as a Service, SaaS)中服務部署的一種部署在云計算環(huán)境中部署服務的方法。
背景技術:
狹義云計算指IT基礎設施的交付和使用模式,指通過網絡以按需、易擴展的方式獲得所需資源;廣義云計算指服務的交付和使用模式,指通過網絡以按需、易擴展的方式獲得所需服務。這種服務可以是IT和軟件、互聯(lián)網相關,也可是其他服務。云計算(Cloud Computing)是網格計算(Grid Computing)、分布式計算(DistributedComputing)、并行計算(Parallel Computing)、效用計算(Utility Computing)、網絡存儲(Network Storage ^Technologies)、虛擬化(Visualization)、負載均衡(Load Balance)等傳統(tǒng)計算機和網絡技術發(fā)展融合的產物。因為云計算技術是新一代信息技術產業(yè)的重要組成部分,是繼個人計算機、互聯(lián)網之后的第三次信息技術浪潮,將引發(fā)信息產業(yè)商業(yè)模式的根本性改變,才使得世界眾多國家都將其作為戰(zhàn)略性新興產業(yè)中的重點發(fā)展領域。從中國信息化建設角度看,云計算將極大地推動中國信息基礎設施建設、支撐中小企業(yè)信息化升級并保障國家經濟平穩(wěn)較快發(fā)展、推動傳統(tǒng)產業(yè)的改造升級和加速培育高科技新興產業(yè)。云包括三種模式IaaS、PaaS, SaaS, 本發(fā)明主要涉及 SaaS (Software-as-a-Service)軟件即服務。它是一種通過hternet提供軟件的模式,用戶無需購買軟件,而是向提供商租用基于Web的軟件,來管理企業(yè)經營活動。相對于傳統(tǒng)的軟件,SaaS解決方案有明顯的優(yōu)勢,包括較低的前期成本,便于維護,快速展開使用等?,F(xiàn)有技術IBM公司在2005年提出面向服務架構的技術,其基本原理方式如圖1所示,服務提供者通過WSDL向第三方代理UDDI注冊服務,服務使用者向代理搜索可用服務,代理提供服務搜索規(guī)則,服務使用者通過WSDL描述的服務提供者地址訪問服務。云計算技術現(xiàn)在已經逐漸走向成熟,已經有較多成熟的產品,如Goole的Google App Engine,亞馬遜的彈性云EC2,微軟的Azure等等,云服務的提供商提供了強大的可擴展虛擬存儲和計算能力,多臺分布式計算機連接起來成為一個集群的“虛擬超級計算機”, 用戶只需要付少量的費用,即可享用高性能計算。云計算與SOA如何結合也是當前云計算研究的熱門之一;應用程序經??偸怯幸粌身椨嬎忝芗偷摹肮δ堋薄_@些應用程序的大部分都需要更多的處理過程,因為它們在數(shù)學上是很復雜的,或者需要很多分析,或者包括處理大量的數(shù)據集。無論是哪一種原因,運行這些工作量都是很昂貴的?,F(xiàn)有技術的問題面向服務的架構在傳統(tǒng)領域方面發(fā)展比較成熟,但是在云環(huán)境中仍然存在諸多問題,云是能夠提供非常強大的計算能力的,但SOA工作量還不能夠有效地卸載到云計算,原因如下 1.傳統(tǒng)的SOA的描述語言WSDL不太適合云環(huán)境,如WSDL中的服務IP地址端口等信息在云環(huán)境中并沒有任何意義,因為云相對于用戶和服務提供者來說,都是透明的,用戶不可能知道云中哪個節(jié)點保存和運行的服務,更談不上IP地址;另外,云環(huán)境中需要的一些虛擬存儲的句柄等信息也是目前WSDL所不能提供的2.傳統(tǒng)的SOA需要一個或者若干個Wfeb Service的容器,如IBM的W^eb Sphere,服務開發(fā)者將服務顯式的部署在Web Service容器中;而在云環(huán)境中,服務開發(fā)者是不知道服務運行的物理位置;而對于云平臺來說,每個云節(jié)點都有部署該服務的能力,那么如何選擇部署的節(jié)點是云平臺首先要解決的問題,另外,在云環(huán)境中,節(jié)點的失效是經常發(fā)生的, 服務部署系統(tǒng)不僅要選擇一個最優(yōu)的部署節(jié)點,還要做一定的冗余部署。3.傳統(tǒng)的SOA的部署是固定運行在ffeb Service容器中,即使服務反應時間非常慢,服務質量極低的情況仍然會繼續(xù)運行。針對上述問題本發(fā)明集中于解決這些工作量也就是服務在整個云環(huán)境中各個節(jié)點的部署的問題,更高效地利用云的計算能力;解決云中如何部署服務的問題但是在云環(huán)境中,服務提供者并不需要自己維護一個服務運行的環(huán)境,而是將服務提交至云環(huán)境中,至于服務存放的位置,所需的物理資源,都不需要服務提供者關心。本發(fā)明提供的方法就是解決對于云平臺來說,服務提供者提供的服務如何部署,部署到哪個節(jié)點,每個節(jié)點之間如何均衡協(xié)商。
發(fā)明內容
本發(fā)明目的在于,解決云平臺中軟件開發(fā)使用SOA架構的部署問題,其包含了以下各方面的目的首先,云平臺為開發(fā)者提供一套標準服務描述語言,開發(fā)者開發(fā)服務,向云平臺注冊;該標準服務描述語言采用XML格式,改進于WSDL,是云服務調用規(guī)范的描述。然后,云平臺根據云結點當前負載的情況和服務的資源需求,計算該服務最佳部署點,將服務部署至該結點的云服務容器,同時選擇若干個次優(yōu)的節(jié)點,冗余部署;冗余部署點平時并不運行,當該服務運行的節(jié)點失效時,冗余部署點繼續(xù)運行。最后,在服務實際運行中,云平臺定時監(jiān)測云結點中該服務運行的狀態(tài),并計算是否需要將該服務重新部署至更優(yōu)結點,保證服務質量。本發(fā)明提供了一種在云平臺中部署服務的方法,包括以下步驟1)開發(fā)者通過創(chuàng)建元數(shù)據向服務倉庫注冊服務;2)數(shù)據倉庫根據服務生成索引,并將服務交付至服務部署系統(tǒng)處理;3)服務部署系統(tǒng)計算服務執(zhí)行服務所需時間、內存等信息估計服務可能占用服務器的負載;4)服務部署系統(tǒng)獲得空閑云結點的當前負載,計算最佳的部署結點,并將服務部署至該結點云服務容器,同時選擇若干個次優(yōu)的節(jié)點,冗余部署;5)經過一段時間后,服務部署系統(tǒng)獲取該服務在每個結點實際運行情況,根據該統(tǒng)計結果重新部署服務。其中,在所述步驟1)中,服務注冊系統(tǒng)為開發(fā)者實現(xiàn)了一組可公開訪問的接口,通過這些接口,服務開發(fā)者向系統(tǒng)注冊服務,云計算需求者可以找到云平臺中提供的各種服務開發(fā)特定應用;服務開發(fā)者首先需要了解服務注冊系統(tǒng)定義的云服務定義語言(Cloud Service Define Language,CSDL),根據該規(guī)則說明提供的服務和調用規(guī)則;其中,在所述步驟2)中,服務部署系統(tǒng)根據服務開發(fā)者提供的SDL文件,為服務生成索引,并將服務保存至服務倉庫,供服務需求者索引服務;其中,在所述的步驟3)中,服務部署系統(tǒng)根據服務開發(fā)者提供的SDL文件,預計算該服務所需的存儲空間、耗費時間等信息,量化可能占用的負載;其中,在所述的步驟4)中,服務部署系統(tǒng)實時了解各個節(jié)點的負載情況,根據服務所需要的資源和各個節(jié)點可以接受的負載,選擇若干最優(yōu)或者較優(yōu)的節(jié)點部署該服務, 并記錄該服務部署的位置,同時選擇若干個次優(yōu)的節(jié)點冗余部署,保證系統(tǒng)的健壯性;其中,在所述的步驟5)中,服務部署系統(tǒng)定時檢查各個節(jié)點的負載現(xiàn)狀、是否存在故障主機等信息,根據步驟4)動態(tài)調整服務在各個節(jié)點的部署。
圖1為傳統(tǒng)面向服務體系架構SOA調用流程圖2為本發(fā)明架構結構及其調用關系3為服務部署流程4為服務開發(fā)者注冊服務流程5為云節(jié)點在云部署中心存儲結構
具體實施例方式為使本發(fā)明的特征及優(yōu)點得到更清楚的了解,以下結合附圖,作詳細說明如下如圖2所示,描述了本發(fā)明的系統(tǒng)架構結構及其調用關系示意圖,分為5個部分和一個主要參與者;一個主要參與者是云服務開發(fā)者,5個主要組成部分包括云服務注冊中心,服務部署系統(tǒng),服務倉庫,備用服務倉庫,云結點;目前基于SOA架構的程序是作為一個整體部署到應用服務器中的,這對應用服務器的性能提出了很高的要求,所有應用同時運行在一臺服務器上,當部署的應用較多時,對 CPU、存儲等資源爭奪將變得非常激烈,從而導致服務器性能下降,同時也影響所部署應用的正常運行。為了解決這一問題,提出了將應用系統(tǒng)以SOA方式部署到云計算平臺的思想。傳統(tǒng)SOA中部署服務的方式如圖1所示,從圖中可以看出,服務提供者需要使用服務時,必須向UDDI查詢服務,并了解該服務調用規(guī)范和該服務提供者的IP地址、端口等信息;而在云環(huán)境中,這些信息并不能反映云平臺的特點,而且,傳統(tǒng)的UDDI+S0AP的技術模式不能運用到云平臺中,本發(fā)明使用云服務注冊中心的方式,云服務注冊中心與傳統(tǒng)SOA 的不同點主要體現(xiàn)在1.云服務注冊中心不僅完成服務接口規(guī)范,還要負責服務的部署, 而傳統(tǒng)的SOA中不存在部署的環(huán)節(jié),本發(fā)明在步驟4)中提供了一種在云環(huán)境中部署服務的方法;2.云服務的部署系統(tǒng)根據會預計系統(tǒng)的運行所占用的時間和空間計算負載,將計算密集型的服務部署到相對空閑的云節(jié)點,而傳統(tǒng)的SOA中只是服務提供者提供服務器,運行效率較低。因為云服務提供者和使用者是松耦合關系,提供者必須遵循一定規(guī)范開發(fā),使用者才能在不知道服務具體實現(xiàn)情況下,只調用服務提供者提供的服務描述文件調用該服務,所以云服務注冊中心的模塊之一是定義服務描述規(guī)范和服務注冊接口,云服務開發(fā)者根據云服務注冊中心提供的規(guī)范開發(fā)特有服務并向云服務注冊中心發(fā)出注冊請求, 云服務注冊中心首先驗證云服務開發(fā)者提交的云服務描述文件(Cloud Service Define Language, CSDL),然后將服務提交至服務部署系統(tǒng);服務部署系統(tǒng)功能是統(tǒng)一部署云服務至所有的分布式云節(jié)點,計算節(jié)點的負載和統(tǒng)計服務運行的狀態(tài),每隔一段時間根據實際運行狀態(tài)重新動態(tài)部署,對于每個提交的服務,云部署平臺還將其提交至服務倉庫;服務倉庫負責保存云服務注冊中心生成的服務索引,并生成搜索規(guī)則,云服務使用者通過其他系統(tǒng)與服務倉庫交互,搜索和請求可用的邏輯服務;服務倉庫在本系統(tǒng)中占有至關重要的地位,是整個云平臺良好運行的關鍵,備用服務倉庫是服務倉庫的一個實時鏡像,在服務倉庫需要維護、更新或者出現(xiàn)故障時;備用服務倉庫將起到服務倉庫的作用;云結點是云環(huán)境中分布式的結點,是實際服務的運行者,服務實際中也是部署到云結點中,為了保證系統(tǒng)的健壯性,同一個服務實際上在多個云結點中同時部署,當服務請求到達時,每個云結點都有處理該服務的能力,云節(jié)點在運行服務同時啟動統(tǒng)計線程,統(tǒng)計信息主要包括本節(jié)點負載和服務運行實際占用的時間空間等情況,并將統(tǒng)計信息反饋至服務部署系統(tǒng)。下面詳細介紹服務在云平臺中部署的流程為例來說明本發(fā)明的具體實施。服務從開發(fā)到實際部署到云節(jié)點共有5個步驟1)開發(fā)者通過創(chuàng)建元數(shù)據向服務倉庫注冊服務;2)數(shù)據倉庫根據服務生成索引,并將服務交付至服務部署系統(tǒng)處理;3)服務部署系統(tǒng)計算服務執(zhí)行服務所需時間、內存等信息估計服務可能占用服務器的負載;4)服務部署系統(tǒng)獲得空閑云結點的當前負載,計算最佳的部署結點,并將服務部署至該結點;5)經過一段時間后,服務部署系統(tǒng)獲取該服務在每個結點實際運行情況,根據該統(tǒng)計結果重新部署服務。在所述步驟1)中,如圖2所示,開發(fā)了一個與云平臺無縫對接的云服務注冊中心, 該服務注冊中心運行在一臺云服務器中,采用C/S模式,開發(fā)者首先下載云平臺客戶端,通過Client端填寫服務注冊文件CSDL和服務例程,將其上傳到云平臺中。在所述步驟1)中,如圖2所示,服務開發(fā)者根據服務注冊中心規(guī)定的服務規(guī)則開發(fā)服務,并以CSDL語言描述該服務CSDL (Cloud Services Description Language,云服務描述語言)是一種XML Application,他將云服務描述定義為一組服務訪問點,客戶端可以通過這些服務訪問點對包含面向文檔信息或面向過程調用的服務進行訪問(類似遠程過程調用)。CSDL首先對訪問的操作和訪問時使用的請求/響應消息進行抽象描述,然后將其綁定到具體的傳輸協(xié)議和消息格式上以最終定義具體部署的服務訪問點。相關的具體部署的服務訪問點通過組合就成為抽象的云服務。CSDL文件應該包括一下幾個部分ServiceType 使用某種語法的數(shù)據類型定義;MetaKeyffords 本服務的關鍵字,幫助搜索
6
Content 要傳遞的數(shù)據;Args 消息參數(shù);Operations 服務支持的操作的抽象描述;Interfaces 一個或多個端點支持的操作的抽象集;BindingProtocol 特定端口類型的具體協(xié)議和數(shù)據格式規(guī)范;Service 相關端點的集合,包括其關聯(lián)的接口、操作、消息等;BucketPreference 云平臺相關資源標識CSDL是參考WSDL、定義的一套云環(huán)境下運行的服務標準,與傳統(tǒng)的UDDI中的WSDL 不同,在云平臺中的CSDL不需要制定端口 port等信息,因為開發(fā)者也不知道該服務具體部署到云中具體的物理位置;另外CSDL增加了資源描述的元素,因為在云平臺中,服務運行于MaS平臺,而MaS又是基于I^aaS,需要向I^aaS平臺申請資源,服務質量是與實際使用的資源相關,而傳統(tǒng)的SOA是由服務提供者自己維護,資源數(shù)量也是一定的,故不需要維護資源。下面給出一個典型的CSDL文件
< xml version="!.0" encoding=〃UTF-8" > 〈definitions name="CSDLSample" > <MetaKeyffords> <meta-key name=" math" > <raeta-key name=" sqrt“ > </MetaKeyffords> <ServiceTypes name=" math" /> 〈content name="Siraple. arg〃> <args name="arg" type="xsd:int"/> </content>
〈content name="Simple.ret"> <args name="result" type=〃xsd:int〃/>〈/content〉
<portType name="SimplePortType〃〉 〈operation name=〃CSDL〃 parameterOrder=〃arg〃 > <input message=〃wsdlns:Siinple. arg〃/> 〈output message=〃wsdlns:Simple· ret〃/> 〈/operation〉 </portType>
<bindingProtocol name=〃SimpleBinding〃 type=〃wsdlns:SimplePortType〃> <stk:binding preferredEncoding="GBK〃 /> <csdl:binding style=〃rpc〃> 〈operation name=〃sqrt〃> <input)
<csdl:body use=〃encoded〃/> </input> <output>
<csdl:body use=〃encoded〃/> </output> 〈/operation〉 </bindingProtocol>
〈service name=〃CSDLSample〃>
<csdl: cloud name=" cs2c,,interface^http: //www. cs2c, com. cn/> </service>
<BucketPreference id="SDREQW#$9T 1213131"〉 <BucketProvider name=〃cs2c〃/> </BucketPreference> </definitions>示例中描述了一個數(shù)學運算中求平方根函數(shù)的原型,并且描述了該服務中保存數(shù)據的虛擬存儲ID。服務提供者請求服務后,云服務注冊中心驗證該描述文件,CSDL文件的合法性判斷使用XML技術中的xmlschema文件驗證其合法性,若合法則向云服務部署平臺請求服務部署,并同時向云服務倉庫注冊該服務,生成規(guī)則索弓I。在所述步驟2)中,生成索引的方式是根據步驟1)中CSDL文件中的MetaKeyWords 項中的meta-key屬性值,服務倉庫保存服務的同時,將與服務相關的所有關鍵字生成索引,記錄步驟幻中計算的服務部署結點集合;在所述步驟幻中,服務部署系統(tǒng)通過模擬運行一次服務計算服務所占用的時間空間,下面介紹計算時間和空間的方法時間運行通過使用云平臺中提供的獲得時間戳接口,并開始運行程序時啟動計時器,在程序運行后計算當前時間計算整個程序運行的總時間T,時間T的計算使用 gettimeofday方法,開始運行時記錄時間start,服務每運行一次結束后,記錄時間end, end-start即為一次運行時間,服務運行時間的計算根據多次運行的結果求平均值,這樣計
算的時間更加準確,計算時間的例程如下所示#include <sys/time.h> #include <sys/time.h> #include <stdio.h> #include <math.h>
void function() {
unsigned int i,j; double y;
for(i=0;i<1000;i++) for(j=0;j<1000;j++) y=sin((double)i);
}
main() {
struct timeval tpstart,tpend; float timeuse;
gettimeofday (&tpstart,NULL); RunService(); //開始運行服務 gettimeofday(&tpend’NULL); timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+
tpend.tv_usec-tpstart.tv_usec; timeuse/= 1000000; printf("Used Time:%f\n",timeuse);
exit(0); }因為云平臺中用戶所有使用的資源包括內存、硬盤、CPU都是底層提供的虛擬化, 因此調用云平臺的統(tǒng)計功能即可預計服務運行所占用的空間S;以基于Linux云平臺為例, 下面給出獲取硬件資源利用率的代碼double get_hardware_usage(void) { FILE *hd_fp = NULL;
if(hd_fp = bucket_open("zhanggx/usage", "r")) == NULL){ sys_error("NO STAT FILE");
long long total = 1 ;
long long free = 0;
char bufl[BUF—MAX] = {'\0'};
char buf2[BUF_MAX] = {'\0'};
open(bufl,512, hdjp);
open(buf2, 512, hd_fp);
sscanf(bufl, "HdTotal: %lld V', &total);
sscanf(buf2, "HdFree: %lld \n", &free);
return l-(float)free/total;
}另外,云平臺中為服務提供者所提供的服務設置權值Ct、Cs,當Ct > Cs時說明服務響應時間優(yōu)先,最終通過公式Ct*運行時間+Cs*運算占用存儲計算得到的負載;在所述步驟4)中,服務部署系統(tǒng)搜集云節(jié)點中負載的信息,根據步驟3)中得到的服務將要占用的負載選擇一個最優(yōu)的部署節(jié)點。選擇最優(yōu)節(jié)點的策略步驟如下獲取所有節(jié)點的負載情況使用最小堆數(shù)據結構排列所有節(jié)點,其中最小堆是一個樹形結構,如圖所示,其特點是父節(jié)點的負載均大于子節(jié)點的負載選取根節(jié)點作為服務部署節(jié)點并選擇該父節(jié)點的兩個子節(jié)點作為冗余部署點,將服務部署到這些節(jié)點的云服務容器中。在所述步驟幻中,服務部署系統(tǒng)每經過一段時間,獲取各個節(jié)點服務實際運行統(tǒng)計結果,獲得運行響應時間小于某個闕值T的服務,該闕值的計算是動態(tài)計算的,計算方法是當前服務總數(shù)除以當前云節(jié)點個數(shù),然后將該服務通過步驟幻,3),4)重新部署。以上所述的實例對本發(fā)明的各個部分的實現(xiàn)方式作了詳細的說明,但是本發(fā)明的具體實現(xiàn)形式并不局限于此,對于本技術領域的一般技術人員來說,在不背離本發(fā)明所述方法的精神和權利要求范圍的情況下對它進行的各種顯而易見的改變都在本發(fā)明的保護范圍之內。
權利要求
1.一種部署在云計算環(huán)境中部署服務的方法,其特征在于,其包括以下幾個步驟1)開發(fā)者通過創(chuàng)建元數(shù)據向服務倉庫注冊服務;2)數(shù)據倉庫根據服務生成索引,并將服務交付至服務部署系統(tǒng)處理;3)服務部署系統(tǒng)計算服務執(zhí)行服務所需時間、內存等信息估計服務可能占用服務器的負載;4)服務部署系統(tǒng)獲得空閑云結點的當前負載,計算最佳的部署結點,并將服務部署至該結點;5)經過一段時間后,服務部署系統(tǒng)獲取該服務在每個結點實際運行情況,根據該統(tǒng)計結果重新部署服務。
2.如權利要求1所述的方法,其特征在于,在步驟1)中,開發(fā)者同時需要提交一種云服務描述語言CSDL,該語言詳細描述了服務開發(fā)者、關鍵字、調用參數(shù)、返回值、使用的云平臺資源、支持的操作、提供的服務概要、調用的方式等信息,是云服務開發(fā)者或服務提供者向云平臺注冊服務的所要遵循的標準。
3.如權利要求1所述的方法,其特征在于,在步驟幻中,服務倉庫提取步驟1)中服務開發(fā)者提供的CSDL語言中“關鍵字” 一項,定義搜索規(guī)則,生成索引保存到數(shù)據庫中,供服務使用者搜索。
4.如權利要求1所述的方法,其特征在于,在步驟3)中,一種根據服務運行時間、所占空間以及其權值計算服務負載的一種方法。
5.如權利要求1所述的方法,其特征在于,在步驟4)中,一種按照最小堆數(shù)據結構,以負載為索引存儲云節(jié)點的方法。
6.如權利要求1所述的方法,其特征在于,在步驟4)中,在存儲的云節(jié)點實時負載中選擇最部署優(yōu)點的算法,即選擇權利要求5中所述的最小堆頂點。
7.如權利要求1所述的方法,其特征在于,在步驟5)中,云服務部署系統(tǒng)根據云節(jié)點統(tǒng)計結果,動態(tài)部署的方法,將失效的節(jié)點中的服務以及運行響應時間低于闕值的服務重新部署,以達到效率最高,服務質量最優(yōu)。
全文摘要
一種部署在云計算環(huán)境中部署服務的方法,本發(fā)明介紹的方法主要包括開發(fā)者通過使用本發(fā)明定義的一種云平臺服務定義語言CSDL描述所提供的服務,并將服務提交至云平臺,云平臺根據云節(jié)點和該服務的負載選擇最優(yōu)的節(jié)點部署服務,并根據CSDL生成搜索規(guī)則;服務使用者通過訪問云服務倉庫搜索可用服務并調用;為保證健壯性,本系統(tǒng)還提供一個備用部署系統(tǒng),并定期檢查云節(jié)點運行情況,重新部署服務達到最優(yōu),利用本方法能使云平臺具有較高服務效率和容錯性,并且在云環(huán)境中,服務提供者并不需要自己維護一個服務運行的環(huán)境,而是將服務提交至云環(huán)境中。
文檔編號G06F17/30GK102223398SQ20111014137
公開日2011年10月19日 申請日期2011年5月30日 優(yōu)先權日2011年5月30日
發(fā)明者蘭雨晴, 馮運輝, 孫坤建, 張冠星, 王鈞, 黎立 申請人:蘭雨晴