




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于通用消息的持久化消息隊列設計第28卷第1期2021年1月北京工商大學(自然科學版)JournalofBeijingTechnologyandBusinessUniversity(NaturalScienceEdition)文章編號:16711513(2021)O1-006904基于通用消息的持久化消息隊列設計郭盛興,王晶,廖建新(1.北京郵電大學網絡與交換技術國家重點實驗室,北京100876;2.東信北郵信息技術,北京100191)摘要:一個成熟的分布式中間件應提供不同進程間尋址和通信能力,同時提供高可靠的通信服是這樣的一種中間件,為了改進它的效勞質量,本文充分利用了其尋址和通信優勢,引入
2、19,.5,1和持久化思想,設計了一種消息持久化隊列EbuptMessageQueue(EMQ).在實際應用中,EMQ可為上層提供更加可靠的通信效勞質量.EMQ支持持久化,也可以滿足非實時性消息通信的場景.關鍵詞:消息中間件;效勞質量;消息隊列;持久化中圖分類號:TN915.5文獻標志碼:A中間件是一種定義于操作系統之上,應用程序之下的一層軟件,它能使應用之間進行跨網絡協同工作,屏蔽了操作系統和網絡協議的差異向應用提供通信效勞.消息中間件支持在一個分布式應用同分布式環境很好地封裝起來,對外提供統一的接口,使得應用能通過統一接口進行開發.通用消息(componentpacketofreahime
3、applicationprocessmanagementandcommunication,COPARTMACO)是一個抽象得比較好的消息中間件.對不同類型的上層消息增加同樣的底層消息頭,如圖1,這種消息稱為通用消息.使用通用消息的進程間交互采用統一的協議,底層采用統一的方式通信,軟件功能差異主要表達進程間通信需要,但通用消息是面向無連接的,只提供了消息尋址功能,不保證通信的可靠性,比照可靠性要求,提出了基于通用消息的持久化隊列(EbuptMessageQueue簡稱EMQ)設計,EMQ由服息頭版保長消消分源源目目本留度息息片地會的的序消號字指類碼指址話地A列E息號體段示型示信號信話息息號012
4、456|10141l21222365535max圖1通用消息的消息結構MACOpacketencapsulation務端和客戶端組成,效勞端提供集中式的消息接收,存儲和轉發效勞,客戶端可以通過效勞端發送和接收消息,客戶端和效勞端之間的通信采用請求應答方式,效勞端具有消息持久化功能.1EMQ架構設計EMQ部署結構如圖2,其中包含3個域:消息隊列效勞域,生產者域,消費者域.包含的組件說明:1)ininit,消息隊列的守護進程,負責啟動本域內的所有其他進程,在子進程異常退出后,重新啟動收稿日期:20210912基金工程:國家杰出青年科學基金資助工程(60525110);國家973方案資助工程(200
5、7CB307100,2007CB307103);國家自然科學基金資助工程(60902051);電子信息產業開展基金資助工程(基于3G的移動業務應用系統).作者簡介:郭盛興(1982一),男,內蒙古通遼人,碩士研究生,研究方向為網絡智能化.王晶(1974一),女,山東聊城人,副教授,主要從事網絡智能化和IMS/NGN增值業務技術研究.廖建新(1965一),男,四川宜賓人,教授,博士,主要從事網絡智能化,IMS/NGN增值業務技術方面的研究.通訊作者.70北京工商大學(自然科學版)2021年1月重erverserver圖2EMQ部署結構子進程;2)inaccessd,控制臺接入效勞端進程,接人它之
6、后,可以建立與本域內的所有進程的連接,輸入控制臺命令得到應答;3)msgr,通用消息的消息分發模塊,用于轉發本域內的進程和外部進程之間的交互消息,根據實際需要,也可以有一個或者多個;4)emqserver,EMQ效勞端,持久化消息隊列的核心,負責接收,存儲和轉發消息;5)emqclient,與EMQ效勞端交互的客戶端,EMQ客戶端分為生產者和消費者,生產者發送消息給消息隊列效勞端,消費者從通用消息效勞端接收消息并處理.EMQ效勞端的結構如圖3:圖3持久化消息隊列效勞端結構效勞端底層通信鏈路層是通用消息層,EmqManager管理EMQ效勞端的兩個最主要的數據結構,與客戶端的連接EmqConne
7、etion和持久化的消息隊列EmqQueue,連接與消息隊列間通過隊列名QueueName相互關連.通用消息是面向無連接的,所以EMQ客戶端與下,每個進程都有唯一的進程地址標識,包括三部的時候,客戶端請求參數中含有隊列名,效勞端保存與客戶端的連接,進程地址標識與隊列的對應關系,客戶端收到效勞端連接響應后保存與效勞端的連接隊列建立多條連接的情況,如Java編程中客戶端進程采用多線程,這時每個線程會與效勞端的一個隊列有一個虛擬連接,將每一個線程作為通用消息的一個實例.考慮通用性,持久化隊列設計成相對獨立的模塊,按照EMQ消息持久化所要求的接口能力提供操要包括:ereateQueue(創立隊列),d
8、estroyQueue(刪除隊列),enQueue(消息人隊),deQueue(消息出隊),行的實現方式:1)基于文件和索引的實現定義每條消息的持久化存儲結構,將通用消息整個消息的長度,消息頭和消息體及消息是否已經被"消費"的標識存儲到文件,在內存中保存每條消息在文件中的位置索引,讀取消息時直接通過索引小的情況下是一種比較好的選擇.2)基于開源工程的實現基于SQLite來實現持久化隊列的存儲,在SQLite根底上做一層封裝,提供EMQ所需的接口.基于SQLite實現的持久化隊列,對于比較大的數據量也能獲得比較好的性能.除SQLite外,還可以考慮BerkeleyDB,red
9、is等其他開源工程,在其開放的API根底上封裝為EMQ提供所需的接口即可.2消息交互流程設計生產者與消費者間核心的消息交互流程如圖4.1)生產者依據負荷分擔策略從幾個效勞端連接中選擇一個連接,發送消息請求;2)效勞端收到消息后,找到消費者進程地址標識對應的持久化隊列,并將消息持久化保存到隊列中;3)效勞端保存消息后將操作結果響應給生產者;4)生產者依據響應結果斷定消息如何處理;5)當消費者連接對應的隊列中有數據時,效勞端將每次取出一條消息發送給消費者;6)消費者收到消息后首先給效勞端消費消息第28卷第1期郭盛興等:基于通用消息的持久化消息隊列設計71發送消息請求發送消息響應發送消息請求發送消息
10、響應.皇墮查喜曩;消費消請求一消費消響應消費消息響應圖4消息交互流程響應;表1操作類型定義7)消費者對收到的消息進行"消費"處理.Tab?1Defineofmessage.perato"3接口設計EMQ客戶端和效勞端的通信多數采用請求一格式如圖5.操作類型操作參數O圖5消息格式1)操作類型:用于區分對隊列的不同操作,為一字節整型;2)操作參數:可以為任意長度,但是由于EMQ消息使用通用消息的消息體承載,所以操作參數最大長度受通用消息一個包的最大長度限制.EMQ客戶端與效勞端之間接口消息的操作類型編碼和操作參數定義如表1.操作結果0表示成功,非0表示失敗,表2是各種
11、主要操作結果代碼及說明.4流量控制與效勞質量流量控制機制理想情況下可以指示任意時刻發送方發送消息的速率或數量,確保接受方的資源不被耗盡.操型操作說明操作參數OxO1創立生產者連接請求以0結尾的字符串Ox81創立生產者連接應答操作結果,四字節整型Ox02關閉生產者連接請求無0x82關閉生產者連接應答操作結果,四字節整型Ox03創立消費者連接請求以0結尾的字符串0x83創立消費者連接應答操作結果,四字節整型0x04關閉消費者連接請求無0x84關閉消費者連接應答操作結果,四字節整型Ox05發送消息請求0x85發送消息應答Ox06消費消息請求0x86消費消息應答消息序號+消息內容消息序號'+操
12、作結果,四字節整型消息序號+消息內容消息序號'+操作結果,四字節整型OxOF新效勞端可用通知無Ox20連接檢測請求無OxA0連接檢測應答操作結果,四字節整型消息序號為四字節整型,取值范圍0】【000OO000OxFFFFFFFF,在一條EMQ連接上循環使用,作為一段時間內一條消息的唯一標識,將應答消息對應到請求消息.表2操作結果代碼定義操作結果代碼說明操作成功隊列不存在連接未建立隊列保存消息失敗消息格式不合法超過接收窗口大小72北京工商大學(自然科學版)2021年1月效勞端采用基于滑動窗口的流量控制機制,針對每條消費者連接設置一個發送窗口,當發送出去但還沒有收到響應的消息數量到達窗口大
13、小或收到操作結果代碼為"超過接收窗口大小"的應答時,效勞端延遲發送消息.對于每條生產者連接,效勞端采用接收窗口來進行流量控制,當收到一條消息,如果未發送應答的消息數量到達窗口大小時,應答"超過接收窗口大小"的操作結果代碼,發送方那么延遲發送消息.消費者采用效勞端同樣的流量控制機制和錯誤超時重傳策略.效勞端與客戶端采用請求一應答機制,當應答錯誤和應答超時通過消息重傳來保證消息不被喪失,而且EMQ隊列效勞端具有持久化功能,因此可以有效保證效勞端與客戶端之間消息通信的效勞質量.5結束語為發揮通用消息的作為底層通信模塊的優勢,同時彌補其在效勞質量方面的缺乏,在通
14、用消息基務端與客戶端之間基于請求一應答方式,當請求應答錯誤和應答超時進行消息重傳,效勞端對消息持久化,這些機制可以更加有效地保證消息隊列的效勞質量.在實際應用中,設計提高了通用消息的效勞質量,但由于消息持久化的引人卻付出了性能的代價,面對當前各種應用中越來越大量的交互消息及實時性要求,性能又是非常重要的,所以研究更高效率持久化隊列,設計一種無論對小數據量還是大數據量消息交互均有良好的性能表現的隊列,是后續研究重要的努力方向.參考文獻1李琪林,劉強,周明天.論中間件技術及其分類J.四川I師范大學:自然科學版,2001,24(6):657660.的性能建模與分析J.北京郵電大學:自然科學版,200
15、6,29(3):7680.網SCP的設計J.現代電信科技,2005(2):1013.4SunMicrosystemsInc.JavaTMMessageServiceSpecifi?cationFinalRelease1.1EB/OL.20020412.5CiscoSystems.AMQP,AGeneral-PurposeMiddlewareStandardvO一10EB/OL.20061020. ://confluence/display/AMQP/AMQP+Specification.析J.計算機系統應用,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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 2878.1-2025液壓傳動連接普通螺紋斜油口和螺柱端第1部分:斜油口
- 銀行從業資格證考試的關鍵思維強化與試題與答案
- 2025年度工程項目承包合同協議
- 注冊會計師考試常見題型切入思路試題及答案
- 個體門窗安裝協議案例
- 個人借款協議范本
- 微生物環境監測的重要性試題及答案
- 建設高效社團組織架構計劃
- 有效的項目知識管理體系構建試題及答案
- 證券從業資格證考試基礎理論試題及答案
- 廣東省廣州市海珠區2022-2023學年四年級下學期第二次月考語文試題
- 廣東省深圳市羅湖區2022-2023學年六年級下學期期中數學試卷
- 150型鉆機使用說明書3
- 未來趨勢與職業前景智慧樹知到期末考試答案章節答案2024年聯盟推+薦
- 2024年福建省泉州市中考二模物理試題
- 水生產企業(自來水公司)安全生產風險分級管控和隱患排查治理雙體系方案全套資料(2021-2022版)
- (正式版)JBT 14449-2024 起重機械焊接工藝評定
- 2020混凝土結構加固修復用聚合物水泥砂漿施工及驗收規程
- 化妝培訓課件版
- 營地指導員基礎教程
- 初級電工證考試試題庫電工證考試題庫
評論
0/150
提交評論