董健
(鹽城師范學(xué)院 信息科學(xué)與技術(shù)學(xué)院,江蘇 鹽城 224002)
基于BPEL的動(dòng)態(tài)服務(wù)組合體系結(jié)構(gòu)的研究
董健
(鹽城師范學(xué)院 信息科學(xué)與技術(shù)學(xué)院,江蘇 鹽城 224002)
靜態(tài)服務(wù)和動(dòng)態(tài)服務(wù)是Web服務(wù)的兩種組成方式,但是目前主要采用的靜態(tài)服務(wù)的方式有較大的局限性。鑒于此,本文探索性地提出了一種基于BPEL技術(shù)的動(dòng)態(tài)服務(wù)組合體系架構(gòu),分析了該體系結(jié)構(gòu)中的關(guān)鍵問題及解決策略,在具體的實(shí)現(xiàn)中采用了Dijkstra算法作為服務(wù)匹配組合的策略方法,通過具體的闡述說明了服務(wù)組合實(shí)現(xiàn)的請求、分解、組合、驗(yàn)證等幾個(gè)方面的問題。
SOA;動(dòng)態(tài)服務(wù);BPEL
Web服務(wù)是面向服務(wù)體系結(jié)構(gòu)(SOA)的基本組成元素,對SOA研究最終的落腳點(diǎn)是實(shí)現(xiàn)對Web服務(wù)的組合、操作、管理、控制、測試等[1]。圖1描述的是目前被普遍接受的SOA的基本體系結(jié)構(gòu),整個(gè)SOA體系結(jié)構(gòu)實(shí)質(zhì)是解決服務(wù)請求者和服務(wù)提供者之間通信的問題,而SOA的重要研究內(nèi)容是對服務(wù)的所有操作過程如何采用統(tǒng)一的標(biāo)準(zhǔn)來實(shí)現(xiàn)。實(shí)現(xiàn)SOA需要有三個(gè)重要的過程,首先是如何設(shè)計(jì)一個(gè)標(biāo)準(zhǔn)的SOA體系結(jié)構(gòu),該體系結(jié)構(gòu)可以把有服務(wù)需求的客戶方和能提供服務(wù)的供應(yīng)方連接起來;其次是在建立的體系結(jié)構(gòu)各個(gè)環(huán)節(jié)中如何采用標(biāo)準(zhǔn)化的規(guī)則;最后是在這些標(biāo)準(zhǔn)化規(guī)則的基礎(chǔ)上實(shí)現(xiàn)對服務(wù)的管理和控制。
圖1 SOA體系結(jié)構(gòu)示意
在國際上很多大型軟件公司及國內(nèi)很多高校已有從事SOA研究的團(tuán)隊(duì),哈爾濱工業(yè)大學(xué)、北京航空航天大學(xué)等都在該領(lǐng)域取得一定的成績,國內(nèi)的很多軟件公司也在積極向SOA技術(shù)靠攏[2]。總之,無論是高校、科研單位還是軟件公司,在未來三到五年的某一個(gè)時(shí)間點(diǎn)上,都希望把自己的軟件服務(wù)化或者是把原有系統(tǒng)服務(wù)化,或者是直接以服務(wù)的形式開發(fā)新的軟件功能。本文就前述已有的研究,并結(jié)合現(xiàn)實(shí)應(yīng)用提出一些改進(jìn)的方法。
BPEL(Business Process Execution Language,BPEL)是目前應(yīng)用廣泛的一種用于自動(dòng)化業(yè)務(wù)流
程的形式規(guī)約語言。設(shè)計(jì)目標(biāo)是為多個(gè)企業(yè)之間使用網(wǎng)絡(luò)服務(wù)的組合實(shí)現(xiàn)分布計(jì)算或者網(wǎng)格計(jì)算環(huán)境激活共享任務(wù)[3]。業(yè)務(wù)處理執(zhí)行語言結(jié)合并且替換了IBM的WebServices Flow Language(WSFL)和微軟公司的XLANG規(guī)范。使用業(yè)務(wù)處理執(zhí)行語言,程序員在形式上描述了一種發(fā)生在網(wǎng)絡(luò)上的業(yè)務(wù)處理,其方式為任何互操作的實(shí)體都可以按照同樣的方式執(zhí)行一個(gè)或者多個(gè)處理中的步驟。
針對于Web服務(wù)組合的動(dòng)態(tài)和靜態(tài)兩種方式,目前提出的服務(wù)組合策略多是基于BPEL技術(shù)的靜態(tài)組合方式,靜態(tài)服務(wù)組合策略具有速度快、實(shí)現(xiàn)簡單、過程容易控制等特點(diǎn),缺點(diǎn)是需要事先選取需要組合的服務(wù),不具備靈活性。
一個(gè)采用靜態(tài)服務(wù)組合方法組合起來的服務(wù)不能隨意修改,當(dāng)其中一個(gè)子服務(wù)失效后,整個(gè)組合服務(wù)就不能正常使用,而且靜態(tài)服務(wù)組合需要定義大量的BEPL模板,總之,靜態(tài)服務(wù)組合不能完全滿足面向服務(wù)方法論的需要,這時(shí)就需要采用動(dòng)態(tài)組合服務(wù)來解決靜態(tài)服務(wù)所面臨的問題。但是在動(dòng)態(tài)服務(wù)組合應(yīng)用方面,我們需要解決服務(wù)分解、粒度控制、服務(wù)驗(yàn)證、動(dòng)態(tài)組合等難題[4]。
通常情況下,對于理想的服務(wù)交互是:一個(gè)服務(wù)請求者把自己的請求發(fā)送到UDDI注冊中心,并在UDDI中心查找到自己需要的服務(wù),然后獲得服務(wù)提供者的訪問地址,假設(shè)UDDI中保存了訪問該服務(wù)的方法,則服務(wù)請求者直接發(fā)送服務(wù)調(diào)用指令給服務(wù)提供者,等待服務(wù)提供者返回服務(wù)請求者需要的結(jié)果,則完成了一個(gè)服務(wù)的調(diào)用過程,在這個(gè)過程中,不僅每一個(gè)步驟都需要定義標(biāo)準(zhǔn)的操作步驟和數(shù)據(jù)傳輸格式,而且有以下問題需要解決:
首先,服務(wù)請求者請求的服務(wù)不一定總是合適的,請求者并不知道UDDI中心存在哪些服務(wù),而且不知道如何提交服務(wù)請求格式,所以對服務(wù)請求者發(fā)出的服務(wù)請求需要進(jìn)行處理,可能的處理過程包括:服務(wù)分解(控制粒度)、服務(wù)名匹配等。
其次,通過分解的服務(wù)包含若干子服務(wù),如何選擇最優(yōu)的服務(wù)組合策略,使得服務(wù)實(shí)現(xiàn)的消費(fèi)最低也需要解決,在服務(wù)組合過程中可以選擇靜態(tài)服務(wù)組合或者動(dòng)態(tài)服務(wù)組合兩種策略。
再次,如何將在UDDI注冊中心獲得的服務(wù)序列通過BPEL進(jìn)行動(dòng)態(tài)組合也需要策略支持。
最后,服務(wù)有效性驗(yàn)證。在UDDI注冊中心注冊的服務(wù)并不總是處于有效狀態(tài),如何保證提供給請求者的服務(wù)總是有效且滿足用戶質(zhì)量要求也是待解決的問題之一。
針對以上四點(diǎn),筆者在四個(gè)關(guān)鍵步驟上分別設(shè)計(jì)了處理策略,探索性地提出一個(gè)基于BPEL的動(dòng)態(tài)服務(wù)組合體系結(jié)構(gòu),構(gòu)建生成的流程圖如圖2所示。
圖2 動(dòng)態(tài)服務(wù)組合體系結(jié)構(gòu)示意
圖2中以矩形代表事件,帶箭頭的線條代表過程,描述了服務(wù)請求者發(fā)出服務(wù)請求消息到收到UDDI中心給請求者返回有效的可訪問服務(wù)的過程,一個(gè)過程也可以看作一個(gè)事件向另一個(gè)事件發(fā)送一段消息的過程,所以事件之間的消息傳遞需要定義相應(yīng)的接口。其中服務(wù)分解事件需要設(shè)計(jì)一個(gè)服務(wù)分
解策略,組合方案生成事件需要設(shè)計(jì)一個(gè)服務(wù)組合選取策略,服務(wù)驗(yàn)證事件需要設(shè)計(jì)一個(gè)驗(yàn)證服務(wù)有效性的策略。服務(wù)驗(yàn)證并不參與動(dòng)態(tài)服務(wù)組合流程,而是在特定的條件下對UDDI注冊中心注冊的服務(wù)進(jìn)行有效性驗(yàn)證。在文中設(shè)計(jì)的體系結(jié)構(gòu)中,一個(gè)服務(wù)從發(fā)出請求到得到可使用的服務(wù)需要經(jīng)過10個(gè)過程,過程的發(fā)生順序在圖中已經(jīng)給出。代理事件是連接請求者和UDDI的橋梁,負(fù)責(zé)把分解后的子服務(wù)集合發(fā)送給組合方案生成事件(過程4),并把組合方案生成事件的組合結(jié)果(BPEL)返回給客戶(過程8)。
2.1分解算法分析
服務(wù)分解策略負(fù)責(zé)分解服務(wù)請求者的服務(wù)請求,以請求旅游服務(wù)為例,當(dāng)請求者發(fā)出旅游請求后,代理通過服務(wù)模板庫進(jìn)行算法匹配,把旅游分解為若干子服務(wù),比如:交通服務(wù)、住宿服務(wù)、飲食服務(wù)、景點(diǎn)服務(wù)等。分解后的子服務(wù)集合通過代理發(fā)送給組合方案生成事件,組合方案生成事件按照Dijkstra算法進(jìn)行最優(yōu)服務(wù)組合選擇,最后組合出最優(yōu)(代價(jià)最?。┑姆?wù)序列[5]。當(dāng)服務(wù)分解事件獲得服務(wù)請求者的請求后,就會(huì)到服務(wù)分解模板庫中進(jìn)行關(guān)鍵字比對,比對成功后獲得該服務(wù)的子服務(wù)集合的過程。服務(wù)分解匹配算法的核心問題是如何在服務(wù)分解模板庫中匹配服務(wù)請求者請求的服務(wù)。
2.2 服務(wù)組合選取策略
服務(wù)分解模板庫中維護(hù)著服務(wù)和組成該服務(wù)的子服務(wù)集合的數(shù)據(jù)表。服務(wù)分解模板庫需要經(jīng)過訓(xùn)練才能使用,當(dāng)服務(wù)請求者發(fā)出請求后,如果模板庫中沒有匹配成功,則需要用戶輸入可能需要的子服務(wù)。當(dāng)獲得服務(wù)請求者給出的字服務(wù)集合,則可以通過代理把該集合發(fā)送給組合方案生成事件,服務(wù)組合選取策略完成組合最優(yōu)的服務(wù)組合集合的算法。服務(wù)分解匹配算法的核心問題是如何在服務(wù)分解模板庫中匹配服務(wù)請求者請求的服務(wù)。此處我們實(shí)現(xiàn)匹配的方法是采用了Dijkstra算法實(shí)現(xiàn)。Dijkstra算法是由荷蘭計(jì)算機(jī)科學(xué)家狄克斯特拉于1959年提出的,是從一個(gè)頂點(diǎn)到其余各頂點(diǎn)的最短路徑算法,解決的是有向圖中最短路徑問題。其主要特點(diǎn)是以起始點(diǎn)為中心向外層層擴(kuò)展,直到擴(kuò)展到終點(diǎn)為止。
Dijkstra算法可以在路徑中找到一個(gè)個(gè)節(jié)點(diǎn)到其它節(jié)點(diǎn)的最短路徑,該算法同樣非常適用于服務(wù)組合選取策略,把需要設(shè)定的節(jié)點(diǎn)作為服務(wù)的狀態(tài),路徑代表各個(gè)服務(wù)的實(shí)現(xiàn)代價(jià),當(dāng)獲得服務(wù)請求者發(fā)出的源服務(wù)和目的服務(wù),則采用Dijkstra計(jì)算中間可能存在的子服務(wù)序列,并把代價(jià)最小的序列做為最優(yōu)的服務(wù)組合序列。
通過Dijkstra算法計(jì)算的一個(gè)服務(wù)到其它服務(wù)的最短路徑,選取結(jié)果需要保存在服務(wù)分解模板庫中,該結(jié)果可以再次被下一個(gè)請求相同服務(wù)的請求者使用。利用Dijkstra算法選擇服務(wù)具有一定局限性,只有當(dāng)UDDI服務(wù)全部有效并且關(guān)聯(lián)的服務(wù)數(shù)量較少的時(shí)候,這種算法才具有較高的效率。
2.3 服務(wù)組合實(shí)現(xiàn)
動(dòng)態(tài)服務(wù)組合策略的實(shí)現(xiàn)是基于BPEL技術(shù),根據(jù)對服務(wù)請求者發(fā)出的請求服務(wù)的分解、組合選擇,利用BPEL4WS服務(wù)器對得到的子服務(wù)序列進(jìn)行組合,把組合后的服務(wù)返回給服務(wù)請求者就可以了。利用BPEL4WS進(jìn)行服務(wù)組合可以建立BPEL模板庫,當(dāng)?shù)玫酱M合的子服務(wù)集合后,則到BPEL模板庫中獲取符合要求的BPEL模板,按照模板生成符合需求的服務(wù)組合流程(基于BPEL的xml文件),并通過圖2中的8、9、10過程返回給服務(wù)請求者。
2.4 服務(wù)組合的驗(yàn)證
由于SOA環(huán)境下的測試目標(biāo)、對象、實(shí)現(xiàn)手段和傳統(tǒng)軟件測試并不相同,所以SOA環(huán)境下的測試技
術(shù)、方法、策略與普通軟件也不相同。服務(wù)驗(yàn)證需要服務(wù)測試中間件的支持,該中間件可以定時(shí)檢查UDDI中的長期未被使用的服務(wù),測試方法為根據(jù)UDDI中的服務(wù)注冊信息中的服務(wù)調(diào)用請求地址向服務(wù)提供者發(fā)送驗(yàn)證信息,在規(guī)定的時(shí)間內(nèi)未返回驗(yàn)證信息則可判定為失效的服務(wù)。對于待測試服務(wù)對象的選擇策略可以由測試工具設(shè)計(jì)者根據(jù)實(shí)際情況確定,可以采用掃描整個(gè)UDDI注冊中心,選擇注冊時(shí)間最久的服務(wù),也可以加入某些策略,比如:考慮首先測試最久未被訪問的服務(wù)。對于測試方法,可以通過測試服務(wù)器向服務(wù)在UDDI中注冊的地址發(fā)送虛擬調(diào)用信息,等待服務(wù)提供者的返回消息,并通過返回結(jié)果的正確性和返回時(shí)間長短來判斷服務(wù)的質(zhì)量,結(jié)果服務(wù)信息的返回時(shí)間并不能決定的說明服務(wù)的質(zhì)量,考慮到網(wǎng)絡(luò)類型的區(qū)別和實(shí)際的物理距離都可能產(chǎn)生對反映時(shí)間的影響,所以返回時(shí)間應(yīng)該只能作為判斷服務(wù)的一個(gè)標(biāo)準(zhǔn)之一。
動(dòng)態(tài)服務(wù)組合適用于隨需應(yīng)變的服務(wù)請求,和靜態(tài)服務(wù)組合策略比較具有3個(gè)優(yōu)點(diǎn)。首先,當(dāng)服務(wù)分解后的子服務(wù)中發(fā)生因?yàn)楫惓6荒鼙徽{(diào)用的情況,可以及時(shí)通過動(dòng)態(tài)服務(wù)組合選擇策略及時(shí)選舉替代的服務(wù),避免了因?yàn)橐粋€(gè)子服務(wù)異常而使整個(gè)服務(wù)流程失效的現(xiàn)象;其次,動(dòng)態(tài)服務(wù)組合可以及時(shí)地為服務(wù)請求者選擇最優(yōu)的服務(wù)提供者;最后,動(dòng)態(tài)服務(wù)組合模型彌補(bǔ)了BPEL不能在運(yùn)行階段修改服務(wù)的綁定和組合的缺陷。文中對動(dòng)態(tài)組合模型的完善工作還需要做進(jìn)一步研究分析,下一步工作中,還將對Web服務(wù)選擇策略、驗(yàn)證方面進(jìn)行研究。
[1]張奕,蔡皖東.SOA關(guān)鍵型系統(tǒng)QoS可感知的服務(wù)動(dòng)態(tài)實(shí)時(shí)組合策略[J].計(jì)算機(jī)應(yīng)用,2011,31(7):1984-1985.
[2]Weifeng Lv,Jianjun Yu.pService:Pere-to-Pere based Web Services Discovery and Matching[C].Second International Conference on Systems and Networks Communication,2010.
[3]張德育,張倩.SOA中基于BPEL的服務(wù)組合方法研究與設(shè)計(jì)[J].沈陽理工大學(xué)學(xué)報(bào),2013,32(4):5-6.
[4]崔福東,喬彥友,常原飛.基于BPEL的Web服務(wù)快速組合框架[J].計(jì)算機(jī)工程,2010,36(7):262-263.
[5]華哲邦,李萌,趙俊峰,等.基于時(shí)間序列分析的Web Service QoS預(yù)測方法[J].計(jì)算機(jī)科學(xué)與探索,2013,10:219-220.
Research on Dynamic Service Composition Architecture Based on BPEL
DONG Jian
(College of Information Science and Technology,Yancheng Teachers University,Yancheng 224002,China)
Static services and dynamic services are two compositions of Web services, but the static services at present mainly take the form of a great limitation.In view of this situation,this paper attempts to put forward a framework for dynamic service composition system based on the technology of BPEL,analyzes the key problems of the system structure and their solutions.The Dijkstra algorithm is adopted as a service matching combination strategy to implement dynamic service composition system. Several aspects including service composition implementation request,decomposition,combination and verification problems are interpreted in detail.
SOA;dynamic services;BPEL
10.13853/j.cnki.issn.1672-3708.2014.06.005
(責(zé)任編輯:耿繼祥)
2014-10-30;
2014-11-17
董?。?980- ),男,江蘇鹽城人,講師,碩士,研究方向?yàn)槎嗝襟w信息處理。