[發(fā)明專利]一種消息持久化方法、服務(wù)器和計算機可讀存儲介質(zhì)有效
| 申請?zhí)枺?/td> | 201710960147.9 | 申請日: | 2017-10-16 |
| 公開(公告)號: | CN107704604B | 公開(公告)日: | 2020-09-18 |
| 發(fā)明(設(shè)計)人: | 余波;陳宇珽;茅廷;許再越;李正;牛文宇;李升先;李志斌 | 申請(專利權(quán))人: | 中匯信息技術(shù)(上海)有限公司 |
| 主分類號: | G06F16/172 | 分類號: | G06F16/172;G06F16/13 |
| 代理公司: | 北京睿派知識產(chǎn)權(quán)代理事務(wù)所(普通合伙) 11597 | 代理人: | 劉鋒 |
| 地址: | 201203 上海*** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 消息 持久 方法 服務(wù)器 計算機 可讀 存儲 介質(zhì) | ||
本發(fā)明公開了一種消息持久化方法、服務(wù)器和計算機可讀存儲介質(zhì)。在所述方法中,創(chuàng)建數(shù)據(jù)文件用于存儲需要持久化的消息,創(chuàng)建消息索引文件索引讀取數(shù)據(jù)文件中的消息。通過創(chuàng)建消息索引文件以使得只需要讀取數(shù)據(jù)文件一次便可以得到所需消息。因此,所述方法可以方便快速的從數(shù)據(jù)文件中讀取指定消息序列號的消息。
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,更具體地,涉及一種消息持久化方法、服務(wù)器和計算機可讀存儲介質(zhì)。
背景技術(shù)
隨著信息技術(shù)的發(fā)展,以及分布式系統(tǒng)的廣泛應(yīng)用,在分布式軟件系統(tǒng)中,消息中間件在許多行業(yè)的關(guān)鍵應(yīng)用中扮演著至關(guān)重要的角色。
消息中間件適用于需要可靠的數(shù)據(jù)傳送的分布式環(huán)境。采用消息中間件機制的系統(tǒng)中,不同的對象之間通過傳遞消息來激活對方的事件,完成相應(yīng)的操作。消息發(fā)布端將消息發(fā)送給消息服務(wù)器,消息服務(wù)器將消息存放在若干隊列中,在合適的時候再將消息轉(zhuǎn)發(fā)給消息消費端。
消息中間件系統(tǒng)中,需要將消息發(fā)布端的消息持久化保存在硬盤等存儲中,一般持久化保存到文件或數(shù)據(jù)庫中,以備其他消息消費端可以可靠的接收消息。為了更高效地進行消息交互,目前對消息中間件系統(tǒng)的發(fā)送接收的單位時間吞吐率要求很高,對消息持久化存儲消息的速率要求很高,對消息恢復(fù)時讀取消息的速率要求也很高,即需要很高的讀寫文件或數(shù)據(jù)庫的速率。
在現(xiàn)有的技術(shù)中,active MQ是采用樹的索引方式,在恢復(fù)指定消息序列號區(qū)間的消息時,需要遍歷索引文件樹的各個節(jié)點,再通過消息索引去查找數(shù)據(jù)文件,索引文件樹的遍歷效率較低,訪問速率會比較慢。
Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),在Kafka系統(tǒng)的持久化消息方法中索引文件設(shè)置了消息偏移地址,可以通過消息偏移地址比較快的找到消息所在的段文件。段文件中很多個日志記錄,通過每個日志記錄的消息長度字段去一次次跳轉(zhuǎn)找到需要恢復(fù)的消息位置。如果段文件中有n條消息,按照二分法去查找待恢復(fù)的消息,需要log2n次,也不能滿足目前快速高效的要求。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種消息持久化方法、服務(wù)器和計算機可讀存儲介質(zhì),以實現(xiàn)快速讀取指定消息序列號的消息。
第一方面,提供一種消息持久化存儲方法,包括:
接收需要持久化的消息后,獲取所述消息所屬的消息主題;
將所述消息存儲在所述消息主題對應(yīng)的數(shù)據(jù)文件中,所述消息包括消息序列號;
定時更新消息索引文件,生成所述消息對應(yīng)的消息索引記錄;
其中,所述消息索引文件在預(yù)先設(shè)定的時間點創(chuàng)建;所述消息索引記錄包括數(shù)據(jù)文件標識和所述消息在所述數(shù)據(jù)文件中的偏移地址;
所述消息索引記錄根據(jù)預(yù)定規(guī)則更新添加至所述消息索引文件以使得能夠根據(jù)消息序列號索引對應(yīng)的消息,所述預(yù)定規(guī)則與所述數(shù)據(jù)文件中消息的排列規(guī)則一致,消息對應(yīng)的消息索引記錄在所述消息索引文件中的序號為消息序列號。
進一步地,所述方法還包括:
在接收到讀取給定消息序列號的消息的指令時根據(jù)所述消息索引文件索引并讀取對應(yīng)數(shù)據(jù)文件中對應(yīng)的消息。
進一步地,根據(jù)所述消息索引文件索引并讀取對應(yīng)數(shù)據(jù)文件中對應(yīng)的消息包括:
根據(jù)所述消息序列號的數(shù)值和消息索引記錄的字節(jié)長度值計算所述消息序列號對應(yīng)的消息索引記錄在消息索引文件中的偏移地址;
根據(jù)所計算的偏移地址查詢獲得所述消息序列號對應(yīng)的消息索引記錄;
根據(jù)所獲得的消息索引記錄在對應(yīng)的數(shù)據(jù)文件中查詢并讀取對應(yīng)的消息。
進一步地,每個消息主題對應(yīng)一個所述消息索引文件和至少一個所述數(shù)據(jù)文件。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中匯信息技術(shù)(上海)有限公司,未經(jīng)中匯信息技術(shù)(上海)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710960147.9/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





