專利名稱:一種基于冗余機制的高可用服務組合實現(xiàn)方法
技術領域:
本發(fā)明涉及一種基于冗余機制的高可用服務組合實現(xiàn)方法,屬于
Web服務組合技術領域。
背景技術:
近年來,隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,網(wǎng)絡上聚集了越來越多的資 源,而且資源的數(shù)目和類型日益增長,從而為基于服務的網(wǎng)絡軟件開發(fā) 提供了重要的基礎。同時,SOAP、 WSDL、 UDDI和BPEL等標準的制定 進一步促進了 Web服務技術及面向服務的軟件結構SOA的快速發(fā)展,使 得異構信息、異構平臺的共享與集成成為可能。在此背景下,基于服務 的分布式應用系統(tǒng)開發(fā)成為一個重要的方向。
目前,Web服務技術得到廣泛的接受,存在大量商用、開放源碼及 獨立開發(fā)的服務軟件。此外,Google、 Amazon等公司已開始對外提供商 用Web服務。Web服務技術可以用于解決不同的平臺/系統(tǒng)之間應用的整 合問題,為跨組織邊界的業(yè)務流程的自動化提供技術基礎,但由于服務 提供者的分工越來越細,并且為了保證重用性和可維護性等, 一般不將 復雜的業(yè)務邏輯封裝到單個的Web服務中。為了滿足用戶多樣性的需求, 實現(xiàn)完整的業(yè)務功能,需要把分布的獨立Web服務組合起來,形成增值 服務。因此,服務組合技術成為構建網(wǎng)絡化軟件的一種重要方法。
基于工作流的web服務組合是指把網(wǎng)絡上已經(jīng)存在的多個Web服務 按正確的結構組合起來,即通過使用Web服務工作流語言定義使用這些 Web服務的業(yè)務流程。 一般使用工作流語言描述Web服務組合形成的業(yè) 務流程指定一組Web服務操作的執(zhí)行順序,確定服務共享的數(shù)據(jù)、業(yè) 務流程涉的伙伴和各伙伴在業(yè)務流程中的角色,以及多個服務和組織是 如何參與等。其中,業(yè)務流程是指為實現(xiàn)一個特定業(yè)務目標通過web服 務組合能完成的各項活動集合。活動為業(yè)務流程中實現(xiàn)特定業(yè)務目標的 步驟,伙伴是業(yè)務流程的參與者。因此,根據(jù)Web服務工作流語言定義 出Web服務組合的工作流模型,工作流模型可以被工作流執(zhí)行引擎執(zhí)行。
通常,基于服務組合的網(wǎng)絡軟件開發(fā)要按照需求(功能和非功能需
4求)集成不同服務供應商提供的軟件服務實體。這些服務實體位于不同 的管理域,具有異構性、自治性和動態(tài)性等特點,如服務運行在不同系 統(tǒng)平臺之上、具有不同的自治策略(如訪問控制、事務處理策略'等),服 務的狀態(tài)和性質動態(tài)變化等等;同時,網(wǎng)絡應用的多樣性和復雜性增加, 許多應用不僅對軟件核心功能需求增多,而且對非功能的需求(如可用 性、可靠性和可信性等)也越來越高。因此,對服務組合系統(tǒng)的構造、 部署、管理、演化等機制,都提出了諸多挑戰(zhàn)。
在提高服務組合系統(tǒng)可用性方面,冗余技術是經(jīng)常采用的方法。在 服務器集群技術中,通過使用備用服務器或多臺服務器的并發(fā)執(zhí)行實現(xiàn) 系統(tǒng)容錯,提高服務器系統(tǒng)的可用性。在傳統(tǒng)的軟件技術中,也提出了N 版本程序設計和恢復塊等技術。但它們需要專門進行設計,在很大程度 上提高了軟件開發(fā)的成本?;诜战M合的軟件開發(fā)處于開放的互聯(lián)網(wǎng) 環(huán)境下,自然存在多個服務滿足相同的服務需求,可以通過發(fā)現(xiàn)相同功 能的服務節(jié)點為每個活動建立備選服務的隊列。通過配置冗余服務(即
為完成同一活動而選擇的多個功能相同的Web服務)改進服務組合的可用性。
基于服務組合的網(wǎng)絡軟件開發(fā)需要集成不同服務者提供的軟件服務 實體,這些服務實體具有異構性、自治性和動態(tài)性等特點。它們運行于 不同的系統(tǒng)平臺,位于不同的管理域內,采用不同的業(yè)務策略,并且服
務的狀態(tài)和性質不斷變化等等。在這種情況下,如何利用已經(jīng)存在的web 服務,通過服務組合技術構造高可用的網(wǎng)絡化軟件,達到提供商業(yè)應用 需要的可用性水平是仍然是一個需要解決的重要問題。
發(fā)明內容
本發(fā)明的目的是提供一種基于冗余機制的高可用服務組合實現(xiàn)方 法。該方法通過冗余機制選擇網(wǎng)絡中存在的相同功能的服務,并將它們 組織起來,提高服務組合的可用性,降低不可用情況的發(fā)生概率。
為實現(xiàn)上述的發(fā)明目的,本發(fā)明采用下述的技術方案 一種基于冗余機制的高可用服務組合實現(xiàn)方法,其特征在于
(1) 排除可用度不滿足基本要求的服務;
(2) 排序、選擇可用性和價格比值最好的服務作為每個活動的第一個 服務;
5(3) 計算服務組合的可用度值和花費,計算選擇因子并選該值最大的 服務添加到相應的活動上;
(4) 如果添加后違反約束,則取消最后選的服務,添加選擇因子次之 的服務;如果未違反約束,則迭代繼續(xù)選擇選擇因子最大的服務添加到 所述活動上;
(5) 所述活動接收到服務請求后,采用主動冗余方式進行響應,并運 行后續(xù)的服務。
其中,在所述步驟(l)中,所述可用度通過下式進行計算
、'r t:+7;
其中,夂表示服務、:的可用度,7;表示測量時間內該服務可用的時間,
ru表示對該服務的總測量時間,r 表示測量時間內服務不可用的時間。 在所述步驟(3)中,所述選擇因子通過下式進行計算
——;-
ac;(",)
其中,尸,丫",;j為選擇因子,A^'為當?shù)趇個活動選擇的服務數(shù)目從 變化
到 +/時引起的系統(tǒng)可用度變化,AC^)為總價格約束的變化。
所述步驟(5)中,在運行后續(xù)的服務時,處于等待狀態(tài)的可用性管理 模塊由定時觸發(fā)事件觸發(fā),進入檢測狀態(tài);
如果被檢測的服務狀態(tài)沒有變化,則由檢測狀態(tài)回到等待狀態(tài),等 待其他事件觸發(fā);
如果服務可用狀態(tài)發(fā)生變化,則觸發(fā)進入通知修復狀態(tài),通知冗余 服務優(yōu)化部件和構件服務管理部件查找并選擇新服務替換失效的構件服 務;
通知完成信息返回后,重新回到等待狀態(tài),等待其他事件觸發(fā)。
另外,可用性管理模塊也接收執(zhí)行引擎的出錯信息和服務信息管理 器統(tǒng)計的其它用戶的反饋信息;
所述可用性管理模塊接收到所述出錯信息后,由監(jiān)控狀態(tài)進入通知 修復狀態(tài)以實施失效服務的更換,通知完成信息返回后回到等待狀態(tài);
所述可用性管理模塊接收到所述反饋信息后,由監(jiān)控狀態(tài)進入檢測狀態(tài),檢測用戶關于服務失效的信息是否屬實,完成后回到等待狀態(tài)。
本發(fā)明提高了服務組合方法開發(fā)跨域應用軟件的可用性和可靠性。 通過選擇網(wǎng)絡中存在的相同功能的服務,組織、構造服務冗余機制,提 高服務組合的可用性,降低不可用情況的發(fā)生概率。
下面結合附圖和具體實施方式
對本發(fā)明作進一步的說明。 圖1顯示了服務冗余的三種方式; 圖2是進行可用性維護的狀態(tài)轉移圖。
具體實施例方式
實現(xiàn)基于冗余機制的高可用服務組合需要解決的問題包括如下的六 個方面
1. 如何定義服務的可用性?
2. 如何計算基于冗余機制的不同的組合模式的可用性?
3. 如何確定服務組合可用性目標?
4. 如何確定服務選擇的約束條件?
5. 如何通過算法實現(xiàn)服務的選擇?
6. 如何維護冗余服務的可用性?
下面分別進行詳細的說明。 1.定義服務的可用性
目前,web服務及服務組合的相關規(guī)范沒有給出如何度量web服務 及其組合的可用性,也未提供改進服務組合可用性的機制。在系統(tǒng)可靠 性研究中,提出了不同的特征量從多方面描述部件或系統(tǒng)的質量性質, 如可靠度、失效平均間隔時間(MTBF, Mean Time Between Failure)、平 均失效時間(MTTF, Mean Time To Failure)、可用度及故障頻度等,這 些特征量從不同的角度反映了部件或系統(tǒng)提供所需功能的能力。本發(fā)明 人考慮到實用和可量測性,定義了服務可用度來描述服務的可用情況。
服務的可用度是指服務在一定條件下、在特定的時間內能夠提供所 需要的功能的能力,具體定義為服務可以提供服務的時間與總的時間的 比率
,rs r, …式中 表示服務、',的可用度,r、表示測量時間內該服務可用的時間,
乙表示對該服務的總測量時間,7;表示測量時間內服務不可用的時間。2.基于冗余機制的不同的組合模式的可用性計算
參見圖1所示,服務冗余一共有三種方式主動冗余、被動冗余和混合冗余。在主動冗余中,接收到服務請求后,所有的服務都參與執(zhí)行,輸出執(zhí)行結果,根據(jù)可靠性要求水平確定收到一個、大部分還是全部的響應后,繼續(xù)運行后續(xù)的服務。該方法在只要有一個服務不出現(xiàn)故障時,對客戶的響應就不會中斷,如果選擇收到一個響應就繼續(xù)運行可以改善服務組合的性能,使得服務組合的執(zhí)行時間縮短。被動冗余中只有服務是一個主服務,處理服務請求,當主服務出現(xiàn)故障時,由一個備用服務替換主服務運行。由于需要更換服務、重發(fā)請求,導致響應會有一定的延遲,并且故障對用戶不是透明的?;旌先哂嘀锌梢杂幸粋€以上的服務是活動的,處理用戶請求,同時還有備用服務,這樣既可以改善服務組合的性能,還能避免服務出現(xiàn)故障時的延遲。
在基于流程的服務組合過程中, 一般采用四種基本組合方式,即順
序(sequence )、并行(parallel )、選擇(choice)禾口循環(huán)(iteration), 構
成服務或活動間的基本控制邏輯關系集合。原則上所有流程都可由這四
種基本結構來建模。
若活動。,b,...,fm之間分別為順序、并行、選擇組合或自循
環(huán)的關系,相應服務組合的可用度分別為=f[,);《』=f[,);
鈺,d叱)v, 4融。
= (1-/^*雄,)/(1叩"(?!?,其中,)表示各個
= 1 乂 產1
活動的可用度,由選中服務的可用度計算可得。設活動^分別選用了
個備選服務,得,尸!-^d-夂)。按上述四種基本組合方式組合形成的基于
冗余機制的服務組合的可用度計算公式見表1所示(此處假設服務冗余機制中的消息復制、切換和表決部件一直可用,即可用度為1。此時三種冗余方式可用度計算公式相同)。
可用度 計算公式
、"園 順序組合的可用度 =- j^i- ));'■ = 1,2,..""刀=U,...,( 2)力
々A
4,
并行組合的可用度4ww =^[(卜^(卜么;));'=),2".'"" = ,'2,…'"1 ( 3 )
選擇組合的可用度^爭fr—
(4)
自f盾環(huán)的可用度《r咖M卜p"(卜ft""',))/(卜;^(卜fto-個))) (5)
表1
3. 確定服務組合可用性目標
設完成活動。的候選服務的數(shù)目分別為,相交互的服務之間協(xié)議 順序和接口可以匹配,用^表示完成活動/7的第/個服務,相應的可用
度表示為々,,=U.....W,;, = U,...,7。本發(fā)明通過對每個活動選用主動冗余方式
提高服務組合的可用度,將該問題建模為一個整數(shù)規(guī)劃問題,使所選用
的服務的訪問價格之和滿足價格約束c—的條件下極大化服務組合的綜合
可用性Ac。
4. 確定服務選擇的約束條件
'l,當服務,被選用
令^
o,當服務y,沒被選用 ' ^
5 ^ ,
C,固-(H Y乂C ' ) S C師、., 、r , i , ,
則費用約束 y " ^l'2'…'^m'7;其中
^為選定的主服務訪問的花費《之和,C為花費的約束值,為簡化, 本文未考慮選用的服務的測試和維護成本。 5.實現(xiàn)冗余服務選擇的算法
在本發(fā)明中,實現(xiàn)服務選擇的算法有兩種可用度增加貪婪算法
(Availability Increase Greedy,簡稱AIG算法)和可用性價格比最優(yōu) (Availability/Price Best Algorithm,簡稱APB算法)。下面分別進行詳細 的說明。
AIG算法的輸入信息包括候選服務的可用度、價格,服務組合中的 活動及活動之間的控制邏輯關系;輸出為選中的服務和服務組合的可用 度。AIG算法首先對各活動的候選服務按可用度從大到小排序,然后選 擇可用性最好的服務作為每個活動的第一個服務,計算服務組合的可用 度值,接著從剩余未選的服務中選擇可用度最高的服務添加給相應的活 動,比較服務組合可用度的增加情況,選擇可用度增量最大的服務添加
9到服務組合中;如果添加后違反約束,則選擇可用度增加次之的服務;如果未違反約束,則繼續(xù)迭代,再次選擇可用度增加最大的服務,最后計算并輸出最終的選擇結果。
AIG算法可以適用于具有各種約束的服務選擇問題,并且具有較好的時間效率。但是當服務的可用度相差不多,而費用卻相差很大時,AIG算法就難以得出令人滿意的結果。
為此,本發(fā)明人設計了另一種冗余服務選擇算法,稱為APB算法。該算法的基本思想如下引入選擇因子,即用服務組合的可用度增量和相應成本增量的比值作為選擇增加哪個冗余服務的準則。每次迭代將選擇因子最大的服務,增加到相應的活動上。
選擇因子計算如下A("')=^^y (3)
其中"'一當?shù)?個活動選擇的服務數(shù)目從 變化到 + /時引起的系統(tǒng)可用度變化,即^". = ^"-,;與之對應,AC(",)反映總價格約束的變化,△C(",) = C(", + 1)-C(",)。
APB算法的輸入、輸出信息和AIG算法一樣。APB算法首先排除可用度不滿足基本要求的服務;然后排序、選擇可用性和價格比值最好服務作為每個活動的第一個服務;下一步計算服務組合的可用度值和花費,計算選擇因子并選該值最大的服務添加到相應的活動上;如果添加后違反約束,則取消最后選的服務,添加選擇因子次之的服務;如果未違反
約束,則迭代繼續(xù)選擇選擇因子最大的服務添加到相應活動上,最后計算輸出最終的選擇結果。
APB算法適用于候選服務的可用度相差不多,而費用卻相差較大時,選擇性價比最好的服務以改善服務組合整體的可用性。6.冗余服務的可用性維護
在冗余服務的可用性維護方面,本發(fā)明人采用基于事件的監(jiān)控方法。在收到執(zhí)行引擎發(fā)送的服務失效報告后,根據(jù)設定的策略,實施相應的維護動作,構件服務管理部件將搜索和選擇替代的服務,服務構造模塊更新受影響的BPEL文檔或重新構造流程。監(jiān)控部件還接收服務信息管理器綜合的服務反饋消息,如其它用戶發(fā)現(xiàn)使用的服務出現(xiàn)不可用或服務質量下降,將信息反饋給信息管理器,管理器收集、綜合這些信息后,
10根據(jù)要求(類似發(fā)布/訂閱機制)通知監(jiān)控部件實施相應的維護動作。
備用服務檢測部件負責檢查備用服務的可用狀態(tài)。由于服務提供者發(fā)布服務信息后很少更新,因此服務檢測模塊通過檢測備用服務的狀態(tài),及時替換失效備用服務,提高服務組合的可用性。檢測服務狀態(tài)會產生一定的開銷(費用、負載等),影響系統(tǒng)效率,需要根據(jù)策略設定適當?shù)臋z測頻率,本發(fā)明支持為不同的服務設定不同的檢測頻率。對于業(yè)務功能重要,愿意多付費的關鍵服務,可設置較高的檢測頻率;而對于不重要或不愿多支付費用的服務,可設置較低的檢測頻率。
綜合應用監(jiān)控和檢測的狀態(tài)轉移機制如圖2所示,其中等待狀態(tài)
(Waiting)指可用性管理模塊等待觸發(fā)的狀態(tài);檢測狀態(tài)(Detect)指可用性管理模塊向服務提供者發(fā)起檢測請求的狀態(tài);通知修復狀態(tài)
(Recovery Notify)指可用性管理模塊根據(jù)返回的服務失效信息通知服務組合構造器替換失效服務的狀態(tài)。監(jiān)控狀態(tài)(Monitor)指可用性管理模塊監(jiān)控服務組合執(zhí)行引擎的錯誤事件和用戶反饋信息的狀態(tài)。處于等待狀態(tài)的可用性管理模塊由定時觸發(fā)事件觸發(fā),進入檢測狀態(tài),運行檢測算法,如果被檢測的服務狀態(tài)沒有變化,則由檢測狀態(tài)回到等待狀態(tài),等待其他事件觸發(fā);如果服務可用狀態(tài)發(fā)生變化,則觸發(fā)進入通知修復狀態(tài),通知冗余服務優(yōu)化部件和構件服務管理部件査找并選擇新服務替換失效的構件服務,通知完成信息返回后,重新回到等待狀態(tài),等待其他事件觸發(fā)??捎眯怨芾砟K還接收執(zhí)行引擎的出錯信息,以及服務信息管理器統(tǒng)計的其它用戶的反饋信息。接收到出錯信息后,由監(jiān)控狀態(tài)進入通知修復狀態(tài),實施失效服務的更換,通知完成后返回等待狀態(tài)。接收到反饋信息,由監(jiān)控狀態(tài)進入檢測狀態(tài),檢測用戶關于服務失效的信息是否屬實,完成后返回等待狀態(tài)。
以上對本發(fā)明所述的基于冗余機制的高可用服務組合實現(xiàn)方法進行了詳細的說明。對本領域的一般技術人員而言,在不背離本發(fā)明實質精神的前提下對它所做的任何顯而易見的改動,都將構成對本發(fā)明專利權的侵犯,將承擔相應的法律責任。
1權利要求
1. 一種基于冗余機制的高可用服務組合實現(xiàn)方法,其特征在于(1)排除可用度不滿足基本要求的服務;(2)排序、選擇可用性和價格比值最好的服務作為每個活動的第一個服務;(3)計算服務組合的可用度值和花費,計算選擇因子并選該值最大的服務添加到相應的活動上;(4)如果添加后違反約束,則取消最后選的服務,添加選擇因子次之的服務;如果未違反約束,則迭代繼續(xù)選擇選擇因子最大的服務添加到所述活動上;(5)所述活動接收到服務請求后,采用主動冗余方式進行響應,并運行后續(xù)的服務。
2. 如權利要求1所述的基于冗余機制的高可用服務組合實現(xiàn)方法, 其特征在于所述步驟(l)中,所述可用度通過下式進行計算4』丄其中,夂表示服務、',的可用度,r、表示測量時間內該服務可用的時間,r。表示對該服務的總測量時間,?;表示測量時間內服務不可用的時間。
3. 如權利要求1所述的基于冗余機制的高可用服務組合實現(xiàn)方法, 其特征在于所述步驟(3)中,所述選擇因子通過下式進行計算<formula>formula see original document page 2</formula>其中,F(xiàn),Y",v)為選擇因子,AT.為當?shù)趇個活動選擇的服務數(shù)目從W,變化 到 + /時引起的系統(tǒng)可用度變化,AC(",)為總價格約束的變化。
4.如權利要求l所述的基于冗余機制的高可用服務組合實現(xiàn)方法,其特征在于所述步驟(5)中,在運行后續(xù)的服務時,處于等待狀態(tài)的可用性管理 模塊由定時觸發(fā)事件觸發(fā),進入檢測狀態(tài);如果被檢測的服務狀態(tài)沒有變化,則由檢測狀態(tài)回到等待狀態(tài),等 待其他事件觸發(fā);如果服務可用狀態(tài)發(fā)生變化,則觸發(fā)進入通知修復狀態(tài),通知冗余 服務優(yōu)化部件和構件服務管理部件査找并選擇新服務替換失效的構件服 務;通知完成信息返回后,重新回到等待狀態(tài),等待其他事件觸發(fā)。
5.如權利要求1所述的基于冗余機制的高可用服務組合實現(xiàn)方法, 其特征在于所述步驟(5)中,在運行后續(xù)的服務時,可用性管理模塊接收執(zhí)行引 擎的出錯信息和服務信息管理器統(tǒng)計的其它用戶的反饋信息;所述可用性管理模塊接收到所述出錯信息后,由監(jiān)控狀態(tài)進入通知 修復狀態(tài)以實施失效服務的更換,通知完成信息返回后回到等待狀態(tài);所述可用性管理模塊接收到所述反饋信息后,由監(jiān)控狀態(tài)進入檢測 狀態(tài),檢測用戶關于服務失效的信息是否屬實,完成后回到等待狀態(tài)。
全文摘要
本發(fā)明提供了一種基于冗余機制的高可用服務組合實現(xiàn)方法。該方法采用可用性價格比最優(yōu)算法,其基本思想為引入選擇因子,即用服務組合的可用度增量和相應成本增量的比值作為選擇增加哪個冗余服務的準則。每次迭代將選擇因子最大的服務,增加到相應的活動上。同時,該方法還采用了基于事件的監(jiān)控方法。與現(xiàn)有技術相比,本發(fā)明通過冗余機制選擇網(wǎng)絡中存在的相同功能的服務,并將它們組織起來,提高服務組合的可用性,降低不可用情況的發(fā)生概率。
文檔編號H04L1/22GK101488843SQ200810056340
公開日2009年7月22日 申請日期2008年1月16日 優(yōu)先權日2008年1月16日
發(fā)明者懷進鵬, 晉 曾, 揚 李, 杜宗霞, 婷 鄧, 郭慧鵬 申請人:北京航空航天大學