一种AAA高并发认证方法及系统技术方案

技术编号:18259840 阅读:27 留言:0更新日期:2018-06-20 10:29
本申请公开一种AAA高并发认证方法及系统,所述方法引入Netty服务端,通过Netty将终端设备发送的认证信息转发给AAA认证服务器,认证模块根据认证信息和Redis缓存中的历史认证信息,对终端设备进行认证;以及,对所述Redis缓存中的历史认证信息进行更新。Netty的IO线程NioEventLoop由于聚合了多路复用器Selector,可以同时并发处理成百上千个客户端Channel,由于读写操作都是非阻塞的,这就可以充分提升IO线程的运行效率,避免由于频繁IO阻塞导致的线程挂起,也不需要为线程间的切换而浪费CPU资源,能够解决现有AAA认证技术中网络丢包的技术问题。另外,通过Redis缓存存储信息,降低磁盘IO,提高认证效率。

A high concurrency authentication method and system for AAA

The present application discloses a AAA high concurrency authentication method and system. The method introduces the Netty server. The authentication information sent by the terminal device is forwarded to the AAA authentication server through Netty. The authentication module authenticates the terminal equipment according to the authentication information and the history authentication information in the Redis cache; and the Redis cache is used for the caching of the Redis cache. The historical authentication information is updated. Netty's IO thread NioEventLoop can simultaneously process hundreds of thousands of client Channel due to the aggregation of multiplexer Selector. Because both read and write operations are non blocking, it can fully improve the running efficiency of IO threads, avoid the line path hanging caused by frequent IO blocking, and do not need to switch between threads. Wasting CPU resources can solve the technical problem of network packet loss in the existing AAA authentication technology. In addition, through Redis cache storage information, reduce disk IO, improve the efficiency of authentication.

【技术实现步骤摘要】
一种AAA高并发认证方法及系统
本申请涉及通信
,尤其涉及一种AAA高并发认证方法及系统。
技术介绍
现有技术示出的AAA认证方法及系统中,通常采用多线程机制,来提高用户认证的并发量。具体的,终端设备发送认证报文,网卡将认证报文存储在UDP缓冲区,一个接收线程专门负责接收来自UDP缓冲区的认证报文,并将这些认证报文分别派发给多个业务线程,多个业务线程根据认证报文和响应的认证策略,完成对终端设备的认证,并且,多个业务线程通过直接修改数据库来改变认证用户的实时信息,包括认证记录、上线时间、在线时长等。然而,上述多线程机制的认证方法中,并无线程管理机制。多个业务线程之间的并发执行,以及多个业务线程与数据库间的数据交互,均会抢占CUP资源,从而导致多线程之间的调度完全依赖于CUP资源,一旦系统负载过重,一方面,处理速度的减慢,会导致大量终端设备连接超时,超时之后往往会进行重发,这更加重了系统的负载,另一方面,接收线程不能持续消费UDP缓冲区中的认证报文,而网卡会持续向UDP缓冲区中生产认证报文,当UDP缓冲区满时,就会出现丢包现象。
技术实现思路
本申请提供一种AAA高并发认证方法及系统,以解决现有AAA认证过程容易出现丢包现象的技术问题。第一方面,本申请提供了一种AAA高并发认证方法,该方法包括:终端设备发送认证信息;所述认证信息包括连接请求;Netty服务端接收所述认证信息,并根据所述连接请求,与所述终端设备建立连接;Netty服务端对所述认证信息进行解析,并将所述认证信息分发给AAA认证服务器的认证模块;AAA认证服务器的认证模块接收所述认证信息,根据所述认证信息和Redis缓存中的历史认证信息,对终端设备进行认证;以及,对所述Redis缓存中的历史认证信息进行更新。在AAA认证过程高并发的技术场景中,本实现方式引用了Netty服务端,Netty的IO线程NioEventLoop由于聚合了多路复用器Selector,可以同时并发处理成百上千个终端设备的客户端Channel,由于读写操作都是非阻塞的,这就可以充分提升IO线程的运行效率,避免由于频繁IO阻塞导致的线程挂起,也不需要为线程间的切换而浪费CPU资源,能够解决现有AAA认证技术中网络丢包的技术问题。另外,通过Redis缓存存储信息,降低磁盘IO,提高认证效率。进一步,该方法还包括:AAA认证服务器的认证模块将认证结果发送给Netty服务端;Netty服务端接收并解析所述认证结果,通过NIO线程将所述认证结果发送给终端设备。Netty服务端底层采用JavaNIO技术,采用NIO技术就意味着,处理IO过程中,不会发生无意义的阻塞,也就不需要为了“阻塞需求”启动加重服务器负载的线程数,本实现方式,能够节省CPU资源,提高认证效率,避免网络丢包。进一步,该方法还包括:AAA认证服务器的信息同步模块周期性将所述Redis缓存中的历史认证信息同步到MySQL数据库。采用本实现方式,由于AAA认证服务器设置有Redis缓存,认证所需的历史认证信息存储在Redis缓存中,在认证过程中,通过查询Redis缓存降低磁盘IO,并周期性将所述Redis缓存中的历史认证信息同步到MySQL数据库中。进一步,所述Netty服务端对所述认证信息进行解析,并将所述认证信息分发给AAA认证服务器的认证模块,包括:Netty服务端通过Acceptor类接收所述认证信息;将所述认证信息存储在ByteBuffer中;通过Dispatch将从ByteBuffer中提取出的关键字派发给指定的Handler进行解析,并分发给AAA认证服务器的认证模块。在本实现方式中,Netty的接收和发送ByteBuffer采用DIRECTBUFFERS,使用堆外直接内存进行Socket读写,不需要进行字节缓冲区的二次拷贝。Netty提供组合Buffer对象,可以聚合多个ByteBuffer对象,用户可以像操作一个Buffer那样方便的对组合Buffer进行操作,避免了传统通过内存拷贝的方式将几个小Buffer合并成一个大的Buffer。Netty的文件传输采用了transferTo方法,它可以直接将文件缓冲区的数据发送到目标Channel,避免了传统通过循环write方式导致的内存拷贝问题。进一步,所述AAA认证服务器的认证模块包括多个业务线程;所述对Redis缓存中的历史认证信息进行更新,包括:业务线程从所述Redis缓存中的历史认证信息中,查找与本次认证信息相匹配的条目;所述本次认证信息包括用户信息、认证时间以及下线时间;以及,根据本次认证信息,修改查找到的所述相匹配的条目。采用本实现方式,当历史认证用户的用户信息发生变化时,及时更新Redis缓存中的历史认证信息,当产生新的认证用户时,及时将这些新的认证用户的认证信息添加到Redis历史认证信息中,以保证Redis缓存中的历史认证信息的有效性,为AAA认证过程提供准确的数据依据。另一方面,本申请实施例提供一种AAA高并发认证系统,该系统包括:Netty服务端和AAA认证服务器;所述AAA认证服务器包括认证模块;所述Netty服务端,用于接收终端设备发送的认证信息,并根据所述认证信息中的连接请求,与所述终端设备建立连接;用于对所述认证信息进行解析,并将所述认证信息分发给所述AAA认证服务器的认证模块;所述AAA认证服务器的认证模块,用于接收所述Netty服务端发送的认证信息,根据所述认证信息和Redis缓存中的历史认证信息,对终端设备进行认证;以及,用于对所述Redis缓存中的历史认证信息进行更新。进一步,所述AAA认证服务器的认证模块,还用于将认证结果发送给Netty服务端;所述Netty服务端,还用于接收并解析所述认证结果,通过NIO线程将所述认证结果发送给终端设备。进一步,所述AAA认证服务器还包括信息同步模块;所述信息同步模块,用于周期性将所述Redis缓存中的历史认证信息同步到MySQL数据库。进一步,所述Netty服务端,按照下述步骤,对所述认证信息进行解析,并将所述认证信息分发给AAA认证服务器的认证模块:通过Acceptor类接收所述认证信息;将所述认证信息存储在ByteBuffer中;通过Dispatch将ByteBuffer派发给指定的Handler进行解析,并分发给AAA认证服务器的认证模块。进一步,所述AAA认证服务器的认证模块包括多个业务线程;所述业务线程,用于从所述Redis缓存中的历史认证信息中,查找与本次认证信息相匹配的条目;所述本次认证信息包括用户信息、认证时间以及下线时间;以及,根据本次认证信息,修改查找到的所述相匹配的条目。由以上技术方案可知,本申请提供的AAA高并发认证方法及系统,引用了Netty服务端,Netty的IO线程NioEventLoop由于聚合了多路复用器Selector,可以同时并发处理成百上千个终端设备的客户端Channel,由于读写操作都是非阻塞的,这就可以充分提升IO线程的运行效率,避免由于频繁IO阻塞导致的线程挂起,也不需要为线程间的切换而浪费CPU资源,能够解决现有AAA认证技术中网络丢包的技术问题。另外,通过Redis缓存存储信息,降低磁盘IO,提高认证效率。附图说明为了本文档来自技高网...
一种AAA高并发认证方法及系统

【技术保护点】
1.一种AAA高并发认证方法,其特征在于,包括:终端设备发送认证信息;所述认证信息包括连接请求;Netty服务端接收所述认证信息,并根据所述连接请求,与所述终端设备建立连接;Netty服务端对所述认证信息进行解析,并将所述认证信息分发给AAA认证服务器的认证模块;AAA认证服务器的认证模块接收所述认证信息,根据所述认证信息和Redis缓存中的历史认证信息,对终端设备进行认证;以及,对所述Redis缓存中的历史认证信息进行更新。

【技术特征摘要】
1.一种AAA高并发认证方法,其特征在于,包括:终端设备发送认证信息;所述认证信息包括连接请求;Netty服务端接收所述认证信息,并根据所述连接请求,与所述终端设备建立连接;Netty服务端对所述认证信息进行解析,并将所述认证信息分发给AAA认证服务器的认证模块;AAA认证服务器的认证模块接收所述认证信息,根据所述认证信息和Redis缓存中的历史认证信息,对终端设备进行认证;以及,对所述Redis缓存中的历史认证信息进行更新。2.根据权利要求1所述的方法,其特征在于,还包括:AAA认证服务器的认证模块将认证结果发送给Netty服务端;Netty服务端接收并解析所述认证结果,通过NIO线程将所述认证结果发送给终端设备。3.根据权利要求1所述的方法,其特征在于,还包括:AAA认证服务器的信息同步模块周期性将所述Redis缓存中的历史认证信息同步到MySQL数据库。4.根据权利要求1-3任一项所述的方法,其特征在于,所述Netty服务端对所述认证信息进行解析,并将所述认证信息分发给AAA认证服务器的认证模块,包括:Netty服务端通过Acceptor类接收所述认证信息;将所述认证信息存储在ByteBuffer中;通过Dispatch将ByteBuffer派发给指定的Handler进行解析,并分发给AAA认证服务器的认证模块。5.根据权利要求1所述的方法,其特征在于,所述AAA认证服务器的认证模块包括多个业务线程;所述对Redis缓存中的历史认证信息进行更新,包括:业务线程从所述Redis缓存中的历史认证信息中,查找与本次认证信息相匹配的条目;所述本次认证信息包括用户信息、认证时间以及下线时间;以及,根据本次认证信息,修改查找到的所述相匹配的条目。6.一种AAA高并发认证系统,其特征在...

【专利技术属性】
技术研发人员:郭占红
申请(专利权)人:北京安博通科技股份有限公司
类型:发明
国别省市:北京,11

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

1