新四季網

一種基於文件系統的消息中間件持久消息的存儲方法

2023-04-24 03:14:31 1

專利名稱:一種基於文件系統的消息中間件持久消息的存儲方法
技術領域:
本發明涉及一種基於文件系統的消息中間件持久消息的存儲方法。
背景技術:
以可靠傳輸為目的的消息中間件伺服器,存儲客戶端發送給伺服器端的消息是一 個非常關鍵的環節。對消息的存儲一般需要達到以下要求 1)可靠性,能夠將客戶端發給伺服器端的每條消息做持久化,能根據消息標識符 定位到消息的準確存儲位置。 2)性能,能夠快速將消息在非易失性存儲器和內存之間進行置換。
目前實現消息存儲最常用的兩種方式
1.內存存儲 將所有客戶端發送給伺服器端的消息保存在內存之中,由於所有消息均在內存中 操作,採用這個方式的消息中間件吞吐性能非常高。但是該種方式存在以下問題
如果伺服器宕機,所有保存在內存之中的消息都將丟失,再次重啟之後,這些消息 無法被消費; 消息在內存中存儲有容量限制,如果超出了可用的內存上限,將阻塞客戶端的發
送進程,直到這些消息被接收者取得而被伺服器釋放其所佔用的內存。 2.資料庫存儲 將所有客戶端發送給伺服器端的消息保存在資料庫之中,即使伺服器宕機,重啟 之後消息中間件依然可以從資料庫中恢復所有未被客戶端接收的消息。但是該種方式存在 以下問題 在高負載的情況下,往資料庫中頻繁插入和刪除消息記錄的資料庫操作會導致整 個消息中間件消息吞吐性能嚴重降低。 綁定額外的資料庫系統會降低伺服器的處理性能和網絡性能,還會增加用戶的投 資 綜合以上兩種方式,基於文件系統的消息中間件持久消息的存儲技術需要解決可 靠性問題,性能問題等。

發明內容
本發明的目的就是針對上述的不足,提供了一種在保證消息存儲的可靠性的同 時,還提高了持久消息的讀寫性能的基於文件系統的消息中間件持久消息的存儲方法。
—種基於文件系統的消息中間件持久消息的存儲方法,包括如下步驟
第一步以消息為參數創建AddMessageCommand。 即在AddMessageCommand的message欄位設為需要存儲的消息;在 RemoveMessageCommand中的messageld設為需要從存儲中刪除的消息標識符。Visitor則 提供了以訪問者模式處理所有Command對象的方法,Visitor的子類IndexVisitor會根據不同的Command子類建立索引。第二步把AddMessageCommand對象序列化為字節流。 Command類提供了 write和read序列化和反序列化的方法,write方法可以將 Command對象序列化成字節流,read方法可以將字節流反序列化成Command對象。通過 這樣的方式,就可以將Command對象存儲在日誌文件中,也可以從日誌文件讀取內容生成 Command對象。 第三步將字節流寫入日誌文件,如果設置為異步模式,則將多個寫入操作合併, 將每個寫入操作需寫入的字節流合併, 一次性寫入到日誌文件中。 第四步更新內存中的索引頁,將消息標識符和消息對應於日誌文件中的位置插 入到索引樹中的節點。 索引信息存放在一個B+樹的葉節點中,key對應於消息的標識符,value對應該消 息在日誌文件中的位置。每次在日誌文件中添加一條消息記錄,都會更新B+樹更新索引信 息。 每一個B+樹節點都存放在索引文件中,每個節點佔用的磁碟容量為4096個字節, 在第一頁中存放了整個索引的元數據,可以通過這個元數據找到所有隊列的消息索引。由 於內存容量的限制,並非將所有索引信息都存放在內存之中,而是通過設置索引頁緩存保 存最近使用的索引頁。 第五步寫回索引文件,將更新的索引樹節點所對應的文件頁以雙寫的方式寫回 到索引文件。 每次更新索引文件都將需要更新的文件頁全部順序寫入備份文件,當寫入備份文 件成功之後,再將這些文件頁寫回到索引文件,通過這樣的方式來避免寫回索引文件時宕 機引起的索引文件不一致的問題。當寫入備份文件不成功時,就直接丟棄這些需要更新的 索引頁,當寫回索引頁不成功時,則從備份文件恢復這些索引頁。
然後設置一讀取流程,具體來說為 第一步查找消息在日誌文件中的位置,通過消息標識符在索引樹上查找其對應 的日誌文件位置信息。 第二步反序列化,讀取日誌文件,將讀到的字節流反序列化成 AddMessageCommand對象。 第三步讀取消息,從AddMessageCommand對象中取出消息。 本發明提供的基於文件系統的消息中間件持久消息的存儲方法,具有如下優點 1.可以做持久存儲,即使宕機,也能保證在重啟之後恢復所有的消息,將消息中間
件運行狀態恢復到宕機之前的運行狀態。 2.可以根據消息標識符快速檢索到消息,提高消息中間件消息的吞吐量。


圖1為本發明實施例中項向儲子系統存儲消息的流程圖;
圖2為本發明實施例中從存儲子系統讀取消息的流程圖。
具體實施例方式
下面以非限定性的實施方式來具體解釋、說明本技術方案。 —種基於文件系統的消息中間件持久消息的存儲方法,包括一存儲步驟和一讀取 步驟。 存儲步驟如圖1所示,具體為 第 一 步以消息為參數創建AddMessageCommand,艮卩在AddMessageCommand的 message欄位設為需要存儲的消息;在RemoveMessageCommand中的messageld設為需要從 存儲中刪除的消息標識符;第二步把AddMessageCommand對象序列化為字節流; 第三步將字節流寫入日誌文件,如果設置為異步模式,則將多個寫入操作合併, 將每個寫入操作需寫入的字節流合併,一次性寫入到日誌文件中; 第四步更新內存中的索引頁,將消息標識符和消息對應於日誌文件中的位置插 入到索引樹中的節點; 第五步寫回索引文件,將更新的索引樹節點所對應的文件頁以雙寫的方式寫回 到索引文件。
而讀取步驟如圖2所示,具體來說為 第一步查找消息在日誌文件中的位置,通過消息標識符在索引樹上查找其對應 的日誌文件位置信息。 第二步反序列化,讀取日誌文件,將讀到的字節流反序列化成 AddMessageCommand對象。 第三步讀取消息,從AddMessageCommand對象中取出消息。
權利要求
一種基於文件系統的消息中間件持久消息的存儲方法,其特徵在於包括如下步驟第一步以消息為參數創建AddMessageCommand,即在AddMessageCommand的message欄位設為需要存儲的消息;在RemoveMessageCommand中的messageId設為需要從存儲中刪除的消息標識符;第二步把AddMessageCommand對象序列化為字節流;第三步將字節流寫入日誌文件,如果設置為異步模式,則將多個寫入操作合併,將每個寫入操作需寫入的字節流合併,一次性寫入到日誌文件中;第四步更新內存中的索引頁,將消息標識符和消息對應於日誌文件中的位置插入到索引樹中的節點;第五步寫回索引文件,將更新的索引樹節點所對應的文件頁以雙寫的方式寫回到索引文件。
全文摘要
本發明是一種基於文件系統的消息中間件持久消息的存儲方法,包括如下步驟第一步以消息為參數創建AddMessageCommand;第二步把AddMessageCommand對象序列化為字節流;第三步將字節流寫入日誌文件,如果設置為異步模式,則將多個寫入操作合併,將每個寫入操作需寫入的字節流合併,一次性寫入到日誌文件中;第四步更新內存中的索引頁,將消息標識符和消息對應於日誌文件中的位置插入到索引樹中的節點;第五步寫回索引文件。本發明提供了一種在保證消息存儲的可靠性的同時,還提高了持久消息的讀寫性能的基於文件系統的消息中間件持久消息的存儲方法。
文檔編號H04L29/08GK101707633SQ20091023096
公開日2010年5月12日 申請日期2009年11月27日 優先權日2009年11月27日
發明者李景澤, 謝鍾揚 申請人:山東中創軟體商用中間件股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀