翟小靜
咸陽師范學院 陜西 712000
消息中間件(Message Oriented Middleware,MOM),消息中間件是專門處理通信邏輯的中間件,它向上為其它應用元素屏蔽通信的復雜性,通過提供通用、一致、簡單的應用接口,為程序員隱藏通信協(xié)議的異構性和復雜性,從而大大簡化了分布式環(huán)境中的編程;向下為用戶解決各種網(wǎng)絡問題,如網(wǎng)絡資源的命名、事務管理、安全性、動態(tài)資源管理和查找定位等。
消息中間件提供消息的優(yōu)先級別,系統(tǒng)中提供五種級別的優(yōu)先級,按級別從低到高依次分為 VERY-LOW-MSGPRIORITY、LOW-MSG-PRIORITY、NORMAL-MSG-PRIORITY、HIGH-MSG-PRIORITY、VERY-HIGH-MSG-PRIORITY。優(yōu)先級高的消息插入到發(fā)送、接收隊列的前部,得到優(yōu)先處理。優(yōu)先級別只適用于普遍消息和用戶自定義消息,系統(tǒng)消息和主題消息不是通過用戶消息發(fā)送隊列發(fā)送,因而沒有優(yōu)先級的區(qū)別。
通過上一節(jié)對政務信息優(yōu)先級的分析,在現(xiàn)有消息中間件優(yōu)先級確定的基礎上引入動態(tài)優(yōu)先數(shù)調(diào)度算法,克服現(xiàn)有的優(yōu)先數(shù)法中優(yōu)先值不能改變的缺陷,動態(tài)優(yōu)先數(shù)調(diào)度法使得消息的優(yōu)先數(shù)在執(zhí)行過程中可以根據(jù)情況而改變。在政務處理過程中進行動態(tài)優(yōu)先數(shù)的設置進行消息調(diào)度更好的體現(xiàn)政府部門的公平效率性。在消息中間件中的消息優(yōu)先數(shù)確定上采取動態(tài)優(yōu)先數(shù)確定的方式。并且消息隊列采用多級隊列的排列方式。下面是基于動態(tài)優(yōu)先數(shù)調(diào)度算法的消息中間件算法。
對發(fā)送方和接收方的消息按照不同的級別設置幾個隊列,每個優(yōu)先數(shù)級別設置一個隊列,每隔一段時間對消息隊列中的消息存入時間進行判斷,設定一個時間數(shù),對超越一定時間的消息的優(yōu)先級進行更改。具體的設計流程如圖1所示。
圖1 動態(tài)優(yōu)先數(shù)算法設計模型
基于動態(tài)優(yōu)先數(shù)的消息中間件設計是對現(xiàn)有的消息中間件的靜態(tài)優(yōu)先級的改進。動態(tài)優(yōu)先級設計與靜態(tài)優(yōu)先級設計相比有很大的優(yōu)勢。其突出優(yōu)點在于動態(tài)優(yōu)先級的設定體現(xiàn)了消息事務執(zhí)行的公平性。以政府信息管理為例,政府部門有著不同的級別,那么上級所下達的任務,同級部門所傳送的消息,公眾在部門所辦理的業(yè)務這三種消息的級別應該有不同的設置,在消息眾多的情況下經(jīng)過一段長的時間,低優(yōu)先級的消息不被處理,等待的時間就比較的長。因而不能充分體現(xiàn)政府部門公平,公正的原則。采用動態(tài)優(yōu)先級設置,設定一個時間間隔,當消息的等待時間超越一定的時間間隔后就給該消息的優(yōu)先級升一個級別。因而動態(tài)優(yōu)先數(shù)的設置即照顧到優(yōu)先級別的高低又考慮到等待時間的長短。下面對靜態(tài)優(yōu)先數(shù)執(zhí)行效果和動態(tài)優(yōu)先數(shù)執(zhí)行效果差別做簡單的測試分析。
設五個優(yōu)先級,分別為1,2,3,4,5。假設1的優(yōu)先級最高,5的優(yōu)先級最低。用javascript語言生成一百個隨機數(shù)代表現(xiàn)實情況中各優(yōu)先級消息發(fā)送來的順序。具體的代碼與產(chǎn)生的隨機數(shù)如下:
下面的程序用于產(chǎn)生1-5的隨機數(shù):
連續(xù)一百次產(chǎn)生1-5的隨機數(shù)如下所示:
5545543222
1525242223
2134424335
2113243531
4343415552
4433112325
1552331555
1354452421
4311233523
1112115415
每一個隨機數(shù)都代表這一級別消息傳送到接收者的消息隊列,規(guī)定消息隊列的容量為十條,每取一條消息會再進一條消息。按照靜態(tài)優(yōu)先取消息執(zhí)行順序如下:
2122223222
3213442433
4211324343
1434341455
2443311232
5155233155
5135445242
1431123352
3111211541
5555555555
規(guī)定每處理一個消息花費時間為1小時,第一次取消息時消息隊列中就有十條消息,每取走一條消息,都有另外一條消息補充進來。規(guī)定在消息隊列中的消息每等待5小時就提升一個優(yōu)先級,對上數(shù)一級數(shù)據(jù)進行測試得到如表1的比較數(shù)據(jù)。
表1 態(tài)優(yōu)先數(shù)與動態(tài)優(yōu)先數(shù)等待時間分析
從表1的結果顯示得知利用動態(tài)優(yōu)先數(shù)設置,消息的平均等待處理時間和最長的等待處理時間都較靜態(tài)優(yōu)先數(shù)設置短。
以上分析數(shù)據(jù)是消息隊列容量為十條消息的情況下,表2的數(shù)據(jù)為水息隊列容量為二十條消息的情況,對靜態(tài)優(yōu)先數(shù)設置和動態(tài)優(yōu)先數(shù)設置的比對。
表2 靜態(tài)優(yōu)先數(shù)與動態(tài)優(yōu)先數(shù)等待時間分析
若取動態(tài)優(yōu)先數(shù)設置上面的分析均是以5小時等待時間為提升一個優(yōu)先級的標準,表3我們對上面的數(shù)據(jù)進行更進一步的分析,分別用五小時和三小時為提升優(yōu)先級的標準進行比對分析。
表3 靜態(tài)優(yōu)先數(shù)與動態(tài)優(yōu)先數(shù)等待時間分析
從表 3的結果可知采用動態(tài)優(yōu)先數(shù)設置時消息隊列設置以及提升優(yōu)先級的等待時間設置對消息提取平均等待時間,以及最長的等待時間的影響。用柱型圖表示如圖2、圖3所示。
圖2 消息隊列容量為十的動態(tài)靜態(tài)優(yōu)先數(shù)時間比較圖
圖3 動態(tài)優(yōu)先數(shù)不同時間設置結果比較
本文主要提出一種基于動態(tài)優(yōu)先數(shù)的消息中間件設計算法,并用測試數(shù)據(jù)進行了驗證分析,得出分析結果使用動態(tài)優(yōu)先數(shù)調(diào)度算法進行消息中間件中消息隊列設計使消息等待平均時間變短、消息隊列中的消息最長等待時間變短。兼顧了效率和公平的原則。
進一步研究的重點是把基于動態(tài)優(yōu)先數(shù)調(diào)度算法的消息中間件技術加以應用。
[1] 李建峰,許舒人,馬建剛.面向大規(guī)模數(shù)據(jù)集成消息中間件系統(tǒng)設計實現(xiàn)[J].計算機工程與設計.2008.
[2] 李輝,李緒志.基于消息分類的復合模式消息中間件研究.軟件時空[J].2007.
[3] Eugster P T,Pascal A Felber,Rachid Guerraoui,et al.The many faces of publish/subscribe[J].ACM Computing Surveys.2003.
[4] 胡雅慶.面向消息中間件的設計與實現(xiàn).計算機與現(xiàn)代化[J].200103.
[5] 徐遠芳.消息中間件在WEB服務中的應用及面向WEB服務的消息中間件設計[J].廣西大學碩士學位論文.2004.
[6] 王旭新.消息中間件研究與實現(xiàn)[J].南京理工大學碩士論文.2005.