[發明專利]一種基于接收與處理分離的海量數據并發性處理方法無效
| 申請號: | 201210056034.3 | 申請日: | 2012-03-06 |
| 公開(公告)號: | CN102624889A | 公開(公告)日: | 2012-08-01 |
| 發明(設計)人: | 彭建華;徐立中;周蕙 | 申請(專利權)人: | 河海大學 |
| 主分類號: | H04L29/08 | 分類號: | H04L29/08;G06F9/38 |
| 代理公司: | 南京經緯專利商標代理有限公司 32200 | 代理人: | 許方 |
| 地址: | 211000 江蘇*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 接收 處理 分離 海量 數據 并發 方法 | ||
技術領域
本發明涉及一種數據處理方法,尤其涉及一種基于接收與處理分離的海量數據并發性處理方法,屬于計算機技術與通信領域。
背景技術
在基于TCP/IP的通信系統開發中,都要涉及到基于SOCKET技術進行程序的開發,基于SOCKET技術開發,涉及客戶端發送數據與服務端接收數據,而基于SOCKET技術服務端的實現流程如下:
1.??????加載套接字
2.??????創建監聽的套接字
3.??????綁定套接字
4.??????監聽套接字
5.??????收到客戶端數據,處理客戶端相關請求
在第5點,服務端接收到客戶端數據,一般產生一個線程,把接收到的數據傳給這個新線程進行處理。
由于基于windows、linux或Unix系統的soctet通信一次通信傳輸的數據缺省情況是8K字節,因此在一次完整的業務過程中,如果客戶端傳輸給服務端的數據達到幾兆、幾十兆以及上百兆,那么客戶端將會對這些數據多次按順序分包發送,而服務端將會多次接收到客戶端基于同一個業務發過來的數據,然后對傳過來的數據進行組包,進行處理,按照服務端接收客戶端數據然后產生一個線程對傳過來的數據進行處理,這樣服務端將會在瞬間產生大量處理數據的線程,同時按照多線程的機制,服務端瞬間按順序產生了大量線程,但這些線程的執行并不是按主線程產生子線程的順序執行,同時產生的子線程也不是按先后順序依次執行,而是按照調度無序并行執行,這樣對基于同一業務的數據在服務端進行組包將出現問題。
發明內容
本發明所要解決的技術問題在于克服現有技術的不足,提供一種基于接收與處理分離的海量數據并發性處理方法,能夠顯著提高系統對海量數據的傳輸效率以及數據并行處理、密集計算的能力。
本發明具體采用以下技術方案解決上述技術問題。
一種基于接收與處理分離的海量數據并發性處理方法,服務端進程啟動時,開啟至少一個數據處理線程和一個數據接收線程,同時開辟一段用于存儲接收到的客戶端數據的動態存儲區;數據接收線程通過socket偵聽并接收客戶端數據,并把接收到的客戶端數據放入動態存儲區;數據處理線程對動態存儲區進行輪詢,如果動態存儲區存在數據,則從動態存儲區中依次取出數據并對數據進行判斷:如果取得的數據是基于上一個數據包的數據,則對數據進行組包并判斷數據是否是基于上一個數據包的最后數據,如果不是,則繼續從動態存儲區中取數據,直到取得的是基于同一個業務的最后一個數據包,則組包完成;將完整的基于同一業務的數據進行后續的業務處理。
本發明方法通過將數據接收與處理分離,解決了系統接收、處理數據的瓶頸;通過多線程輪詢,解決了接收后對數據按順序進行組包的難題;本發明可顯著提高系統處理海量數據傳輸的效率以及對海量數據的并行處理、密集計算的能力,并使系統穩定性得以提高。
附圖說明
圖1為本發明方法的原理示意圖;
圖2為本發明方法的流程示意圖。
具體實施方式
下面結合附圖對本發明的技術方案進行詳細說明:
本發明的思路是通過數據接收與處理分離,解決系統接收、處理數據的瓶頸;通過多線程輪詢,解決接收后對數據按順序進行組包的難題。本發明的關鍵在于數據接收和處理的分離,即服務端進程啟動時,開啟至少一個數據處理線程和一個數據接收線程,并開辟一片動態存儲區。本發明方法的原理如圖1所示。
本發明方法,如圖2所示,具體包括以下步驟:
步驟1、服務端進程啟動時,開啟M(M表示多個,可以根據業務處理數據量大小以及服務器性能進行配置)個數據處理線程D,開啟一個數據接收線程R,同時在程序中開辟一段用于存儲接收到的客戶端數據的動態存儲區S,并按照FIFO方式管理動態存儲區S;
步驟2、數據接收線程R通過socket偵聽并接收客戶端傳過來的數據,直接把數據放入數據存儲區S,立即返回繼續偵聽接收客戶端數據;
步驟3、數據處理線程D對動態存儲區S進行輪詢,如果動態存儲區S存在數據,則從動態存儲區S中依次取出數據并對數據進行判斷:如果取得的數據是基于上一個數據包的數據,則對數據進行組包并判斷數據是否是基于上一個包的最后數據,如果不是,則繼續從動態存儲區S中取數據,直到取得的是基于同一個業務的最后一個數據包,則組包完成;
步驟4、對完成組包的完整的基于同一業務的數據進行后續的業務處理。
至此,即完成了本發明的基于接收與處理分離的海量數據并發性處理過程。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于河海大學,未經河海大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210056034.3/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:脆性工件的切割方法及切割裝置
- 下一篇:沸石負載鈷混合費-托催化劑





