CN102624889A - 一种基于接收与处理分离的海量数据并发性处理方法 - Google Patents
一种基于接收与处理分离的海量数据并发性处理方法 Download PDFInfo
- Publication number
- CN102624889A CN102624889A CN2012100560343A CN201210056034A CN102624889A CN 102624889 A CN102624889 A CN 102624889A CN 2012100560343 A CN2012100560343 A CN 2012100560343A CN 201210056034 A CN201210056034 A CN 201210056034A CN 102624889 A CN102624889 A CN 102624889A
- Authority
- CN
- China
- Prior art keywords
- data
- processing
- thread
- dynamic area
- receiving
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明公开了一种基于接收与处理分离的海量数据并发性处理方法。服务端进程启动时,开启至少一个数据处理线程和一个数据接收线程,同时开辟一段动态存储区;数据接收线程通过socket侦听并接收客户端数据,并把数据放入动态存储区;数据处理线程对动态存储区进行轮询,如果其中存在数据,则从中依次取出数据并对数据进行判断:如果是基于上一个数据包的数据,则对数据进行组包并判断数据是否是基于上一个包的最后数据,如果不是,则继续从动态存储区中取数据,直到取得的是基于同一个业务的最后一个数据包,则组包完成;将完整的基于同一业务的数据进行后续业务处理。本发明可提高大数据量数据传输、数据密集型计算、并行计算的效率,提高系统稳定性。
Description
技术领域
本发明涉及一种数据处理方法,尤其涉及一种基于接收与处理分离的海量数据并发性处理方法,属于计算机技术与通信领域。
背景技术
在基于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、对完成组包的完整的基于同一业务的数据进行后续的业务处理。
至此,即完成了本发明的基于接收与处理分离的海量数据并发性处理过程。
本发明在服务端进程启动时开启多个线程,并对这些线程进行逻辑上的分类,分为数据接收线程与数据处理线程,同时开辟一段动态存储区,通过动态存储区对数据接收线程与数据处理线程进行关联,数据接收线程只负责接收数据,然后把数据放入动态存储区,这样能够显著提高数据终端的接入量以及接入效率,显著提高单位时间终端接入数量;数据接收线程根据业务处理需要进行动态配置,以满足不同应用系统的数据处理要求;数据处理线程对动态存储区进行轮询并获取数据进行处理,这样多个数据处理线程并行处理,进行数据密集型计算、数据并行计算,显著提高海量数据处理能力
本发明方法逻辑清晰,数据接收与处理分离,解决了系统接收、处理数据的瓶颈,通过多线程轮询,解决了接收后对数据按顺序进行组包的难题,显著提高了系统处理海量数据传输的效率以及对海量数据的并行处理、密集计算的能力,并使系统稳定性得以提高。
Claims (1)
1.一种基于接收与处理分离的海量数据并发性处理方法,其特征在于,服务端进程启动时,开启至少一个数据处理线程和一个数据接收线程,同时开辟一段用于存储接收到的客户端数据的动态存储区;数据接收线程通过socket侦听并接收客户端数据,并把接收到的客户端数据放入动态存储区;数据处理线程对动态存储区进行轮询,如果动态存储区存在数据,则从动态存储区中依次取出数据并对数据进行判断:如果取得的数据是基于上一个数据包的数据,则对数据进行组包并判断数据是否是基于上一个数据包的最后数据,如果不是,则继续从动态存储区中取数据,直到取得的是基于同一个业务的最后一个数据包,则组包完成;将完整的基于同一业务的数据进行后续的业务处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100560343A CN102624889A (zh) | 2012-03-06 | 2012-03-06 | 一种基于接收与处理分离的海量数据并发性处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100560343A CN102624889A (zh) | 2012-03-06 | 2012-03-06 | 一种基于接收与处理分离的海量数据并发性处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102624889A true CN102624889A (zh) | 2012-08-01 |
Family
ID=46564571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012100560343A Pending CN102624889A (zh) | 2012-03-06 | 2012-03-06 | 一种基于接收与处理分离的海量数据并发性处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102624889A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102821164A (zh) * | 2012-08-31 | 2012-12-12 | 河海大学 | 一种高效并行分布式数据处理系统 |
CN102833336A (zh) * | 2012-08-31 | 2012-12-19 | 河海大学 | 分散分布式信息采集与并发处理系统中数据分包处理方法 |
CN104142865A (zh) * | 2014-07-18 | 2014-11-12 | 国家电网公司 | 一种基于线程同步的数据收集处理方法 |
CN104615684A (zh) * | 2015-01-22 | 2015-05-13 | 北京彩云动力教育科技有限公司 | 一种海量数据通信并发处理方法及系统 |
CN104821924A (zh) * | 2014-01-30 | 2015-08-05 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN105763634A (zh) * | 2016-04-14 | 2016-07-13 | 北京思特奇信息技术股份有限公司 | 一种基于tcp长连接的服务实现方法和装置 |
CN107819612A (zh) * | 2014-11-03 | 2018-03-20 | 中国人民解放军空军装备研究院雷达与电子对抗研究所 | 一种对空射击管理系统中的监管方法 |
CN108462682A (zh) * | 2017-02-22 | 2018-08-28 | 成都鼎桥通信技术有限公司 | 初始对话协议sip消息的分发方法和装置 |
CN110222007A (zh) * | 2019-06-20 | 2019-09-10 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的加速运行方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020032831A1 (en) * | 2000-03-08 | 2002-03-14 | Ashley Saulsbury | VLIW computer processing architecture with on-chip dynamic RAM |
CN101404661A (zh) * | 2008-11-20 | 2009-04-08 | 华北电力大学 | 一种基于udp协议的实时数据通讯方法 |
CN101968649A (zh) * | 2010-10-18 | 2011-02-09 | 淮阴工学院 | 网络型生猪养殖环境控制系统与智能型环境因子控制方法 |
-
2012
- 2012-03-06 CN CN2012100560343A patent/CN102624889A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020032831A1 (en) * | 2000-03-08 | 2002-03-14 | Ashley Saulsbury | VLIW computer processing architecture with on-chip dynamic RAM |
CN101404661A (zh) * | 2008-11-20 | 2009-04-08 | 华北电力大学 | 一种基于udp协议的实时数据通讯方法 |
CN101968649A (zh) * | 2010-10-18 | 2011-02-09 | 淮阴工学院 | 网络型生猪养殖环境控制系统与智能型环境因子控制方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102833336A (zh) * | 2012-08-31 | 2012-12-19 | 河海大学 | 分散分布式信息采集与并发处理系统中数据分包处理方法 |
CN102821164B (zh) * | 2012-08-31 | 2014-10-22 | 河海大学 | 一种高效并行分布式数据处理系统 |
CN102821164A (zh) * | 2012-08-31 | 2012-12-12 | 河海大学 | 一种高效并行分布式数据处理系统 |
CN104821924B (zh) * | 2014-01-30 | 2018-11-27 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN104821924A (zh) * | 2014-01-30 | 2015-08-05 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN104142865A (zh) * | 2014-07-18 | 2014-11-12 | 国家电网公司 | 一种基于线程同步的数据收集处理方法 |
CN107819612A (zh) * | 2014-11-03 | 2018-03-20 | 中国人民解放军空军装备研究院雷达与电子对抗研究所 | 一种对空射击管理系统中的监管方法 |
CN104615684A (zh) * | 2015-01-22 | 2015-05-13 | 北京彩云动力教育科技有限公司 | 一种海量数据通信并发处理方法及系统 |
CN104615684B (zh) * | 2015-01-22 | 2018-06-12 | 北京彩云动力教育科技有限公司 | 一种海量数据通信并发处理方法及系统 |
CN105763634A (zh) * | 2016-04-14 | 2016-07-13 | 北京思特奇信息技术股份有限公司 | 一种基于tcp长连接的服务实现方法和装置 |
CN105763634B (zh) * | 2016-04-14 | 2019-01-04 | 北京思特奇信息技术股份有限公司 | 一种基于tcp长连接的服务实现方法和装置 |
CN108462682A (zh) * | 2017-02-22 | 2018-08-28 | 成都鼎桥通信技术有限公司 | 初始对话协议sip消息的分发方法和装置 |
CN110222007A (zh) * | 2019-06-20 | 2019-09-10 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的加速运行方法 |
CN110222007B (zh) * | 2019-06-20 | 2023-11-24 | 山东省计算中心(国家超级计算济南中心) | 一种基于申威众核处理器的加速运行方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102624889A (zh) | 一种基于接收与处理分离的海量数据并发性处理方法 | |
CN101917350B (zh) | 一种Linux下基于网卡驱动的零拷贝以太网报文捕获及发送的实现方法 | |
CN104579962B (zh) | 一种区分不同报文的QoS策略的方法及装置 | |
CN101694631B (zh) | 实时作业调度系统及方法 | |
CN103391256A (zh) | 一种基于Linux系统的基站用户面数据处理优化方法 | |
CN105577567A (zh) | 基于Intel DPDK的网络数据包并行处理方法 | |
CN106101021B (zh) | 一种以太网系统功能块的实时执行调度方法 | |
CN103067218B (zh) | 一种高速网络数据包内容分析装置 | |
US10541927B2 (en) | System and method for hardware-independent RDMA | |
CN103200116B (zh) | 非面向连接的可靠udp传输协议及数据传输方法 | |
CN102821164A (zh) | 一种高效并行分布式数据处理系统 | |
CN102104548A (zh) | 一种数据包接收处理方法和装置 | |
CN107102897A (zh) | 一种多gpu并行处理的数据库主动防御方法 | |
CN104317947B (zh) | 一种基于海量数据的实时结构化数据比对系统 | |
CN110851252A (zh) | 一种基于tsn架构的规约转换设备和规约转换方法 | |
CN104717189A (zh) | 网络数据包的发送方法及装置 | |
CN102866922B (zh) | 一种海量数据多线程并行处理中的负载均衡方法 | |
CN108829508A (zh) | 任务处理方法和装置 | |
CN104065588A (zh) | 一种数据包调度和缓存的装置及方法 | |
CN105761039A (zh) | 快递信息大数据处理方法 | |
CN107832149A (zh) | 一种针对多核处理器动态分组管理的Receive‑side Scaling电路 | |
CN103916316A (zh) | 网络数据包线速捕获方法 | |
CN105530196B (zh) | 一种afdx终端系统基于子虚链路的调度方法 | |
CN102404184A (zh) | 数据传输系统及其传输方法 | |
CN109862023B (zh) | 一种嵌入式设备实现加速计算和高速网络数据传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120801 |