劉 鎮(zhèn),尚艷羽
(江蘇科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,江蘇鎮(zhèn)江212003)
隨著網(wǎng)絡(luò)應(yīng)用的日益廣泛,C/S模式存在中心化、負(fù)載不均衡等問(wèn)題,已不能滿(mǎn)足人們的要求.P2P模式具有節(jié)點(diǎn)對(duì)等,去中心化,資源利用率高,負(fù)載均衡,健壯性良好等優(yōu)點(diǎn),很好地解決了C/S模式的瓶頸.目前P2P模式已廣泛應(yīng)用于多類(lèi)服務(wù)中,文獻(xiàn)[1]中提出一種P2P模式下的結(jié)構(gòu)化存儲(chǔ)系統(tǒng);文獻(xiàn)[2]中采用P2P方式實(shí)現(xiàn)無(wú)線網(wǎng)格網(wǎng)絡(luò)中的資源共享;文獻(xiàn)[3]中提出了在流媒體中的應(yīng)用;SUN公司開(kāi)發(fā)了用于開(kāi)發(fā)面向分布式服務(wù)的P2P應(yīng)用平臺(tái)JXTA[4].這些面向服務(wù)的P2P模式的發(fā)展順應(yīng)了網(wǎng)絡(luò)應(yīng)用服務(wù)化的發(fā)展方向,但其在互操作性、服務(wù)重用性、耦合度以及服務(wù)組合控制上有待進(jìn)一步研究.
面向服務(wù)架構(gòu)(service oriented architecture,SOA)以其互操作、服務(wù)可重用、可組合、松耦合等設(shè)計(jì)理念越來(lái)越受到研究人員以及企業(yè)的青睞[5].近年來(lái),在國(guó)內(nèi)由銳易特、東方通、金蝶等推出的ESB中間件產(chǎn)品更推動(dòng)了SOA的廣泛應(yīng)用[6].然而,其服務(wù)的注冊(cè)、發(fā)布、發(fā)現(xiàn)以及管理和組合過(guò)程都是基于中心ESB控制方式,極大地限制了系統(tǒng)的靈活性.
Petri-net[7]是簡(jiǎn)單的過(guò)程模型,適合于描述異步的、并發(fā)的計(jì)算機(jī)系統(tǒng)模型.良好的流程描述和控制優(yōu)勢(shì)使其廣泛應(yīng)用到工作流管理[8]、并行程序設(shè)計(jì)[9]等方面.
文中在P2P模式下設(shè)計(jì)分布式的SOA,對(duì)基于JXTA的注冊(cè)、管理進(jìn)行研究,為實(shí)現(xiàn)分布式服務(wù)提供模型;對(duì)服務(wù)組合策略進(jìn)行研究,結(jié)合P2P模式的分布式、負(fù)載均衡的特點(diǎn),借鑒Petri-net中對(duì)工作流的描述和控制的思想,設(shè)計(jì)適合分布式SOA模式的分布式協(xié)同控制方式的服務(wù)組合策略;在該控制模式下,針對(duì)同一功能的原子服務(wù)可多個(gè)節(jié)點(diǎn)存在的特點(diǎn),文中采用改進(jìn)的遺傳算法[10-11]對(duì)這些不同性能、不同特點(diǎn)的節(jié)點(diǎn)進(jìn)行選擇,使得組合最優(yōu),改善傳統(tǒng)的隨機(jī)選擇方法對(duì)服務(wù)質(zhì)量的影響,在提供最優(yōu)組合服務(wù)的同時(shí)響應(yīng)時(shí)間也最短.
文中在P2P模式下,以分布式方式實(shí)現(xiàn)ESB的集中注冊(cè)、管理,系統(tǒng)結(jié)構(gòu)部署如圖1.其基本思想是在JXTA支持下,將整個(gè)系統(tǒng)中的節(jié)點(diǎn)劃分成組,每個(gè)組(peer group)內(nèi)至少有一個(gè)中心(super peers)來(lái)完成組內(nèi)節(jié)點(diǎn)及服務(wù)的注冊(cè)、搜索、監(jiān)測(cè)、管理等功能,并保證與其他super peer間的連通性.系統(tǒng)中的每個(gè)節(jié)點(diǎn)可以同時(shí)屬于多個(gè)組,提供多種服務(wù).
圖1 系統(tǒng)結(jié)構(gòu)部署Fig.1 System architecture deployment diagram
系統(tǒng)中的節(jié)點(diǎn)按照其在提供服務(wù)中扮演的角色,主要分為超級(jí)節(jié)點(diǎn)super peer和普通節(jié)點(diǎn)peer兩類(lèi),主要結(jié)構(gòu)如圖2所示.每個(gè)新加入系統(tǒng)的節(jié)點(diǎn)首先與super peer建立連接,進(jìn)行身份驗(yàn)證,確保注冊(cè)節(jié)點(diǎn)的真實(shí)性和有效性,然后注冊(cè)節(jié)點(diǎn)信息(PeerInformation),包括節(jié)點(diǎn)名稱(chēng)、IP地址等.super peer會(huì)為該節(jié)點(diǎn)分配一個(gè)ID,保存該節(jié)點(diǎn)信息.最后節(jié)點(diǎn)發(fā)布自身提供的服務(wù)信息(ServiceInformation),包括模塊類(lèi)ID、服務(wù)類(lèi)型、參數(shù)要求以及其他信息,并注冊(cè)到注冊(cè)中心.此外,注冊(cè)中心還維護(hù)服務(wù)的質(zhì)量信息(QualityInformation),如響應(yīng)時(shí)間、是否在線、成功率等.管理服務(wù)主要通過(guò)監(jiān)測(cè)模塊監(jiān)測(cè)節(jié)點(diǎn)、服務(wù)的狀態(tài)來(lái)管理注冊(cè)表中的信息.組合服務(wù)可以被遞歸定義為原子服務(wù)和組合服務(wù)的集合,根據(jù)設(shè)計(jì)者設(shè)計(jì)的服務(wù)組合,搜索相關(guān)的原子服務(wù),并選擇出最優(yōu)的,將工作流狀態(tài)轉(zhuǎn)化為一個(gè)可稱(chēng)為路由表的表格,提供增殖服務(wù).
路由控制器用于監(jiān)控路由表狀態(tài),參數(shù)處理器用于處理、分配參數(shù).原子服務(wù)是一個(gè)獨(dú)立的可訪問(wèn)的應(yīng)用,它并不顯式依賴(lài)其他原子服務(wù),它是已經(jīng)存在的服務(wù),其執(zhí)行完全由服務(wù)提供者負(fù)責(zé).
圖2 super peer與普通peer主要結(jié)構(gòu)Fig.2 Main structure of super peer and ordinary peer
在傳統(tǒng)的服務(wù)組合中,集中式的工作流控制模式大多被采用,其中心壓力比較大,嚴(yán)重阻礙分布式系統(tǒng)的性能提升.Petri-net采用過(guò)程模型來(lái)表示和控制工作流,監(jiān)視整個(gè)過(guò)程的狀態(tài)和執(zhí)行.借鑒該思想,在文中提出的分布式面向服務(wù)模型中,將工作流以狀態(tài)路由形式表示,利用同步機(jī)制實(shí)現(xiàn)路由的實(shí)時(shí)更新和監(jiān)控.
路由表中包括前置信息和后置信息.前置信息為進(jìn)入下一個(gè)狀態(tài)所需要的條件集,包括前節(jié)點(diǎn)ID(p_peerid)、原子服務(wù)的模塊類(lèi)ID(p_mcid)、原子服務(wù)描述(desc)、服務(wù)輸出參數(shù)信息(p_parm)、服務(wù)狀態(tài)(state);后置信息為下一步要進(jìn)入的狀態(tài)集,包括節(jié)點(diǎn)ID(n_peerid)、原子服務(wù)模塊類(lèi)ID(n_mcid)、調(diào)用管道信息(pipe)、輸入?yún)?shù)信息(n_parm).
當(dāng)所有的前置信息服務(wù)狀態(tài)全為true時(shí)才能進(jìn)入到對(duì)應(yīng)的后置信息中的狀態(tài).用組合服務(wù)模塊類(lèi)標(biāo)識(shí)來(lái)標(biāo)識(shí)不同組合服務(wù)的路由表(cs-id).該表在參與提供服務(wù)的節(jié)點(diǎn)之間同步共享,由路由控制器來(lái)控制.處理過(guò)程如下:
1)根據(jù)接收到的路由標(biāo)識(shí),由路由控制器找到對(duì)應(yīng)的路由表,確定當(dāng)前狀態(tài);
2)由參數(shù)處理器對(duì)接收到的參數(shù)進(jìn)行處理,滿(mǎn)足下一跳路由參數(shù)要求;
3)將處理結(jié)果以及路由標(biāo)識(shí)發(fā)送給下一個(gè)節(jié)點(diǎn),修改路由表中對(duì)應(yīng)的狀態(tài),設(shè)為true,并同步到其他節(jié)點(diǎn)所對(duì)應(yīng)的路由表中.這樣就避免了在分支、重復(fù)調(diào)用或循環(huán)的情況下因不知該執(zhí)行哪條路由而進(jìn)入僵持狀態(tài)或產(chǎn)生錯(cuò)誤執(zhí)行;
4)下一個(gè)節(jié)點(diǎn)做同樣的處理,直至執(zhí)行到路由表中的最后一條路由.
文中的分布式服務(wù)提供和控制模型中,允許多個(gè)不同性能的節(jié)點(diǎn)提供相同功能的原子服務(wù),如何對(duì)這些節(jié)點(diǎn)選擇,使得組合能夠在提供最優(yōu)服務(wù)的同時(shí)響應(yīng)時(shí)間也最短,文中采用改進(jìn)的遺傳算法予以解決.
假設(shè)一個(gè)組合服務(wù)由n個(gè)原子服務(wù)組成,通過(guò)搜索,得到m(n≤m)個(gè)可提供這n個(gè)服務(wù)功能的原子服務(wù),按照搜索到的原子服務(wù)的功能,將m個(gè)原子服務(wù)劃分為n組,每組形成1個(gè)基因片段,在每一次算法操作中,保證每個(gè)基因片段中有且只有1位為“1”,保證每類(lèi)原子服務(wù)都會(huì)被選到,避免出現(xiàn)非法解.
改進(jìn)的算法如下:
1)個(gè)體編碼:將這m個(gè)原子服務(wù)表示成二進(jìn)制符號(hào)串,形式為:a1a2a3…ai…am.
用以下輔助數(shù)據(jù)結(jié)構(gòu)來(lái)表示得到的n個(gè)片段:
則a1a2a3…ai…am串中應(yīng)有n個(gè)1,每個(gè)片段中有且只有1位為“1”.
2)生成初始化群體:設(shè)置進(jìn)化代數(shù)計(jì)數(shù)器t=0,設(shè)置最大進(jìn)化代數(shù)T.結(jié)合數(shù)組Gene_Seg,采用隨機(jī)的方法,在保證每個(gè)基因片段中僅初始化1位為“1”的情況下產(chǎn)生初始化種群.
3)適應(yīng)度計(jì)算:文中將目標(biāo)函數(shù)定義為帶寬、吞吐量、響應(yīng)時(shí)間.個(gè)體適應(yīng)度設(shè)置為目標(biāo)函數(shù)中帶寬、吞吐量、響應(yīng)時(shí)間的倒數(shù)的和.
4)選擇:采用與適應(yīng)度成正比的概率來(lái)確定各個(gè)體復(fù)制到下一代群體中的數(shù)量,其具體操作過(guò)程為:①計(jì)算出群體中所有個(gè)體的適應(yīng)度的總和,Σfi(i=1,2,…,m);②計(jì)算出每個(gè)個(gè)體的相對(duì)適應(yīng)度的大小fi/Σfi,即每個(gè)個(gè)體被遺傳到下一代群體中的概率;③每個(gè)概率值組成一個(gè)區(qū)域,全部概率值之和為1;④最后再產(chǎn)生一個(gè)0到1之間的隨機(jī)數(shù),依據(jù)該隨機(jī)數(shù)出現(xiàn)在上述哪一個(gè)概率區(qū)域內(nèi)來(lái)確定各個(gè)體被選中的次數(shù),選擇的總次數(shù)等于種群大小.
5)交叉運(yùn)算:文中采用單點(diǎn)交叉的方法,但是為了保證每類(lèi)原子服務(wù)的數(shù)目不變,交叉點(diǎn)的選擇不能破壞功能塊的完整性.其具體操作過(guò)程為:①對(duì)群體進(jìn)行隨機(jī)配對(duì);②根據(jù)二進(jìn)制串的長(zhǎng)度n,隨機(jī)設(shè)置交叉位置j,j為[1,n-1]上的一個(gè)整數(shù);③最后再相互交換配對(duì)染色體之間的部分基因.假設(shè)交叉點(diǎn)位于第k個(gè)基因片段內(nèi),則前k個(gè)基因片段保持不變,在第k+1個(gè)片段內(nèi)開(kāi)始交換.交叉前為:
a1a2a3…aiai+1…ai+Length… anb1b2b3…bibi+1…bi+Length…bn
交叉后為:a1a2a3…aibi+1…bi+Length… anb1b2b3…biai+1…ai+Length…bn
ai+1…ai+Length,bi+1…bi+Length代表兩個(gè)串的第 k+1個(gè)基因片段.
6)變異運(yùn)算:文中采用基本位變異的方法來(lái)進(jìn)行變異運(yùn)算,其具體操作過(guò)程為:①確定各個(gè)體的基因變異位置,可采用隨機(jī)方法產(chǎn)生變異點(diǎn)位置;②依照某一概率(突變概率Pm)將變異點(diǎn)的原有基因值取反,Pm的取值如果選的太大,則進(jìn)化過(guò)程無(wú)意義可言,接近于隨機(jī)選擇過(guò)程;如果選的太小,則收斂太早,容易陷入局部最優(yōu),本文中實(shí)驗(yàn)的Pm取0.1;③為了保證在變異過(guò)程中整個(gè)種群所有的基因片段中“1”的數(shù)目不變,每個(gè)個(gè)體變異后要檢查、修正字符串中“1”的數(shù)目,保證不發(fā)生變化.
7)終止判斷:記錄進(jìn)化代數(shù),并判斷是否滿(mǎn)足終止條件,若滿(mǎn)足,則輸出結(jié)果,否則轉(zhuǎn)向3)繼續(xù)執(zhí)行.終止條件如下:①某個(gè)體適應(yīng)度值達(dá)到目標(biāo)函數(shù)的要求;②達(dá)到指定的進(jìn)化代數(shù);③當(dāng)前種群中最大適應(yīng)度值與以前各代中最大適應(yīng)度值相差不大,進(jìn)化效果不明顯.
在文中設(shè)計(jì)的分布式服務(wù)模型中,分別采用隨機(jī)選擇方法和文中設(shè)計(jì)的遺傳算法,進(jìn)行組合服務(wù)性能測(cè)試,比較二者之間的差異,驗(yàn)證本文方法的可行性.
設(shè)組成組合服務(wù)的原子服務(wù)個(gè)數(shù)n的范圍為10~50,每個(gè)原子服務(wù)的候選原子服務(wù)個(gè)數(shù)為10時(shí),隨著n的變化,用文中設(shè)計(jì)的分布式模型求響應(yīng)時(shí)間的平均值,得曲線圖(圖3).
圖3 不同n下的響應(yīng)時(shí)間曲線Fig.3 Curve of response time under different n
設(shè)n=10,m變化,得到平均響應(yīng)時(shí)間曲線圖(圖4).
圖4 不同m下的響應(yīng)時(shí)間曲線Fig.4 Curve of response time under different m
從圖3,4中曲線的升高幅度可以看出,當(dāng)規(guī)模不斷增大時(shí),遺傳算法的時(shí)間開(kāi)銷(xiāo)增加遠(yuǎn)遠(yuǎn)小于隨機(jī)算法的時(shí)間代價(jià).
用n個(gè)原子服務(wù)的目標(biāo)函數(shù)的總和來(lái)衡量服務(wù)的質(zhì)量,在不同的規(guī)模中(一組(n,m)的范圍是(5,10),(10,20),(10,30),(15,50),(20,100)),兩種方法的服務(wù)組合的效率如圖5.采用遺傳算法求解的服務(wù)組合效率明顯高于隨機(jī)方法的服務(wù)組合.
圖5 不同規(guī)模下服務(wù)組合效率曲線Fig.5 Efficiency curve of service combination under different scale
文中在P2P模式下,借鑒SOA思想設(shè)計(jì)服務(wù)提供模式,實(shí)現(xiàn)服務(wù)可重用、可組合,系統(tǒng)松耦合、互操作;借鑒Petri-net對(duì)工作流的描述和控制思想,結(jié)合P2P分布式的特點(diǎn)設(shè)計(jì)分布式協(xié)同控制模式,實(shí)現(xiàn)組合服務(wù)監(jiān)控,擺脫中心控制的缺陷;最后采用遺傳算法對(duì)組合優(yōu)化,提高組合服務(wù)質(zhì)量.整體上對(duì)提高分布式服務(wù)系統(tǒng)性能有著深遠(yuǎn)的意義.
References)
[1] Avinash L,Malik P.Cassandra:structured storage system on a P2P network[C]∥Proceedings of the 28th ACM Symposium on Principles of Distributed Computing.[S.l.]:ACM,2009.
[2] Canali C,Renda M E,Santi P,et al.Enabling efficient peer-to-peer resource sharing in wireless mesh networks[J].IEEE Transactions on Mobile Computing,2010,9(3):333-347.
[3] Wu C,Li B,Zhao S.Diagnosing network-wide P2P live streaming inefficiencies[J].ACM Transactions on Multimedia Computing,Communications,and Applications,2012,8(1S):13.
[4] Barolli L,Xhafa F.Jxta-overlay:A P2P platform for distributed,collaborative,and ubiquitous computing[J].IEEE Transactions on Industrial Electronics,2011,58(6):2163-2172.
[5] 張朝暉,徐立臻,董逸生,等.一種基于SOA的企業(yè)集成平臺(tái)[J].計(jì)算機(jī)工程,2011,37(5):258-260.Zhang Zhaohui,Xu Lizhen,Dong Yisheng,et al.SOA-based enterprise integration platform[J].Computer Engineering,2011,37(5):258 -260.(in Chinese)
[6] 管紅杰,王珂,江海峰,等.SOA架構(gòu)的工作流管理系統(tǒng)的研究與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(5):1654-1657.Guan Hongjie,Wang Ke,Jiang Haifeng,et al.Research and application of workflow management system based on SOA[J].Computer Engineering and Design,2011,32(5):1654-1657.(in Chinese)
[7] 陳慧靈,王憲增,鄒寬城.基于 Petri網(wǎng)的工作流過(guò)程建模[J].計(jì)算機(jī)工程與科學(xué),2008,30(5):92-94.Chen Huiling, Wang Xianzeng, Zou Kuancheng.Workflow process modeling based on Petri nets[J].Computer Engineering and Science,2008,30(5):92-94.(in Chinese)
[8] Du Q.The research of Petri net-based workflow[C]∥International Conference on Electrical and Control Engineering.[S.l.]:IEEE,2011:4171 -4172.
[9] 李文敬,廖偉志,元昌安,等.高級(jí)Petri網(wǎng)并行化預(yù)處理方法的研究[J].廣西大學(xué)學(xué)報(bào):自然科學(xué)版,2013,38(5):1100-1107.Li Wenjing,Liao Weizhi,Yan Changan,et al.Pretreatment method of senior Petri nets parallelization[J].Journal of Guangxi University:Natural Science E-dition,2013,38(5):1100 -1107.(in Chinese)
[10] 邊霞,米良.遺傳算法理論及其應(yīng)用研究進(jìn)展[J].計(jì)算機(jī)應(yīng)用研究,2010,27(7):2425-2429.Bian Xia,Mi Liang.Development on genetic algorithm theory and its applications[J].Application Research of Computers,2010,27(7):2425 -2429.(in Chinese)
[11] 張成文,蘇森,陳俊亮.基于遺傳算法的 QoS感知的 Web服務(wù)選擇[J].計(jì)算機(jī)學(xué)報(bào),2006,29(7):1029-1037.Zhang Chengwen,Su Sen,Chen Junliang.Genetic algorithm on Web services selection supporting QoS[J].Chinese Journal of Computers,2006,29(7):1029 -1037.(in Chinese)