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