一种处理高频率多并发的数据连接方法与流程

文档序号:14216633阅读:209来源:国知局

本发明涉及一种数据处理方法,属于计算机网络通信技术领域。



背景技术:

随着物联网和大数据的发展,出现了很多实时性要求高、终端分布多、并发请求量大的应用情形,比如一个采集中央空调各个参数的检测控制系统,需要时刻监控空调设备的各项参数是否发生异常,当有异常发生时,能够第一时间通知维保人员,以便尽快排出故障或消除故障,这就要求需要每隔三到五秒进行一次数据采集并发送给服务器进行判断,其数据处理方法在服务器端,收到连接请求,需要申请内存空间、分配连接资源、处理数据、释放连接资源等操作,当有很多采集终端连接到同一台服务器时,对服务器的性能要求将非常之高,以往每台双核2.0ghzcpu、4gb内存配置的服务器最多能同时接收100个终端已经是满负荷运行,如何在不增加服务器配置的情况下,能够容纳更多的数据连接已经成为行业亟待解决的问题。



技术实现要素:

为了克服现有技术的不足,本发明提供一种使相同配置的服务器能够容纳更多数据连接的处理高频率多并发的数据连接方法。

本发明解决其技术问题所采用的技术方案是:

一种处理高频率多并发的数据连接方法,该方法的数据连接步骤如下:

s01:开始;

s02:建立端口并绑定ip;

s03:建立客户端连接池,注册接收事件参数和发送事件参数的缓存列表;

s04:进入侦听状态;

s05:开始接收客户端异步数据;

s06:判断数据是否为空,如果是执行步骤s07,如果否则执行步骤s08;

s07:建立异步客户端事件参数,并注册接收完成事件参数;

s08:释放上次绑定的客户端,等待下一个客户端连接;

s09:异步等待连接;

s10:接收到连接,将连接加入到缓存列表,从客户端连接池中pop出一个用户端口,并绑定当前客户端,准备接收数据,同时准备下一个连接;

s11:异步接收客户端数据;

s12:判断是否有绑定协议,否则执行步骤s13,是则执行步骤s16;

s13:根据协议定义,将当前客户端绑定协议对象;

s14:判断是否绑定成功,如果否则执行步骤s15,是则执行步骤s16;

s15:非法连接,关闭并回收用户端口到连接池;

s16:处理数据,同时接收其它客户端数据;

s17:解析对应协议数据;

s18:判断解析是否正确,否则执行步骤s19,是则执行步骤s20;

s19:回应客户端处理失败;

s20:处理协议,识别数据类型,并按照数据类型执行相应的程序,该步骤中,将数据分成数据采集d1、控制指令d2和日志数据d3三种。

数据采集d1类型的处理流程如下:

如果识别为其它控制命令的返回数据d4,则不做处理,如果识别为正常采集数据d5,则执行步骤s21,如果识别为异常数据d6,则执行步骤s24;

s21:保存数据;

s22:判断是否保存成功,否执行步骤s23,是执行步骤s25;

s23:回应客户端保存失败;

s24:记录异常信息,保存到异常记录表;

s25:回应客户端处理结果。

控制指令d2类型的处理流程如下:

s26:查找对应客户端的用户参数;

s27:发送对应命令给对应客户端。

日志数据d3类型的处理流程如下:

s28:连续下发日志信息给客户端,并将日志信息保存到此客户端对应的数据库中。

本发明的有益效果是:本发明的方法是服务启动后,根据预先设定的最大连接可能数量,先期进行申请内存空间、分配连接资源的操作,并将连接资源放入缓存列表,当每次收到连接数据后,直接从缓存列表取出一条连接资源,对收到的数据进行处理,数据处理完成后,不对连接资源进行释放,而是重新放入缓存,留待下次连接继续使用,这样大大节省了服务器的开销,使相同配置的服务器能够容纳的数据连接扩充三倍以上。

附图说明

下面结合附图和实施例对本发明进一步说明。

图1是本发明的流程图。

具体实施方式

参照图1,一种处理高频率多并发的数据连接方法,该方法的数据连接步骤如下:

s01:开始;

s02:建立端口并绑定ip(socketbind(ipport);

s03:建立客户端连接池(clienttokenpool),注册接收事件参数(receiveeventargs)和发送事件参数(sendeventargs)的缓存列表(io_complete);

s04:进入侦听状态;

s05:开始接收客户端异步数据(startacceptsocketasynceventargs);

s06:判断数据是否为空,如果是执行步骤s07,如果否则执行步骤s08;

s07:建立异步客户端事件参数(socketasynceventargs),并注册接收完成事件参数(accepteventargcompleted);

s08:释放上次绑定的客户端(socket),等待下一个客户端(socket)连接;

s09:异步等待连接(acceptasync);

s10:接收到连接,将连接加入到缓存列表(io_complete)(processacceptsocketasynceventargs),从客户端连接池(clienttokenpool)中pop出(弹出操作)一个用户端口(usertoken),并绑定当前客户端(socket),准备接收数据,同时准备下一个连接;

s11:异步接收客户端数据(clienttoken.socket.receiveasyncreceiveeventargs);

s12:判断是否有绑定协议,否则执行步骤s13,是则执行步骤s16;

s13:根据协议定义,将当前客户端绑定协议对象(buildingsocketinvokeelement);

s14:判断是否绑定成功,如果否则执行步骤s15,是则执行步骤s16;

s15:非法连接(closesocket),关闭并回收用户端口到连接池;

s16:处理数据(socketinvokeelement..processreceive),同时接收其它客户端数据;

s17:解析对应协议数据(frame.parsedata);

s18:判断解析是否正确,否则执行步骤s19,是则执行步骤s20;

s19:回应客户端处理失败(sendresult);

s20:处理协议,识别数据类型,并按照数据类型执行相应的程序;该步骤中,将数据分成数据采集d1、控制指令d2和日志数据d3三种。

数据采集d1类型的处理流程如下:

如果识别为其它控制命令的返回数据d4,则不做处理,如果识别为正常采集数据d5,则执行步骤s21,如果识别为异常数据d6,则执行步骤s24;

s21:保存数据;

s22:判断是否保存成功,否执行步骤s23,是执行步骤s25;

s23:回应客户端保存失败(sendresult);

s24:记录异常信息,保存到异常记录表;

s25:回应客户端处理结果(sendresult)。

控制指令d2类型的处理流程如下:

s26:查找对应客户端的用户参数(usertoken);

s27:发送对应命令给对应客户端(send)。

日志数据d3类型的处理流程如下:

s28:连续下发日志信息给客户端,并将日志信息保存到此客户端对应的数据库中。

本发明的方法是服务启动后,根据预先设定的最大连接可能数量(比如300),先期进行申请内存空间、分配连接资源的操作,并将连接资源放入缓存列表,当每次收到连接数据后,直接从缓存列表取出一条连接资源,对收到的数据进行处理,数据处理完成后,不对连接资源进行释放,而是重新放入缓存,留待下次连接继续使用,这样大大节省了服务器的开销,使相同配置的服务器(2核心2.0ghzcpu和4gb内存)能够容纳的数据连接扩充三倍以上(之前相同配置的服务器最多容纳100条,采用本发明的方法可以容纳300条以上)。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1