一种高并发连接方法和系统技术方案

技术编号:25598492 阅读:35 留言:0更新日期:2020-09-11 23:56
本申请公开了一种高并发连接方法和系统,包括:构建连接管理器,创建状态检测线程、事件监听线程和数据处理线程;状态检测线程检测连接管理器中每个用户的连接状态,将连接状态为在线状态的用户对应的套接字加入至异步输入输出事件监听列表中;事件监听线程对异步输入输出事件监听列表中有读写事件触发的套接字进行读写操作,将从服务端接收到的读写数据存放至数据队列;数据处理线程对数据队列中的数据进行处理,上述三个线程之间的操作过程采用异步输入输出模型。通过采用异步输入输出模型,对数据进行处理,能够实现仅使用一台服务器就发起数十万级的并发连接请求,从而最大化的减少需要使用的服务器的数量,减少服务器的成本以及相应开支。

【技术实现步骤摘要】
一种高并发连接方法和系统
本申请涉及网络测试
,尤其涉及一种高并发连接方法和系统。
技术介绍
目前,大多客户端实现多连接请求,都是以每个连接开启一个线程的方式,每个线程的创建都会带来很大的内存开销;例如,对于一台4G内存的服务器,最多可创建2000个线程,因此也最多可建立2000个长连接。若需要创建更多的连接,只能增加服务器的数量,然而这样就相应的增加了成本。虽然现在的集群和分布式技术可以将并发负载到多台机器上,通过扩展出数十台服务器来解决高并发瓶颈问题,但是还是需要多台服务器,增加了服务器的成本以及相应的开支。综上所述,需要提供一种能够减少使用的服务器的数量,减少服务器的成本以及相应开支的方法和系统。
技术实现思路
为解决以上问题,本申请提出了一种高并发连接方法和系统。一方面,本申请提出一种高并发连接方法,包括:构建连接管理器,创建状态检测线程、事件监听线程和数据处理线程;所述状态检测线程检测所述连接管理器中每个用户的连接状态,将连接状态为在线状态的用户对应的套接字加入至异步输入输出事件监听列表中;所述事件监听线程对异步输入输出事件监听列表中有读写事件触发的套接字进行读写操作,其中,读操作为,将从服务端接收到的读写数据存放至数据队列;所述数据处理线程对数据队列中的数据进行处理,所述状态检测线程、事件监听线程和数据处理线程之间的操作过程采用异步输入输出模型。优选地,所述构建连接管理器包括:构建连接管理器并初始化所述构建连接管理器;连接管理器根据用户数量循环创建套接字,向服务端发起连接,得到用户连接信息并保存。优选地,所述用户连接信息包括用户连接状态。优选地,在所述状态检测线程检测所述连接管理器中每个用户的连接状态之后,还包括:对连接状态为离线状态的用户从新发起连接。优选地,所述事件监听线程对异步输入输出事件监听列表中有读写事件触发的套接字进行读写操作,其中,读操作为,将从服务端接收到的读写数据存放至数据队列包括:当事件监听线程监听到读写事件时,根据套接字在异步输入输出事件监听列表中找到读写事件对应的用户;更新此用户的连接状态为活跃状态,同时调用回调函数,进行读写事件处理;若读写事件处理为读操作,则将从服务端接收到的数据存放至数据队列。优选地,若所述读写事件处理为写操作,则将与用户对应的待发送数据发送至服务端。优选地,若所述用户的连接状态为异常关闭状态或正常关闭状态,则状态检测线程将此用户对应的套接字从异步输入输出事件监听列表中删除。优选地,所述连接管理器包括:IP地址、端口、ID、套接字和连接状态。优选地,所述套接字使用包括IP地址、协议和端口的三元组创建。第二方面,本申请提出一种运行上述的高并发连接方法的高并发连接系统,包括:设置多个虚拟IP或安装多个网卡的服务器。本申请的优点在于:通过采用异步输入输出模型,使用状态检测线程、事件监听线程和数据处理线程对数据进行处理,能够实现仅使用一台服务器就发起数十万级的并发连接请求,从而最大化的减少需要使用的服务器的数量,减少服务器的成本以及相应开支。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选事实方案的目的,而并不认为是对本申请的限制。而且在整个附图中,用同样的参考符号表示相同的部件。在附图中:图1是本申请提供的一种高并发连接方法的步骤示意图;图2是本申请提供的一种高并发连接方法的流程示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。根据本申请的实施方式,提出一种高并发连接方法,如图1所示,包括:S101,构建连接管理器,创建状态检测线程、事件监听线程和数据处理线程;S102,状态检测线程检测连接管理器中每个用户的连接状态,将连接状态为在线(ONLINE)状态的用户对应的套接字加入至异步输入输出事件监听列表中;S103,事件监听线程对异步输入输出事件监听列表中有读写事件触发的套接字进行读写操作,其中,读操作为,将从服务端接收到的读写数据存放至数据队列;S104,数据处理线程对数据队列中的数据进行处理,状态检测线程、事件监听线程和数据处理线程之间的操作过程采用异步输入输出模型。连接管理器是在程序启动时,由主线程进行构建的,构建连接管理器包括:构建连接管理器并初始化构建连接管理器;连接管理器根据用户数量循环创建套接字,向服务端发起连接,得到用户连接信息并保存。用户连接信息包括用户连接状态。数据处理线程对数据队列中的数据进行业务逻辑处理。状态检测线程定时或周期性检测连接管理器中每个用户的连接状态。在状态检测线程检测连接管理器中每个用户的连接状态之后,还包括:对连接状态为离线(OFFLINE)状态的用户从新发起连接。事件监听线程对异步输入输出事件监听列表中有读写事件触发的套接字进行读写操作,其中,读操作为,将从服务端接收到的读写数据存放至数据队列包括:当事件监听线程监听到读写事件时,根据套接字在异步输入输出事件监听列表中找到读写事件对应的用户;更新此用户的连接状态为活跃状态,同时调用回调函数,进行读写事件处理;若读写事件处理为读操作,则将从服务端接收到的数据存放至数据队列。若读写事件处理为写操作,则将与用户对应的待发送数据发送至服务端。若用户的连接状态为异常关闭状态或正常关闭状态,则状态检测线程将此用户对应的套接字从异步输入输出事件监听列表中删除。若事件监听线程经过长时间未检测到读写事件,则此读写事件对应的用户的连接状态会被更新为异常关闭状态。连接管理器包括:IP地址、端口、ID、套接字和连接状态。套接字使用包括IP地址、协议和端口的三元组创建。本申请的实施方式中,将每个连接看做一个用户行为,当做一个用户来管理,所有用户连接表示连接。本申请的实施方式能够用于测试高并发连接装置,例如:聊天服务器、游戏服务器、车机接入服务器、音视频服务器等。由于在测试这类装置时,很难通过组织数十万人发起连接请求,因此需要一个高并发连接客户端作为仿真工具,发起数十万级的并发连接请求,验证服务器处理大量用户同时在线的能力。下面,对本申请实施例进行进一步说明,如图2所示。本申请的实施方式采用异步输入输出模型和事件监听机制,只使用少量几个线程即可实现高并发连接请求和数据处理,并且不受服务器线程数的限制,能够突破65535个连接数。服务器构建连接管理器,连接管理器中包括:IP、端口本文档来自技高网...

【技术保护点】
1.一种高并发连接方法,其特征在于,包括:/n构建连接管理器,创建状态检测线程、事件监听线程和数据处理线程;/n所述状态检测线程检测所述连接管理器中每个用户的连接状态,将连接状态为在线状态的用户对应的套接字加入至异步输入输出事件监听列表中;/n所述事件监听线程对异步输入输出事件监听列表中有读写事件触发的套接字进行读写操作,其中,读操作为,将从服务端接收到的读写数据存放至数据队列;/n所述数据处理线程对数据队列中的数据进行处理,所述状态检测线程、事件监听线程和数据处理线程之间的操作过程采用异步输入输出模型。/n

【技术特征摘要】
1.一种高并发连接方法,其特征在于,包括:
构建连接管理器,创建状态检测线程、事件监听线程和数据处理线程;
所述状态检测线程检测所述连接管理器中每个用户的连接状态,将连接状态为在线状态的用户对应的套接字加入至异步输入输出事件监听列表中;
所述事件监听线程对异步输入输出事件监听列表中有读写事件触发的套接字进行读写操作,其中,读操作为,将从服务端接收到的读写数据存放至数据队列;
所述数据处理线程对数据队列中的数据进行处理,所述状态检测线程、事件监听线程和数据处理线程之间的操作过程采用异步输入输出模型。


2.如权利要求1所述的方法,其特征在于,所述构建连接管理器包括:
构建连接管理器并初始化所述构建连接管理器;
连接管理器根据用户数量循环创建套接字,向服务端发起连接,得到用户连接信息并保存。


3.如权利要求2所述的方法,其特征在于,所述用户连接信息包括用户连接状态。


4.如权利要求1所述的方法,其特征在于,在所述状态检测线程检测所述连接管理器中每个用户的连接状态之后,还包括:
对连接状态为离线状态的用户从新发起连接。


5.如权利要求1所述的方法,其特征在于,所述事件...

【专利技术属性】
技术研发人员:李先楚邓伟张志平胡道生夏曙东
申请(专利权)人:北京中交兴路信息科技有限公司
类型:发明
国别省市:北京;11

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

1