国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于中間件消息的存儲與傳輸方法及系統(tǒng)的制作方法

      文檔序號:8472953閱讀:1121來源:國知局
      用于中間件消息的存儲與傳輸方法及系統(tǒng)的制作方法
      【技術(shù)領(lǐng)域】
      [0001]本申請涉及網(wǎng)絡(luò)信息處理領(lǐng)域,具體地說,涉及一種用于中間件消息的存儲與傳輸方法及系統(tǒng)。
      【背景技術(shù)】
      [0002]在互聯(lián)網(wǎng)絡(luò)的時代,信息如同大海般沒有邊際。消息中間件是分布式系統(tǒng)中常用的一種消息通訊的組件,主要用于系統(tǒng)間的解耦,是一種以消息為通訊介質(zhì)并且?guī)椭D(zhuǎn)發(fā)消息給不同的應(yīng)用的分布式系統(tǒng),與郵件系統(tǒng)類似。參與方按角色可以分為發(fā)送消息方,消息中間件服務(wù)器和訂閱消息方。消息中間件所在服務(wù)器承擔(dān)著消息的存儲和轉(zhuǎn)發(fā),本發(fā)明對應(yīng)的正是消息存儲和消息轉(zhuǎn)發(fā)這兩塊,是消息系統(tǒng)的核心功能,直接影響消息系統(tǒng)的性能和可靠性。
      [0003]目前,在市面上開源的產(chǎn)品有kafka,ActiveMQ等,使用本地文件或者DB(database,數(shù)據(jù)庫)做為存儲介質(zhì)并實現(xiàn)消息的發(fā)布和訂閱。
      [0004]在這些消息中間件產(chǎn)品中,當(dāng)使用本地文件存儲時不同應(yīng)用需要的消息都是獨立存儲(獨立隊列)的,多個應(yīng)用需要同一條消息時需要同時存多份,并且使用B+樹作為索引存儲,隨機讀寫直接增加磁盤1的訪問頻率,并且使用java N1對文件訪問,其結(jié)果是性能較低。
      [0005]當(dāng)使用DB作為消息中間件存儲介質(zhì)時,除了B+樹的特性帶來磁盤隨機讀寫之外還多了一層網(wǎng)絡(luò)訪問,當(dāng)大量消息堆積時直接導(dǎo)致DB產(chǎn)生swap (服務(wù)器性能評價指標(biāo)),大量的事務(wù)和鎖操作直接導(dǎo)致服務(wù)器性能急劇下降,DB并不適合于消息中間件,需要快速投遞消息而又能夠大量堆積消息的場景。
      [0006]根據(jù)上述內(nèi)容,總結(jié)得出現(xiàn)有的技術(shù)缺點主要包括:
      [0007]1、使用B+樹作為消息存儲的索引,B+樹涉及磁盤的隨機讀寫,嚴(yán)重影響性能。
      [0008]2、多個訂閱方的索引都放在一個B+樹存儲里面,當(dāng)B樹膨脹之后,造成性能極低。
      [0009]3、受java JVM (Java Virtual Machine, Java虛擬機)本身限制,使用本地文件存儲時緩存小,緩存命中率低。
      [0010]4、當(dāng)對失敗消息需要進(jìn)行頻繁更新索引,由于缺少精確的流控措施,難以保證性倉急
      [0011]5、當(dāng)消息投遞時需要對消息進(jìn)行反序列化,由于經(jīng)java JVM堆傳輸?shù)絪ocket,所以影響性能。
      [0012]針對上述問題,如何提供一種能夠解決中間件消息數(shù)據(jù)的存儲與傳輸性能低的問題,便成為亟待解決的技術(shù)問題。

      【發(fā)明內(nèi)容】

      [0013]有鑒于此,本申請所要解決的技術(shù)問題是提供了一種用于中間件消息的存儲與傳輸方法及系統(tǒng),解決了消息中間件需要快速投遞消息,而且還需要處理大量堆積消息的場旦
      O
      [0014]為了解決上述技術(shù)問題,本申請公開了一種用于中間件消息的存儲與傳輸方法,應(yīng)用于文件庫中,其特征在于,包括:
      [0015]在所述文件庫中創(chuàng)建數(shù)據(jù)隊列、索引隊列和指針文件,其中,該索引隊列包括對應(yīng)于不同用戶的索引分區(qū);所述數(shù)據(jù)隊列用于順序存儲用戶的數(shù)據(jù),所述索引分區(qū)按照所屬用戶劃分,每個所述索引分區(qū)存儲該用戶在所述數(shù)據(jù)隊列中存儲的數(shù)據(jù)的索引,所述指針文件中的指針指向被讀取的數(shù)據(jù)的索引所在的所述索引分區(qū)的索引隊列位置;
      [0016]監(jiān)測到數(shù)據(jù)存入所述文件庫時,將該數(shù)據(jù)存入所述數(shù)據(jù)隊列中,完成后將該數(shù)據(jù)對應(yīng)的索引存儲到與該數(shù)據(jù)所屬用戶相對應(yīng)的所述索引隊列中;
      [0017]監(jiān)測到讀取所述文件庫中的數(shù)據(jù)時,從指針文件中獲取當(dāng)前指針指向的索引所在的所述索引分區(qū)的索引隊列位置,并根據(jù)該索引隊列位置獲取下一條索引,通過該索引從所述數(shù)據(jù)隊列中讀取對應(yīng)的數(shù)據(jù)投遞完成,并更新所述指針文件中當(dāng)前指針指向的索引所在的所述索引分區(qū)的索引隊列位置。
      [0018]優(yōu)選地,還包括:
      [0019]所述索引隊列還包括一恢復(fù)分區(qū);
      [0020]監(jiān)測到讀取所述文件庫中的數(shù)據(jù)時,從指針文件中獲取當(dāng)前指針指向的索引所在的所述索引分區(qū)的索引隊列位置,并根據(jù)該索引隊列位置獲取下一條索引,通過該索引從所述數(shù)據(jù)隊列中讀取對應(yīng)的數(shù)據(jù)投遞失敗時,將該索引存入所述恢復(fù)分區(qū)中的索引隊列;
      [0021]同時,監(jiān)測到讀取所述文件庫中的數(shù)據(jù)時,所述恢復(fù)分區(qū)從所述指針文件中獲取當(dāng)前恢復(fù)指針指向的恢復(fù)索引所在的所述恢復(fù)分區(qū)的索引隊列位置,并根據(jù)該索引隊列位置獲取下一條恢復(fù)索引,通過該恢復(fù)索引從所述數(shù)據(jù)隊列中讀取對應(yīng)的數(shù)據(jù)投遞完成,并更新所述指針文件中當(dāng)前恢復(fù)指針指向的索引所在的所述恢復(fù)分區(qū)的索引隊列位置。
      [0022]優(yōu)選地,還包括:
      [0023]通過該恢復(fù)索引從所述數(shù)據(jù)隊列中讀取對應(yīng)的數(shù)據(jù)投遞失敗時,將該恢復(fù)索引放入所述恢復(fù)分區(qū)中的索引隊列的排序執(zhí)行末端。
      [0024]優(yōu)選地,還包括:
      [0025]監(jiān)控所述恢復(fù)分區(qū)中的索引隊列中的至少十個恢復(fù)索引從所述數(shù)據(jù)隊列中讀取對應(yīng)的數(shù)據(jù)進(jìn)行投遞的失敗率,若所述失敗率超過20%,則延時至少5秒鐘執(zhí)行所述恢復(fù)分區(qū)從所述指針文件中獲取當(dāng)前恢復(fù)指針指向的恢復(fù)索引所在的所述恢復(fù)分區(qū)的索引隊列位置。
      [0026]優(yōu)選地,所述索引分區(qū)中的索引,由文件名和文件組成,文件名為從零開始排序,排序在該文件名之后的文件名為該文件名加上該文件名對應(yīng)的文件的格式大小的數(shù)值;其中,所述索引的大小為最多32個字節(jié)組成。
      [0027]為了解決上述技術(shù)問題,本申請還公開了一種用于中間件消息的存儲與傳輸系統(tǒng),應(yīng)用于文件庫中,其特征在于,包括:存儲單元、監(jiān)測單元、寫入傳輸單元和讀取傳輸單元;其中,
      [0028]所述存儲單元,用于在所述文件庫中創(chuàng)建數(shù)據(jù)隊列、索引隊列和指針文件,其中,該索引隊列包括對應(yīng)于不同用戶的索引分區(qū);所述數(shù)據(jù)隊列用于順序存儲用戶的數(shù)據(jù),所述索引分區(qū)按照所屬用戶劃分,每個所述索引分區(qū)存儲該用戶在所述數(shù)據(jù)隊列中存儲的數(shù)據(jù)的索引,所述指針文件中的指針指向被讀取的數(shù)據(jù)的索引所在的所述索引分區(qū)的索引隊列位置;
      [0029]所述監(jiān)測單元,用于監(jiān)測到數(shù)據(jù)存入所述文件庫時,指示所述寫入傳輸單元;監(jiān)測到讀取所述文件庫中的數(shù)據(jù)時,指示所述讀取傳輸單元;
      [0030]所述寫入傳輸單元,用于將該數(shù)據(jù)存入所述存儲單元創(chuàng)建的數(shù)據(jù)隊列中,完成后將該數(shù)據(jù)對應(yīng)的索引存儲到與該數(shù)據(jù)所屬用戶相對應(yīng)的所述索引隊列中;
      [0031]所述讀取傳輸單元,用于從所述存儲單元的指針文件中獲取當(dāng)前指針指向的索引所在的所述索引分區(qū)的索引隊列位置,并根據(jù)該索引隊列位置獲取下一條索引,通過該索引從所述數(shù)據(jù)隊列中讀取對應(yīng)的數(shù)據(jù)投遞完成,并更新所述指針文件中當(dāng)前指針指向的索引所在的所述索引分區(qū)的索引隊列位置。
      [0032]優(yōu)選地,所述存儲單元,還用于在所述索引隊列中創(chuàng)建一恢復(fù)分區(qū);
      [0033]所述讀取傳輸單元,還用于從所述存儲單元的指針文件中獲取當(dāng)前指針指向的索引所在的所述索引分區(qū)的索引隊列位置,并根據(jù)該索引隊列位置獲取下一條索引,通過該索引從所述數(shù)據(jù)隊列中讀取對應(yīng)的數(shù)據(jù)投遞失敗時,將該索引存入所述恢復(fù)分區(qū)中的索引隊列;
      [0034]同時,監(jiān)測到讀取所述文件庫中的數(shù)據(jù)時,所述恢復(fù)分區(qū)從所述指針文件中獲取當(dāng)前恢復(fù)指針指向的恢復(fù)索引所在的所述恢復(fù)分區(qū)的索引隊列位置,并根據(jù)該索引隊列位置獲取下一條恢復(fù)索引,通過該恢復(fù)索引從所述數(shù)據(jù)隊列中讀取對應(yīng)的數(shù)據(jù)投遞完成,并更新所述指針文件中當(dāng)前恢復(fù)指針指向的索引所在的所述恢復(fù)分區(qū)的索引隊列位置。
      [0035]優(yōu)選地,所述讀取傳輸單元,還用于通過該恢復(fù)索引從所述數(shù)據(jù)隊列中讀取對應(yīng)的數(shù)據(jù)投遞失敗時,將該恢復(fù)索引放入所述存儲單元的恢復(fù)分區(qū)中的索引隊列的排序執(zhí)行末端。
      [0036]優(yōu)選地,所述讀取傳輸單元,還用于監(jiān)控所述恢復(fù)分區(qū)中的索引隊列中的至少十個恢復(fù)索引從所述數(shù)據(jù)隊列中讀取對應(yīng)的數(shù)據(jù)進(jìn)行投遞的失敗率,若所述失敗率超過20%,則延時至少5秒鐘執(zhí)行所述恢復(fù)分區(qū)從所述指針文件中獲取當(dāng)前恢復(fù)指針指向的恢復(fù)索弓I所在的所述恢復(fù)分區(qū)的索引隊列位置。
      [0037]優(yōu)選地,其特征在于,所述索引
      當(dāng)前第1頁1 2 3 4 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1