一种使用异步非阻塞模式处理多客户端接入的方法及装置制造方法及图纸

技术编号:30516409 阅读:16 留言:0更新日期:2021-10-27 22:59
本发明专利技术涉及通信技术领域,具体涉及一种使用异步非阻塞模式处理多客户端接入的方法及装置,包括主用工作组主用线程及线程池模块、辅助工作组工作线程及线程池模块、多路服务器selector和负载均衡模块,本发明专利技术在服务器端采用主从工作组模型,主用工作组负责客户端ACCEPT接入、认证、握手、登录请求,并生成channel注册到多路复用器selector上;辅助工作组负责I/O处理、用户自定义任务、用户定时任务。采用本发明专利技术,通过使用异步非阻塞模式,加双线程组方式,能够有效解决多客户端同时接入请求。求。求。

【技术实现步骤摘要】
一种使用异步非阻塞模式处理多客户端接入的方法及装置


[0001]本专利技术涉及通信
,具体涉及一种使用异步非阻塞模式处理多客户端接入的方法及装置。

技术介绍

[0002]网络技术的飞速发展,对网络的可靠性提出了更高的要求,为了提高用户使用软件的体验,和软件交互过程中不卡顿,请求能得到及时响应,软件的设计需要考虑大量用户同时接入服务器时依然拥有高性能和稳定性,通信框架的设计就显得尤为重要。在软件运行初期,业务量较小,用户数量也较小,使用传统的BIO通信方式能够应付当前需求,但是一旦业务量和用户数量增长较快,传统的BIO方式已经无法满足用户需求,此时的服务器就会出现拥塞,用户无法连接,服务器CPU满负荷,系统崩溃重启,用户登录将一直等待,直到超时。这样的场面对用户和服务器提供商来说都是灾难性的。
[0003]AIO(异步非阻塞I/O)提供了一套通用的、开发语言无关的、协议无关的、高性能的通信方式,可以很好的满足多用户同时接入的需求。传统的BIO接入方式为一个请求一个线程,每当一个用户接入时,服务端(这里指单机服务器)就开启一个线程为该用户服务,当用户数量增加到百级以上时,服务端就无法及时处理请求,原因是一台服务器所能开启的最大线程数为1000个。此时解决方式有两种:第一种是添加服务器,将若干台服务器组成集群,前端采用负载均衡方式,将请求平均的分派到每台服务器上;第二种是从软件入手,改为高性能的AIO通信框架,最大化单台服务器的处理能力,同时根据未来可能的用户量合理的添加一定数量的服务器。很显然第一种解决方式需要更多的硬件资源,更多的硬件资源意味着更高的成本。第二种解决方式虽然也会增加硬件资源,但是总体成本肯定会远低于第一种的成本。
[0004]AIO通信框架的根本思想是:AIO,即异步非阻塞I/O,指在服务器软件内部,方法调用是异步的,不需要立即返回处理结果,线程运行是非阻塞的,CPU能够一直处理准备就绪的线程任务,不会让线程阻塞在等待任务就绪的地方。
[0005]AIO通信框架的实现包括:多路复用技术,高效的线程模型设计。
[0006]上述多路复用技术是指多个用户请求对应一个或者少量几个的处理线程,而不是传统的一对一的方式,如果设计得当,一个处理请求线程完全能够满足多用户的同时接入。该技术会在高效的线程模型设计中体现。
[0007]高效的线程模型设计是指编码阶段的具体方案,具体实现为:开启两个工作组:main工作组和sub工作组,main工作组包含一个主线程和一个线程池,主线程的工作是绑定IP和监听端口,收集用户的ACCEPT请求,将请求放入请求队列中,线程池的工作是从请求队列中获取用户的ACCEPT请求,并进行认证、握手、登录处理,然后与客户端建立连接,生成channel,将channel放入selector中,同时处理任务队列中的任务。sub工作组包含一个主线程和一个线程池,主线程的工作是轮询selector中的channel,将准备就绪的channel放入就绪队列中,线程池的工作是从就绪队列中获取channel,处理channel中的read和write
事件,并处理任务队列中的任务和定时任务。

技术实现思路

[0008]针对现有技术的不足,本专利技术公开了一种使用异步非阻塞模式处理多客户端接入的方法及装置,用于解决上述存在的问题。
[0009]本专利技术通过以下技术方案予以实现:
[0010]第一方面,本专利技术公开了一种使用异步非阻塞模式处理多客户端接入的方法,包括以下步骤:
[0011]S1初始化main工作组并开启主线程M,绑定监听IP+端口后,开启main工作组线程池MPool并开始轮询;
[0012]S2初始化请求队列RQ及selector多路复用选择器;开启sub工作组主线程S并开始轮询selector,开启sub工作组线程池SPool,初始化就绪队列WQ;
[0013]S3线程M监听到有客户端ACCEPT请求后,将ACCPET请求放入RQ中,MPool轮询RQ,当RQ有请求数据时,获取请求数据,将请求以负载均衡的方式分派到MPool中的每个线程;
[0014]S4处理ACCEPT请求,进行身份验证、握手、登录操作,生成对应的channel,并注册到selector中;
[0015]S5线程S轮询selector中的channel,并将channel放入WQ中,SPool轮询WQ,WQ中有请求数据时,获取请求数据,将请求以负载均衡的方式分派到SPool中的每个线程;
[0016]S6业务层代码根据查询参数去数据库查找对应的网元相关业务信息并封装成对象返回给线程S;
[0017]S7线程S收到业务层返回的结果,将结果封装到channel中并返回,客户端收到来自服务端的响应,解析完成后正确显示。
[0018]更进一步的,所述main工作组和sub工作组均包含一个主线程和一个线程池。
[0019]更进一步的,所述main工作组主线程用于绑定IP和监听端口,收集用户的ACCEPT请求,将请求放入请求队列中;
[0020]所述main工作组线程池用于从请求队列中获取用户的ACCEPT请求,并进行认证、握手、登录处理,然后与客户端建立连接,生成channel,将channel放入selector中,同时处理任务队列中的任务。
[0021]更进一步的,所述sub工作组主线程用于轮询selector中的channel,将准备就绪的channel放入就绪队列中;
[0022]所述sub工作组线程池用于从就绪队列中获取channel,处理channel中的read和write事件,并处理任务队列中的任务和定时任务。
[0023]更进一步的,所述main工作组和sub工作组构成线程模型,用于实现使用一个处理请求线程满足多用户的同时接入。
[0024]第二方面,本专利技术公开一种使用异步非阻塞模式处理多客户端接入的装置,所述装置用于提供硬件载体以实现第一方面所述的使用异步非阻塞模式处理多客户端接入的方法,包括:主用工作组主用线程及线程池模块、辅助工作组工作线程及线程池模块、多路服务器selector和负载均衡模块。
[0025]更进一步的,所述主用工作组主用线程模块,用于监听来自客户端的连接请求,并
将请求放入请求队列中;
[0026]所述主用工作组线程池模块,用于读取请求队列中的请求数据,并处理请求,生成channel注册到selector。
[0027]更进一步的,所述辅助工作组工作线程模块,用于轮询selector中就绪的channel,将channel放入工作队列中;
[0028]所述辅助工作组线程池模块,用于读取工作队列中的channel数据,并进行业务处理。
[0029]更进一步的,所述多路服务器selector,用于维护channel集合。
[0030]更进一步的,所述负载均衡模块,用于将客户端的流量平均的分派本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种使用异步非阻塞模式处理多客户端接入的方法,其特征在于,所述方法包括以下步骤:S1初始化main工作组并开启主线程M,绑定监听IP+端口后,开启main工作组线程池MPool并开始轮询;S2初始化请求队列RQ及selector多路复用选择器;开启sub工作组主线程S并开始轮询selector,开启sub工作组线程池SPool,初始化就绪队列WQ;S3线程M监听到有客户端ACCEPT请求后,将ACCPET请求放入RQ中,MPool轮询RQ,当RQ有请求数据时,获取请求数据,将请求以负载均衡的方式分派到MPool中的每个线程;S4处理ACCEPT请求,进行身份验证、握手、登录操作,生成对应的channel,并注册到selector中;S5线程S轮询selector中的channel,并将channel放入WQ中,SPool轮询WQ,WQ中有请求数据时,获取请求数据,将请求以负载均衡的方式分派到SPool中的每个线程;S6业务层代码根据查询参数去数据库查找对应的网元相关业务信息并封装成对象返回给线程S;S7线程S收到业务层返回的结果,将结果封装到channel中并返回,客户端收到来自服务端的响应,解析完成后正确显示。2.根据权利要求1所述的使用异步非阻塞模式处理多客户端接入的方法,其特征在于,所述main工作组和sub工作组均包含一个主线程和一个线程池。3.根据权利要求2所述的使用异步非阻塞模式处理多客户端接入的方法,其特征在于,所述main工作组主线程用于绑定IP和监听端口,收集用户的ACCEPT请求,将请求放入请求队列中;所述main工作组线程池用于从请求队列中获取用户的ACCEPT请求,并进行认证、握手、登录处理,然后与客户端建立连接,生成channel,将channel放入selector中,同时处理任务队列中的任务。4.根据权利要求2所述的使用异步非阻塞模式处理多客户端接...

【专利技术属性】
技术研发人员:郭清川
申请(专利权)人:浙江亿邦通信科技有限公司
类型:发明
国别省市:

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

1