基于通用消息的持久化消息隊(duì)列設(shè)計(jì)_第1頁(yè)
基于通用消息的持久化消息隊(duì)列設(shè)計(jì)_第2頁(yè)
基于通用消息的持久化消息隊(duì)列設(shè)計(jì)_第3頁(yè)
基于通用消息的持久化消息隊(duì)列設(shè)計(jì)_第4頁(yè)
基于通用消息的持久化消息隊(duì)列設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于通用消息的持久化消息隊(duì)列設(shè)計(jì)第28卷第1期2021年1月北京工商大學(xué)(自然科學(xué)版)JournalofBeijingTechnologyandBusinessUniversity(NaturalScienceEdition)文章編號(hào):16711513(2021)O1-006904基于通用消息的持久化消息隊(duì)列設(shè)計(jì)郭盛興,王晶,廖建新(1.北京郵電大學(xué)網(wǎng)絡(luò)與交換技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京100876;2.東信北郵信息技術(shù),北京100191)摘要:一個(gè)成熟的分布式中間件應(yīng)提供不同進(jìn)程間尋址和通信能力,同時(shí)提供高可靠的通信服是這樣的一種中間件,為了改進(jìn)它的效勞質(zhì)量,本文充分利用了其尋址和通信優(yōu)勢(shì),引入

2、19,.5,1和持久化思想,設(shè)計(jì)了一種消息持久化隊(duì)列EbuptMessageQueue(EMQ).在實(shí)際應(yīng)用中,EMQ可為上層提供更加可靠的通信效勞質(zhì)量.EMQ支持持久化,也可以滿足非實(shí)時(shí)性消息通信的場(chǎng)景.關(guān)鍵詞:消息中間件;效勞質(zhì)量;消息隊(duì)列;持久化中圖分類號(hào):TN915.5文獻(xiàn)標(biāo)志碼:A中間件是一種定義于操作系統(tǒng)之上,應(yīng)用程序之下的一層軟件,它能使應(yīng)用之間進(jìn)行跨網(wǎng)絡(luò)協(xié)同工作,屏蔽了操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議的差異向應(yīng)用提供通信效勞.消息中間件支持在一個(gè)分布式應(yīng)用同分布式環(huán)境很好地封裝起來(lái),對(duì)外提供統(tǒng)一的接口,使得應(yīng)用能通過(guò)統(tǒng)一接口進(jìn)行開發(fā).通用消息(componentpacketofreahime

3、applicationprocessmanagementandcommunication,COPARTMACO)是一個(gè)抽象得比較好的消息中間件.對(duì)不同類型的上層消息增加同樣的底層消息頭,如圖1,這種消息稱為通用消息.使用通用消息的進(jìn)程間交互采用統(tǒng)一的協(xié)議,底層采用統(tǒng)一的方式通信,軟件功能差異主要表達(dá)進(jìn)程間通信需要,但通用消息是面向無(wú)連接的,只提供了消息尋址功能,不保證通信的可靠性,比照可靠性要求,提出了基于通用消息的持久化隊(duì)列(EbuptMessageQueue簡(jiǎn)稱EMQ)設(shè)計(jì),EMQ由服息頭版保長(zhǎng)消消分源源目目本留度息息片地會(huì)的的序消號(hào)字指類碼指址話地A列E息號(hào)體段示型示信號(hào)信話息息號(hào)012

4、456|10141l21222365535max圖1通用消息的消息結(jié)構(gòu)MACOpacketencapsulation務(wù)端和客戶端組成,效勞端提供集中式的消息接收,存儲(chǔ)和轉(zhuǎn)發(fā)效勞,客戶端可以通過(guò)效勞端發(fā)送和接收消息,客戶端和效勞端之間的通信采用請(qǐng)求應(yīng)答方式,效勞端具有消息持久化功能.1EMQ架構(gòu)設(shè)計(jì)EMQ部署結(jié)構(gòu)如圖2,其中包含3個(gè)域:消息隊(duì)列效勞域,生產(chǎn)者域,消費(fèi)者域.包含的組件說(shuō)明:1)ininit,消息隊(duì)列的守護(hù)進(jìn)程,負(fù)責(zé)啟動(dòng)本域內(nèi)的所有其他進(jìn)程,在子進(jìn)程異常退出后,重新啟動(dòng)收稿日期:20210912基金工程:國(guó)家杰出青年科學(xué)基金資助工程(60525110);國(guó)家973方案資助工程(200

5、7CB307100,2007CB307103);國(guó)家自然科學(xué)基金資助工程(60902051);電子信息產(chǎn)業(yè)開展基金資助工程(基于3G的移動(dòng)業(yè)務(wù)應(yīng)用系統(tǒng)).作者簡(jiǎn)介:郭盛興(1982一),男,內(nèi)蒙古通遼人,碩士研究生,研究方向?yàn)榫W(wǎng)絡(luò)智能化.王晶(1974一),女,山東聊城人,副教授,主要從事網(wǎng)絡(luò)智能化和IMS/NGN增值業(yè)務(wù)技術(shù)研究.廖建新(1965一),男,四川宜賓人,教授,博士,主要從事網(wǎng)絡(luò)智能化,IMS/NGN增值業(yè)務(wù)技術(shù)方面的研究.通訊作者.70北京工商大學(xué)(自然科學(xué)版)2021年1月重erverserver圖2EMQ部署結(jié)構(gòu)子進(jìn)程;2)inaccessd,控制臺(tái)接入效勞端進(jìn)程,接人它之

6、后,可以建立與本域內(nèi)的所有進(jìn)程的連接,輸入控制臺(tái)命令得到應(yīng)答;3)msgr,通用消息的消息分發(fā)模塊,用于轉(zhuǎn)發(fā)本域內(nèi)的進(jìn)程和外部進(jìn)程之間的交互消息,根據(jù)實(shí)際需要,也可以有一個(gè)或者多個(gè);4)emqserver,EMQ效勞端,持久化消息隊(duì)列的核心,負(fù)責(zé)接收,存儲(chǔ)和轉(zhuǎn)發(fā)消息;5)emqclient,與EMQ效勞端交互的客戶端,EMQ客戶端分為生產(chǎn)者和消費(fèi)者,生產(chǎn)者發(fā)送消息給消息隊(duì)列效勞端,消費(fèi)者從通用消息效勞端接收消息并處理.EMQ效勞端的結(jié)構(gòu)如圖3:圖3持久化消息隊(duì)列效勞端結(jié)構(gòu)效勞端底層通信鏈路層是通用消息層,EmqManager管理EMQ效勞端的兩個(gè)最主要的數(shù)據(jù)結(jié)構(gòu),與客戶端的連接EmqConne

7、etion和持久化的消息隊(duì)列EmqQueue,連接與消息隊(duì)列間通過(guò)隊(duì)列名QueueName相互關(guān)連.通用消息是面向無(wú)連接的,所以EMQ客戶端與下,每個(gè)進(jìn)程都有唯一的進(jìn)程地址標(biāo)識(shí),包括三部的時(shí)候,客戶端請(qǐng)求參數(shù)中含有隊(duì)列名,效勞端保存與客戶端的連接,進(jìn)程地址標(biāo)識(shí)與隊(duì)列的對(duì)應(yīng)關(guān)系,客戶端收到效勞端連接響應(yīng)后保存與效勞端的連接隊(duì)列建立多條連接的情況,如Java編程中客戶端進(jìn)程采用多線程,這時(shí)每個(gè)線程會(huì)與效勞端的一個(gè)隊(duì)列有一個(gè)虛擬連接,將每一個(gè)線程作為通用消息的一個(gè)實(shí)例.考慮通用性,持久化隊(duì)列設(shè)計(jì)成相對(duì)獨(dú)立的模塊,按照EMQ消息持久化所要求的接口能力提供操要包括:ereateQueue(創(chuàng)立隊(duì)列),d

8、estroyQueue(刪除隊(duì)列),enQueue(消息人隊(duì)),deQueue(消息出隊(duì)),行的實(shí)現(xiàn)方式:1)基于文件和索引的實(shí)現(xiàn)定義每條消息的持久化存儲(chǔ)結(jié)構(gòu),將通用消息整個(gè)消息的長(zhǎng)度,消息頭和消息體及消息是否已經(jīng)被"消費(fèi)"的標(biāo)識(shí)存儲(chǔ)到文件,在內(nèi)存中保存每條消息在文件中的位置索引,讀取消息時(shí)直接通過(guò)索引小的情況下是一種比較好的選擇.2)基于開源工程的實(shí)現(xiàn)基于SQLite來(lái)實(shí)現(xiàn)持久化隊(duì)列的存儲(chǔ),在SQLite根底上做一層封裝,提供EMQ所需的接口.基于SQLite實(shí)現(xiàn)的持久化隊(duì)列,對(duì)于比較大的數(shù)據(jù)量也能獲得比較好的性能.除SQLite外,還可以考慮BerkeleyDB,red

9、is等其他開源工程,在其開放的API根底上封裝為EMQ提供所需的接口即可.2消息交互流程設(shè)計(jì)生產(chǎn)者與消費(fèi)者間核心的消息交互流程如圖4.1)生產(chǎn)者依據(jù)負(fù)荷分擔(dān)策略從幾個(gè)效勞端連接中選擇一個(gè)連接,發(fā)送消息請(qǐng)求;2)效勞端收到消息后,找到消費(fèi)者進(jìn)程地址標(biāo)識(shí)對(duì)應(yīng)的持久化隊(duì)列,并將消息持久化保存到隊(duì)列中;3)效勞端保存消息后將操作結(jié)果響應(yīng)給生產(chǎn)者;4)生產(chǎn)者依據(jù)響應(yīng)結(jié)果斷定消息如何處理;5)當(dāng)消費(fèi)者連接對(duì)應(yīng)的隊(duì)列中有數(shù)據(jù)時(shí),效勞端將每次取出一條消息發(fā)送給消費(fèi)者;6)消費(fèi)者收到消息后首先給效勞端消費(fèi)消息第28卷第1期郭盛興等:基于通用消息的持久化消息隊(duì)列設(shè)計(jì)71發(fā)送消息請(qǐng)求發(fā)送消息響應(yīng)發(fā)送消息請(qǐng)求發(fā)送消息

10、響應(yīng).皇墮查喜曩;消費(fèi)消請(qǐng)求一消費(fèi)消響應(yīng)消費(fèi)消息響應(yīng)圖4消息交互流程響應(yīng);表1操作類型定義7)消費(fèi)者對(duì)收到的消息進(jìn)行"消費(fèi)"處理.Tab?1Defineofmessage.perato"3接口設(shè)計(jì)EMQ客戶端和效勞端的通信多數(shù)采用請(qǐng)求一格式如圖5.操作類型操作參數(shù)O圖5消息格式1)操作類型:用于區(qū)分對(duì)隊(duì)列的不同操作,為一字節(jié)整型;2)操作參數(shù):可以為任意長(zhǎng)度,但是由于EMQ消息使用通用消息的消息體承載,所以操作參數(shù)最大長(zhǎng)度受通用消息一個(gè)包的最大長(zhǎng)度限制.EMQ客戶端與效勞端之間接口消息的操作類型編碼和操作參數(shù)定義如表1.操作結(jié)果0表示成功,非0表示失敗,表2是各種

11、主要操作結(jié)果代碼及說(shuō)明.4流量控制與效勞質(zhì)量流量控制機(jī)制理想情況下可以指示任意時(shí)刻發(fā)送方發(fā)送消息的速率或數(shù)量,確保接受方的資源不被耗盡.操型操作說(shuō)明操作參數(shù)OxO1創(chuàng)立生產(chǎn)者連接請(qǐng)求以0結(jié)尾的字符串Ox81創(chuàng)立生產(chǎn)者連接應(yīng)答操作結(jié)果,四字節(jié)整型Ox02關(guān)閉生產(chǎn)者連接請(qǐng)求無(wú)0x82關(guān)閉生產(chǎn)者連接應(yīng)答操作結(jié)果,四字節(jié)整型Ox03創(chuàng)立消費(fèi)者連接請(qǐng)求以0結(jié)尾的字符串0x83創(chuàng)立消費(fèi)者連接應(yīng)答操作結(jié)果,四字節(jié)整型0x04關(guān)閉消費(fèi)者連接請(qǐng)求無(wú)0x84關(guān)閉消費(fèi)者連接應(yīng)答操作結(jié)果,四字節(jié)整型Ox05發(fā)送消息請(qǐng)求0x85發(fā)送消息應(yīng)答Ox06消費(fèi)消息請(qǐng)求0x86消費(fèi)消息應(yīng)答消息序號(hào)+消息內(nèi)容消息序號(hào)'+操

12、作結(jié)果,四字節(jié)整型消息序號(hào)+消息內(nèi)容消息序號(hào)'+操作結(jié)果,四字節(jié)整型OxOF新效勞端可用通知無(wú)Ox20連接檢測(cè)請(qǐng)求無(wú)OxA0連接檢測(cè)應(yīng)答操作結(jié)果,四字節(jié)整型消息序號(hào)為四字節(jié)整型,取值范圍0】【000OO000OxFFFFFFFF,在一條EMQ連接上循環(huán)使用,作為一段時(shí)間內(nèi)一條消息的唯一標(biāo)識(shí),將應(yīng)答消息對(duì)應(yīng)到請(qǐng)求消息.表2操作結(jié)果代碼定義操作結(jié)果代碼說(shuō)明操作成功隊(duì)列不存在連接未建立隊(duì)列保存消息失敗消息格式不合法超過(guò)接收窗口大小72北京工商大學(xué)(自然科學(xué)版)2021年1月效勞端采用基于滑動(dòng)窗口的流量控制機(jī)制,針對(duì)每條消費(fèi)者連接設(shè)置一個(gè)發(fā)送窗口,當(dāng)發(fā)送出去但還沒(méi)有收到響應(yīng)的消息數(shù)量到達(dá)窗口大

13、小或收到操作結(jié)果代碼為"超過(guò)接收窗口大小"的應(yīng)答時(shí),效勞端延遲發(fā)送消息.對(duì)于每條生產(chǎn)者連接,效勞端采用接收窗口來(lái)進(jìn)行流量控制,當(dāng)收到一條消息,如果未發(fā)送應(yīng)答的消息數(shù)量到達(dá)窗口大小時(shí),應(yīng)答"超過(guò)接收窗口大小"的操作結(jié)果代碼,發(fā)送方那么延遲發(fā)送消息.消費(fèi)者采用效勞端同樣的流量控制機(jī)制和錯(cuò)誤超時(shí)重傳策略.效勞端與客戶端采用請(qǐng)求一應(yīng)答機(jī)制,當(dāng)應(yīng)答錯(cuò)誤和應(yīng)答超時(shí)通過(guò)消息重傳來(lái)保證消息不被喪失,而且EMQ隊(duì)列效勞端具有持久化功能,因此可以有效保證效勞端與客戶端之間消息通信的效勞質(zhì)量.5結(jié)束語(yǔ)為發(fā)揮通用消息的作為底層通信模塊的優(yōu)勢(shì),同時(shí)彌補(bǔ)其在效勞質(zhì)量方面的缺乏,在通

14、用消息基務(wù)端與客戶端之間基于請(qǐng)求一應(yīng)答方式,當(dāng)請(qǐng)求應(yīng)答錯(cuò)誤和應(yīng)答超時(shí)進(jìn)行消息重傳,效勞端對(duì)消息持久化,這些機(jī)制可以更加有效地保證消息隊(duì)列的效勞質(zhì)量.在實(shí)際應(yīng)用中,設(shè)計(jì)提高了通用消息的效勞質(zhì)量,但由于消息持久化的引人卻付出了性能的代價(jià),面對(duì)當(dāng)前各種應(yīng)用中越來(lái)越大量的交互消息及實(shí)時(shí)性要求,性能又是非常重要的,所以研究更高效率持久化隊(duì)列,設(shè)計(jì)一種無(wú)論對(duì)小數(shù)據(jù)量還是大數(shù)據(jù)量消息交互均有良好的性能表現(xiàn)的隊(duì)列,是后續(xù)研究重要的努力方向.參考文獻(xiàn)1李琪林,劉強(qiáng),周明天.論中間件技術(shù)及其分類J.四川I師范大學(xué):自然科學(xué)版,2001,24(6):657660.的性能建模與分析J.北京郵電大學(xué):自然科學(xué)版,200

15、6,29(3):7680.網(wǎng)SCP的設(shè)計(jì)J.現(xiàn)代電信科技,2005(2):1013.4SunMicrosystemsInc.JavaTMMessageServiceSpecifi?cationFinalRelease1.1EB/OL.20020412.5CiscoSystems.AMQP,AGeneral-PurposeMiddlewareStandardvO一10EB/OL.20061020. ://confluence/display/AMQP/AMQP+Specification.析J.計(jì)算機(jī)系統(tǒng)應(yīng)用,2005(1O):5053.DESIGNoFPERSISTE

16、NCEMESSAGEQUEUESBASEDGUOSheng.xing一,WANGJing一,LIAOJianxin'(1.StateKeyLabofNetworkingandSwitchingTechnology,BeijingUniversityofPostsandTelecommunications,Beijing100876,China;2.EBUPTInformationTechnologyCoLtd,Beijing100191,ChinaAbstract:Amaturedistributedsystemmiddlewareshouldprovideaddressing,communicationbetweenMACOissuchamiddle-ware.Toimproveitsqualityofservice,thepapertookadvantageofitsaddressingandcommunicationa'bilities.inductedmessagequeueandpersistence,designedEbuptMessageQueue(EMQ).

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論