当前位置: 首页 > 专利查询>河海大学专利>正文

一种基于接收与处理分离的海量数据并发性处理方法技术

技术编号:7633343 阅读:177 留言:0更新日期:2012-08-03 21:22
本发明专利技术公开了一种基于接收与处理分离的海量数据并发性处理方法。服务端进程启动时,开启至少一个数据处理线程和一个数据接收线程,同时开辟一段动态存储区;数据接收线程通过socket侦听并接收客户端数据,并把数据放入动态存储区;数据处理线程对动态存储区进行轮询,如果其中存在数据,则从中依次取出数据并对数据进行判断:如果是基于上一个数据包的数据,则对数据进行组包并判断数据是否是基于上一个包的最后数据,如果不是,则继续从动态存储区中取数据,直到取得的是基于同一个业务的最后一个数据包,则组包完成;将完整的基于同一业务的数据进行后续业务处理。本发明专利技术可提高大数据量数据传输、数据密集型计算、并行计算的效率,提高系统稳定性。

【技术实现步骤摘要】

本专利技术涉及一种数据处理方法,尤其涉及,属于计算机技术与通信领域。
技术介绍
在基于TCP/IP的通信系统开发中,都要涉及到基于SOCKET技术进行程序的开发,基于SOCKET技术开发,涉及客户端发送数据与服务端接收数据,而基于SOCKET技术服务端的实现流程如下 1.加载套接字 2.创建监听的套接字 3.绑定套接字 4.监听套接字 5.收到客户端数据,处理客户端相关请求 在第5点,服务端接收到客户端数据,一般产生一个线程,把接收到的数据传给这个新线程进行处理。由于基于windows、linux或Unix系统的soctet通信一次通信传输的数据缺省情况是8K字节,因此在一次完整的业务过程中,如果客户端传输给服务端的数据达到几兆、几十兆以及上百兆,那么客户端将会对这些数据多次按顺序分包发送,而服务端将会多次接收到客户端基于同一个业务发过来的数据,然后对传过来的数据进行组包,进行处理,按照服务端接收客户端数据然后产生一个线程对传过来的数据进行处理,这样服务端将会在瞬间产生大量处理数据的线程,同时按照多线程的机制,服务端瞬间按顺序产生了大量线程,但这些线程的执行并不是按主线程产生子线程的顺序执行,同时产生的子线程也不是按先后顺序依次执行,而是按照调度无序并行执行,这样对基于同一业务的数据在服务端进行组包将出现问题。
技术实现思路
本专利技术所要解决的技术问题在于克服现有技术的不足,提供,能够显著提高系统对海量数据的传输效率以及数据并行处理、密集计算的能力。本专利技术具体采用以下技术方案解决上述技术问题。,服务端进程启动时,开启至少一个数据处理线程和一个数据接收线程,同时开辟一段用于存储接收到的客户端数据的动态存储区;数据接收线程通过socket侦听并接收客户端数据,并把接收到的客户端数据放入动态存储区;数据处理线程对动态存储区进行轮询,如果动态存储区存在数据,则从动态存储区中依次取出数据并对数据进行判断如果取得的数据是基于上一个数据包的数据,则对数据进行组包并判断数据是否是基于上一个数据包的最后数据,如果不是,则继续从动态存储区中取数据,直到取得的是基于同一个业务的最后一个数据包,则组包完成;将完整的基于同一业务的数据进行后续的业务处理。本专利技术方法通过将数据接收与处理分离,解决了系统接收、处理数据的瓶颈;通过多线程轮询,解决了接收后对数据按顺序进行组包的难题;本专利技术可显著提高系统处理海量数据传输的效率以及对海量数据的并行处理、密集计算的能力,并使系统稳定性得以提闻。附图说明图I为本专利技术方法的原理示意 图2为本专利技术方法的流程示意图。 具体实施例方式下面结合附图对本专利技术的技术方案进行详细说明 本专利技术的思路是通过数据接收与处理分离,解决系统接收、处理数据的瓶颈;通过多线程轮询,解决接收后对数据按顺序进行组包的难题。本专利技术的关键在于数据接收和处理的分离,即服务端进程启动时,开启至少一个数据处理线程和一个数据接收线程,并开辟一片动态存储区。本专利技术方法的原理如图I所示。本专利技术方法,如图2所示,具体包括以下步骤 步骤I、服务端进程启动时,开启M(M表示多个,可以根据业务处理数据量大小以及服务器性能进行配置)个数据处理线程D,开启一个数据接收线程R,同时在程序中开辟一段用于存储接收到的客户端数据的动态存储区S,并按照FIFO方式管理动态存储区S ; 步骤2、数据接收线程R通过socket侦听并接收客户端传过来的数据,直接把数据放入数据存储区S,立即返回继续侦听接收客户端数据; 步骤3、数据处理线程D对动态存储区S进行轮询,如果动态存储区S存在数据,则从动态存储区S中依次取出数据并对数据进行判断如果取得的数据是基于上一个数据包的数据,则对数据进行组包并判断数据是否是基于上一个包的最后数据,如果不是,则继续从动态存储区S中取数据,直到取得的是基于同一个业务的最后一个数据包,则组包完成; 步骤4、对完成组包的完整的基于同一业务的数据进行后续的业务处理。至此,即完成了本专利技术的基于接收与处理分离的海量数据并发性处理过程。本专利技术在服务端进程启动时开启多个线程,并对这些线程进行逻辑上的分类,分为数据接收线程与数据处理线程,同时开辟一段动态存储区,通过动态存储区对数据接收线程与数据处理线程进行关联,数据接收线程只负责接收数据,然后把数据放入动态存储区,这样能够显著提高数据终端的接入量以及接入效率,显著提高单位时间终端接入数量;数据接收线程根据业务处理需要进行动态配置,以满足不同应用系统的数据处理要求;数据处理线程对动态存储区进行轮询并获取数据进行处理,这样多个数据处理线程并行处理,进行数据密集型计算、数据并行计算,显著提高海量数据处理能力 本专利技术方法逻辑清晰,数据接收与处理分离,解决了系统接收、处理数据的瓶颈,通过多线程轮询,解决了接收后对数据按顺序进行组包的难题,显著提高了系统处理海量数据传输的效率以及对海量数据的并行处理、密集计算的能力,并使系统稳定性得以提高。权利要求1.,其特征在于,服务端进程启动时,开启至少一个数据处理线程和一个数据接收线程,同时开辟一段用于存储接收到的客户端数据的动态存储区;数据接收线程通过socket侦听并接收客户端数据,并把接收到的客户端数据放入动态存储区;数据处理线程对动态存储区进行轮询,如果动态存储区存在数据,则从动态存储区中依次取出数据并对数据进行判断如果取得的数据是基于上一个数据包的数据,则对数据进行组包并判断数据是否是基于上一个数据包的最后数据,如果不是,则继续从动态存储区中取数据,直到取得的是基于同一个业务的最后一个数据包, 则组包完成;将完整的基于同一业务的数据进行后续的业务处理。全文摘要本专利技术公开了。服务端进程启动时,开启至少一个数据处理线程和一个数据接收线程,同时开辟一段动态存储区;数据接收线程通过socket侦听并接收客户端数据,并把数据放入动态存储区;数据处理线程对动态存储区进行轮询,如果其中存在数据,则从中依次取出数据并对数据进行判断如果是基于上一个数据包的数据,则对数据进行组包并判断数据是否是基于上一个包的最后数据,如果不是,则继续从动态存储区中取数据,直到取得的是基于同一个业务的最后一个数据包,则组包完成;将完整的基于同一业务的数据进行后续业务处理。本专利技术可提高大数据量数据传输、数据密集型计算、并行计算的效率,提高系统稳定性。文档编号G06F9/38GK102624889SQ20121005603公开日2012年8月1日 申请日期2012年3月6日 优先权日2012年3月6日专利技术者周蕙, 彭建华, 徐立中 申请人:河海大学本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:彭建华徐立中周蕙
申请(专利权)人:河海大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术