[發明專利]基于MQ和異步IO的數據多級緩存與高速傳輸記錄方法在審
| 申請號: | 202010868475.8 | 申請日: | 2020-08-26 |
| 公開(公告)號: | CN111949422A | 公開(公告)日: | 2020-11-17 |
| 發明(設計)人: | 李敏 | 申請(專利權)人: | 南京云燦信息科技有限公司 |
| 主分類號: | G06F9/54 | 分類號: | G06F9/54 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 210000 江蘇省南京市*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 mq 異步 io 數據 多級 緩存 高速 傳輸 記錄 方法 | ||
1.基于MQ和異步IO的數據多級緩存與高速傳輸記錄方法,該方法適用于整體系統架構中,其特征在于:該整體系統架構由數據發送端和數據接收端和多級緩存組成;
所述數據發送端由數據發送接口單元、高速數據發送單元組成;
所述數據接收端由高速數據接收單元、異步IO記錄單元組成;
所述多級緩存包括發送數據緩存的多級緩存和接收數據緩存的多級緩存。
2.根據權利要求1所述的整體系統架構,其特征在于:所述數據發送端包括三級緩存,且所述三級緩存由發送端一級緩存、發送端二級緩存與發送端三級緩存組成,在數據準備線程和數據發送線程之間通過ZeroMQ的線程間通信模式inproc協議進行通信,且于ZeroMQ的PUSH端和PULL端都設置數據緩存,且該數據緩存發送端一級緩存和發送端二級緩存;在高速數據發送單元將數據向接收方發送時,采用ZeroMQ的TCP協議的DEALER模式進行發送,為了增強數據的傳輸穩定性,設置發送端緩存,且該發送端緩存為發送端三級緩存。
3.根據權利要求1所述的整體系統架構,其特征在于:所述數據接收端包括兩級緩存,且該所述兩級緩存由接收端一級緩存與接收端二級緩存組成,數據通過高速數據接收單元進行接收,采用ZeroMQ的TCP協議的DEALER模式接收數據,通過設置TCP接收緩存,提高數據的穩定性,該所述TCP接收緩存為接收端一級緩存,在高速數據接收單元和異步IO記錄單元兩個單元間,為了提高性能和降低模塊之間的耦合度,設置了記錄數據緩存,該記錄數據緩存為接收端二級緩存。
4.根據權利要求1所述的數據發送端處理方法,其特征在于:
數據發送處理流程:數據發送處理分為兩個線程,數據準備線程和數據發送線程,兩個線程通過發送數據隊列進行數據緩存,交換數據。數據準備線程不斷將準備的數據通過ZeroMQ的inproc協議寫入到數據隊列中,數據發送線程不斷通過ZeroMQ的inproc協議從數據隊列中獲取數據,通過ZeroMQ的TCP協議發送出去,數據發送的接入方式:為數據發送模塊提供靈活的數據發送場景,支持兩種數據接入方式:
接入方式1:提供API接口的數據接入方式,外部應用直接調用該API接口即可完成數據的發送;
接入方式2:提供發送數據隊列的相關參數,外部應用使用ZeroMQ相應的設置,即可往發送數據隊列中寫入數據,進行發送;
該處理方法包括以下步驟:
S1:數據準備線程提供外部API接口,由外部API調用觸發處理邏輯,詳細處理如下:
調用發送接口單元,向發送接口寫入數據,發送接口通過ZMQ,采用inproc協議的PUSH模式發送數據,設置發送數據緩存,發送數據前,先將發送數據寫入到數據緩存,然后再通過緩存將數據發送給數據發送線程;
S2:數據發送線程監聽發送數據隊列,隊列中有數據即觸發數據發送邏輯處理,詳細處理如下:監聽ZMQ,采用inproc協議的PULL模式監聽并接收數據,設置ZMQ接收緩存,監聽到數據后,先存入緩存,然后再從緩存中獲取數據,以防數據流量過大導致的積壓和丟失,將獲取到的數據打包,寫入向外發送的ZMQ數據緩存中,將緩存中的數據通過ZeroMQ的TCP協議的DEALER模式發送出去。
5.根據權利要求1所述的數據接收處理方法,其特征在于:
數據接收處理流程分為兩個線程,數據接收線程和數據記錄線程,兩個線程通過異步IO數據通道進行數據共享,交換數據,數據接收線程不斷通過ZeroMQ的TCP協議從數據隊列中異步獲取數據,寫入異步IO數據通道中,數據記錄線程從異步IO數據通道中獲取數據,通過異步IO技術寫入文件,進行數據記錄,通過共用數據接收和異步IO的異步IO數據通道中的數據緩存地址,減少處理過程中的內存拷貝,減少緩存的消耗和提高數據的寫入速度;
該方法包括以下步驟:
步驟一、數據接收線程監聽發送數據隊列,隊列中有數據即觸發數據接收邏輯處理,詳細處理如下:
S1:初始化異步IO相關的context,iocb,io_event等相關上下文;
S2:初始化用于異步IO通道隊列共享用的數據緩存,空閑列表,空閑列表鎖,已用列表,列表鎖等;
S3:啟動數據記錄線程,并同數據記錄線程共享以上內容;
S4:監聽ZMQ,采用TCP協議的DEALER模式監聽并接收數據;
S5:設置ZMQ接收緩存,監聽到數據后,先存入緩存,然后再從緩存中獲取數據,以防數據流量過大導致的積壓和丟失;
S6:判斷異步IO是否有空閑通道,如有空閑通道,將數據寫入到空閑通道中(與數據記錄線程共享緩存中的內存地址);
S7:為防止數據接收線程和數據記錄線程操作共享變量沖突,在共享變量操作前先鎖定,操作完成后再解鎖。
步驟二、數據記錄線程循環處理異步IO通道,發現隊列中有數據即進行異步IO寫入處理,寫入之后釋放共享緩存中的數據,以便數據接收線程向空閑單元中寫入數據,詳細處理如下:
S1:循環判斷異步IO通道的隊列中是否有數據,有數據即進行以下處理;
S2:將已用隊列鎖定,從已用隊列中獲取需要處理的數據位置,然后解鎖;
S3:根據獲取的數據位置,從緩存隊列中獲取相應數據位置的數據;
S4:根據獲取的數據位置,指定異步IO的iocb中對應可用通道;
S5:調用io_prep_pwrite將數據寫入異步IO;
S6:調用io_submit提交異步IO;
S7:更新空閑隊列;
S8:判斷空閑隊列是否小于整體隊列長度的一半,如小于,則調用io_getevents獲取空閑單元,更新空閑隊列。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京云燦信息科技有限公司,未經南京云燦信息科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010868475.8/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種新型類腦視覺系統
- 下一篇:一種仿生式蟲洞檢測驅蟲的珍貴樹木生長分析儀





