一种请求处理方法及装置
技术领域
本公开涉及互联网通信技术领域,具体而言,涉及一种请求处理方法及装置。
背景技术
远程过程调用(Remote Procedure Call,RPC)协议是一种计算机通信协议,该协议允许运行于一台计算机的程序调用另一台计算机上的程序,使得调用远程的程序就像调用本地的程序一样方便,且在提供强大的远程调用能力的同时不损失本地调用的语义简洁性,使得分布式***的构建更为方便快捷,节省业务程序员进行大量编解码、序列化及反序列化、数据校验等的工作,让整个交互过程在业务的层面上更为可靠。
客户端的请求一般是通过反向代理服务器发送给提供服务的服务器的,但是,反向代理服务器目前无法代理客户端基于Thrift RPC协议的请求,如果客户端是基于ThriftRPC协议发起的请求,反向代理服务器会拒绝该请求,导致提供服务的服务器无法正常接收到客户端的请求,从而带来业务损失。
发明内容
本公开实施例至少提供一种请求处理方法及装置。
第一方面,本公开实施例提供了一种请求处理方法,其特征在于,所述方法应用于反向代理服务器,所述方法包括:
接收客户端发送的请求信息;
从所述请求信息中提取该请求信息对应的包装协议信息;
若所述包装协议信息符合预设条件,从所述请求信息中提取对应的方法名,并从保存的路由信息表中,查找所述方法名对应的至少一个服务器地址;
将所述请求信息发送至所述服务器地址对应的目标服务器。
一种可选实施方式中,所述包装协议信息包括协议版本信息和请求类型信息;
所述从所述请求信息中提取该请求信息对应的包装协议信息,包括:
从所述请求信息对应的多个字段中,查找位于第一预设位置处的第一字段,将该第一字段的信息确定为所述协议版本信息;以及查找位于第二预设位置处的第二字段,将该第二字段的信息确定为所述请求类型信息;
确定所述包装协议信息符合预设条件,包括:
若查找到的所述协议版本信息为预设的目标协议版本信息,且查找到的请求类型信息为预设的目标请求类型信息,则确定所述包装协议信息符合预设条件。
一种可选实施方式中,所述从所述请求信息中提取对应的方法名,包括:
从所述请求信息对应的多个字段中,查找位于第三预设位置处的第三字段,得到方法名的长度;
基于所述方法名的长度以及所述方法名在所述请求信息中的预设初始位置,从所述请求信息中提取对应的方法名。
一种可选实施方式中,所述方法还包括:
从服务管理端周期性的获取每个服务器的服务注册信息;
基于获取到的所述服务注册信息,生成所述路由信息表。
一种可选实施方式中,将所述请求信息发送至所述服务器地址对应的目标服务器之后,还包括:
在接收到所述目标服务器发送的请求响应信息后,将所述请求响应信息发送给所述客户端。
一种可选实施方式中,所述方法还包括:
若所述包装协议信息不符合预设条件时,或者,在从所述路由信息表中,未查找到所述方法名对应的至少一个服务器地址时,则生成所述请求信息对应的拒绝请求反馈信息;
将所述拒绝请求反馈信息发送给所述客户端。
一种可选实施方式中,接收客户端发送的请求信息,包括:
接收客户端通过长连接发送的请求信息;
所述将所述请求响应信息发送给所述客户端,包括:
将所述请求响应信息通过长连接发送给所述客户端;
所述方法还包括:
若接收到所述客户端发送的连接断开请求,和/或,若在间隔预设时间长度后,未接收到所述客户端发送的请求信息,则断开所述反向代理服务器与所述客户端之间的长连接。
第二方面,本公开实施例还提供一种请求处理装置,所述装置包括:
接收模块,用于接收客户端发送的请求信息;
提取模块,用于从所述请求信息中提取该请求信息对应的包装协议信息;
服务器地址模块,用于若所述包装协议信息符合预设条件,从所述请求信息中提取对应的方法名,并从保存的路由信息表中,查找所述方法名对应的至少一个服务器地址;
发送模块,用于将所述请求信息发送至所述服务器地址对应的目标服务器。
一种可选实施方式中,所述包装协议信息包括协议版本信息和请求类型信息;
所述提取模块,在从所述请求信息中提取该请求信息对应的包装协议信息的情况下,用于:
从所述请求信息对应的多个字段中,查找位于第一预设位置处的第一字段,将该第一字段的信息确定为所述协议版本信息;以及查找位于第二预设位置处的第二字段,将该第二字段的信息确定为所述请求类型信息;
所述服务器地址模块,在确定所述包装协议信息符合预设条件的情况下,用于:
若查找到的所述协议版本信息为预设的目标协议版本信息,且查找到的请求类型信息为预设的目标请求类型信息,则确定所述包装协议信息符合预设条件。
一种可选实施方式中,所述服务器地址模块,在从所述请求信息中提取对应的方法名的情况下,用于:
从所述请求信息对应的多个字段中,查找位于第三预设位置处的第三字段,得到方法名的长度;
基于所述方法名的长度以及所述方法名在所述请求信息中的预设初始位置,从所述请求信息中提取对应的方法名。
一种可选实施方式中,所述装置还包括:
服务注册信息获取模块,用于从服务管理端周期性的获取每个服务器的服务注册信息;
路由信息表生成模块,用于基于获取到的所述服务注册信息,生成所述路由信息表。
一种可选实施方式中,所述装置,还包括:
请求响应信息发送模块,用于在接收到所述目标服务器发送的请求响应信息后,将所述请求响应信息发送给所述客户端。
一种可选实施方式中,所述装置还包括:
拒绝请求反馈信息生成模块,用于若所述包装协议信息不符合预设条件时,或者,在从所述路由信息表中,未查找到所述方法名对应的至少一个服务器地址时,则生成所述请求信息对应的拒绝请求反馈信息;
拒绝请求反馈信息发送模块,用于将所述拒绝请求反馈信息发送给所述客户端。
一种可选实施方式中,所述接收模块,在接收客户端发送的请求信息时,用于:
接收客户端通过长连接发送的请求信息;
所述请求响应信息发送模块,在所述将所述请求响应信息发送给所述客户端时,用于:
将所述请求响应信息通过长连接发送给所述客户端;
所述装置还包括:
断开模块,用于若接收到所述客户端发送的连接断开请求,和/或,若在间隔预设时间长度后,未接收到所述客户端发送的请求信息,则断开所述反向代理服务器与所述客户端之间的长连接。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面的任一种可能的实施方式中所述的请求处理方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面的任一种可能的实施方式中所述的请求处理方法的步骤。
本公开实施例提供的一种请求处理方法及装置,通过接收客户端发送的请求信息,在请求信息中包括的包装协议信息符合预设条件时,从请求信息中提取对应的方法名,并从保存的路由信息表中,查找方法名对应的至少一个服务器地址;将请求信息发送至查找到的服务器地址对应的目标服务器;从而反向代理服务器在接收到基于符合预设条件的包装协议信息发起的请求信息后,比如接收到基于符合预设条件的Thrift RPC协议信息发起的请求信息后,可以基于上述方法实现对客户端的请求信息的代理,从而避免了客户端的请求信息被异常丢弃的情况,避免了业务损失,提升了进行请求处理的可靠性。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种请求处理方法的流程图;
图2示出了本公开实施例所提供的一种请求处理方法中,从请求信息中提取对应的方法名的方式的流程图;
图3示出了本公开实施例所提供的一种请求处理装置的示意图;
图4示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
一般的,反向代理服务器可以支持http协议的代理、TCP协议的代理、或gRPC协议的代理等,但是不支持Thrift RPC协议的代理,即反向代理服务器无法代理客户端基于Thrift RPC协议发起的请求,如果客户端是基于Thrift RPC协议发起的请求,反向代理服务器会将该请求作为传输层协议进行处理而将接收到的请求全部转发至预设的服务器上,或者无法代理该请求,进而拒绝该请求,导致服务器无法正常接收到客户端的请求。
因此,为了实现反向代理服务器对Thrift RPC协议的代理,本公开实施例提出了一种请求处理方法,可以通过对反向代理服务器进行改进,使得改进后的反向代理服务器能够基于本公开实施例提出的请求处理方法,实现反向代理服务器对Thrift RPC协议的代理,即实现对Thrift RPC协议类型的请求进行处理。其中,对反向代理服务器的改进过程与本公开提出的请求处理方法的实施过程相同。
为便于对本公开实施例进行理解,首先对本公开实施例所公开的一种请求处理方法进行详细介绍。
实施例一
参见图1所示,为本公开实施例提供的一种请求处理方法的流程图,该方法应用于反向代理服务器中,比如,反向代理服务器可以为nginx,haproxy,fabio等。该方法包括步骤S101~S104,其中:
S101,接收客户端发送的请求信息。
本公开实施例中,客户端可以响应用户的操作,生成请求信息,并将生成的请求信息发送给反向代理服务器。这里,用户的操作可以为用户登录客户端的操作、用户查看客户端中的信息的操作等。
S102,从请求信息中提取该请求信息对应的包装协议信息。
示例性的,包装协议信息可以包括协议版本信息和请求类型信息。其中,协议版本信息可以根据生成请求信息的协议类型进行确定,比如,协议版本信息可以为十六进制数8001(即0x8001)等。请求类型信息可以根据客户端发送的请求消息的类型进行确定,比如,若请求消息为调用消息,则请求类型消息可以为十六进制数0001(即0x0001),若请求消息为应答消息,则请求类型消息可以为0x0002,若请求消息为异常消息,则请求类型消息可以为0x 0003,若请求类型消息为单向消息(属于调用消息,但是不需要应答),则请求类型消息可以为0x0004等。进一步的,得到的包装协议信息可以为0x80010001、或0x80010002、或0x80010003、或0x80010004等。
一种可选实施方式中,在包装协议信息包括协议版本信息和请求类型信息时,则从请求信息中提取该请求信息对应的包装协议信息,包括:
从请求信息对应的多个字段中,查找位于第一预设位置处的第一字段,将该第一字段的信息确定为协议版本信息;以及查找位于第二预设位置处的第二字段,将该第二字段的信息确定为请求类型信息。
一般的,请求信息中包括多个字段,比如,请求信息中可以包括协议版本信息version对应的字段、请求类型信息type对应的字段、方法名method name对应的字段等。
一般的,Thrift RPC协议的序列化协议层TProtoco对应的序列化协议类型可以为TBinary、Compact、JSON、header等,传输层TTransport对应的传输协议类型可以为stream、famed、buffer、http等。
示例性的,该方法可以适用于TProtoco对应的序列化协议类型为二进制TBinary、以及TTransport对应的传输协议类型为stream的Thrift RPC协议,得到的Thrift RPC类型的请求信息。比如,根据上述方式得到的Thrift RPC类型的请求信息中,该请求信息的初始位置(即第一预设位置)处的第一字段的信息可以为协议版本信息version,该第一字段的信息(version)占用的二进制数据长度可以是2B;与协议版本信息相邻的第二预设位置处的第二字段的信息可以为请求类型信息type,该第二字段的信息(type)占用的二进制数据长度可以是2B;与请求类型信息相邻的第三预设位置处的第三字段的信息可以为方法名method name的长度,该第三字段的信息(method name的长度)占用的二进制数据长度可以是4B;与method name的长度相邻的预设位置处对应的字段可以为method name,该字段的信息(method name)占用的二进制数据长度可以根据实际情况进行确定。其中,该请求信息中还包括其他信息,比如,strut begin、fields、strut end、message end等,由于本方案中不需要查找上述信息,故此处不进行详述。
一般的,反向代理服务器在接收到请求信息后,需要对请求信息进行解析,得到请求信息中包括的全部信息,从解析到的全部信息中获取服务器地址信息,再将解析到的全部信息进行封装,并将封装后的信息发送给对应的服务器,上述获取信息的方式繁琐,使得请求处理过程的效率较低。为了解决上述问题,在具体实施时,可以通过peek操作从请求信息对应的位置处查找包装协议信息、方法名的长度、以及方法名等信息,比如,从第一预设位置处的第一字段中查找得到协议版本信息,以及从第二预设位置处的第二字段中查找得到请求类型信息,不需要对请求信息进行解析,不会破坏请求信息的完整性,过程简单,故可以提高请求处理过程的效率。
S103,若包装协议信息符合预设条件,从请求信息中提取对应的方法名,并从保存的路由信息表中,查找方法名对应的至少一个服务器地址。
本公开实施例中,可以判断包装协议信息是否符合预设条件,若符合,则从请求信息中提取对应的方法名,并可以从存储的路由信息表中,查找方法名对应的至少一个服务器地址;若不符合,则拒绝该请求信息。其中,查找到的方法名对应的服务器地址是为客户端提供服务的服务器的地址。
一种可选实施方式中,该方法还包括:若包装协议信息不符合预设条件时,或者,在从路由信息表中,未查找到方法名对应的至少一个服务器地址时,则生成请求信息对应的拒绝请求反馈信息;并将拒绝请求反馈信息发送给客户端。
在具体实施时,若包装协议信息不符合预设条件时,反向代理服务器可以拒绝该请求信息,并生成该请求信息对应的拒绝请求反馈信息,再将该拒绝请求反馈信息发送给客户端。和/或,若从路由信息表中,未查找到该方法名,进而未查找到该方法名对应的至少一个服务器地址时,反向代理服务器可以拒绝该请求信息,并生成该请求信息对应的拒绝请求反馈信息,再将该拒绝请求反馈信息发送给客户端。
承接S102,一种可选实施方式中,确定包装协议信息符合预设条件,包括:
若查找到的协议版本信息为预设的目标协议版本信息,且查找到的请求类型信息为设置的目标请求类型信息,则确定包装协议信息符合预设条件。反之,若查找到的协议版本信息与预设的目标协议版本信息不符合,和/或,查找到的请求类型信息与预设的目标请求类型信息不符合,则确定包装协议信息不符合预设条件。
示例性的,目标协议版本信息可以为0x8001,以及目标请求类型信息为0x0001和0x0004,若查找到的协议版本信息为0x8001,以及查找到的请求类型信息为0x0001或0x0004,则确定包装协议信息符合预设条件;反之,若查找到的协议版本信息为0x7001,和/或,查找到的请求类型信息为0x0002或0x0003,则确定包装协议信息不符合预设条件。即查找到的包装协议信息为0x80010001或者为0x80010004时,则该包装协议信息符合预设条件;反之,若查找到的包装协议信息为0x80010002或者为0x70010004时,则该包装协议信息不符合预设条件。其中,目标协议版本信息与目标请求类型信息可以根据实际情况进行设置,本公开实施例仅为示例性说明。
一种可选实施方式中,从请求信息中提取对应的方法名,包括:
S201,从请求信息对应的多个字段中,查找位于第三预设位置处的第三字段,得到方法名的长度;
S202,基于方法名的长度以及方法名在请求信息中的预设初始位置,从请求信息中提取对应的方法名。
示例性的,method name len(方法名的长度)根据对应的方法名进行确定,不同的method name对应的长度不同。其中,每个服务器集群可以对应多个method name,每个method name可以为开发人员根据实际需要进行定义。
这里,请求信息中的方法名的初始位置为确定的,在确定方法名的长度之后,可以从请求信息中的预设初始位置处,选择与method name len对应的第四字段,将选择的第四字段对应的信息确定为method name。比如,以表1为例进行说明,若确定的方法名对应的长度为4B,则获取第9个字节至第12个字节的信息(包括第9个字节以及第12个字节),将获取的该信息确定为method name;若确定的方法名对应的长度为2B,则获取第9个字节至第10个字节的信息(包括第9个字节以及第10个字节),将获取的该信息确定为method name。
S104,将请求信息发送至服务器地址对应的目标服务器。
在具体实施时,将请求信息发送至服务器地址对应的目标服务器之后,还包括:在接收到目标服务器发送的请求响应信息后,将请求响应信息发送给客户端。
本公开实施例中,在确定该请求信息对应的至少一个服务器地址之后,可以将该请求信息发送至与至少一个服务器地址对应的目标服务器中。并接收目标服务器发送的该请求信息对应的请求响应信息,并将该请求响应信息转发给该客户端。
一种可选实施方式中,方法还包括:
从服务管理端周期性的获取每个服务器的服务注册信息;
基于获取到的所述服务注册信息,生成所述路由信息表。
本公开实施例中,服务管理端实时的接收每个服务器发送的服务注册信息,并保存接收到的服务注册信息,服务注册信息包括服务器名称、服务器地址、服务器端口、服务器权重、服务器对应的至少一个方法名等信息。其中,服务管理端可以为consul、nacos等。
进而反向代理服务器可以周期性的获取服务管理端保存的服务注册信息,并基于获取到的服务注册信息生成路由信息表,并存储该路由信息表。若服务管理端接收到的服务注册信息发送改变(比如,若服务器A损坏,则该服务器A不向服务管理端发送服务注册信息),则反向代理服务器获取到的服务注册信息也会发生相应的更新,进而可以基于更新后的服务注册信息生成新的路由信息表,并保存。其中,获取服务注册信息的周期可以根据实际需要进行设置。
示例性的,路由信息表中可以包括每一服务对应的服务器集群中,每一个服务器的名称、方法名method name、服务器IP地址以及端口信息、权重等。具体的,路由信息表中包括的信息内容,可以根据实际需要进行设置。
在具体实施时,接收客户端发送的请求信息可以为:接收客户端通过长连接发送的请求信息。将请求响应信息发送给客户端可以为:将请求响应信息通过长连接发送给客户端。
承接上述实施例,该方法还包括:
若接收到客户端发送的连接断开请求,和/或,若在间隔预设时间长度后,未接收到客户端发送的请求信息,则断开反向代理服务器与客户端之间的长连接。
示例性的,可以在客户端与反向代理服务器之间建立长连接,使得反向代理服务器可以通过该长连接接收请求信息,以及可以通过该长连接向客户端发送请求响应信息。在将请求响应信息发送给客户端之后,可以不断开与客户端之间的长连接,使得反向代理服务器可以基于建立的长连接继续接收客户端再次发送的请求信息,进而可以节省建立长连接的时间,提高请求处理的效率。
示例性的,反向代理服务器在接收到客户端发送的连接断开请求,和/或,在间隔预设时间长度后,未接收到客户端发送的请求信息,则断开反向代理服务器与客户端之间的长连接。其中,间隔的预设时间可以根据实际情况进行设置,比如,间隔的预设时间可以为3秒、5秒等。
示例性的,可以在反向代理服务器与服务器之间建立短连接,若客户端本次发送的请求信息对应的服务器地址与下次发送的请求信息对应的服务器地址相同,则不断开反向代理服务器与服务器之间建立的短连接;若客户端本次发送的请求信息对应的服务器地址与下次发送的请求信息对应的服务器地址不相同,比如,本次请求信息对应服务器A的服务器地址,下次请求信息对应服务器B的服务器地址,则先断开反向代理服务器与服务器A之间的短连接,再建立反向代理服务器与服务器B之间的短连接。
本公开实施例中,通过接收客户端发送的请求信息,在请求信息中包括的包装协议信息符合预设条件时,从请求信息中提取对应的方法名,并从保存的路由信息表中,查找方法名对应的至少一个服务器地址;将请求信息发送至查找到的服务器地址对应的目标服务器;从而反向代理服务器在接收到基于符合预设条件的包装协议信息发起的请求信息后,比如接收到基于符合预设条件的Thrift RPC协议信息发起的请求信息后,可以基于上述方法实现对客户端的请求信息的代理,从而避免了客户端的请求信息被异常丢弃的情况,避免了业务损失,提升了进行请求处理的可靠性。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与请求处理方法对应的请求处理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述请求处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
实施例二
基于相同的构思,本公开实施例提供了一种请求处理装置,参见图3所示的一种请求处理装置的结构示意图,该装置包括:
接收模块301,用于接收客户端发送的请求信息;
提取模块302,用于从所述请求信息中提取该请求信息对应的包装协议信息;
服务器地址模块303,用于若所述包装协议信息符合预设条件,从所述请求信息中提取对应的方法名,并从保存的路由信息表中,查找所述方法名对应的至少一个服务器地址;
发送模块304,用于将所述请求信息发送至所述服务器地址对应的目标服务器。
一种可选实施方式中,所述包装协议信息包括协议版本信息和请求类型信息;
所述提取模块,在从所述请求信息中提取该请求信息对应的包装协议信息的情况下,用于:
从所述请求信息对应的多个字段中,查找位于第一预设位置处的第一字段,将该第一字段的信息确定为所述协议版本信息;以及查找位于第二预设位置处的第二字段,将该第二字段的信息确定为所述请求类型信息;
所述服务器地址模块,在确定所述包装协议信息符合预设条件的情况下,用于:
若查找到的所述协议版本信息为预设的目标协议版本信息,且查找到的请求类型信息为预设的目标请求类型信息,则确定所述包装协议信息符合预设条件。
一种可选实施方式中,所述服务器地址模块,在从所述请求信息中提取对应的方法名的情况下,用于:
从所述请求信息对应的多个字段中,查找位于第三预设位置处的第三字段,得到方法名的长度;
基于所述方法名的长度以及所述方法名在所述请求信息中的预设初始位置,从所述请求信息中提取对应的方法名。
一种可选实施方式中,所述装置还包括:
服务注册信息获取模块,用于从服务管理端周期性的获取每个服务器的服务注册信息;
路由信息表生成模块,用于基于获取到的所述服务注册信息,生成所述路由信息表。
一种可选实施方式中,所述装置,还包括:
请求响应信息发送模块,用于在接收到所述目标服务器发送的请求响应信息后,将所述请求响应信息发送给所述客户端。
一种可选实施方式中,所述装置还包括:
拒绝请求反馈信息生成模块,用于若所述包装协议信息不符合预设条件时,或者,在从所述路由信息表中,未查找到所述方法名对应的至少一个服务器地址时,则生成所述请求信息对应的拒绝请求反馈信息;
拒绝请求反馈信息发送模块,用于将所述拒绝请求反馈信息发送给所述客户端。
一种可选实施方式中,所述接收模块,在接收客户端发送的请求信息时,用于:
接收客户端通过长连接发送的请求信息;
所述请求响应信息发送模块,在所述将所述请求响应信息发送给所述客户端时,用于:
将所述请求响应信息通过长连接发送给所述客户端;
所述装置还包括:
断开模块,用于若接收到所述客户端发送的连接断开请求,和/或,若在间隔预设时间长度后,未接收到所述客户端发送的请求信息,则断开所述反向代理服务器与所述客户端之间的长连接。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模板可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例提供的请求处理装置,与上述实施例一提供的请求处理方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
实施例三
基于同一技术构思,本公开实施例还提供了一种电子设备。参照图4所示,为本公开实施例提供的电子设备400的结构示意图,包括处理器401、存储器402、和总线403。其中,存储器402用于存储执行指令,包括内存4021和外部存储器4022;这里的内存4021也称内存储器,用于暂时存放处理器401中的运算数据,以及与硬盘等外部存储器4022交换的数据,处理器401通过内存4021与外部存储器4022进行数据交换,当电子设备400运行时,处理器401与存储器402之间通过总线403通信,使得处理器401在执行以下指令:
接收客户端发送的请求信息;
从所述请求信息中提取该请求信息对应的包装协议信息;
若所述包装协议信息符合预设条件,从所述请求信息中提取对应的方法名,并从保存的路由信息表中,查找所述方法名对应的至少一个服务器地址;
将所述请求信息发送至所述服务器地址对应的目标服务器。
一种可能设计中,处理器401可能执行的指令中,还包括:
所述包装协议信息包括协议版本信息和请求类型信息;
所述从所述请求信息中提取该请求信息对应的包装协议信息,包括:
从所述请求信息对应的多个字段中,查找位于第一预设位置处的第一字段,将该第一字段的信息确定为所述协议版本信息;以及查找位于第二预设位置处的第二字段,将该第二字段的信息确定为所述请求类型信息;
确定所述包装协议信息符合预设条件,包括:
若查找到的所述协议版本信息为预设的目标协议版本信息,且查找到的请求类型信息为预设的目标请求类型信息,则确定所述包装协议信息符合预设条件。
一种可能设计中,处理器401可能执行的指令中,还包括:
所述从所述请求信息中提取对应的方法名,包括:
从所述请求信息对应的多个字段中,查找位于第三预设位置处的第三字段,得到方法名的长度;
基于所述方法名的长度以及所述方法名在所述请求信息中的预设初始位置,从所述请求信息中提取对应的方法名。
一种可能设计中,处理器401可能执行的指令中,还包括:
从服务管理端周期性的获取每个服务器的服务注册信息;
基于获取到的所述服务注册信息,生成所述路由信息表。
一种可能设计中,处理器401可能执行的指令中,还包括:
在接收到所述目标服务器发送的请求响应信息后,将所述请求响应信息发送给所述客户端。
一种可能设计中,处理器401可能执行的指令中,还包括:
若所述包装协议信息不符合预设条件时,或者,在从所述路由信息表中,未查找到所述方法名对应的至少一个服务器地址时,则生成所述请求信息对应的拒绝请求反馈信息;
将所述拒绝请求反馈信息发送给所述客户端。
一种可能设计中,处理器401可能执行的指令中,还包括:
接收客户端发送的请求信息,包括:
接收客户端通过长连接发送的请求信息;
所述将所述请求响应信息发送给所述客户端,包括:
将所述请求响应信息通过长连接发送给所述客户端;
所述方法还包括:
若接收到所述客户端发送的连接断开请求,和/或,若在间隔预设时间长度后,未接收到所述客户端发送的请求信息,则断开所述反向代理服务器与所述客户端之间的长连接。
实施例四
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的请求处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的请求处理方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的请求处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。