一种用于处理http请求的方法与设备的制造方法_3

文档序号:8226071阅读:来源:国知局
,而标记存储装置事先已标记每一 http请求所对应的目标第二网络设备的端口,以及每一 http请求所对应的请求号,如http-requestl至http_request5的请求号分别为hrl、hr2、hr3、hr4、hr5,若第二接收装置13接收到了该多个http请求中http-requestl至http_request3的目标资源,也即第二接收装置13接收到来自第二网络设备workerl、worker3、workerl返回的目标资源,则请求号确定装置根据第二网络设备workerl、worker 3、worker I的端口号,在请求标记池中得到与第二网络设备worker 1、worker 3、workerl的端口号分别相对应的请求号即hrl、hr2、hr3,以根据该等请求号对相应http请求进行响应,即分别对请求号为hrl的http-requestl、请求号为hr2的http_request2、请求号为hr3的http_request3进行响应。
[0076]在此,本发明通过标记并存储每一 http请求所对应的目标第二网络设备的端口以及每一 http请求所对应的请求号,对于每一 http请求,建立了端口和请求号之间的映射关系,在具体实施例中,第一网络设备I轮询扫描已经标记的端口,也即执行读响应进程,且读响应为非阻塞的I/O模型,如发现有响应,便可根据具有响应的端口,从标记请求池中得到与该端口相对应的请求号,以便对相应http请求进行响应,从而,本发明中的第一网络设备I可进行高并发的处理多个http请求。
[0077]在另一优选实施例中(参考图1),目标第二网络设备2还包括用于对所述http请求进行预处理的装置(以下简称“预处理装置”,未示出)。具体地,预处理装置对所述http请求进行预处理;其中,获取装置22获取预处理后的所述http请求所对应的目标资源。
[0078]具体地,预处理装置对所述http请求进行预处理。优选地,所述预处理包括以下至少任一项:
[0079]-对所述http请求中包含的信息项进行校验处理;
[0080]-对所述http请求进行攻击屏蔽处理。
[0081]例如,对于第一接收装置21接收到的http请求如http-requestl,预处理装置可首先对所述http请求进行预处理,如对该http请求中包含的信息项进行校验处理,在此,所述信息项是指http请求格式中包含的信息项如请求行、请求头、空行、可选消息体等,在具体实施例中,预处理装置可采用正则表达式对对该http请求中包含的信息项进行校验处理,例如,可采用正则表达式如“厂(?:https ?://) ? [\w-] ++( ?:\.[\w_]++)++.*$ ;i”来校验该http请求中的URL域名部分是否为合法的URL,又如,采用正则表达式如“;(.*? )(?:\(Γ)]*\)) ? $; ”来校验该http请求中是否含有括号等。
[0082]再如,对于第一接收装置21接收到的http请求如http-requestl,预处理装置还可对该http请求进行xss (跨站脚本攻击,Cross Site Scripting)与sql (结构化脚本语言,Structured Query Language)注入等攻击进行屏蔽,以过滤http请求中的不安全因素。
[0083]本领域技术人员应能理解上述预处理方式仅为举例,其他现有的或今后可能出现的预处理方式如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
[0084]接着,获取装置22获取预处理后的所述http请求所对应的目标资源。在此,获取装置22获取预处理后的所述http请求所对应的目标资源的方式与其获取所述http请求所对应的目标资源的方式相同,为简明起见,故在此不再赘述,并以引用的方式包含于此。
[0085]图2示出根据本发明另一个方面的基于php的第一网络设备和基于php的目标第二网络设备配合实现一种用于处理http请求的方法流程图。
[0086]其中,该方法包括步骤S1、步骤S2、步骤S3和步骤S4。具体地,在步骤SI中,第一网络设备I根据待处理的http请求中的相关信息项,结合所述第二网络设备的数量信息,从多个所述第二网络设备中确定处理所述http请求的目标第二网络设备2 ;在步骤S2中,第一网络设备I将所述http请求发送至所述目标第二网络设备2 ;相应地,目标第二网络设备2接收所述第一网络设备I发送的待处理的http请求;在步骤S3中,目标第二网络设备2获取所述http请求所对应的目标资源;在步骤S4中,目标第二网络设备2将所述目标资源发送至所述第一网络设备I ;相应地,第一网络设备I接收所述目标第二网络设备2所发送的所述http请求所对应的目标资源。
[0087]在此,第一网络设备I负责接收和分配任务(如http请求、https请求等),在具体实施例中,第一网络设备I扮演master进程的角色,并是基于php语言实现的,其中,第一网络设备I对应多个协同其处理http请求的基于php语言实现的第二网络设备。第一网络设备I与多个第二网络设备之间可基于scoket来进行通信,多个第二网络设备之间是并列的关系。
[0088]在此,第二网络设备负责处理第一网络设备I为其分配的任务,并将处理结果返回给第一网络设备1,在具体实施例中,第二网络设备扮演worker进程的角色,从而第一网络设备I与多个第二网络设备构成多线程设计中的master-worker模式,该模式是并行的。在此,基于php语言实现的master-worker模式为非阻塞I/O的,其可用于实现web服务器,并作为http和反向代理服务器,由此,使用php语言基于master-worker模式实现的非阻塞I/O的反向代理服务器直接作为对外的服务接入口,与传统web服务器(在传统的web开发中,主要使用Apache,nginx等web服务器作为http和反向代理服务器)相比,不仅减少了 web服务器本身的资源消耗,以及与php交互产生的网络资源消耗,还减少了过多的程序依赖与开发维护成本,从而可快速响应http请求/https请求,并可高并发地处理http请求/https请求,提高了处理效率。在此,需要说明的是,本发明中的http请求不仅包括http (超文本传输协议,Hypertext Transfer Protocol)请求,还包括https (安全套接字层超文本传输协议,Hyper Text Transfer Protocol over Secure Socket Layer)请求,以下实施例均是基于http请求进行描述的,不应理解为对本发明的限制。
[0089]在此,第一网络设备I和第二网络设备均包括但不限于网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云。在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。本领域技术人员应能理解上述第一网络设备和第二网络设备仅为举例,其他现有的或今后可能出现的网络设备如可适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。在此,网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。
[0090]具体地,第一网络设备I的在步骤SI中,第一网络设备I根据待处理的http请求中的相关信息项,结合所述第二网络设备的数量信息,从多个所述第二网络设备中确定处理所述http请求的目标第二网络设备2。在此,所述http请求中的相关信息项包括以下至少任一项:i)http请求中可唯一标识该http请求的ip和cookie ;ii)http请求中的所有内容项,如http请求中的请求行(request-line)、请求头(header)、空行(blank-line)和可选消息体(request-body)。
[0091]在此,在步骤SI中,第一网络设备I确定所述目标第二网络设备2的方式包括但不限于以下至少任一项:
[0092]I)首先对所述http请求中的相关信息项进行MD5处理,以获得对应的MD5处理结果;然后,根据所述MD5处理结果与所述第二网络设备的数量信息的取模值,从多个所述第二网络设备中确定处理所述http请求的目标第二网络设备。
[0093]例如,假设在一 master-worker模型部署中,作为master的第一网络设备I对应3个作为worker的第二网络设备,该3个第二网络设备编号分别为1、2、3,并记为worker K worker2和worker3,第一网络设备I接收到来自浏览器的http请求假设为http-request 1,该http请求中的ip和cookie分别为ip_l和cookie-Ι,贝Ij第一网络设备I在步骤SI中可首先对ip-Ι和cookie-Ι进行MD5处理,假设得到的MD5处理结果为值“5fa26f23a035b45a957f793a5c5705291”,并去除该MD5值中的字符得到对应的数值为“526230354595779355705291” ;然后,因该master-worker模型部署中有3个第二网络设备,则在步骤SI中,第一网络设备I将数值“526230354595779355705291”与“3”取模,得到余数为1,则在步骤SI中,第一网络设备I可确定编号为“I”的第二网络设备即workerl为处理该http请求即http-request I的目标第二网络设备。再如,假设在步骤SI中,第一网络设备I可首先对ip-Ι和cookie-ι进行MD5处理,假设得到的MD5处理结果为值“lfaabf4c”,在步骤SI中,第一网络设备I可去除该MD5值中的字符得到对应的数值为“14” ;然后,因该master-worker模型部署中有3个第二网络设备,则在步骤SI中,第一网络设备I将数值“14”与“3”取模,得到余数为2,即14% 3 = 2,则在步骤SI中,第一网络设备I可确定编号为“2”的第二网络设备即worker2为处理该http请求即http-requestI的目标第二网络设备。
[0094]在此,本发明中第一网络设备I通过根据挂载的第二网络设备的数量来取模,实现了第一网络设备I自身的负载均衡。
[0095]2)根据待处理的http请求中的相关信息项,结合所述第二网络设备的数量信息以及所述第二网络设备的资源状态信息,从多个所述第二网络设备中确定处理所述http请求的目标第二网络设备。在此,所述资源状态信息是指第二网络设备中当前的资源剩余情况,如资源紧张、资源充裕等,在此,所述资源包括cpu状态、设备内存,以及当前处理的任务数量,等等。
[0096]例如,接上例,对于http请求如http-request 1,假设在步骤SI中,第一网络设备I得到的取模结果为2,则原本确定处理该http请求的目标第二网络设备为编号为2的worker,但此时若worker2告知master其的当前资源紧张,贝U在步骤SI中,第一网络设备I可确定将其他第二网络设备中资源状态信息为资源富裕的第二网络设备如编号为“3”的worker作为处理该http请求即http-request I的目标第二网络设备。
[0097]在此,作为master的第一网络设备I会通过管道socket来获得其对应的各第二网络设备的资源状态信息,或者,由各第二网络设备定时向第一网络设备I返回其资源状态信息,从而在步骤SI中,第一网络
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1