基于服务器负载状态均衡服务器的系统和方法

文档序号:7930023阅读:143来源:国知局
专利名称:基于服务器负载状态均衡服务器的系统和方法
技术领域
本发明总体上涉及数据通信,更具体地,涉及服务负载均衡器的方法和系统。
背景技术
Web服务和云计算正以史无前例的速度部署。每天都在资料处理中心卸载和安装新的服务器。对于Web服务和企业计算的需求来自各个方面。面向用户的服务包括 iPhone 应用、移动应用(诸如基于位置的服务)、路线规划导航服务、诸如Kindle 的电子书服务、诸如YouTube 或Hulu 的视频应用、诸如Pandora 或iTimes 的音乐应用、 诸如Netflix 的互联网电视服务、以及许多其他快速发展的用户web服务。在企业领域, 包括诸如Goole docs的基于云计算的服务、Microsoft Office Live和Shar印oint software, Salesforce. com 的在线软件服务、远地呈现和网络会议服务、以及许多其他的企业云计算服务。因此,部署越来越多的服务器从而适应日益增长的计算需求。这些服务器传统上是由服务器负载均衡器(SLB)管理的。SLB通常是网络装置,诸如A 10网络的AX系列流量管理器。SLB基于输入服务请求来管理服务器的负载均衡。在服务器中均衡负载的一般方法是基于应用(HTTP、FTP等)、诸如URL的服务地址、基于网络接口的优先级或主机IP地址来分配服务请求。附加地,SLB可以按照循环方式将服务请求分配给服务器,假定并确保服务器的负载是均衡的。然而,不同的服务请求具有不同的服务计算结果。服务器可能在具有少量服务请求的情况下满载,而另一服务器尽管有大量的服务请求仍然保持大部分是空闲的。SLB可能不适当地将另一请求发送至繁忙的服务器,错误地认为该服务器容易可用的,而不是将该请求发送至空闲服务器。如果SLB意识到服务器的计算负载情况,以便于SLB可以更好地选择服务器来处理服务请求,那么这将是有利的。因此,存在着对于用于基于服务器负载状态选择服务器的服务器负载均衡器的系统和方法的需求。

发明内容
根据本发明的一个实施方式,一种基于服务器负载状态来均衡服务器的方法,包括通过服务网关从服务器接收对于服务请求的服务响应,该服务响应包含对于服务请求的处理结果以及表明服务器的计算负载状态的服务器状态;通过服务网关从服务响应中获得服务器状态;通过服务网关从主机接收下一个服务请求,下一个服务请求包含统一资源定位符(URL);通过服务网关确定被配置处理该URL的服务器;通过服务网关确定服务器状态是否表明该服务器对于处理下一个服务请求是可用的;以及响应于确定该服务器状态表明服务器对于处理下一个服务请求是可用的,通过服务网关将下一个服务请求发送至该服务器。根据本发明的一个方面,该方法包括在服务网关和服务器之间建立服务会话;通过服务网关发送服务请求至服务器;以及通过服务网关从服务器接收服务响应,该服务响应包含由服务器处理该服务请求的结果以及表明服务器的计算负载状态的服务器状态。根据本发明的一个方面,该方法包括通过服务网关从服务响应中获取服务器状态;通过服务网关从服务响应中移除服务器状态来修改服务响应;以及通过服务网关将经修改的服务响应发送至发出该服务请求的主机。根据本发明的一个方面,该方法包括通过服务网关确定服务器是否被配置为作为主服务器或次服务器来处理URL ;响应于确定服务器被配置为作为主服务器来处理URL, 通过服务网关将下一个服务请求存储在第一缓冲器中,该第一缓冲器被配置为存储将由作为主服务器的服务器处理的服务请求;以及响应于确定该服务器被配置为作为次服务器来处理URL,通过服务网关将下一个服务请求存储在第二缓冲器中,该第二缓冲器被配置为存储将由作为次服务器的服务器处理的服务请求。根据本发明的一个方面,在确定服务器被配置为作为主服务器处理URL的情况中,该方法包括通过服务网关确定服务器状态是否表明该服务器对于作为主服务器处理 URL是可用的;响应于确定该服务器状态表明服务器对于作为主服务器来处理URL是可用的,通过服务网关在第一缓冲器中查找下一个服务器请求;以及通过服务网关将下一个服务请求发送至服务器。根据本发明的一个方面,在确定服务器被配置为作为次服务器处理URL的情况中,该方法包括通过服务网关确定服务器状态是否表明该服务器对于作为次服务器来处理服务请求是可用的;响应于确定该服务器状态表明该服务器对于作为次服务器来处理服务请求是可用的,通过服务网关确定是否要选择该服务器;响应于确定要选择该服务器,通过服务网关在第二缓冲器中查找下一个服务请求;以及通过服务网关将下一个服务请求发送至该服务器。根据本发明的一个方面,该方法包括通过服务网关确定服务器被配置为处理包含预定哈希值的服务请求;通过服务网关将哈希函数应用于下一个服务请求中的URL ;以及通过服务网关确定该URL的哈希值匹配预定哈希值。根据本发明的一个方面,该方法包括通过服务网关确定该服务器被配置为处理 URL ;通过服务网关基于下一个服务请求的预定参数来确定对于下一个服务请求的优先级; 通过服务网关将下一个服务请求存储在缓冲器中,该缓冲器被配置为存储具有确定的优先级的服务请求;通过服务网关确定该服务器状态是否表明该服务器对于处理服务请求是可用的;响应于确定该服务器状态表明服务器对于处理下一个服务请求是可用的,通过服务网关确定该服务器是否要处理具有确定优先级的服务请求;响应于确定该服务器要处理具有确定优先级的服务请求,通过服务网关在被配置为存储具有确定优先级的服务请求的缓冲器中查找下一个服务请求;以及通过服务网关将下一个服务请求发送至该服务器。也在本文描述并要求对应于上面概括的方法的计算机程序产品和系统。


图1示出了根据本发明的服务网关的实施方式和服务器池的实施方式。图2是示出了通过服务网关处理服务请求的实施方式的框图。图3示出了对于服务器状态的可能值。
图4是示出了在接收到服务器状态之后通过服务网关处理服务请求的实施方式的框图。图5示出了服务网关根据服务优先级处理服务请求。图6示出了通过服务网关110处理服务请求的实施方式。图7是示出了通过服务网关处理服务请求的方法的实施方式的流程图。
具体实施例方式呈现下面的描述使本领域的普通技术人员能够实现并使用本发明,并且在专利申请及其要求的语境中提供以下描述。实施方式的各种变形例对本领域的技术人员而言是显而易见的,并且本文的普通原理可以应用于其他实施方式。因此,本发明并旨在限于所示实施方式,而是符合与本文所描述的原理和特征相一致的最宽范畴。本发明可以采用完全硬件实施方式、完全软件实施方式、或包含硬件元件和软件元素这两者的实施方式的形式。在优选的实施方式中,以软件来实现本发明,该软件包括但不限于固件、常驻软件、微代码等。此外,本发明可以采用从计算机可用或计算机可读介质可访问的计算机程序产品的形式,该计算机程序产品提供结合或由计算机或是任何指令执行系统使用的程序代码。 出于描述的目的,计算机可用或计算机可读介质可以是能够含有、存储、通信、传播、或传输结合或由指令执行系统、装置、或设备使用的程序的任何装置。该介质可以是电子的、磁的、光的、电磁的、红外线的、或半导体系统(或者是装置或设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘以及光盘。目前的光盘实例包括光盘-只读存储器(CD-ROM)、光盘-读/写(CD-R/W)和DVD。适用于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或间接耦合至存储器元件的至少一个处理器。存储器元件可以包括在执行程序代码期间使用的局部存储器、体存储器、以及高速缓冲存储器,该高速缓冲存储器提供对于某些程序代码的临时存储从而减少在执行期间必须从体存储器中检索代码的次数。输入/输出或I/O设备(包括但不限于键盘、显示器、定点设备等)可以直接或通过介于其间的I/O控制器间接地耦合至系统。网络适配器也可以耦合至系统,从而使数据处理系统能够通过介于其间的专用网络或公共网络耦合至其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器以及以太网卡仅仅是一些当前可用类型的网络适配器。附图中的流程图和框图示出了根据本发明的多种实施方式的系统、方法、和计算机程序产品的可能的实现方式的架构、功能以及操作。就这一点而言,流程图或框图中的每个框可以表示模块、片段、或部分代码,其包含用于实现指定的局部功能的一个或多个可执行指令。还应当注意的是,在一些可替换实现方式中,可以不按照图中所注解的顺序实现框中注解的功能。例如,接连示出的两个块实际上可以基本上同时地执行,或取决于所设计的功能,有时可以按照相反顺序来执行块。还应当注意的是,框图和/或流程图中每个块以及框图和/或流程图中块的组合可以由执行指定功能或动作的专用基于硬件的系统或专用硬件与计算机指令的组合来实现。
本文使用的术语只是为了描述具体的实施方式,并不旨在限制本发明。如本文所使用的,单数形式“一(a)”、“一(an)”、和“这个(the) ”旨在包括复数形式,除非文中清楚地表明正相反。将进一步理解的是,当在该说明书中使用术语“包含(comprises)”和/或 “包含(comprising) ”时,指明存在所阐明的特征、整体、步骤、操作、元件、和/或部件,但并不排除存在或增加一个或多个其他特征、整体、步骤、操作、元件、部件、和/或其组合。图1示出了根据本发明的服务网关110的实施方式和服务器池200的实施方式。 服务网关110从主机100接收服务请求301。通过数据网络153传递服务请求301。在一个实施方式中,服务请求301是Web服务请求,诸如HTTP (超文本传输协议)请求、安全HTTP 请求、FTP(文件传输协议)请求、文件传输请求、SIP(会话初始化协议)会话请求、基于Web 技术的请求、视频或音频流请求、Web会议会话请求、或通过互联网或企业网络的任何请求。主机100是具有网络访问能力的计算设备。主机100可操作地耦合至处理器103 和计算机可读介质104。计算机可读介质104存储用于实现本文所描述的本发明的各种实施方式的计算机可读程序代码。在一个实施方式中,主机100是工作站、桌上型个人计算机或膝上型个人计算机。在一个实施方式中,主机100是个人数字助理(PDA)、智能手机、或蜂窝电话。在一个实施方式中,主机100是机顶盒、互联网媒体展示器(viewer)、互联网媒体播放器、智能传感器、智能医疗器械、网顶盒、网络电视、网络DVR、网络蓝光播放器、或媒体中心。在一个实施方式中,数据网络153是互联网协议(IP)网络。在一个实施方式中, 数据网络153是企业数据网络或区域企业数据网络。在一个实施方式中,数据网络153是互联网服务提供商网络。在一个实施方式中,数据网络153是住宅数据网络。在一个实施方式中,数据网络153包括诸如以太网的有线网络。在一个实施方式中,数据网络153包括诸如WiFi网络或蜂窝网络的无线网络。服务网关110可操作地耦合至处理器113和计算机可读介质114。计算机可读介质 114存储计算机可读程序代码,当处理器113执行该程序代码时实现本文所描述的本发明的各种实施方式。在某些实施方式中,服务网关110被实现为服务器负载均衡器、应用程序传递控制器、服务传递平台、流量管理器、安全网关、防火墙系统的部件、虚拟专用网(VPN) 的部件、用于视频服务器的负载均衡器、或将负载分配给多个服务器的网关。服务器池200包含多个服务器,例如服务器210。服务器210可操作地耦合至处理器213和计算机可读介质214。计算机可读介质214存储计算机可读程序代码,当处理器213执行该程序代码时实现本文所描述的本发明的各种实施方式。在一些实施方式中, 计算机可读程序代码将服务器210实现为Web服务器、文件服务器、视频服务器、数据库服务器、应用服务器、语音系统、会议服务器、媒体网关、SIP服务器、远程访问服务器、VPN服务器、或媒体中心。在一个实施方式中,服务器池200进一步包括服务器220和服务器230。在实施方式中,服务器池200位于资料处理中心、服务器机房、或办公室。在实施方式中,服务器池 200中的多个服务器可以地理上位于数个位置或数个资料处理中心。服务网关110经由数据网络155连接至服务器池200。在一个实施方式中,数据网络155与数据网络153相同。 在一个实施方式中,数据网络巧5不同于数据网络153。在一个实施方式中,主机100并不直接访问数据网络155。在一个实施方式中,主机100直接访问数据网络155。
图2是示出了通过服务网关处理服务请求的实施方式的框图。基于服务请求301 中的信息,服务网关110选择服务器210从而处理服务请求301。在一个实施方式中,服务请求301包括统一资源定位(URL)311。服务网关110基于服务请求URL 311选择服务器210。服务器池200被配置为通过利用服务请求URL311来高效地处理服务请求301。服务器池200中的服务器被配置作为用于特定URL的主服务器,作为用于其他URL的次服务器。在实施方式中,服务器210被配置作为用于URL 311的主服务器,而服务器220被配置作为用于URL 311的次服务器。在该实施方式中,服务网关110优选地选择服务器210来处理服务请求301,原因在于服务器 210被配置作为用于URL 311的主服务器。服务网关110在一些情况下可以选择服务器220 处理服务请求301,原因在于服务器220被配置作为用于URL 311的次服务器。在一个实施方式中,存在对应于第二服务请求302的第二服务请求URL 312。服务器220可以被配置作为主服务器来处理具有请求URL 312的服务请求。图7是示出了通过服务网关处理服务请求的方法的实施方式的流程图。参考图 2和图7这两者,服务网关110建立与服务器210的服务会话160,并发送服务请求301至服务器210(700)。一旦处理服务请求301,服务器210就将服务响应321发送至服务网关 110(701)。服务器210在服务响应321中包含服务器状态218。服务器状态218表明服务器210的可用性或计算负载状态。在一个实施方式中,服务器状态218反映了表示CPU利用率、内存利用率、网络利用率、存储器利用率、或一个或多个利用率组合的负载。大体上, 服务器状态218概括了服务器210的繁忙程度。服务网关110从服务响应321中获得服务器状态218(702),并将服务响应321中继至主机100(70 。在一个实施方式中,服务网关110通过从服务响应321中移除服务器状态218来修改服务响应321。然后,服务网关110将经修改的服务响应发送至主机100。服务响应321包括为服务请求310提供服务的结果。服务响应321进一步包括与标签3M相关联的服务器状态218。服务网关110从服务响应321中识别标签324,并提取与标签3M相关联的服务器状态218。在一个实施方式中,服务器请求301是HTTP请求,服务响应是HTTP响应。在该实施方式中,标签3 在HTTP响应的HTTP报头中。在一个实施方式中,服务响应321包括HTTP文档。在该实施方式中,标签3M是HTML标签。在另一个实施方式中,服务响应321包括XML文档,标签3 可以是XML标签。在一个实施方式中,服务响应321是SIP响应包,标签3 是SIP标签。在一个实施方式中,服务响应321是FTP 响应,标签3M是特殊FTP回复代码。图3示出了用于服务器状态218的可能值。根据系统的需求,可以配置用于服务器状态218的其他值。在一个实施方式中,用于服务器状态218的值0表明服务器210不繁忙。服务器210可以处理新的请求而没有任何延迟。例如,如果服务网关110接收具有请求URL 311的服务请求301,则服务网关110将选择服务器210处理服务请求301。用于服务器状态218的值1表明服务器210繁忙。尽管服务器210可以继续服务于URL 311的主服务器,但服务器210不能作为次服务器提供服务。例如,服务器210被配置为用于URL 312的次服务器。如果服务网关110接收具有请求URL 312的服务请求302, 则服务网关110并不选择服务器210处理服务请求302。用于服务器状态218的值2表明服务器210非常繁忙。除了表明服务器210不能作为次服务器提供服务之外;值为2的服务器状态218还表明服务网关110应当在选择服务器210作为主服务器处理新的服务请求之前应用限制。例如,如果服务网关110接收具有请求URL 311的服务请求301,则服务网关110在选择服务器210处理服务请求301之前应用限制。将参考图4进一步详细说明该限制。图4是示出了在接收到服务器状态之后通过服务网关处理服务请求的实施方式的方框图。在一个实施方式中,服务网关Iio包括服务请求缓冲器331。服务请求缓冲器 331被配置为存储具有请求URL 311的服务请求。在实施方式中,服务器210被配置作为用于URL 311的主服务器以及作为用于请求URL 313的次服务器。服务网关110进一步包括服务请求缓冲器332,其被配置为存储具有请求URL 313的服务请求。在实例中,服务请求缓冲器332包括具有请求URL 313的服务请求303。服务网关110接收来自服务器210的、在对于根据上述图2的先前服务请求的服务响应中的服务器状态218。参考图4和图7,服务网关110从主机100接收下一个服务请求410(704)。服务网关110将具有请求URL311的服务请求410存储在服务请求缓冲器331 中,并根据服务器状态218的值处理在服务请求缓冲器331中的服务请求410。在一个实施方式中,服务器状态218具有值0,这表明服务器210 “不繁忙”。服务网关110检查(第一)服务请求缓冲器331,并查找具有(第一)请求URL 311的、服务器 210被配置作为用于其的主服务器的服务请求410 (705)。服务网关110选择服务器210,并发送服务请求410至服务器210 (707)。在一个实施方式中,当服务网关110接收具有请求 URL311的下一个服务请求时,服务请求缓冲器331是空的。服务网关110发送该服务请求至服务器210,而未将该请求置于服务请求缓冲器331中。在该实施方式中,服务状态218的值是0,服务网关110检查(第二)服务请求缓冲器332,并查找具有(第二)请求URL 313的、服务器210被配置作为用于其的次服务器的服务请求411 (706)。由于服务器状态218表明服务器210对于作为次服务器提供服务是可用的,服务网关110可以选择服务器210处理服务请求411 (711)。在一个实施方式中,当服务网关110接收包括请求URL 313的下一个服务器请求时,请求缓冲器332是空的。服务网关110可以选择服务器210处理该服务请求,而未将该请求置于服务请求缓冲器332中。在一个实施方式中,服务器状态218具有的值为1,这表明服务器210是繁忙的,并且对于作为用于URL 313的次服务器来提供服务是不可用的,但是对于作为主服务器提供服务是可用的。服务网关110检查服务请求缓冲器331。在一个实施方式中,服务网关110 在服务请求缓冲器331中查找服务请求410 (705)。服务网关110发送服务请求410至服务器210(708)。在一个实施方式中,当服务网关110接收包括请求URL 311的下一个服务请求时,服务请求缓冲器331是空的。服务网关110发送该服务请求至服务器210,而未将该请求置于服务请求缓冲器331中。在该实施方式中,服务器状态218的值为1,服务网关110检查服务请求缓冲器 332,并在服务请求缓冲器332中查找服务请求411 (706)。服务网关110并不选择服务器 210处理服务请求411 (71 。作为替代,服务网关110可以选择服务器池200中的另一个服务器来处理服务请求411 (713)。在一种情况中,当服务网关110接收到包括请求URL 313 的下一个服务请求时,服务请求缓冲器331是空的。服务网关110并不选择服务器210处理服务请求(712)。在一个实施方式中,服务器状态218的值为2,这表明服务器210 “非常繁忙”。在该实施方式中,服务器210不能够作为次服务器向URL 313提供服务,但是可以作为有限制的主服务器提供服务。在该实施方式中,服务器状态218的值为2,服务网关110检查服务请求缓冲器 331,并查找服务请求410 (705)。服务网关110并不自动地将请求410发送至服务器210。 在一个实施方式中,服务网关110包括定时器117。服务网关110在选择服务器210并发送请求410至服务器210之前(710),等待定时器117到期(709)。在一个实施方式中,服务网关110在接收到具有服务器状态218的值为2的状态响应321之后,配置定时器117。 定时器117可以配置为例如1分钟、30秒钟、1秒钟、400毫秒、5毫秒、300微秒的持续时间、 或任何其他的持续时间,使得不会严重地影响对于服务请求410的服务。在一个实施方式中,定时器117持续时间基于服务请求410的会话协议暂停持续时间。在一个实施方式中,服务器状态218的值为2,当服务网关110接收具有请求URL 311的下一个服务请求时,服务请求缓冲器331是空的。服务网关110将该服务请求存储在服务请求缓冲器331中。在稍后的时间当定时器117到期时,服务网关110检查服务请求缓冲器331并查找该服务请求(70 。当定时器117到期(709),服务网关110选择服务器 210,并发送该服务请求至服务器210(710)。在一个实施方式中,服务网关110在处理服务请求缓冲器331之后再次设定定时器117。在一个实施方式中,服务网关110在再次设定定时器117之前,处理服务请求缓冲器331中的多个请求。在一个实施方式中,当服务网关 110接收值为0或1的服务器状态218时,服务网关110取消定时器117。在该实施方式中,服务状态218的值为2,服务网关110检查服务请求缓冲器332, 并在服务请求缓冲器332中查找服务请求411 (706)。服务网关110并不选择服务器210处理服务请求411 (714)。作为替代,服务网关110可以选择服务器池200中的另一个服务器来处理服务请求411 (713)。在一个实施方式中,当服务网关110接收包括请求URL 313的下一个服务请求时,服务请求缓冲器332是空的。服务网关110并不选择服务器210向该服务请求提供服务。图5示出了服务网关根据服务优先级处理服务请求。可以基于各种参数来配置服务优先级,诸如服务请求的请求URL、发送服务请求的主机、以及服务网关110接收服务请求的数据网络。在一个实施方式中,优先级和参数值之间的服务优先级联系550存储在服务网关110中。例如,优先级401与URL 311相关联,优先级401和URL 311之间的联系 550存储在服务网关110中。在另一个实施方式中,优先级401与主机100(诸如主机100 的IP地址或主机100的用户标识)相关联,并且优先级401和主机100之间的联系550存储在服务网关110中。在另一个实例中,优先级401与从中接收服务请求410的网络接口相关联,优先级401和网络接口之间的联系550存储在服务网关110中。在一个实施方式中,服务网关110包括存储联系550的数据存储器(未示出)。服务网关110通过将服务请求410的适当参数与所存储的联系550匹配来确定对于服务请求410的优先级。在一个实施方式中,服务网关110包括被配置为存储具有请求URL311的服务请求的服务请求缓冲器333,以及也被配置为存储关于URL 311的服务请求的服务请求缓冲器 331。服务请求缓冲器333被配置为存储具有优先级403的服务请求,该优先级高于优先级401。服务请求缓冲器331被配置为存储具有优先级401的服务请求。在一个实施方式中, 服务状态218的值为2,服务网关110将具有请求URL 311以及优先级401的服务请求411 存储在服务请求缓冲器331中。服务网关110进一步接收具有请求URL 311以及服务优先级403的服务请求412。服务网关110将服务请求412存储在服务请求缓冲器333中。当定时器117到期时,服务网关110在检查较低优先级401的服务请求缓冲器331 之前检查较高优先级403的服务请求缓冲器333。在该实例中,服务网关110在处理服务请求412之前处理服务请求410。在一个实施方式中,服务网关110接收值为0或1的、用于服务器210的新的服务器状态219,服务网关110继续在检查较低优先级401的服务请求缓冲器331之前检查较高优先级403的服务请求333。在该实例中,服务网关110在处理服务请求410之前处理服务请求412。在一个实施方式中,无论服务器状态218的值是多少,服务网关110在处理服务请求缓冲器331之前处理来自服务请求缓冲器333的所有服务请求。在一个实施方式中,服务网关110包括服务比率119,其中服务网关110根据服务比率119处理服务请求缓冲器333 和服务请求缓冲器331中的服务请求,其中服务比率119将较高优先级的服务请求缓冲器 333给予较低优先级的服务请求缓冲器331,为的是避免服务请求缓冲器331中的较低优先级的服务请求缺乏资源。在优选的实施方式中,服务器210被配置作为主服务器向多个URL提供服务。图6 示出了通过服务网关110处理服务请求的实施方式。在一个实施方式中,哈希函数502应用于URL 311和URL 313。当哈希函数502应用于URL 311时,结果是哈希值511。类似地, 当哈希函数502应用于URL 313时,结果是哈希值513。在一个实施方式中,服务器210被配置作为主服务器向哈希值520提供服务。在一个实施方式中,服务网关110存储哈希函数502和哈希值520。用于哈希函数502的实例包括MD5(信息-摘要算法5)哈希函数、 Jenkins哈希函数、适用于字符序列的哈希函数、或用于表格查找的哈希函数。当服务网关110接收到具有请求URL 311的服务请求410时,服务网关110将哈希函数502应用于请求URL 311,从而产生哈希值511。服务器网关110将哈希值511与哈希值520进行比较。如果哈希值511匹配哈希值520,则服务网关110按照上述方式选择服务器210处理服务请求301。在一个实施方式中,服务网关110接收具有请求URL 313的服务请求411。服务网关110将哈希函数502应用于请求URL 313,从而产生哈希值513。服务网关110将哈希值513与哈希值520进行比较。如果哈希值513匹配哈希值520,则服务网关110选择服务器210处理服务请求411。在一个实施方式中,哈希值513与哈希值520 不匹配,服务网关110不会自动地选择服务器210。在一个实施方式中,服务器210被配置作为对于哈希值513的次服务器。服务网关110可以选择服务器210。在一个实施方式中,服务器210并不被配置为服务于哈希值 513,进而服务网关110不选择服务器210处理服务请求411。在该实施方式中,当服务网关110处理服务请求时,服务网关111将哈希函数502 应用于服务请求。一旦服务网关Iio确定服务器210被配置作为对于哈希值513的主服务器或次服务器,服务网关110就利用上述服务器状态218处理服务请求410。本领域的普通技术人员将理解如何在不偏离本发明的精神和范畴的情况下将应用哈希函数结合至上述的处理。 尽管已经根据所示实施方式描述了本发明,本领域的普通技术人员将容易地认识到,可以存在对于这些实施方式的变形例,且那些变形例将在本发明的精神和范畴内。因此,在不偏离所附权利要求的精神和范畴的情况下,本领域的普通技术人员可以做出许多修改。
权利要求
1.一种基于服务器负载状态来均衡服务器的方法,包括(a)通过服务网关从服务器接收对于服务请求的服务响应,所述服务响应包含处理所述服务请求的结果和表明所述服务器的计算负载状态的服务器状态;(b)通过所述服务网关从所述服务响应中获取所述服务器状态;(c)通过所述服务网关从主机接收下一个服务请求,所述下一个服务请求包含统一资源定位符(URL);(d)通过所述服务网关确定所述服务器被配置为处理所述URL;(e)通过所述服务网关确定所述服务器状态是否表明所述服务器对于处理所述下一个服务请求是可用的;以及(f)响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的,通过所述服务网关将所述下一个服务请求发送至所述服务器。
2.根据权利要求1所述的方法,其中,所述接收(a)包括 (al)在所述服务网关和所述服务器之间建立服务会话;(a2)通过所述服务网关将所述服务请求发送至所述服务器;以及 (a3)通过所述服务网关从所述服务器接收所述服务响应,所述服务响应包含由所述服务器处理所述服务请求的结果和表明所述服务器的所述计算负载状态的服务器状态。
3.根据权利要求2所述的方法,其中,所述获取(b)包括(bl)通过所述服务网关从所述服务响应中获取所述服务器状态;(b2)所述服务网关通过从所述服务响应中移除所述服务器状态来修改所述服务响应;以及(b3)通过所述服务网关将所修改的所述服务响应发送至发出了该服务请求的主机。
4.根据权利要求1所述的方法,其中,所述确定(d)包括(dl)通过所述服务网关确定所述服务器是否被配置作为主服务器或次服务器来处理所述URL ;(d2)响应于确定所述服务器被配置作为所述主服务器来处理所述URL,通过所述服务网关将所述下一个服务请求存储在第一缓冲器中,所述第一缓冲器被配置为存储要由作为所述主服务器的所述服务器处理的服务请求;以及(d3)响应于确定所述服务器被配置作为所述次服务器来处理所述URL,通过所述服务网关将所述下一个服务请求存储在第二缓冲器中,所述第二缓冲器被配置为存储要由作为所述次服务器的所述服务器处理的服务请求。
5.根据权利要求4所述的方法,其中,所述确定所述服务器被配置作为所述主服务器来处理所述URL,其中所述确定(e)和所述发送(f)包括(el)通过所述服务网关确定所述服务器状态是否表明所述服务器对于作为所述主服务器处理所述服务请求是可用的;(fl)响应于确定所述服务器状态表明所述服务器对于作为所述主服务器处理所述服务请求是可用的,通过所述服务网关在所述第一缓冲器中查找所述下一个服务请求;以及 (f2)通过所述服务网关将所述下一个服务请求发送至所述服务器。
6.根据权利要求4所述的方法,其中,所述确定所述服务器被配置作为所述次服务器处理所述URL,其中所述确定(e)和所述发送(f)包括(el)通过所述服务网关确定所述服务器状态是否表明所述服务器对于作为所述次服务器处理所述服务请求是可用的;(fl)响应于确定所述服务器状态表明所述服务器对于作为所述次服务器处理所述服务请求是可用的,通过所述服务网关确定是否要选择所述服务器;(f2)响应于确定要选择所述服务器,通过所述服务网关在所述第二缓冲器中查找所述下一个服务请求;以及(f3)通过所述服务网关将所述下一个服务请求发送至所述服务器。
7.根据权利要求1所述的方法,其中,所述确定(d)包括(dl)通过所述服务网关确定所述服务器被配置为处理包含预定哈希值的服务请求; (d2)通过所述服务网关将哈希函数应用于所述下一个服务请求中的所述URL ;以及 (d3)通过所述服务网关确定所述URL的哈希值与所述预定哈希值匹配。
8.根据权利要求1所述的方法,其中,所述确定(d)、所述确定(e)、以及所述发送(f) 包括(dl)通过所述服务网关确定所述服务器被配置为处理所述URI ; (d2)所述服务网关基于用于所述下一个服务请求的预定参数确定对于所述下一个服务请求的优先级;(d3)通过所述服务网关将所述下一个服务请求存储在缓冲器中,该缓冲器被配置为存储具有确定的所述优先级的服务请求;(el)通过所述服务网关确定所述服务器状态是否表明所述服务器对于处理所述服务请求是可用的;(fl)响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的,通过所述服务网关确定所述服务器是否要处理具有确定的所述优先级的服务请求;(f2)响应于确定所述服务器要处理具有确定的所述优先级的服务请求,通过所述服务网关在被配置为存储具有该确定的所述优先级的服务请求的缓冲器中查找所述下一个服务请求;以及(f3)通过所述服务网关将所述下一个服务请求发送至所述服务器。
9.一种基于服务器负载状态来均衡服务器的计算机程序产品,所述计算机程序产品包括计算机可读存储介质,具有包含在其中的计算机可读程序代码,所述计算机可读程序代码被配置为从服务器接收对于服务请求的服务响应,所述服务响应包含处理所述服务请求的结果和表明所述服务器的计算负载状态的服务器状态; 从所述服务响应中获取所述服务器状态;从主机接收下一个服务请求,所述下一个服务请求包含统一资源定位符(URL); 确定所述服务器被配置为处理所述URL ;确定所述服务器状态是否表明所述服务器对于处理所述下一个服务请求是可用的;以及响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的, 发送所述下一个服务请求至所述服务器。
10.根据权利要求9所述的计算机程序产品,其中,当配置为从所述服务器接收对于所述服务请求的所述服务响应的所述计算机可读程序代码进一步被配置为建立与所述服务器的服务会话;发送所述服务请求至所述服务器;以及从所述服务器接收所述服务响应,所述服务响应包含由所述服务器处理所述服务请求的结果和表明所述服务器的所述计算负载状态的服务器状态。
11.根据权利要求10所述的计算机程序产品,其中,配置为从所述服务响应中获取所述服务器状态的所述计算机可读程序代码进一步被配置为从所述服务响应中获取所述服务器状态;通过从所述服务响应中移除所述服务器状态来修改所述服务响应;以及将所修改的所述服务响应发送至发出了所述服务请求的主机。
12.根据权利要求9所述的计算机程序产品,其中,配置为确定所述服务器被配置为处理所述URL的所述计算机可读程序代码进一步被配置为确定所述服务器是否被配置作为主服务器或次服务器来处理所述URL ;响应于确定所述服务器被配置作为所述主服务器处理所述URL,将所述下一个服务请求存储在第一缓冲器中,所述第一缓冲器被配置为存储要由作为所述主服务器的所述服务器处理的服务请求;以及响应于确定所述服务器被配置作为所述次服务器处理所述URL,将所述下一个服务请求存储在第二缓冲器中,所述第二缓冲器被配置为存储要由作为所述次服务器的所述服务器处理的服务请求。
13.根据权利要求12所述的计算机程序产品,其中确定所述服务器被配置作为所述主服务器处理所述URL、其中所述计算机可读程序代码被配置为确定所述服务器状态是否表明所述服务器对于处理所述下一个服务请求是可用的、以及所述计算机可读程序代码被配置为响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的来发送所述下一个服务请求至所述服务器,被进一步配置为确定所述服务器状态是否表明所述服务器对于作为所述主服务器处理所述服务请求是可用的;响应于确定所述服务器状态表明所述服务器对于作为所述主服务器处理所述服务请求是可用的,在所述第一缓冲器中查找所述下一个服务请求;以及发送所述下一个服务请求至所述服务器。
14.根据权利要求12所述的计算机程序产品,其中确定所述服务器被配置作为所述次服务器处理所述URL、其中所述计算机可读程序代码被配置为确定所述服务器状态是否表明所述服务器对于处理所述下一个服务请求是可用的、以及所述计算机可读程序代码被配置为响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的来发送所述下一个服务请求至所述服务器,被进一步配置为确定所述服务器状态是否表明所述服务器对于作为所述次服务器处理所述服务请求是可用的;响应于确定所述服务器状态表明所述服务器对于作为所述次服务器处理所述服务请求是可用的,确定是否要选择所述服务器;响应于确定要选择所述服务器,在所述第二缓冲器中查找所述下一个服务请求;以及发送所述下一个服务请求至所述服务器。
15.根据权利要求9所述的计算机程序产品,其中,所述计算机可读程序代码被配置为确定所述服务器被配置为处理所述URL,被进一步配置为确定所述服务器被配置为处理包含预定哈希值的服务请求; 将哈希函数应用于所述下一个服务请求中的所述URL ;以及确定所述URL的哈希值匹配所述预定哈希值。
16.根据权利要求9所述的计算机程序产品,其中,配置为确定所述服务器被配置为处理所述URL的所述计算机可读程序代码、以及配置为确定所述服务器状态是否表明所述服务器对于处理所述下一个服务请求是可用的所述计算机可读程序代码、以及配置为响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的来发送所述下一个服务请求至所述服务器的所述计算机可读程序代码,被进一步配置为确定所述服务器被配置为处理所述URL ;基于用于所述下一个服务请求的预定参数确定对于所述下一个服务请求的优先级; 将所述下一个服务请求存储在缓冲器中,该缓冲器被配置为存储具有确定的所述优先级的服务请求;确定所述服务器状态是否表明所述服务器对于处理所述服务请求是可用的; 响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的, 确定所述服务器是否要处理具有确定的所述优先级的服务请求;响应于确定所述服务器要处理具有确定的所述优先级的服务请求,在被配置为存储具有确定的所述优先级的服务请求的缓冲器中查找所述下一个服务请求;以及发送所述下一个服务请求至所述服务器。
17.一种系统,包括服务器,用于处理服务请求;以及服务网关,包括处理器和计算机可读存储介质,所述计算机可读存储介质具有包含在其中的计算机可读程序代码,其中当所述处理器执行所述计算机可读程序代码时,使所述服务网关从服务器接收对于服务请求的服务响应,所述服务响应包含处理所述服务请求的结果和表明所述服务器的计算负载状态的服务器状态; 从所述服务响应中获取所述服务器状态;从主机接收下一个服务请求,所述下一个服务请求包含统一资源定位符(URL); 确定所述服务器被配置为处理所述URL ;确定所述服务器状态是否表明所述服务器对于处理所述下一个服务请求是可用的;以及响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的, 发送所述下一个服务请求至所述服务器。
18.根据权利要求17所述的系统,其中,所述从所述服务器接收对于所述服务请求的所述服务响应包括建立与所述服务器的服务会话;发送所述服务请求至所述服务器;以及从所述服务器接收所述服务响应,所述服务响应包含由所述服务器处理所述服务请求的结果和表明所述服务器的所述计算负载状态的服务器状态。
19.根据权利要求18所述的系统,其中所述从所述服务响应中获取所述服务器状态包括从所述服务响应中获取所述服务器状态;通过从所述服务响应中移除所述服务器状态来修改所述服务响应;以及将所修改的所述服务响应发送至发出了所述服务请求的主机。
20.根据权利要求17所述的系统,进一步包括第一缓冲器和第二缓冲器,所述第一缓冲器被配置为存储要由作为所述主服务器的所述服务器处理的服务请求,所述第二缓冲器被配置为存储要由作为所述次服务器的所述服务器处理的服务请求,其中所述确定所述服务器被配置为处理所述URL包括确定所述服务器是否被配置作为主服务器或次服务器处理所述URL ; 响应于确定所述服务器被配置作为所述主服务器处理所述URL,将所述下一个服务请求存储在所述第一缓冲器中;以及响应于确定所述服务器被配置作为所述次服务器处理所述URL,将所述下一个服务请求存储在所述第二缓冲器中。
21.根据权利要求20所述的系统,其中所述确定所述服务器被配置作为所述主服务器处理所述URL、其中所述确定所述服务器状态是否表明所述服务器对于处理所述下一个服务请求是可用的、以及所述响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的来发送所述下一个服务请求至所述服务器,包括确定所述服务器状态是否表明所述服务器对于作为所述主服务器处理所述服务请求是可用的;响应于确定所述服务器状态表明所述服务器对于作为所述主服务器处理所述下一个服务请求是可用的,在所述第一缓冲器中查找所述下一个服务请求;以及发送所述下一个服务请求至所述服务器。
22.根据权利要求20所述的系统,其中所述确定所述服务器被配置作为所述次服务器处理所述URL、其中所述确定所述服务器状态是否表明所述服务器对于处理所述下一个服务请求是可用的、以及所述响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的来发送所述下一个服务请求至所述服务器,包括确定所述服务器状态是否表明所述服务器对于作为所述次服务器处理所述服务请求是可用的;响应于确定所述服务器状态表明所述服务器对于作为所述次服务器处理所述服务请求是可用的,确定是否要选择所述服务器;响应于确定要选择所述服务器,在所述第二缓冲器中查找所述下一个服务请求;以及发送所述下一个服务请求至所述服务器。
23.根据权利要求17所述的系统,其中,所述确定所述服务器被配置为处理所述URL包括确定所述服务器被配置为处理包含预定哈希值的服务请求;将哈希函数应用于所述下一个服务请求中的所述URL ;以及确定所述URL的哈希值匹配所述预定哈希值。
24.根据权利要求17所述的系统,其中所述服务网关包括被配置为存储具有优先级的服务请求的缓冲器、其中所述确定所述服务器被配置为处理所述URL、所述确定所述服务器状态是否表明所述服务器对于处理所述下一个服务请求是可用的、以及所述响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的来发送所述下一个服务请求至所述服务器,包括确定所述服务器被配置为处理所述URL ;基于用于所述下一个服务请求的预定参数确定对于所述下一个服务请求的优先级; 将所述下一个服务请求存储在所述缓冲器中;确定所述服务器状态是否表明所述服务器对于处理所述下一个服务请求是可用的; 响应于确定所述服务器状态表明所述服务器对于处理所述下一个服务请求是可用的, 确定所述服务器是否要处理具有所述优先级的服务请求;响应于确定所述服务器要处理具有确定的所述优先级的服务请求,在被配置为存储具有所述优先级的服务请求的缓冲器中查找所述下一个服务请求;以及发送所述下一个服务请求至所述服务器。
全文摘要
一种基于服务器负载状态均衡服务器的系统和方法、以及计算机程序产品,包括从服务器接收对于服务请求的服务响应,服务响应包含处理服务请求的结果和表明服务器的计算负载状态的服务器状态;从服务响应中获取服务器状态;从主机接收下一个服务请求,该下一个服务请求包含统一资源定位符(URL);确定服务器被配置为处理URL;确定服务器状态是否表明服务器对于处理下一个服务请求是可用的;以及响应于确定服务器状态表明服务器对于处理下一个服务请求是可用的,发送下一个服务请求至服务器。
文档编号H04L29/06GK102571742SQ20111029996
公开日2012年7月11日 申请日期2011年9月28日 优先权日2010年9月30日
发明者司徒伟伦, 徐飞龙, 拉尔古蒂·纳拉亚南·卡纳安, 拉贾库玛·亚兰, 陈澧 申请人:瑞科网信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1