预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局*CN102624889A*(12)发明专利申请(10)申请公布号CN102624889A(43)申请公布日2012.08.01(21)申请号201210056034.3(22)申请日2012.03.06(71)申请人河海大学地址211000江苏省南京市江宁开发区佛城西路8号(72)发明人彭建华徐立中周蕙(74)专利代理机构南京经纬专利商标代理有限公司32200代理人许方(51)Int.Cl.H04L29/08(2006.01)G06F9/38(2006.01)权利要求书权利要求书1页1页说明书说明书22页页附图附图22页(54)发明名称一种基于接收与处理分离的海量数据并发性处理方法(57)摘要本发明公开了一种基于接收与处理分离的海量数据并发性处理方法。服务端进程启动时,开启至少一个数据处理线程和一个数据接收线程,同时开辟一段动态存储区;数据接收线程通过socket侦听并接收客户端数据,并把数据放入动态存储区;数据处理线程对动态存储区进行轮询,如果其中存在数据,则从中依次取出数据并对数据进行判断:如果是基于上一个数据包的数据,则对数据进行组包并判断数据是否是基于上一个包的最后数据,如果不是,则继续从动态存储区中取数据,直到取得的是基于同一个业务的最后一个数据包,则组包完成;将完整的基于同一业务的数据进行后续业务处理。本发明可提高大数据量数据传输、数据密集型计算、并行计算的效率,提高系统稳定性。CN1026489ACN102624889A权利要求书1/1页1.一种基于接收与处理分离的海量数据并发性处理方法,其特征在于,服务端进程启动时,开启至少一个数据处理线程和一个数据接收线程,同时开辟一段用于存储接收到的客户端数据的动态存储区;数据接收线程通过socket侦听并接收客户端数据,并把接收到的客户端数据放入动态存储区;数据处理线程对动态存储区进行轮询,如果动态存储区存在数据,则从动态存储区中依次取出数据并对数据进行判断:如果取得的数据是基于上一个数据包的数据,则对数据进行组包并判断数据是否是基于上一个数据包的最后数据,如果不是,则继续从动态存储区中取数据,直到取得的是基于同一个业务的最后一个数据包,则组包完成;将完整的基于同一业务的数据进行后续的业务处理。2CN102624889A说明书1/2页一种基于接收与处理分离的海量数据并发性处理方法技术领域[0001]本发明涉及一种数据处理方法,尤其涉及一种基于接收与处理分离的海量数据并发性处理方法,属于计算机技术与通信领域。背景技术[0002]在基于TCP/IP的通信系统开发中,都要涉及到基于SOCKET技术进行程序的开发,基于SOCKET技术开发,涉及客户端发送数据与服务端接收数据,而基于SOCKET技术服务端的实现流程如下:1.加载套接字2.创建监听的套接字3.绑定套接字4.监听套接字5.收到客户端数据,处理客户端相关请求在第5点,服务端接收到客户端数据,一般产生一个线程,把接收到的数据传给这个新线程进行处理。[0003]由于基于windows、linux或Unix系统的soctet通信一次通信传输的数据缺省情况是8K字节,因此在一次完整的业务过程中,如果客户端传输给服务端的数据达到几兆、几十兆以及上百兆,那么客户端将会对这些数据多次按顺序分包发送,而服务端将会多次接收到客户端基于同一个业务发过来的数据,然后对传过来的数据进行组包,进行处理,按照服务端接收客户端数据然后产生一个线程对传过来的数据进行处理,这样服务端将会在瞬间产生大量处理数据的线程,同时按照多线程的机制,服务端瞬间按顺序产生了大量线程,但这些线程的执行并不是按主线程产生子线程的顺序执行,同时产生的子线程也不是按先后顺序依次执行,而是按照调度无序并行执行,这样对基于同一业务的数据在服务端进行组包将出现问题。发明内容[0004]本发明所要解决的技术问题在于克服现有技术的不足,提供一种基于接收与处理分离的海量数据并发性处理方法,能够显著提高系统对海量数据的传输效率以及数据并行处理、密集计算的能力。[0005]本发明具体采用以下技术方案解决上述技术问题。[0006]一种基于接收与处理分离的海量数据并发性处理方法,服务端进程启动时,开启至少一个数据处理线程和一个数据接收线程,同时开辟一段用于存储接收到的客户端数据的动态存储区;数据接收线程通过socket侦听并接收客户端数据,并把接收到的客户端数据放入动态存储区;数据处理线程对动态存储区进行轮询,如果动态存储区存在数据,则从动态存储区中依次取出数据并对数据进行判断:如果取得的数据是基于上一个数据包的数据,则对数据进行组包并判断数据是否是基于上一个数据包的最后数据,如果不是,则继续3CN102624889A说明书2/2页从动态存储区中取数据,直到