HTTP请求处理方法、装置及系统与流程

文档序号:11180718阅读:1483来源:国知局
HTTP请求处理方法、装置及系统与流程
本发明实施例涉及网络
技术领域
,特别涉及一种http请求处理方法、装置及系统。
背景技术
:web服务集群是用于向客户端提供http(hypertexttransferprotocol,超文本传输协议)服务的服务器集群。web服务器集群包括多台web服务器,每台web服务器上运行有至少一个web容器,web容器是一种用于提供http服务的服务程序。目前的web服务器集群常采用tomcat容器和jetty容器作为web容器。在web服务集群中可能会提供多个同类型的web容器。当web服务器集群接收到客户端发送的http请求时,采用轮询方式从多个同类型的web容器中确定出一个web容器,由确定出的web容器处理该http请求。在实现本发明实施例的过程中,发明人发现现有技术至少存在以下问题:当web服务器集群中增加服务器或者删除服务器时,会影响http服务的正常响应,无法稳定地向客户端提供http服务。技术实现要素:为了解决现有技术中当web服务器集群中增加服务器或者删除服务器时,会影响http服务的正常响应,无法稳定地向客户端提供http服务的问题,本发明实施例提供了一种http请求处理方法、装置及系统。所述技术方案如下:根据本发明实施例的第一方面,提供了一种http请求处理方法,所述方法包括:代理服务器接收客户端发送的http请求,所述http请求携带有uri和用户标识;所述代理服务器确定与所述uri对应的服务器组,所述服务器组包括至少两个响应服务器;所述代理服务器根据所述用户标识的一致性哈希计算结果从所述服务器组中确定出目标服务器;所述代理服务器将所述http请求发送至所述目标服务器进行处理。根据本发明实施例的第二方面,提供了一种http请求处理系统,所述系统包括:所述代理服务器,用于接收所述客户端发送的http请求,所述http请求携带有统一资源标识符uri和用户标识;所述代理服务器,用于确定与所述uri对应的服务器组,所述服务器组包括至少两个服务器;所述代理服务器,用于根据所述用户标识的一致性哈希计算结果从所述服务器组中确定出目标服务器;所述代理服务器,用于将所述http请求发送至所述目标服务器进行处理。根据本发明实施例的第三方面,提供了一种http请求处理装置,所述装置包括:第一接收模块,用于接收所述客户端发送的http请求,所述http请求携带有uri和用户标识;第一确定模块,用于确定与所述uri对应的服务器组,所述服务器组包括至少两个服务器;哈希计算模块,用于根据所述用户标识的一致性哈希计算结果从所述服务器组中确定出目标服务器;第一发送模块,用于将所述http请求发送至所述目标服务器进行处理。本发明实施例提供的技术方案带来的有益效果是:通过代理服务器接收客户端发送的超文本传输协议http请求,确定与uri对应的服务器组,根据用户标识的一致性哈希计算结果从服务器组中确定出目标服务器,将http请求发送至目标服务器进行处理,使得来自同一客户端的http请求由同一个服务器提供web服务;解决了现有技术中当web服务器集群中增加服务器或者删除服务器时,无法稳定地向客户端提供http服务的问题;实现了当增减服务器以及整个系统服务时,大部分客户端所发送的http请求,仍然由指定的服务器提供web服务,不会受到增减服务器的任何影响的效果。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1a和图1b是本发明一个实施例提供的http请求处理系统的系统结构图;图2是本发明一个实施例提供的http请求处理方法的流程图;图3是本发明一个实施例提供的一致性哈希算法的方法原理图;图4是本发明另一个实施例提供的http请求处理方法的流程图;图5是本发明一个实施例提供的http请求处理装置的结构方框图;图6是本发明另一个实施例提供的http请求处理装置的结构方框图;图7是本发明一个实施例提供的服务器的结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。图1a和图1b是本发明一个实施例提供的http请求处理系统的系统结构图。示意性的,该http请求处理系统包括:客户端100、代理服务器120、服务器组a、服务器组b、队列160和业务处理服务器组180。其中,服务器组a、服务器组b、队列160和业务处理服务器组180均属于web服务器。客户端100是浏览器客户端。可选地,浏览器客户端向代理服务器发送http请求,http请求中携带有统一资源标识符(uniformresourceidentifier,uri)和用户标识userid。其中,userid用于代表用户身份。代理服务器120是代理用户获取的web服务的服务器。代理服务器120可以是反向代理(reverseproxy)服务器。其中,反向代理方式是指以代理服务器120来接受internet上的http请求,然后将http请求转发给web服务器所在内部网络上的web服务器,并将从web服务器上得到的响应结果反馈给客户端100。可选地,代理服务器由虚拟机(virtualmachine,vm)或物理服务器实现,本发明对代理服务器的具体实现形式不加以限定。可选地,代理服务器120中包括locator服务121和lua脚本122。其中,代理服务器120接收客户端100发送的http请求;lua脚本122用于截获http请求中携带的uri和用户标识,并将uri发送给locator服务121,locator服务121根据http请求中携带的uri确定与uri对应的服务器组,该服务器组包括多台响应服务器;同时,lua脚本还接收locator服务121反馈的服务器组。可选地,lua脚本122还根据用户标识userid做一致性哈希算法,查找对应服务器组中的一台目标服务器。服务器组a和服务器组b是将很多响应服务器以负载均衡方式部署,同时提供同一种服务的一个群组。在客户端100看来就像是只有一个响应服务器。服务器组a和服务器组b中包含多个响应服务器,每个响应服务器均用于处理代理服务器120发送的http请求。可选地,服务器组a包括响应服务器1、响应服务器2、响应服务器3和响应服务器4,服务器组b包括响应服务器5、响应服务器6、响应服务器7和响应服务器8。本发明实施例对以上对服务器组a和服务器组b中的响应服务器的数量的描述不加以限定。示意性的,服务器组a用于处理不需要向客户端100反馈响应的http请求,比如消息和通知;服务器组b用于处理需要向客户端100反馈响应的http请求。队列160是一款分布式、队列模型的消息中间件,用于接收目标服务器(目标服务器是响应服务器中的一个)构建的http对象,等待业务服务器组180的处理。队列160可以由单独的一个服务器实现,也可以由一个虚拟机实现,也可以集成在响应服务器或业务处理服务器中来实现。业务处理服务器组180是将很多业务处理服务器集中起来以负载均衡方式部署,同时提供同一种服务的一个群组。业务处理服务器组180中包含多个业务处理服务器,业务处理服务器180用于从队列160中获取http对象并进行处理。可选地,本实施例中业务处理服务器组180包括业务处理服务器1、业务处理服务器2、业务处理服务器3和业务处理服务器4,本发明实施例对此不加以限定。在一个具体的实现中,参考图1b,代理服务器120是nginx反向代理服务器120,服务器组a包括netty-响应服务器1、netty-响应服务器2、netty-响应服务器3和netty-响应服务器4,服务器组b包括netty-响应服务器5、netty-响应服务器6、netty-响应服务器7和netty-响应服务器8。也即,服务器组a和服务器组b中的响应服务器由netty服务器实现。其中,服务器组a和服务器组b属于http响应层,业务处理服务器属于业务处理层。请参考图2,本发明一个实施例提供的http请求处理方法的流程图。本发明以该实施例应用于图1所述的系统来举例说明。该http请求处理方法包括:步骤201,客户端向代理服务器发送http请求。步骤202,代理服务器接收客户端发送的http请求。可选地,http请求包括:uri和用户标识。每个uri用于定位一个或一组web资源。可选地,web资源是包括文本、图片、音频、视频之类的网页或网页程序。步骤203,代理服务器确定与uri对应的服务器组。可选地,每个服务器组包括至少两个响应服务器。步骤204,代理服务器根据用户标识的一致性哈希计算结果从服务器组中确定出目标服务器。一致性哈希计算是一种用于将用户标识和服务器组中的服务器产生对应关系的计算方式。比如,将用户标识a总是与响应服务器1对应,将用户标识b总是与响应服务器2对应,将用户标识c总是与响应服务器3对应,将用户标识d总是与响应服务器4对应。当服务器组中的响应服务器未发生改变时,代理服务器使用一致性哈希计算,能够将来自用户标识a的http请求总是发送给响应服务器1处理,将来自用户标识b的http请求总是发送给响应服务器2处理,将来自用户标识c的http请求总是发送给响应服务器3处理,将来自用户标识d的http请求总是发送给响应服务器4处理。步骤205,代理服务器将http请求发送至目标服务器进行处理。综上所述,本实施例提供的http请求处理方法,通过代理服务器接收客户端发送的超文本传输协议http请求,确定与uri对应的服务器组,根据用户标识的一致性哈希计算结果从服务器组中确定出目标服务器,将http请求发送至目标服务器进行处理;解决了现有技术中当web服务器集群中增加服务器或者删除服务器时,无法稳定地向客户端提供http服务的问题;实现了当增减服务器以及整个系统服务时,大部分客户端所发送的http请求,仍然由指定的服务器提供web服务,大部分客户端不会受到增减服务器的任何影响,仅有少部分客户端会收到增减服务器的影响的效果。请参考图3,其示出了本发明一个实施例提供的一致性哈希算法的方法原理图。一致性哈希将整个哈希值空间组织成一个虚拟的圆环。将各个响应服务器使用hash算法进行一个哈希,具体可以选择服务器的ip或主机名作为关键字进行哈希,这样每台机器就能确定其在哈希环上的位置。可选地,本实施例中以服务器组a中有4台响应服务器为例,分别是响应服务器1、响应服务器2、响应服务器3和响应服务器4,使用响应服务器的主机名进行哈希后在环形哈希空间的位置如图3所示。响应服务器1与环形哈希空间上的节点a对应,响应服务器2与环形哈希空间上的节点b对应,响应服务器3与环形哈希空间上的节点c对应,响应服务器4与环形哈希空间上的节点d对应。当代理服务器收到http请求后,对http请求中的用户标识计算哈希值(比如消息摘要算法md5),然后对用户标识的哈希值相对于4计算余数,若余数为0,则将该http请求发送给与节点a对应的响应服务器1进行处理;若余数为1,则将该http请求发送给与节点b对应的响应服务器2进行处理;若余数为2,则将该http请求发送给与节点c对应的响应服务器3进行处理;若余数为3,则将该http请求发送给与节点d对应的相应服务器4进行处理。请参考图4,本发明实施例四提供的http请求处理方法的流程图。本发明以该实施例应用于图1所述系统和图3所述算法来举例说明。该http请求处理方法包括:步骤401,客户端向代理服务器发送http请求。可选地,客户端是浏览器客户端,常见的浏览客户端包括:internetexplorer(ie浏览器)、mozillafirefox(火狐浏览器)、opera和safari。步骤402,代理服务器接收客户端发送的http请求。可选地,http请求携带有uri和用户标识。可选地,uri是一个用于标识某一互联网资源名称的字符串。该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。uri由包括确定语法和相关协议的方案所定义。可选地,用户标识是因特网上用于识别用户身份的名字。步骤403,代理服务器通过lua脚本向locator服务发送uri。示意性的,nginx反向代理服务器通过lua脚本截获http请求中的uri和用户标识,并向locator服务发送uri。locator服务是nginx反向代理服务器中的一个功能组件,用于定义每个uri的处理规则。示意性的,表一示出了该处理规则:表一uri服务器组/xxx.jpg服务器组a/yyy.html服务器组b步骤404,代理服务器通过locator服务确定与uri对应的服务器组。locator服务会查询与uri对应的服务器组。以图1为例,locator服务会查询出服务器组a或服务器组b作为与uri对应的服务器组。示意性的,locator服务通过http响应层所注册的method(方法)解析uri,根据uri映射到对应的服务器组。method包括:get方法、post方法等。locator服务会将与uri对应的服务器组,反馈给lua脚本。步骤405,代理服务器通过lua脚本接收locator服务反馈的服务器组。示意性的,nginx反向代理服务器通过lua脚本接收locator服务确定并反馈的服务器组。步骤406,代理服务器对用户标识按照预设的哈希算法计算哈希值。示意性的,nginx反向代理服务器通过lua脚本对用户标识按照预设的哈希算法计算哈希值。预设的哈希算法包括:消息摘要算法第二版md2、消息摘要算法第三版md3、消息摘要算法第五版md5、安全哈希算法sha-1等等哈希算法中的任意一种。比如,nginx反向代理服务器对该用户标识计算出的哈希值为1011101111。步骤407,代理服务器将哈希值散列到环形哈希空间上的目标节点。可选地,环形哈希空间上的节点与服务器组中的服务器存在对应关系,如图3所示。nginx反向代理服务器对用户标识的哈希值相对于n求余,n是环形哈希空间上的节点数。以n为4为例,余数0对应响应服务器1,余数1对应响应服务器2,余数2对应响应服务器3,余数3对应响应服务器4。步骤408,代理服务器将与目标节点对应的服务器确定为目标服务器。示意性的,由于用户标识的哈希值,相对于n的余数为1,在哈希环形空间上对应的响应服务器2,即确定响应服务器2为目标服务器。步骤409,代理服务器将http请求发送至目标服务器进行处理。示意性的,nginx反向代理服务器将http请求发送至响应服务器2进行处理。步骤410,目标服务器确定http请求的请求类型。示意性的,响应服务器2确定http请求的请求类型。可选地,请求类型分为需要反馈响应消息的http请求和不需要反馈响应消息的http请求。可选地,不需要反馈响应消息的http请求包括消息和通知。若请求类型是不需要反馈响应消息的http请求,则执行步骤410至步骤412,若请求类型是需要反馈响应消息的http请求,则执行步骤413至步骤415。步骤411,若请求类型是不需要反馈响应消息的http请求,目标服务器根据http请求构建http对象,将http对象发送至队列中。示意性的,当请求类型是不需要反馈响应消息的http请求时,响应服务器2根据http请求构建http对象,并将http对象发送至队列中。步骤412,业务处理服务器从队列中获取http对象。步骤413,业务处理服务器对http对象进行处理。步骤414,若请求类型是需要反馈响应消息的http请求,目标服务器生成http请求的响应消息。示意性的,当请求类型是需要反馈响应消息的http请求时,响应服务器2对http请求进行处理,并根据处理结果生成http请求的响应消息。步骤415,目标服务器将响应消息发送给代理服务器。步骤416,代理服务器将响应消息反馈给客户端。综上所述,本实施例提供的http请求处理方法,通过代理服务器接收客户端发送的超文本传输协议http请求,确定与uri对应的服务器组,根据用户标识的一致性哈希计算结果从服务器组中确定出目标服务器,将http请求发送至目标服务器进行处理;解决了现有技术中当web服务器集群中增加服务器或者删除服务器时,无法稳定地向客户端提供http服务的问题;实现了当增减服务器以及整个系统服务时,大部分客户端所发送的http请求,仍然由指定的服务器复用已有的连接提供web服务,大部分客户端不会受到增减服务器的任何影响,仅有少部分客户端会收到增减服务器的影响的效果。本实施例提供的http请求处理方法,通过代理服务器中的lua脚本一致性哈希算法和locator服务完成对用户的定位,解决了现有技术中增加服务器或者删除服务器时,对原有用户访问响应服务器波动大的问题。本实施例提供的http请求处理方法,还通过对不需要反馈响应消息的http请求,构建http对象缓存至队列中,由业务处理服务器对队列中的http对象进行处理,实现了响应服务器的发送过程和业务处理服务器的接收过程的解耦,使得响应服务器发生增加或者减少时,不影响业务处理服务器的接收过程和处理过程,或者,业务处理服务器发生增加或者减少时,不影响响应服务器的发送过程。换句话说,与消息和通知有关的服务过程的更新,对整个系统来说是完全无感知的。本实施例提供的http请求处理方法,还通过利用netty服务器的内存分配回收机制,可以很好的降低java虚拟机的垃圾回收(gabagecollection,gc),提高整个系统的处理吞吐量。下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。请参考图5其示出了发明一个实施例提供的http请求处理装置的结构方框图。该http请求处理装置可以通过专用硬件电路,或者,软硬件的结合来实现成为服务器的全部或一部分。本发明以该实施例应用于图1所述系统和图3所述算法来举例说明。该http请求处理装置,包括:第一接收模块501,用于接收客户端发送的超文本传输协议http请求。可选地,http请求携带有统一资源标识符uri和用户标识。第一确定模块502,用于确定与uri对应的服务器组。可选地,服务器组包括至少两个服务器。哈希计算模块503,用于根据用户标识的一致性哈希计算结果从服务器组中确定出目标服务器。第一发送模块504,用于将http请求发送至目标服务器进行处理。综上所述,本实施例提供的http请求处理装置,通过代理服务器接收客户端发送的超文本传输协议http请求,确定与uri对应的服务器组,根据用户标识的一致性哈希计算结果从服务器组中确定出目标服务器,将http请求发送至目标服务器进行处理;解决了现有技术中当web服务器集群中增加服务器或者删除服务器时,无法稳定地向客户端提供http服务的问题;实现了当增减服务器以及整个系统服务时,大部分客户端所发送的http请求,仍然由指定的服务器复用已有的连接提供web服务,大部分客户端不会受到增减服务器的任何影响,仅有少部分客户端会收到增减服务器的影响的效果。请参考图6,其示出了本发明一个实施例提供的http请求处理装置的结构方框图。该http请求处理装置可以通过专用硬件电路,或者,软硬件的结合来实现成为服务器的全部或一部分。本发明以该实施例应用于图1所述系统来举例说明。该http请求处理装置,包括:第一接收模块601,用于接收客户端发送的http请求。可选地,http请求携带有uri和用户标识。第一确定模块602,用于确定与uri对应的服务器组。可选地,服务器组包括至少两个服务器。可选地,第一确定模块602包括第一发送单元6021、第一确定单元6022和第一接收单元6023。第一发送单元6021,用于通过lua脚本向locator服务发送uri。第一确定单元6022,用于通过locator服务确定与uri对应的服务器组。第一接收单元6023,用于通过lua脚本接收locator服务反馈的服务器组。哈希计算模块603,用于根据用户标识的一致性哈希计算结果从服务器组中确定出目标服务器。可选地,哈希计算模块603包括哈希计算单元6031、数值散布单元6032和目标确定单元6033。哈希计算单元6031,用于对用户标识按照预设的哈希算法计算哈希值。数值散布单元6032,用于将哈希值散列到环形哈希空间上的目标节点。可选地,环形哈希空间上的节点与服务器组中的服务器存在对应关系。目标确定单元6033,用于将与目标节点对应的服务器确定为目标服务器。第一发送模块604,用于将http请求发送至目标服务器进行处理。类型确定模块605,用于目标服务器确定http请求的请求类型。请求处理模块606,用于当请求类型是不需要反馈响应消息的http请求时,目标服务器根据http请求构建http对象,将http对象发送至队列中;以便响应服务器从队列中获取http对象并处理。同时,请求处理模块606,还用于当求类型是需要反馈响应消息的http请求时,目标服务器生成http请求的响应消息,通过代理服务器向客户端反馈响应消息。综上所述,本实施例提供的http请求处理装置,通过代理服务器接收客户端发送的超文本传输协议http请求,确定与uri对应的服务器组,根据用户标识的一致性哈希计算结果从服务器组中确定出目标服务器,将http请求发送至目标服务器进行处理;解决了现有技术中当web服务器集群中增加服务器或者删除服务器时,无法稳定地向客户端提供http服务的问题;实现了当增减服务器以及整个系统服务时,大部分客户端所发送的http请求,仍然由指定的服务器复用已有的连接提供web服务,大部分客户端不会受到增减服务器的任何影响,仅有少部分客户端会收到增减服务器的影响的效果。本实施例提供的http请求处理装置,通过代理服务器中的lua脚本一致性哈希算法和locator服务完成对用户的定位,解决了现有技术中增加服务器或者删除服务器时,对原有用户访问响应服务器波动大的问题。本实施例提供的http请求处理装置,还通过对不需要反馈响应消息的http请求,构建http对象缓存至队列中,由业务处理服务器对队列中的http对象进行处理,实现了响应服务器的发送过程和业务处理服务器的接收过程的解耦,使得响应服务器发生增加或者减少时,不影响业务处理服务器的接收过程和处理过程,或者,业务处理服务器发生增加或者减少时,不影响响应服务器的发送过程。换句话说,与消息和通知有关的服务过程的更新,对整个系统来说是完全无感知的。本实施例提供的http请求处理装置,还通过利用netty服务器的内存分配回收机制,可以很好的降低java虚拟机的垃圾回收(gabagecollection,gc),提高整个系统的处理吞吐量。图7本发明一个实施例提供的服务器的结构示意图。该服务器可以是代理服务器120或服务器组a或服务器组b或业务处理服务器组180中的服务器。具体来讲:服务器700包括中央处理单元(cpu)701、包括随机存取存储器(ram)702和只读存储器(rom)703的系统存储器704,以及连接系统存储器704和中央处理单元701的系统总线705。服务器700还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)706,和用于存储操作系统713、应用程序714和其他程序模块715的大容量存储设备707。基本输入/输出系统706包括有用于显示信息的显示器708和用于用户输入信息的诸如鼠标、键盘之类的输入设备709。其中显示器708和输入设备709都通过连接到系统总线705的输入输出控制器710连接到中央处理单元701。基本输入/输出系统706还可以包括输入输出控制器710以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器710还提供输出到显示屏、打印机或其他类型的输出设备。大容量存储设备707通过连接到系统总线705的大容量存储控制器(未示出)连接到中央处理单元701。大容量存储设备707及其相关联的计算机可读介质为服务器700提供非易失性存储。也就是说,大容量存储设备707可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器704和大容量存储设备707可以统称为存储器。根据本发明的各种实施例,服务器700还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器700可以通过连接在系统总线705上的网络接口单元711连接到网络712,或者说,也可以使用网络接口单元711来连接到其他类型的网络或远程计算机系统(未示出)。上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由cpu执行实现如图2和图4任一所示出的http请求处理方法。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1