技术领域
本发明涉及互联网领域,尤其涉及基于HTTP请求分类的互联网负载均衡方法和系统。
背景技术
随着互联网应用的日益普及,网络流量迅猛增长,其中HTTP作为用户访问互联网资源的最主要方式,占据了网络流量相当大的份额。为了有效应对互联网大流量,负载均衡系统应运而生。
现有的负载均衡系统内置加权轮询算法,为各个服务器设置初始权重值,并通过实时收集各个服务器当前硬件剩余性能来配置其权重值。在处理用户HTTP请求时,通常根据权重值大小来选择服务器。
但是来自不同客户端的不同种类的HTTP请求对服务器性能要求不同,所消耗服务器内部的资源也各有差异,例如有些请求会需要更多的内存资源,而另一些请求则要求更高的CPU性能、更快的IO速度等。因此如果不对客户端HTTP请求进行类型划分,仅根据单纯考虑服务器性能而配置的权重值来分配处理HTTP请求导致难以最大程度发挥服务器的性能,造成服务器负责不均衡,性能波动大,也会造成服务器资源的浪费。
而现有基于特定HTTP请求的定制化负载均衡系统虽然能解决部分场景下的负载不均衡的问题,但是由于适用场景单一、部署成本高、资源浪费严重,难以大规模推广。
希望有一种能够通过将客户端HTTP请求分类与动态负载均衡策略相结合来选择合适的用于处理HTTP请求的服务器的方法和系统,以便充分发挥服务器性能,提高服务器响应速度。
发明内容
提供本发明内容以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征;也不旨在用于确定或限制所要求保护的主题的范围。
本发明提出了一种基于客户端HTTP请求分类的负载均衡方法和系统。服务器性能指标包括CPU性能、内存大小、磁盘IO速度以及网络带宽这四项基本参数,根据这四项基本参数的不同为服务器配置不同的权重值。对接收到的客户端HTTP请求相应分类为CPU密集型、内存密集型、IO密集型和网络带宽密集型四种类型之一。在确认HTTP请求类别之后匹配对应的权重值,然后根据不同的权重值将客户端HTTP请求分配到合适性能的服务器。本发明通过将负载均衡内置的加权轮询算法将客户端HTTP请求分配到权重值最大的服务器,既充分利用了服务器性能又可以提高响应速度,改善用户体验。
本发明的一种基于HTTP请求分类的负载均衡系统,包括:请求分类模块、服务器选择模块、请求分发模块、预防宕机模块。
其中,请求分类模块接收来自客户端的HTTP请求并确定HTTP请求的类型,将HTTP请求归为CPU密集型、内存密集型、IO密集型和网络带宽密集型中的至少一种;服务器选择模块,收集各服务器的静态信息,并结合来自请求分类模块的所确定的HTTP请求的类型通过Nginx内置加权轮询算法来计算各服务器的当前权重值,并进行排序,选择当前权重值最大的服务器;请求分发模块,向服务器选择模块所选定的服务器发送HTTP请求,将服务器处理结果返回客户端,并进一步用于收集各服务器响应请求时间;预防宕机模块接收来自请求分发模块的服务器响应请求时间,在服务器响应请求时间大于预设阈值时,将该服务器权重值设为零,并反馈给服务器选择模块。
本发明的一种基于HTTP请求分类的负载均衡方法,包括:从客户端接收HTTP请求;通过分析HTTP请求的报文中Content-Type内容将HTTP请求归类为CPU密集型、内存密集型、IO密集型和网络带宽密集型中的至少一种,从而确定所接收到的HTTP请求的类型;基于各服务器的静态性能为各服务器设置初始权重值,并根据所确定的HTTP请求的类型,计算各服务器的当前权重值并进行排序;选择当前权重值最高的服务器与之建立连接;如果连接建立成功,则向该服务器发送HTTP请求,并将来自服务器的处理结果反馈给提出请求的客户端;如果与当前权重值最高的服务器连接建立失败,则该服务器的权重值置为0,重新计算各服务器的当前权重值并重新排序,以便重新选择用于建立连接的服务器。当全部服务器的权重值都被置为0时,向客户端反馈请求失败信息。
通过阅读下面的详细描述并参考相关联的附图,这些及其他特点和优点将变得显而易见。应该理解,前面的概括说明和下面的详细描述只是说明性的,不会对所要求保护的各方面形成限制。
附图说明
以下将通过参考附图中示出的具体实施例来对本发明进行更具体描述。
图1是本发明的基于HTTP请求分类的负载均衡系统及连接关系的示意框图;
图2是本发明的基于HTTP请求分类的负载均衡方法中的加权轮询算法的具体流程图;
图3是本发明的基于HTTP请求分类的负载均衡方法的流程图。
附图中的流程图和框图显示了根据本申请的实施例的系统、方法可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。
具体实施方式
以下将通过参考附图中示出的具体实施例来对本发明进行更具体描述。通过阅读下文具体实施方式的详细描述,本发明的各种优点和益处对于本领域普通技术人员将变得清楚明了。然而应当理解,可以以各种形式实现本发明而不应被这里阐述的各实施方式所限制。提供以下实施方式是为了能够更透彻地理解本发明。除非另有说明,本申请使用的技术术语或者科学术语应当为本申请所属领域技术人员所理解的通常意义。
本发明公开了一种基于客户端HTTP请求分类的Nginx负载均衡优化方法和系统,通过对接收到的客户端请求进行分类,将请求类别作为影响因子对服务器的当前权重值进行动态优化,根据不同的当前权重值将客户端请求分配到最优的服务器。
本发明通过将客户端HTTP请求分类与动态负载均衡策略相结合的优化方式,可有效提升负载均衡系统的稳定性,提升HTTP服务的响应速度,降低系统的故障率。
图1的虚框内是本发明的基于HTTP请求分类的负载均衡系统。该系统包括请求分类模块、服务器选择模块、请求分发模块和预防宕机模块,该系统分别与多个客户端以及服务器集群通信地连接。以下逐个模块进行描述:
◆请求分类模块:
用于接收来自用户客户端的HTTP请求,并对HTTP请求的头信息进行分析,将请求归为CPU密集型、内存密集型、IO密集型和网络带宽密集型4种业务类型中的至少一种,将分类结果发送到服务器选择模块。具体而言:
MIME是HTTP协议中用来定义传输内容性质及格式的标准,客户端通常会在HTTP请求中根据MIME来设置Content-Type和Accept以告知当前所发送内容的类型和服务器应当返回的数据类型。
请求分类模块在收到来自客户端的HTTP请求时通过网络层传输的数据包解封装得到数据报文;通过分析报文中Content-Type内容来判断请求的类型。MIME中数据类型用两级分类表示:type/subtype。其中第一级分类通常包含text(普通文本)、image(图像文件)、audio(音频文件)、video(视频文件)、application(应用数据)和multi-part(复合内容)这六种数据类型。
请求分类模块将第一级分类的这六种数据分成如下四类:
■multi-part类型是向服务器传送二进制数据,服务器需对其进行解码来获取数据内容,CPU性能对其影响较大,因此将其划分为CPU密集型;
■text和image类型请求对服务器计算能力和磁盘IO速度的要求不高,内存大小对其影响较大,因此将其划分为内存密集型;
■application类型请求需要频繁访问数据库,磁盘IO速度对其影响较高,因此将其划分为IO密集型;
■audio和video类型请求只对网络带宽要求较高,因此将其划分为网络带宽密集型。
◆服务器选择模块:
通过Nginx内置加权轮询算法选择合适服务器,包括:收集服务器的硬件设备的主要静态信息,结合确定了的HTTP请求的类型来设置每台服务器当前权重值并进行排序,当前权重值计算具体公式如下:
W(i)=k
其中参数W
C
k
服务器选择模块根据计算得到的每台服务器当前权重值,通过Nginx内置的加权轮询算法,选择当前权重值最大的服务器作为请求处理服务器。
服务器选择模块还结合来自预防宕机模块的信息,排除响应时间大于阈值的服务器,向请求分发模块返回选定的服务器IP。
◆请求分发模块:
根据服务器选择模块反馈的服务器IP地址向选定的服务器发送HTTP请求,并将服务器处理结果返回给客户端。
同时请求分发模块还负责收集服务器的反馈,将服务器响应请求的时间返回给预防宕机模块。
◆预防宕机模块:
服务器由于负载的增多处理HTTP请求的时间也会变长,当负载增加到一定程度时,响应时间会大大增加甚至达到无限长,在外界看来相当于服务器死机,应当避免出现这种情况。
因此,本发明的负载均衡系统中专门设置了预防宕机模块,通过分析请求分发模块收集到的服务器反馈的响应请求的时间,来判断每个服务器当前负载情况,并当请求响应时间大于预设阈值时,将该服务器权重值设置为零,通知服务器选择模块暂时不要再向该服务器分配请求,即不再将该服务器的IP地址提供给请求分发模块,新的客户端请求不会分配到该服务器上执行直到该服务器的响应时间恢复到阈值以下。这样可以避免服务器因负载过重而出现响应时间大大增加甚至不响应请求的情况。
图2是本发明的基于HTTP请求分类的负载均衡的方法中的加权轮询算法具体过程。加权轮询算法由服务器选择模块执行。
方法开始后,在步骤201,为各个服务器设置初始权重值,结合由请求分类模块的分类的客户端HTTP请求的类型,根据前述公式计算各个服务器的当前权重值并进行排序;
在步骤202,选择权重值最大的服务器;
在步骤203,尝试与步骤202中选出的服务器建立连接:
如果成功建立连接,方法前进到步骤204,将该服务器的IP地址返回给请求分发模块,本次加权轮询算法结束;
如果连接不成功,在步骤205作出该服务器可能宕机的判断,并对该连接不成功的服务器进行标志,修改其权重为0;
在步骤206,判断服务器集群中是否所有服务器权重均为0:
若否,说明还有可能可用的服务器,方法返回步骤201,重新计算各服务器的当前权重值并重新进行排序;
若是,说明全部服务器均已宕机,本次加权轮询算法结束。
图3示出的本发明的基于HTTP请求分类的负载均衡方法包括以下步骤:
在步骤301,接收来自客户端的HTTP请求,
在步骤302,对所接收到的HTTP请求进行分类,将其确定为CPU密集型、内存密集型、IO密集型和网络带宽密集型4种业务类型中的至少一种;
在步骤303,基于各服务器的静态性能为各服务器设置初始权重值,并根据步骤302中所确定的HTTP请求的类型,计算各服务器的当前权重值并排序,选择当前权重值最高的服务器用以在步骤304与之建立连接;
如果连接建立失败,则在步骤306将该服务器权重置为0,即确认其为宕机,如果服务器群集中还有服务器的权重值不为0,则返回步骤303,重新计算各服务器的当前权重值,重新排序,并重新选择用于建立连接的服务器;
如果连接建立成功,则在步骤305向该服务器发送该HTTP请求,并在步骤307将来自服务器的处理结果反馈给提出请求的客户端。
如果多次重复步骤303-306,导致全部服务器的权重值都被置为0时,作出全部服务器都宕机,暂时没有可用服务器的判断,向发出请求的客户端反馈请求失败信息。
本发明提出了一种基于客户端请求分类的负载均衡方法和系统,通过分析客户端HTTP请求中的数据包对客户端请求进行分类,服务器的权重值根据请求类型而改变,通过加权轮询算法为每个客户端请求分配合适性能的服务器。在避免性能浪费的同时提高了服务器响应速度,解决了以往负载均衡策略只注重对后端服务器动态负载情况进行分析而忽视前端请求类型的弊端。同时本发明还具备预防宕机模块,在服务器处于高负载状态即请求响应时间高于既定阈值时停止向其分配请求,防止服务器宕机。
进一步而言,本发明对对高并发请求有很好的处理效果,能快速将不同类型请求分配到合适服务器,提高响应速度。物理资源不同的服务器均能分配相应的客户端请求,还可延长了服务器使用时间,有效降低服务器更新投入。
以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围,其均应涵盖在本申请的权利要求和说明书的范围当中。
机译: 通过网格负载均衡器使用聚合评分对数字内容进行分类,该负载均衡器配置为基于语义处理器的内容标识将内容分配给不同的内容分析引擎
机译: 基于云监控的负载均衡优化方法及装置
机译: 基于机器学习的负载均衡优化方法和装置