劉 鎮(zhèn),尚艷羽
(江蘇科技大學計算機科學與工程學院,江蘇鎮(zhèn)江212003)
隨著網(wǎng)絡應用的日益廣泛,C/S模式存在中心化、負載不均衡等問題,已不能滿足人們的要求.P2P模式具有節(jié)點對等,去中心化,資源利用率高,負載均衡,健壯性良好等優(yōu)點,很好地解決了C/S模式的瓶頸.目前P2P模式已廣泛應用于多類服務中,文獻[1]中提出一種P2P模式下的結構化存儲系統(tǒng);文獻[2]中采用P2P方式實現(xiàn)無線網(wǎng)格網(wǎng)絡中的資源共享;文獻[3]中提出了在流媒體中的應用;SUN公司開發(fā)了用于開發(fā)面向分布式服務的P2P應用平臺JXTA[4].這些面向服務的P2P模式的發(fā)展順應了網(wǎng)絡應用服務化的發(fā)展方向,但其在互操作性、服務重用性、耦合度以及服務組合控制上有待進一步研究.
面向服務架構(service oriented architecture,SOA)以其互操作、服務可重用、可組合、松耦合等設計理念越來越受到研究人員以及企業(yè)的青睞[5].近年來,在國內(nèi)由銳易特、東方通、金蝶等推出的ESB中間件產(chǎn)品更推動了SOA的廣泛應用[6].然而,其服務的注冊、發(fā)布、發(fā)現(xiàn)以及管理和組合過程都是基于中心ESB控制方式,極大地限制了系統(tǒng)的靈活性.
Petri-net[7]是簡單的過程模型,適合于描述異步的、并發(fā)的計算機系統(tǒng)模型.良好的流程描述和控制優(yōu)勢使其廣泛應用到工作流管理[8]、并行程序設計[9]等方面.
文中在P2P模式下設計分布式的SOA,對基于JXTA的注冊、管理進行研究,為實現(xiàn)分布式服務提供模型;對服務組合策略進行研究,結合P2P模式的分布式、負載均衡的特點,借鑒Petri-net中對工作流的描述和控制的思想,設計適合分布式SOA模式的分布式協(xié)同控制方式的服務組合策略;在該控制模式下,針對同一功能的原子服務可多個節(jié)點存在的特點,文中采用改進的遺傳算法[10-11]對這些不同性能、不同特點的節(jié)點進行選擇,使得組合最優(yōu),改善傳統(tǒng)的隨機選擇方法對服務質量的影響,在提供最優(yōu)組合服務的同時響應時間也最短.
文中在P2P模式下,以分布式方式實現(xiàn)ESB的集中注冊、管理,系統(tǒng)結構部署如圖1.其基本思想是在JXTA支持下,將整個系統(tǒng)中的節(jié)點劃分成組,每個組(peer group)內(nèi)至少有一個中心(super peers)來完成組內(nèi)節(jié)點及服務的注冊、搜索、監(jiān)測、管理等功能,并保證與其他super peer間的連通性.系統(tǒng)中的每個節(jié)點可以同時屬于多個組,提供多種服務.
圖1 系統(tǒng)結構部署Fig.1 System architecture deployment diagram
系統(tǒng)中的節(jié)點按照其在提供服務中扮演的角色,主要分為超級節(jié)點super peer和普通節(jié)點peer兩類,主要結構如圖2所示.每個新加入系統(tǒng)的節(jié)點首先與super peer建立連接,進行身份驗證,確保注冊節(jié)點的真實性和有效性,然后注冊節(jié)點信息(PeerInformation),包括節(jié)點名稱、IP地址等.super peer會為該節(jié)點分配一個ID,保存該節(jié)點信息.最后節(jié)點發(fā)布自身提供的服務信息(ServiceInformation),包括模塊類ID、服務類型、參數(shù)要求以及其他信息,并注冊到注冊中心.此外,注冊中心還維護服務的質量信息(QualityInformation),如響應時間、是否在線、成功率等.管理服務主要通過監(jiān)測模塊監(jiān)測節(jié)點、服務的狀態(tài)來管理注冊表中的信息.組合服務可以被遞歸定義為原子服務和組合服務的集合,根據(jù)設計者設計的服務組合,搜索相關的原子服務,并選擇出最優(yōu)的,將工作流狀態(tài)轉化為一個可稱為路由表的表格,提供增殖服務.
路由控制器用于監(jiān)控路由表狀態(tài),參數(shù)處理器用于處理、分配參數(shù).原子服務是一個獨立的可訪問的應用,它并不顯式依賴其他原子服務,它是已經(jīng)存在的服務,其執(zhí)行完全由服務提供者負責.
圖2 super peer與普通peer主要結構Fig.2 Main structure of super peer and ordinary peer
在傳統(tǒng)的服務組合中,集中式的工作流控制模式大多被采用,其中心壓力比較大,嚴重阻礙分布式系統(tǒng)的性能提升.Petri-net采用過程模型來表示和控制工作流,監(jiān)視整個過程的狀態(tài)和執(zhí)行.借鑒該思想,在文中提出的分布式面向服務模型中,將工作流以狀態(tài)路由形式表示,利用同步機制實現(xiàn)路由的實時更新和監(jiān)控.
路由表中包括前置信息和后置信息.前置信息為進入下一個狀態(tài)所需要的條件集,包括前節(jié)點ID(p_peerid)、原子服務的模塊類ID(p_mcid)、原子服務描述(desc)、服務輸出參數(shù)信息(p_parm)、服務狀態(tài)(state);后置信息為下一步要進入的狀態(tài)集,包括節(jié)點ID(n_peerid)、原子服務模塊類ID(n_mcid)、調用管道信息(pipe)、輸入?yún)?shù)信息(n_parm).
當所有的前置信息服務狀態(tài)全為true時才能進入到對應的后置信息中的狀態(tài).用組合服務模塊類標識來標識不同組合服務的路由表(cs-id).該表在參與提供服務的節(jié)點之間同步共享,由路由控制器來控制.處理過程如下:
1)根據(jù)接收到的路由標識,由路由控制器找到對應的路由表,確定當前狀態(tài);
2)由參數(shù)處理器對接收到的參數(shù)進行處理,滿足下一跳路由參數(shù)要求;
3)將處理結果以及路由標識發(fā)送給下一個節(jié)點,修改路由表中對應的狀態(tài),設為true,并同步到其他節(jié)點所對應的路由表中.這樣就避免了在分支、重復調用或循環(huán)的情況下因不知該執(zhí)行哪條路由而進入僵持狀態(tài)或產(chǎn)生錯誤執(zhí)行;
4)下一個節(jié)點做同樣的處理,直至執(zhí)行到路由表中的最后一條路由.
文中的分布式服務提供和控制模型中,允許多個不同性能的節(jié)點提供相同功能的原子服務,如何對這些節(jié)點選擇,使得組合能夠在提供最優(yōu)服務的同時響應時間也最短,文中采用改進的遺傳算法予以解決.
假設一個組合服務由n個原子服務組成,通過搜索,得到m(n≤m)個可提供這n個服務功能的原子服務,按照搜索到的原子服務的功能,將m個原子服務劃分為n組,每組形成1個基因片段,在每一次算法操作中,保證每個基因片段中有且只有1位為“1”,保證每類原子服務都會被選到,避免出現(xiàn)非法解.
改進的算法如下:
1)個體編碼:將這m個原子服務表示成二進制符號串,形式為:a1a2a3…ai…am.
用以下輔助數(shù)據(jù)結構來表示得到的n個片段:
則a1a2a3…ai…am串中應有n個1,每個片段中有且只有1位為“1”.
2)生成初始化群體:設置進化代數(shù)計數(shù)器t=0,設置最大進化代數(shù)T.結合數(shù)組Gene_Seg,采用隨機的方法,在保證每個基因片段中僅初始化1位為“1”的情況下產(chǎn)生初始化種群.
3)適應度計算:文中將目標函數(shù)定義為帶寬、吞吐量、響應時間.個體適應度設置為目標函數(shù)中帶寬、吞吐量、響應時間的倒數(shù)的和.
4)選擇:采用與適應度成正比的概率來確定各個體復制到下一代群體中的數(shù)量,其具體操作過程為:①計算出群體中所有個體的適應度的總和,Σfi(i=1,2,…,m);②計算出每個個體的相對適應度的大小fi/Σfi,即每個個體被遺傳到下一代群體中的概率;③每個概率值組成一個區(qū)域,全部概率值之和為1;④最后再產(chǎn)生一個0到1之間的隨機數(shù),依據(jù)該隨機數(shù)出現(xiàn)在上述哪一個概率區(qū)域內(nèi)來確定各個體被選中的次數(shù),選擇的總次數(shù)等于種群大小.
5)交叉運算:文中采用單點交叉的方法,但是為了保證每類原子服務的數(shù)目不變,交叉點的選擇不能破壞功能塊的完整性.其具體操作過程為:①對群體進行隨機配對;②根據(jù)二進制串的長度n,隨機設置交叉位置j,j為[1,n-1]上的一個整數(shù);③最后再相互交換配對染色體之間的部分基因.假設交叉點位于第k個基因片段內(nèi),則前k個基因片段保持不變,在第k+1個片段內(nè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代表兩個串的第 k+1個基因片段.
6)變異運算:文中采用基本位變異的方法來進行變異運算,其具體操作過程為:①確定各個體的基因變異位置,可采用隨機方法產(chǎn)生變異點位置;②依照某一概率(突變概率Pm)將變異點的原有基因值取反,Pm的取值如果選的太大,則進化過程無意義可言,接近于隨機選擇過程;如果選的太小,則收斂太早,容易陷入局部最優(yōu),本文中實驗的Pm取0.1;③為了保證在變異過程中整個種群所有的基因片段中“1”的數(shù)目不變,每個個體變異后要檢查、修正字符串中“1”的數(shù)目,保證不發(fā)生變化.
7)終止判斷:記錄進化代數(shù),并判斷是否滿足終止條件,若滿足,則輸出結果,否則轉向3)繼續(xù)執(zhí)行.終止條件如下:①某個體適應度值達到目標函數(shù)的要求;②達到指定的進化代數(shù);③當前種群中最大適應度值與以前各代中最大適應度值相差不大,進化效果不明顯.
在文中設計的分布式服務模型中,分別采用隨機選擇方法和文中設計的遺傳算法,進行組合服務性能測試,比較二者之間的差異,驗證本文方法的可行性.
設組成組合服務的原子服務個數(shù)n的范圍為10~50,每個原子服務的候選原子服務個數(shù)為10時,隨著n的變化,用文中設計的分布式模型求響應時間的平均值,得曲線圖(圖3).
圖3 不同n下的響應時間曲線Fig.3 Curve of response time under different n
設n=10,m變化,得到平均響應時間曲線圖(圖4).
圖4 不同m下的響應時間曲線Fig.4 Curve of response time under different m
從圖3,4中曲線的升高幅度可以看出,當規(guī)模不斷增大時,遺傳算法的時間開銷增加遠遠小于隨機算法的時間代價.
用n個原子服務的目標函數(shù)的總和來衡量服務的質量,在不同的規(guī)模中(一組(n,m)的范圍是(5,10),(10,20),(10,30),(15,50),(20,100)),兩種方法的服務組合的效率如圖5.采用遺傳算法求解的服務組合效率明顯高于隨機方法的服務組合.
圖5 不同規(guī)模下服務組合效率曲線Fig.5 Efficiency curve of service combination under different scale
文中在P2P模式下,借鑒SOA思想設計服務提供模式,實現(xiàn)服務可重用、可組合,系統(tǒng)松耦合、互操作;借鑒Petri-net對工作流的描述和控制思想,結合P2P分布式的特點設計分布式協(xié)同控制模式,實現(xiàn)組合服務監(jiān)控,擺脫中心控制的缺陷;最后采用遺傳算法對組合優(yōu)化,提高組合服務質量.整體上對提高分布式服務系統(tǒng)性能有著深遠的意義.
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è)集成平臺[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架構的工作流管理系統(tǒng)的研究與應用[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)的工作流過程建模[J].計算機工程與科學,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] 李文敬,廖偉志,元昌安,等.高級Petri網(wǎng)并行化預處理方法的研究[J].廣西大學學報:自然科學版,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] 邊霞,米良.遺傳算法理論及其應用研究進展[J].計算機應用研究,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服務選擇[J].計算機學報,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)