李 東, 吳 靜
(西南科技大學 信息工程學院,四川 綿陽 621010)
隨著企業信息化的深入,越來越多的企業管理流程需求已經無法用普通辦公自動化(OA,Office Automation)系統來滿足,分布式工作流(Workflow)、業務流程管理(BPM,Business Process Management)系統逐漸取代原先的企業管理流程,在ERP/B2C等大型企業應用領域得到廣泛的應用。但是必須看到就目前分布式工作流技術無論是在系統柔性還是在負載均衡性方面都有著明顯的不足,提高工作流管理系統整體效率的一個關鍵點是:用合理的負載均衡調度策略來提高工作流引擎性能。
工作流引擎負載均衡策略需要涉及一下內容:
1)通過一種合理的方式描述各個節點初始化時自身的負載信息。
2)系統對各節點負載的信息實時匯總,產生負載信息匯總表。
3)選擇合適的均衡調度策略。
4)系統負載均衡策略發生變化時保證系統的性能穩定。
工作流管理聯盟(WfMC)對于工作流的經典定義為:全部或者部分由計算機支持或自動處理的業務過程。工作流管理系統是通過執行經過計算的流程定義去支持一批專業門設定的業務流程,它被用來支持定義、管理和執行工作流程,使得業務過程執行達到最大效率。圖1是WfMC提出的工作流管理系統參考模型。

圖1 工作流管理系統參考模型
分布式工作流系統一般劃分為3個部分:工作流體系結構的分布;工作流引擎的分布;工作流模型的分布。其中工作流引擎的分布是整個分布式系統的核心。
一個工作流管理系統可以包含一個或多個引擎,并通過API向外部提供5個方面的功能服務,這些功能分別為[1]:
1)接口 1-流程定義的導入導出,一般采用XML格式的流程定義。
2)接口2-同客戶端應用程序和工作列表處理程序之間的交互,從而實現人與工作流引擎的交流和溝通。
3)接口3-軟件工具和應用程序的調用,讓第三方系統參與進來。
4)接口4-不同工作流管理系統之間的協同工作,達到連接各個不同的工作流引擎和系統。
5)接口5-管理和監視功能,主要用來搜集管理信息。
其中接口4,如:WebGIS作為Internet影響巨大的Web服務應用,可以實現分布式網絡地理信息系統架構等[2]。
針對目前企業系統客戶訪問過多,多個任務流程的進行所消耗的資源和時間各不相同,采取何種方式進行分布式引擎的有效負載均衡顯得尤為重要,所以采取有效負載均衡使得系統達到最高運行效率。
負載均衡分類:靜態負載均衡和動態負載均衡[3]。靜態負載均衡算法只能對整個系統做一些預判,無法隨著系統環境和客戶需求的變化而變化,而動態算法的使用相對較多,因為動態算法對實際情況的應用更為合適;實現動態算法需要對系統的信息進行實時收集、分析和處理,所以實現起來會給系統帶來額外的開銷,在實際系統開發中,開發人員只是簡單的采取隨機、輪詢等算法,這樣做系統效率提高不是很明顯。
典型的動態負載均衡算法有[4]:發送者啟動算法、接受者啟動算法、對稱啟動算法、自適應算法等;相比之下前3種算法都不能適應系統狀態的變化,難以滿足當前企業業務流程的復雜和多變性,自適應算法可以根據系統本身狀態的變化對應修改某些參數及其策略來適應當前任務的變化,因此,自適應算法可更好的適應各種狀態下的負載均衡問題。
動態負載均衡定位策略:輪詢法、最快響應法、最少連接法、隨機法、哈希法(HASH)等。
對現有動態負載均衡策略進行研究和總結[5-6]:
1)大多數動態負載均衡策略只能用在指定的系統中才能達到最高的效率,還沒有一種策略能夠完全適用所有系統。
2)沒有統一負載信息指標的參數化,因為影響因素多變。
3)引擎進行任務調度時產生的抖動問題,由于信息傳遞存在延時、受阻等通信瓶頸問題,使得任務在節點間迂回得不到有效的執行,節點都處于等待狀態。
4)負載任務優先等級問題。
根據以上分析在異構環境下的分布式工作流系統負載均衡需要做到:負載信息的評估;選擇何種任務分配策略;記錄引擎當前執行任務的信息。
負載均衡是由多臺服務器以對稱的方式組成一個服務器集合,每臺服務器都具有等價的地位,都可以單獨對外提供服務而無須其他服務器的輔助。
定義1:設定一個系統初始負載(Start Load),記做iS;iW是系統節點的比例參數;
定義2:iL表示為節點i當前的可用負載值;
定義 4:由節點的初始值和動態負載值可得出當前節點的負載值,記做(K為系數);
定義5:根據WfMC規范的描述流程的執行時間,包括執行引擎處理執行時間、活動資源較色執行時間、非工作日時間;這里簡單sT定義為流程開始時間,eT定義為流程結束時間,則流程執行時間為
定義6:定義LL(Low Load)為負載輕載門限,HL(Heavy Load)為負載重載門限;則:
1)當nL≤LL時,節點狀態為輕載。
2)當LL<nL<HL時,節點狀態為適載。3)當nL≥HL時,節點狀態為重載。

表1 節點狀態
有了節點狀態表可以根據節點狀態表的實時信息進行任務分配,保證每個節點任務的均衡,LL(輕載)節點首先分配到任務。
假設系統引擎有若干個負載任務引擎、各節點自身負載信息表和管理者匯總負載信息表組成,負載任務引擎內部以及負載任務引擎與負載自身信息表和管理者匯總負載信息表之間通過消息傳送進行實時系統通信。引擎任務調度模型如圖2所示。

圖2 引擎任務調度模型
調度進程的作用是:①更新負載自身信息表;②遍歷管理員匯總負載信息表;③判斷節點負載狀態;④負載與其他執行引擎間的通信。
基于以上所設計的調度模型,采用了靜態分配和動態均衡相結合的策略進行負載均衡,首先初始化系統時,先預估個節點的負載承載量,然后按節點承載量靜態分配任務給各個節點,在系統運行階段采用動態負載均衡策略來動態調整各個節點的負載以達到均衡[7-8]。
動態負載均衡調度算法:
if(系統初始化)
{1,各節點周期性收集自身負載信息,根據負載信息計算實時負載值iL,判斷節點是發送者、接受者還是保持狀態,并同步更新自身信息表;
2,管理者周期性收集系統中各負載的信息;
if(實時負載平均值nL {4,該節點處于輕載,發送者查詢接受節點,定位目標節點; if(是否到目標節點) { if(該節點是否是接受節點) {接受負載任務;} if(接受負載任務后是否重載){接受任務負載;} else{如果重載返回4} } else {重新定位目標節點,返回4} } if(實時負載平均值nL>HL) {5,該節點處于重載,接受者查詢發送節點,定位目標節點; if(是否找到目標節點) { if(是發送節點) {分配任務給請求節點;} else{重新定位目標節點返回5;} } }執行負載均衡后的各節點任務隊列; if(各節點任務隊列執行完畢){結束算法} else {轉到1} } 算法中前3步為調度策略的重點,異同與一般的輪詢和隨機算法:①初始化后計算機系統通過管理員收集的負載信息表對整個系統的平均負載進行計算;②能夠實時反應整個系統的負載信息;③通過判斷調度負載使系統達到平衡;④算法實現思路清晰,減輕引擎工作負擔,節省系統資源。 在現有的開源工作流平臺基礎上,完成工作流系統研究主要有一下幾步[6]: 編寫流程定義(XML語言);部署流程到平臺;加載流程;啟動流程;執行任務;完成任務。 算法主要類圖如圖3所示。 圖3 算法類 EngineLoad類:提供引擎啟動、停止等操作;User類:主要負責任務的創建、執行、發送和接受;GetResource類:負責動態負載信息值的計算等內容;Task類:實現任務的標記、狀態、發送時間、接受時間、創建時間、刪除任務等操作;Manage類:主要進行系統平均負載的計算;NodeLoadInfo類:負責負載信息參數的存儲和讀取;LoadBalance類:通過調用GetResource類和NodeLoadInfo類達到負載均衡目標。 在相同運行環境下,選擇300個商業任務實例活動,來比較輪詢調度、隨機法和負載均衡調度法3個不同方法的延時反應T,如圖4所示。 圖4 均衡調度延時對比 由圖4可以看出輪詢調度可以保證每個引擎的流程實例數延時相對較大,隨著實例的增加而快速增加;隨機法調度延時同樣也是隨著流程實例的增加而增加,但是變化比較漂浮不定;而負載均衡調度可以保證當任務實例達到200左右時每個引擎負載相差不會太遠,保證了每個任務實例完成的實時性,從而對整個系統的效率有明顯的提高。 從目前工作流系統發展趨勢來看引擎的分布式是一個必然的趨勢,隨之帶來的節點負載均衡問題尤為嚴重,針對這些問題提出了一種動態負載均衡策略,并通過工作流引擎負載參數化、調度模型的設計以及具體的算法流程等方面進行了闡述,達到負載均衡的效果,相比于傳統的加權輪詢算法、隨機法有著明顯的優勢。不足的是該策略采取集中式管理,須對節點負載管理采取進一步優化,及優化網絡數據流量傳輸方式[9]。 [1] 胡奇.JBPM4工作流應用開發指南[M].北京:電子工業出版社,2010:9-16. [2] 賈梁,周繼,董麗麗.基于中間件的分布式WebGIS架構的研究[J].通信技術,2009,42(01):177-179. [3] 譚宜勇,王銳,范永順,等.分布式工作流中的自適應實時任務調度方法[J].計算機集成制造系統,2010,16(09):1887-1895. [4] 張寧,余霏.分布式工作流技術研究綜述[J].貴州大學學報,2008,25(01):84-87. [5] BOUKERCHE A,DE GRANDE R E.Dynamic Load Balancing Using Grid Services for HLA-Based Simulations on Large-Scale Distributed Systems[C]//Distributed Simulation and Real Time Applications. Singapore:IEEE, 2009:175-183. [6] YANG C C,CHEN C,CHEN J Y.Random Early Detection Web Servers for Dynamic Load Balancing[C]//Pervasive Systems,Algorithms, and Networks.Kaohsiung Taiwan:IEEE Conference Publications,2009:364-368. [7] 李志遠,胡慶輝.Web Service構建多層分布式職稱申報評價系統[J].通信技術,2008,41(09):221. [8] 田波.MPLS負載均衡實現技術[J].信息安全與通信保密,2007(05):155-157. [9] Radware公司.全局負載均衡流量優化網絡數據傳輸[J].信息安全與通信保密,2005(06):63-64.4 實驗比較
4.1 調度算法的實現

4.2 實驗結果

5 結語