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





