基于redis的请求处理方法、装置、网关及系统与流程

文档序号:18823324发布日期:2019-10-09 01:09阅读:216来源:国知局
基于redis的请求处理方法、装置、网关及系统与流程

本发明涉及网关数据处理技术领域,特别是一种基于redis的请求处理方法、装置、网关及系统。



背景技术:

目前使用的网关服务程序主要是接收外部服务的请求,网关根据特定的规则对请求进行解析,解析后转发到相关服务进行处理,并将处理结果发送给外部服务。其中请求解析包括协议解析、协议过滤和协议转发等。

协议解析分为部分解析和全部解析。其中部分解析只解析协议头部,消息内容的加密解析由具体的服务去处理,而全部解析则解析整个消息,包括解密,减少了后续解析负担。

协议过滤是在tcp层对请求进行处理,例如协议格式错误、命令字错误、长度不正确或解密不正确等消息,将会进行过滤处理,并记录。同时,也可对非法用户和非法ip等在网关服务层进行过滤处理,从而增强了内部服务的安全性,大大减轻内部服务的压力。

协议转发基于前两步操作,即请求正常解析与过滤后,根据路由规则,转发到相关的服务。

网关转发的过程中是往往通过服务器内存进行转发,自身没有相应的缓存机制,转发的效率有待提高。



技术实现要素:

本发明的主要目的在于克服现有技术中的上述缺陷,提出一种基于redis的请求处理方法、装置、网关及系统,基于缓存机制,根据请求中配置的特定字段,选择特定的redis消息队列,方便服务的解析,提高转发效率。

本发明采用如下技术方案:

一方面,一种基于redis的请求处理方法,包括:

接收多个请求并进行解析获得每个请求的解析数据;

根据所述解析数据,判断每个请求的指定字段是否包括预设数;如果包括,将解析后的请求插入与所述预设数关联的redis消息队列;如果不包括,将解析后的请求插入默认redis消息队列。

优选的,与所述预设数关联的redis消息队列通过加载配置文件创建和/或通过配置命令动态修改。

优选的,所述预设数通过加载配置文件设置和/或通过配置命令动态修改。

优选的,对请求进行解析的线程数通过加载配置文件创建和/或通过配置命令动态修改。

第二方面,一种基于redis的请求处理装置,包括:

请求接收及解析模块,用于接收多个请求并进行解析获得每个请求的解析数据;

redis消息队列分配模块,用于判断每个请求解析数据的指定字段是否包括预设数;如果包括,将解析后的请求插入与所述预设数关联的redis消息队列;如果不包括,将解析后的请求插入默认redis消息队列。

所述的基于redis的请求处理装置,还包括:

redis消息队列配置模块,用于通过配置创建一个或多个与所述预设数关联的redis消息队列;所述redis消息队列通过加载配置文件创建和/或通过配置命令动态修改。

所述的基于redis的请求处理装置,还包括:

预设数配置模块,用于设置预设数;所述预设数通过加载配置文件设置和/或通过配置命令动态修改。

所述的基于redis的请求处理装置,还包括:

多线程配置模块,用于通过配置创建多个线程对接收到的多个请求进行解析;所述线程通过加载配置文件创建和/或通过配置命令动态修改。

第三方面,一种网关,包括存储器和处理器,所述存储器用于存储所述处理器所执行所述的基于redis的请求处理方法的程序;所述处理器用于调用所述存储器中的程序,并执行所述的基于redis的请求处理方法。

第四方面,一种基于redis的请求处理系统,包括客户端、网关和服务器;一个或多个所述客户端向所述网关发送多个请求;所述网关接收所述客户端发送的多个请求并进行解析,判断每个请求解析数据的指定字段是否包括预设数,如果包括,将解析后的请求插入与所述预设数关联的redis消息队列;如果不包括,将解析后的请求插入默认redis消息队列;一个或多个所述服务器通过轮询方式与所述网关的redis消息队列进行消息交互,当所监听的redis消息队列有请求时,进行读取。

由上述对本发明的描述可知,与现有技术相比,本发明具有如下有益效果:

(1)本发明基于redis缓存机制,无需借助内存,不仅节省了内存,而且提高了转发效率;

(2)本发明在请求解析(协议解析)过程中,根据请求中指定字段的值(协议中配置的特定字段),将请求转发至特定的redis消息队列,实现请求消息的分类处理;

(3)本发明在没有配置特定字段的情况下,会选择默认的redis消息队列,保证任何请求消息都能够通过redis消息队列进行处理;

(4)本发明的redis消息队列数能根据配置动态变化,资源分配合理,可有效保证时间效率和空间效率;

(5)本发明能够实时增加、修改或删除预设数,能够满足多种请求消息的需要;

(6)本发明能够实时配置请求的解析线程数,提高解析效率;

(7)本发明的外部服务器通过轮询的方式与redis消息队列交互,节省资源,提高交互效率。

上述说明仅是本发明技术方案的概述,为了能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下列举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述及其他目的、优点和特征。

附图说明

图1为本发明基于redis的请求处理方法的流程图;

图2为本发明基于redis的请求处理方法的细化流程;

图3为本发明基于redis的请求处理装置的结构框图;

图4为本发明的网关的结构框图;

图5为本发明的基于redis的请求处理系统的结构框图;

图6为本发明的基于redis的请求处理系统的实现流程图。

具体实施方式

以下通过具体实施方式对本发明作进一步的描述。

参见图1所示,一方面,本发明一种基于redis的请求处理方法,包括:

s101,接收多个请求并进行解析获得每个请求的解析数据;

s102,根据所述解析数据,判断每个请求的指定字段值是否包括预设数;如果包括,将解析后的请求插入与所述预设数关联的redis消息队列;如果不包括,将解析后的请求插入默认redis消息队列。

本实施例中,所述请求可以是依据某一通信协议组装的消息流。

需要说明的是,所述的预设数包括一个或多个,具体的,可以放置在一个集合如数组中,接收到请求消息时,包括请求中的指定字段值是否有在数组中,如果有,将解析后的请求插入与所述预设数关联的redis消息队列;如果不包括,将解析后的请求插入默认redis消息队列。

参见图2所示,具体实施时,上述的基于redis的请求处理方法可以通过服务程序实现,以实现请求的负载均衡、解析以及定向转发。具体的,服务程序内部启动若干线程对请求进行解析,解析后根据请求中的指定字段,将请求派送至具体的redis消息队列,如果相关的字段没有设置,请求会发至默认redis消息队列。

假如当前服务收到三条请求,分别为查询姓名、删除历史记录和添加新用户。对应于查询姓名,请求中对应的指定字段的值为1;对应于删除历史记录,请求中对应的指定字段的值为2;对应于添加新用户,请求中对应的指定字段的值为3。当前服务预设数中包括了1、2和3的预设数,并且创建了分别用于处理预设数为1、为2和为3的redis消息队列。当线程解析请求后判断出请求中指定字段的值为1时,将请求保存至已创建的redis查询姓名队列;当线程解析请求后判断出请求中指定字段的值为2时,将请求保存至已创建的redis删除历史记录队列;当线程解析请求后判断出请求中指定字段的值为3时,将请求保存至已创建的redis添加新用户队列。若线程解析请求后判断出请求中没有指定字段或指定字段的值没有redis消息队列与之关联时,将请求保存至已创建的默认redis消息队列。假如当前服务收到一条重置密码请求,请求中对应的指定字段的值为4,但预设数中并没有4的数值,也即没有创建专门用于处理重置密码请求的redis消息队列,则线程将请求保存至默认redis消息队列。

需要说明的是,处理同一类型请求的redis消息队列可以是一个或多个,如所述的redis查询姓名队列可以包括多个,这多个队列可以组成一个队列池,共同处理同一类型的请求。

进一步的,服务程序启动时,会根据线程初始配置文件启动若干解析线程。此外,在服务程序运行过程中,还可以根据请求数的多少通过配置命令修改配置文件实现线程数的增加或减少。

进一步的,服务程序启动时,会根据redis初始配置文件创建若干默认redis消息队列及与预设数关联的redis消息队列。此外,在服务程序运行过程中,还可以根据请求数的多少通过配置命令修改配置文件实现redis消息队列的增加或减少。

进一步的,在服务程序运行过程中,预设数也是可以动态修改的,可以添加、删除或修改,相应的,当预设数中添加一个数值时,可通过配置命令动态修改与之关联的redis消息队列;对应的当预设数删除一个数值时,可通过配置命令动态删除与之关联的redis消息队列。

参见图3所示,第二方面,一种基于redis的请求处理装置,包括:

请求接收及解析模块301,用于接收多个请求并进行解析获得每个请求的解析数据;

redis消息队列分配模块302,用于判断每个请求解析数据的指定字段是否包括预设数;如果包括,将解析后的请求插入与所述预设数关联的redis消息队列;如果不包括,将解析后的请求插入默认redis消息队列。

所述的基于redis的请求处理装置,还包括:

redis消息队列配置模块303,用于通过配置创建一个或多个与所述预设数关联的redis消息队列;所述redis消息队列通过加载配置文件创建和/或通过配置命令动态修改。

所述的基于redis的请求处理装置,还包括:

预设数配置模块304,用于设置预设数;所述预设数通过加载配置文件设置和/或通过配置命令动态修改。

所述的基于redis的请求处理装置,还包括:

多线程配置模块305,用于通过配置创建多个线程对接收到的多个请求进行解析;所述线程通过加载配置文件创建和/或通过配置命令动态修改。

参见图4所示,第三方面,一种网关,包括存储器401和处理器402,所述存储器401用于存储所述处理器402所执行所述的基于redis的请求处理方法的程序;所述处理器402用于调用所述存储器401中的程序,并执行所述的基于redis的请求处理方法。

具体的,所述存储器401和处理器402通过总线系统403耦合在一起,其中总线系统403除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。

其中,处理器402可以采用通用的中央处理器(centralprocessingunit,cpu),微处理器,应用专用集成电路(applicationspecificintegratedcircuit,asic),或者一个或多个集成电路,用于执行相关操作,以实现本发明实施例所提供的技术方案。

需要说明的是,图4所示的网关仅仅示出了存储器401和处理器402,但是在具体实现过程中,本领域的技术人员应当明白,该网关还包含实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当明白,该网关还可包含实现其他附加功能的硬件器件。此外,本领域的技术人员应当明白,该设备也可仅仅包含实现本发明实施例所必须的器件或模块,而不必包含图4中所示的全部器件。

参见图5所示,第四方面,一种基于redis的请求处理系统,包括客户端501、网关502和服务器503;一个或多个所述客户端501向所述网关502发送多个请求;所述网关502接收所述客户端501发送的多个请求并进行解析,判断每个请求解析数据的指定字段是否包括预设数,如果包括,将解析后的请求插入与所述预设数关联的redis消息队列;如果不包括,将解析后的请求插入默认redis消息队列;一个或多个所述服务器503通过轮询方式与所述网关502的redis消息队列进行消息交互,当所监听的redis消息队列有请求时,进行读取。

参见图6所示,具体实施时,所述网关的功能可以通过服务程序实现,以实现请求的负载均衡、解析以及定向转发。具体的,所述客户端相所述网关发送多个请求,所述网关服务程序内部启动若干线程对请求进行解析,解析后根据请求中的预设数,将请求派送至指定的redis消息队列,如果相关的字段没有配置,请求会发至默认redis消息队列。

所述服务器503监听到redis消息队列中有请求进入时,会读取相应的请求。具体的,所述服务器通过轮询的方式与redis消息队列进行交互,即一直处于对redis消息的监听状态,一旦有请求进入队列,所述服务器503便可读取。

具体的,假如有多个服务器503,可根据约定,每个服务器只监听同一类型请求的redis消息队列,当然,也可以根据需要监听多种类型请求的redis消息队列。假如只有一个服务器503,可以创建多个线程对请求消息进行分类处理。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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