版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于通用消息的持久化消息隊列設計第28卷第1期2021年1月北京工商大學(自然科學版)JournalofBeijingTechnologyandBusinessUniversity(NaturalScienceEdition)文章編號:16711513(2021)O1-006904基于通用消息的持久化消息隊列設計郭盛興,王晶,廖建新(1.北京郵電大學網(wǎng)絡與交換技術國家重點實驗室,北京100876;2.東信北郵信息技術,北京100191)摘要:一個成熟的分布式中間件應提供不同進程間尋址和通信能力,同時提供高可靠的通信服是這樣的一種中間件,為了改進它的效勞質量,本文充分利用了其尋址和通信優(yōu)勢,引入
2、19,.5,1和持久化思想,設計了一種消息持久化隊列EbuptMessageQueue(EMQ).在實際應用中,EMQ可為上層提供更加可靠的通信效勞質量.EMQ支持持久化,也可以滿足非實時性消息通信的場景.關鍵詞:消息中間件;效勞質量;消息隊列;持久化中圖分類號:TN915.5文獻標志碼:A中間件是一種定義于操作系統(tǒng)之上,應用程序之下的一層軟件,它能使應用之間進行跨網(wǎng)絡協(xié)同工作,屏蔽了操作系統(tǒng)和網(wǎng)絡協(xié)議的差異向應用提供通信效勞.消息中間件支持在一個分布式應用同分布式環(huán)境很好地封裝起來,對外提供統(tǒng)一的接口,使得應用能通過統(tǒng)一接口進行開發(fā).通用消息(componentpacketofreahime
3、applicationprocessmanagementandcommunication,COPARTMACO)是一個抽象得比較好的消息中間件.對不同類型的上層消息增加同樣的底層消息頭,如圖1,這種消息稱為通用消息.使用通用消息的進程間交互采用統(tǒng)一的協(xié)議,底層采用統(tǒng)一的方式通信,軟件功能差異主要表達進程間通信需要,但通用消息是面向無連接的,只提供了消息尋址功能,不保證通信的可靠性,比照可靠性要求,提出了基于通用消息的持久化隊列(EbuptMessageQueue簡稱EMQ)設計,EMQ由服息頭版保長消消分源源目目本留度息息片地會的的序消號字指類碼指址話地A列E息號體段示型示信號信話息息號012
4、456|10141l21222365535max圖1通用消息的消息結構MACOpacketencapsulation務端和客戶端組成,效勞端提供集中式的消息接收,存儲和轉發(fā)效勞,客戶端可以通過效勞端發(fā)送和接收消息,客戶端和效勞端之間的通信采用請求應答方式,效勞端具有消息持久化功能.1EMQ架構設計EMQ部署結構如圖2,其中包含3個域:消息隊列效勞域,生產(chǎn)者域,消費者域.包含的組件說明:1)ininit,消息隊列的守護進程,負責啟動本域內的所有其他進程,在子進程異常退出后,重新啟動收稿日期:20210912基金工程:國家杰出青年科學基金資助工程(60525110);國家973方案資助工程(200
5、7CB307100,2007CB307103);國家自然科學基金資助工程(60902051);電子信息產(chǎn)業(yè)開展基金資助工程(基于3G的移動業(yè)務應用系統(tǒng)).作者簡介:郭盛興(1982一),男,內蒙古通遼人,碩士研究生,研究方向為網(wǎng)絡智能化.王晶(1974一),女,山東聊城人,副教授,主要從事網(wǎng)絡智能化和IMS/NGN增值業(yè)務技術研究.廖建新(1965一),男,四川宜賓人,教授,博士,主要從事網(wǎng)絡智能化,IMS/NGN增值業(yè)務技術方面的研究.通訊作者.70北京工商大學(自然科學版)2021年1月重erverserver圖2EMQ部署結構子進程;2)inaccessd,控制臺接入效勞端進程,接人它之
6、后,可以建立與本域內的所有進程的連接,輸入控制臺命令得到應答;3)msgr,通用消息的消息分發(fā)模塊,用于轉發(fā)本域內的進程和外部進程之間的交互消息,根據(jù)實際需要,也可以有一個或者多個;4)emqserver,EMQ效勞端,持久化消息隊列的核心,負責接收,存儲和轉發(fā)消息;5)emqclient,與EMQ效勞端交互的客戶端,EMQ客戶端分為生產(chǎn)者和消費者,生產(chǎn)者發(fā)送消息給消息隊列效勞端,消費者從通用消息效勞端接收消息并處理.EMQ效勞端的結構如圖3:圖3持久化消息隊列效勞端結構效勞端底層通信鏈路層是通用消息層,EmqManager管理EMQ效勞端的兩個最主要的數(shù)據(jù)結構,與客戶端的連接EmqConne
7、etion和持久化的消息隊列EmqQueue,連接與消息隊列間通過隊列名QueueName相互關連.通用消息是面向無連接的,所以EMQ客戶端與下,每個進程都有唯一的進程地址標識,包括三部的時候,客戶端請求參數(shù)中含有隊列名,效勞端保存與客戶端的連接,進程地址標識與隊列的對應關系,客戶端收到效勞端連接響應后保存與效勞端的連接隊列建立多條連接的情況,如Java編程中客戶端進程采用多線程,這時每個線程會與效勞端的一個隊列有一個虛擬連接,將每一個線程作為通用消息的一個實例.考慮通用性,持久化隊列設計成相對獨立的模塊,按照EMQ消息持久化所要求的接口能力提供操要包括:ereateQueue(創(chuàng)立隊列),d
8、estroyQueue(刪除隊列),enQueue(消息人隊),deQueue(消息出隊),行的實現(xiàn)方式:1)基于文件和索引的實現(xiàn)定義每條消息的持久化存儲結構,將通用消息整個消息的長度,消息頭和消息體及消息是否已經(jīng)被"消費"的標識存儲到文件,在內存中保存每條消息在文件中的位置索引,讀取消息時直接通過索引小的情況下是一種比較好的選擇.2)基于開源工程的實現(xiàn)基于SQLite來實現(xiàn)持久化隊列的存儲,在SQLite根底上做一層封裝,提供EMQ所需的接口.基于SQLite實現(xiàn)的持久化隊列,對于比較大的數(shù)據(jù)量也能獲得比較好的性能.除SQLite外,還可以考慮BerkeleyDB,red
9、is等其他開源工程,在其開放的API根底上封裝為EMQ提供所需的接口即可.2消息交互流程設計生產(chǎn)者與消費者間核心的消息交互流程如圖4.1)生產(chǎn)者依據(jù)負荷分擔策略從幾個效勞端連接中選擇一個連接,發(fā)送消息請求;2)效勞端收到消息后,找到消費者進程地址標識對應的持久化隊列,并將消息持久化保存到隊列中;3)效勞端保存消息后將操作結果響應給生產(chǎn)者;4)生產(chǎn)者依據(jù)響應結果斷定消息如何處理;5)當消費者連接對應的隊列中有數(shù)據(jù)時,效勞端將每次取出一條消息發(fā)送給消費者;6)消費者收到消息后首先給效勞端消費消息第28卷第1期郭盛興等:基于通用消息的持久化消息隊列設計71發(fā)送消息請求發(fā)送消息響應發(fā)送消息請求發(fā)送消息
10、響應.皇墮查喜曩;消費消請求一消費消響應消費消息響應圖4消息交互流程響應;表1操作類型定義7)消費者對收到的消息進行"消費"處理.Tab?1Defineofmessage.perato"3接口設計EMQ客戶端和效勞端的通信多數(shù)采用請求一格式如圖5.操作類型操作參數(shù)O圖5消息格式1)操作類型:用于區(qū)分對隊列的不同操作,為一字節(jié)整型;2)操作參數(shù):可以為任意長度,但是由于EMQ消息使用通用消息的消息體承載,所以操作參數(shù)最大長度受通用消息一個包的最大長度限制.EMQ客戶端與效勞端之間接口消息的操作類型編碼和操作參數(shù)定義如表1.操作結果0表示成功,非0表示失敗,表2是各種
11、主要操作結果代碼及說明.4流量控制與效勞質量流量控制機制理想情況下可以指示任意時刻發(fā)送方發(fā)送消息的速率或數(shù)量,確保接受方的資源不被耗盡.操型操作說明操作參數(shù)OxO1創(chuàng)立生產(chǎn)者連接請求以0結尾的字符串Ox81創(chuàng)立生產(chǎn)者連接應答操作結果,四字節(jié)整型Ox02關閉生產(chǎn)者連接請求無0x82關閉生產(chǎn)者連接應答操作結果,四字節(jié)整型Ox03創(chuàng)立消費者連接請求以0結尾的字符串0x83創(chuàng)立消費者連接應答操作結果,四字節(jié)整型0x04關閉消費者連接請求無0x84關閉消費者連接應答操作結果,四字節(jié)整型Ox05發(fā)送消息請求0x85發(fā)送消息應答Ox06消費消息請求0x86消費消息應答消息序號+消息內容消息序號'+操
12、作結果,四字節(jié)整型消息序號+消息內容消息序號'+操作結果,四字節(jié)整型OxOF新效勞端可用通知無Ox20連接檢測請求無OxA0連接檢測應答操作結果,四字節(jié)整型消息序號為四字節(jié)整型,取值范圍0】【000OO000OxFFFFFFFF,在一條EMQ連接上循環(huán)使用,作為一段時間內一條消息的唯一標識,將應答消息對應到請求消息.表2操作結果代碼定義操作結果代碼說明操作成功隊列不存在連接未建立隊列保存消息失敗消息格式不合法超過接收窗口大小72北京工商大學(自然科學版)2021年1月效勞端采用基于滑動窗口的流量控制機制,針對每條消費者連接設置一個發(fā)送窗口,當發(fā)送出去但還沒有收到響應的消息數(shù)量到達窗口大
13、小或收到操作結果代碼為"超過接收窗口大小"的應答時,效勞端延遲發(fā)送消息.對于每條生產(chǎn)者連接,效勞端采用接收窗口來進行流量控制,當收到一條消息,如果未發(fā)送應答的消息數(shù)量到達窗口大小時,應答"超過接收窗口大小"的操作結果代碼,發(fā)送方那么延遲發(fā)送消息.消費者采用效勞端同樣的流量控制機制和錯誤超時重傳策略.效勞端與客戶端采用請求一應答機制,當應答錯誤和應答超時通過消息重傳來保證消息不被喪失,而且EMQ隊列效勞端具有持久化功能,因此可以有效保證效勞端與客戶端之間消息通信的效勞質量.5結束語為發(fā)揮通用消息的作為底層通信模塊的優(yōu)勢,同時彌補其在效勞質量方面的缺乏,在通
14、用消息基務端與客戶端之間基于請求一應答方式,當請求應答錯誤和應答超時進行消息重傳,效勞端對消息持久化,這些機制可以更加有效地保證消息隊列的效勞質量.在實際應用中,設計提高了通用消息的效勞質量,但由于消息持久化的引人卻付出了性能的代價,面對當前各種應用中越來越大量的交互消息及實時性要求,性能又是非常重要的,所以研究更高效率持久化隊列,設計一種無論對小數(shù)據(jù)量還是大數(shù)據(jù)量消息交互均有良好的性能表現(xiàn)的隊列,是后續(xù)研究重要的努力方向.參考文獻1李琪林,劉強,周明天.論中間件技術及其分類J.四川I師范大學:自然科學版,2001,24(6):657660.的性能建模與分析J.北京郵電大學:自然科學版,200
15、6,29(3):7680.網(wǎng)SCP的設計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.計算機系統(tǒ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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級數(shù)學(四則混合運算帶括號)計算題專項練習與答案
- 2023年度湖北省政府采購評審專家資格過關檢測試卷A卷附答案
- 2021年健康管理師《基礎知識》模擬試卷一(含答案)
- 2021年新安全生產(chǎn)法知識競賽試題庫及答案共300題范文五篇
- 2024年聯(lián)合申請藥品經(jīng)營許可證協(xié)議3篇
- 2024版店面轉讓協(xié)議合同范本
- 全國浙教版信息技術七年級下冊第一單元第2課《走進物聯(lián)網(wǎng)》說課稿
- 2024版融資租賃合同租金調整協(xié)議
- 2024版高利貸融資合同標準文本版B版
- 2024版能源設施推進房屋補償3篇
- 電氣工程及其自動化低壓電器中繼電器應用
- 實驗九(b)液體表面張力系數(shù)的測定(用毛細管法)
- 全球機場三字碼、四字碼
- 2023-2024學年重慶市兩江新區(qū)四上數(shù)學期末質量檢測試題含答案
- 泌尿外科內鏡診療技術質量保障措施及應急預案
- M7.5漿砌塊石擋土墻砌筑施工方法
- 2022年度黑龍江省重點新產(chǎn)品名單
- 2023北京朝陽區(qū)初三上期末考物理試卷及答案
- 挖掘機司機安全培訓試題和答案
- 腎內科學篇病例分析1
- 工程電力之DCS系統(tǒng)受電及系統(tǒng)復原調試措施
評論
0/150
提交評論