[發明專利]一種多路多通道高速數據流的實時分包解析方法有效
| 申請號: | 201710329006.7 | 申請日: | 2017-05-11 |
| 公開(公告)號: | CN107172037B | 公開(公告)日: | 2020-01-07 |
| 發明(設計)人: | 文穎;葉慎林 | 申請(專利權)人: | 華東師范大學 |
| 主分類號: | H04L29/06 | 分類號: | H04L29/06;H04L12/26 |
| 代理公司: | 31215 上海藍迪專利商標事務所(普通合伙) | 代理人: | 徐筱梅;張翔 |
| 地址: | 200241 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 多路多 通道 高速 數據流 實時 分包 解析 方法 | ||
本發明公開了一種多路多通道高速數據流的實時分包解析方法,該方法包括步驟:a)根據遠程硬件設備的數據流傳輸速度,動態地初始化大環形緩存區和小環形緩存區的容量大小;b)對大環形緩存區的所有寫線程使用互斥鎖進行保護;c)解析線程對大環形緩存區的多路數據進行實時分包得到復幀,并解析得到每一通道的子幀,線程池把子幀寫入相應通道的小環形緩存區中;d)輪詢線程對所有通道的小環形緩存區進行輪詢,把幀數量達到規定值的通道數據讀出并送入計算單元。本發明既節省了內存也保證了解析出來的數據幀的有序性。并使用輪詢線程對所有通道內的有效數據進行監聽,保證數據不發生沾包或者丟包的問題。
技術領域
本發明屬于高速數據流分級緩存技術領域,是一種二級環形實時分包解析技術,尤其是一種多路多通道高速數據流的實時分包解析方法。
背景技術
數據流解析是軟硬件交互的一個重要過程。遠程設備通過TCP協議以較高的傳輸速率的傳輸原始數據流到服務器某端口,服務器異步或者同步接收到原始數據流后,實時地通過數據幀協議的固定結構去把原始數據流進行分包成幀,把有用的幀內部的有效數據提取出來,并送到相關的計算單元進行計算。原始數據流傳輸速度很快,在內部數據幀處于多重幀結構的情況下,需要對數據幀進行多次分包解析,要達到實時接收并分包解析是很困難的,很容易出現緩存溢出的情況。在同時存在多路數據流的情況下,對每一路單獨設置緩存區的做法,既增大了內存消耗,也增大了CPU壓力。而且由于多線程的無序性,該做法不能保證解析出數據幀是有序的,其實用性不強。目前許多方法針對這個不足提出了改良做法,但是效果不佳,難以應對數據流復雜度和傳輸速率很極端的情況。
發明內容
本發明的目的是針對現有技術的不足而提供的一種多路多通道高速數據流的實時分包解析方法,該方法高效率地對數據流進行精確分包和解析,最終解析出有效數據用于后續處理。
實現本發明目的的具體技術方案是:
一種多路多通道高速數據流的實時分包解析方法,特點是該方法包括以下具體步驟:
步驟1:根據遠程硬件設備的數據流傳輸速度,動態地初始化大環形緩存區和小環形緩存區的容量大小;其中,大環形緩存區的容量大小為多路數據流傳輸速率之和的三倍;小環形緩存區為大環形緩存區的容量大小除以通道個數;具體包括:
a1:根據數據流傳輸速度初始化大環形緩存區的容量大小,若傳輸速率為V mbps,則大環形緩存區的容量為(3*V)MB;根據數據流中數據的通道數量初始化小環形緩存區的個數,若每一路數據流中有Q個通道的信號數據,則初始化Q個環形小緩存區;
a2:把大環形緩存區和所有小環形緩存區的首、尾指針歸零;
步驟2:對大環形緩存區的所有寫線程使用互斥鎖進行保護;具體包括:
b1:多個線程各自監聽一個獨立的端口來接收一路數據流;
b2:對大環形緩存區使用互斥鎖;
b3:一個寫線程收到M字節數據后,申請互斥鎖;若獲得互斥鎖,則向大環形緩存區寫入M字節,M是單次接收的數據流的字節數;首指針向后移動M位,釋放互斥鎖,處于等待狀態的寫線程開始申請互斥鎖;
步驟3:解析線程對大環形緩存區的多路數據進行實時分包得到復幀,并解析得到每一通道的子幀,線程池把子幀寫入相應通道的小環形緩存區中;具體包括:
c1:解析線程根據復幀的幀結構,大環形緩存區的尾指針位置開始對數據流進行分包;
c2:解析線程每找到一個復幀的首、尾位置,并把該復幀的位置信息傳遞給線程池,將大環形緩存區的尾指針向后移動復幀的長度個字節;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華東師范大學,未經華東師范大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710329006.7/2.html,轉載請聲明來源鉆瓜專利網。





