[發(fā)明專利]一種持久化消息的發(fā)布方法及系統(tǒng)有效
| 申請?zhí)枺?/td> | 201210162372.5 | 申請日: | 2012-05-23 |
| 公開(公告)號: | CN103428072B | 公開(公告)日: | 2017-03-08 |
| 發(fā)明(設(shè)計)人: | 樂以長;封素石;張云 | 申請(專利權(quán))人: | 北京大學(xué);北大方正集團有限公司;方正國際軟件(北京)有限公司 |
| 主分類號: | H04L12/58 | 分類號: | H04L12/58 |
| 代理公司: | 北京天悅專利代理事務(wù)所(普通合伙)11311 | 代理人: | 田明,任曉航 |
| 地址: | 100871*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 持久 消息 發(fā)布 方法 系統(tǒng) | ||
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)通訊領(lǐng)域,具體涉及一種持久化消息的發(fā)布方法及系統(tǒng)。
背景技術(shù)
在數(shù)據(jù)交換中心的消息中間件工作機制中,通常有一臺數(shù)據(jù)交換服務(wù)器連接多臺數(shù)據(jù)交換客戶端,多臺數(shù)據(jù)交換客戶端之間通過數(shù)據(jù)交換服務(wù)器進行消息傳輸和數(shù)據(jù)交換。這種機制消息發(fā)送端和消息接收端通過數(shù)據(jù)交換服務(wù)器實現(xiàn)解耦,消息發(fā)送者和消息接收者不用同時在線也可進行消息傳輸。
數(shù)據(jù)交換服務(wù)器在收到消息發(fā)送端的實時消息時,將實時消息存入接收端對應(yīng)的消息隊列中,再將消息轉(zhuǎn)發(fā)給消息接收端。為了保證消息傳輸?shù)目煽啃裕瑪?shù)據(jù)交換服務(wù)器會將消息保存在非易失性存儲設(shè)備,在出現(xiàn)掉電、系統(tǒng)異常崩潰等突發(fā)情況時,數(shù)據(jù)交換服務(wù)器重新啟動能夠加載持久化到非易失性存儲設(shè)備的消息,將其轉(zhuǎn)發(fā)給相應(yīng)的消息接收端。將消息從非易失性存儲設(shè)備讀入內(nèi)存然后存入消息隊列的過程,稱為持久化消息發(fā)布。
數(shù)據(jù)交換服務(wù)器普遍支持多路復(fù)用技術(shù),所謂多路復(fù)用是指發(fā)送端在群發(fā)消息(將消息發(fā)給多個接收端或廣播發(fā)送)時,只向數(shù)據(jù)交換服務(wù)器發(fā)送一條消息,由數(shù)據(jù)交換服務(wù)器根據(jù)消息路由結(jié)果分別將消息轉(zhuǎn)發(fā)給多個消息接收端,這種方式減少了發(fā)送端向數(shù)據(jù)交換服務(wù)器發(fā)送的消息量,節(jié)約網(wǎng)絡(luò)帶寬,提高群發(fā)的效率。如圖1所示,發(fā)送端發(fā)送一條群發(fā)消息,只需向數(shù)據(jù)交換服務(wù)器發(fā)送一條消息,服務(wù)器再將該消息轉(zhuǎn)發(fā)給多個接收端(圖1所示為三個接收端)。多路復(fù)用技術(shù)使得數(shù)據(jù)交換服務(wù)器需要向消息接收端轉(zhuǎn)發(fā)的消息數(shù)量遠遠大于從消息發(fā)送端接收的消息數(shù)量,其結(jié)果是消息轉(zhuǎn)發(fā)的速度明顯比消息接收的速度慢很多。消息隊列中的消息得不到及時轉(zhuǎn)發(fā),最終導(dǎo)致消息隊列被占滿,部分消息只在非易失性存儲設(shè)備中保存,未被存入消息隊列中。在消息隊列中的消息被轉(zhuǎn)發(fā)之后,會釋放其占用的存儲空間,這時需要重新將持久化的消息讀入內(nèi)存,然后將其發(fā)布到消息隊列中進行轉(zhuǎn)發(fā)。
在持久化消息發(fā)布的過程中,通常數(shù)據(jù)交換服務(wù)器的消息接收裝置還在工作,還在接收消息發(fā)送端發(fā)送的消息,期間還會出現(xiàn)隊列忙的情況。圖2為現(xiàn)有技術(shù)發(fā)布持久化消息的工作原理示意圖,現(xiàn)有技術(shù)中,在持久化消息發(fā)布過程中如果出現(xiàn)消息隊列為忙的情況,通常必須睡眠等待一段指定的時間,睡眠超時后再去獲取消息隊列的狀態(tài);如果隊列為忙就繼續(xù)睡眠等待,超時后再獲取消息隊列狀態(tài),如此反復(fù),直到消息隊列為空閑然后繼續(xù)發(fā)布,如步驟201-208所示。如圖2步驟204所示,睡眠等待機制必須等到超時才能去查詢消息隊列狀態(tài),如果睡眠時間設(shè)定為60秒,必須等待60秒超時才去查詢消息隊列的狀態(tài)。這種通過反復(fù)獲取消息隊列是否為空閑然后發(fā)布的方法存在如下問題:即使消息隊列已經(jīng)空閑也需本次等待超時才去獲取消息隊列的空閑狀態(tài),才能啟動消息發(fā)布程序,如睡眠超時時間設(shè)為60秒,在等待了5秒后消息隊列中的消息被取走,也需再等55秒才去查詢消息隊列的狀態(tài),這就不能最大化的提高消息轉(zhuǎn)發(fā)的實時性。雖然可以通過縮短等待時間,增加查詢的頻率盡量提高消息轉(zhuǎn)發(fā)的實時性,但是等待時間過短,如果消息隊列長時間處于忙狀態(tài),頻繁查詢消息隊列的狀態(tài)并無意義,反而會影響性能。因此,現(xiàn)有技術(shù)如果存在大量消息發(fā)送(包括實時消息和持久化消息)時,發(fā)布持久化消息效率低,消息轉(zhuǎn)發(fā)實時性差。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中所存在的問題,為了解決現(xiàn)有技術(shù)在發(fā)布大量持久化消息時周期性等待查詢消息隊列的狀態(tài)而引起的效率低,消息轉(zhuǎn)發(fā)實時性差的問題,本發(fā)明的目的是提供一種持久化消息的發(fā)布方法及系統(tǒng),該方法及系統(tǒng)在持久化消息發(fā)布過程中引入了等待、通知機制,通過事件觸發(fā)持久化消息發(fā)布過程,保證數(shù)據(jù)交換服務(wù)器在大量接收、轉(zhuǎn)發(fā)消息的情況下,保證消息高效、可靠的傳輸,同時也提高了持久化消息傳送的實時性。
一種持久化消息的發(fā)布方法,包括以下步驟:
(1)消息接收裝置接收消息發(fā)送端發(fā)送到數(shù)據(jù)交換服務(wù)器的實時消息,并將所述實時消息持久化到非易失性存儲設(shè)備;
(2)持久化消息讀取裝置讀取持久化到非易失性存儲設(shè)備上的持久化消息;
(3)持久化消息發(fā)布裝置將所述持久化消息存入消息隊列中;在將持久化消息存入消息隊列之前,判斷消息隊列是否為忙,如果消息隊列為忙,持久化消息發(fā)布裝置將會暫停運行并進入等待狀態(tài),等待消息隊列發(fā)送的空閑通知;
(4)消息轉(zhuǎn)發(fā)單元提取消息隊列中的消息后,將消息轉(zhuǎn)發(fā)給消息接收端,消息隊列將向持久化消息發(fā)布裝置發(fā)送通知事件,通知所述持久化消息發(fā)布裝置終止等待;
(5)持久化消息發(fā)布裝置從等待語句的下一條語句繼續(xù)執(zhí)行,繼續(xù)往消息隊列發(fā)布消息。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京大學(xué);北大方正集團有限公司;方正國際軟件(北京)有限公司,未經(jīng)北京大學(xué);北大方正集團有限公司;方正國際軟件(北京)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210162372.5/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 將發(fā)布數(shù)據(jù)發(fā)布至不同發(fā)布主機的系統(tǒng)及其方法
- 一種技術(shù)出版物內(nèi)容發(fā)布系統(tǒng)及方法
- 音/視頻流發(fā)布方法、流媒體服務(wù)器、發(fā)布端及流媒體系統(tǒng)
- 一種分布式代碼版本發(fā)布系統(tǒng)及方法
- 內(nèi)容發(fā)布方法、裝置、計算機設(shè)備以及可讀存儲介質(zhì)
- 文件發(fā)布方法和系統(tǒng)、發(fā)布服務(wù)器和文件生成裝置
- 軟件的發(fā)布質(zhì)量管理系統(tǒng)、方法以及裝置
- 信息發(fā)布方法、裝置、電子設(shè)備及計算機可讀存儲介質(zhì)
- 信息發(fā)布方法及裝置、存儲介質(zhì)、終端
- 服務(wù)發(fā)布方法及裝置、服務(wù)器、存儲介質(zhì)





