基于负载均衡度量实例来选择服务器的方法和系统的制作方法

文档序号:7644146阅读:124来源:国知局
专利名称:基于负载均衡度量实例来选择服务器的方法和系统的制作方法
技术领域
本发明的实施例一般涉及计算机。具体而言,本发明的实施例一般涉及基于负载均衡度量实例在服务器之间对请求进行负载均衡。
背景技术
1948年EDVAC计算机系统的开发通常被称为是计算机纪元的开端。从那时起,计算机系统已包括了极其复杂的设备,并且计算机系统可在许多不同设置中找到。计算机系统典型地包括硬件(诸如半导体、集成电路、可编程逻辑设备、可编程门阵列和电路板)和软件(也被称为计算机程序)的结合。
数年前,计算机是彼此不进行通信的分离设备。但是,现今的计算机常常在网络(诸如因特网或万维网)中被连接,并且在一台计算机(常被称为客户端)上的用户可能希望经由网络访问在多个其它计算机(常被称为服务器)上的信息或发送服务请求到所述多个其它计算机。公司常常使用多个服务器来响应来自客户端的请求,并在所述多个服务器之间复制其数据,以便提供增强的性能、可靠性、以及响应于不同速率的客户端请求的能力。多个服务器常常包含被称为应用服务器的程序,其执行应用并提供用于安全、数据访问以及持久性的服务。典型地,客户端不知道多个服务器的存在,而是发送其请求到单个服务器,所述单个服务器选择应用服务器之一来处理请求,并将请求路由到所选择的应用服务器。
当前,若干不同类型的算法被用于选择哪个服务器(以及由此的哪个应用服务器)来接收哪个请求。在第一示例中,负载均衡算法把进入请求分发给多个服务器,从而每个服务器大致具有相同的工作负荷。不过,某些请求彼此相关(例如,作为同一事务的一部分),并且需要由同一应用服务器来处理。因此,在第二示例中,临时仿射(affinity)算法(例如基于HTTP(超文本传输协议)网络跟踪器(cookie)或URL(统一资源定位符)重写)把关联于单个事务的所有请求路由到该事务开始的服务器。此外,在第三示例中,经高速缓存的会话状态算法把来自客户端的请求路由到客户端的状态(例如超文本传输协议会话状态)当前被高速缓存的服务器。
遗憾地是,上述三种示例性负载均衡算法不了解应用服务器逻辑,所以具有多个相关联的长期运行的请求的事务可以由于对会话创建请求的未经优化的负载均衡而很快地导致系统变得不均衡。这可能导致一个或多个服务器变得过载且经历着降低的性能,同时其它服务器可能未被充分使用。
在没有在多个服务器之间分发请求的更好方式的情况下,用户将继续忍受降低的性能。

发明内容
提供了一种方法、装置、系统和信号承载媒体。在一实施例中,接收指向页的请求。通过确定所述请求是否依赖于前一请求而做出关联于所述请求的会话是否已存在的确定。如果所述会话尚未存在,则做出所述请求是否将导致创建会话的决定。如果所述请求将导致会话的创建,则基于关联于所述页的负载均衡度量实例来选择服务器,并将所述请求发送到所选择的服务器。所述负载均衡度量实例具有算法以及对所述算法的输入参数。通过执行所述算法以及选择由来自所述算法的输出参数所标识的服务器来选择服务器。这样,通过使用彼此独立的负载均衡度量实例,关联于不同会话的请求可以被分发到服务器。


图1描述用于实现本发明实施例的示例性系统的框图。
图2描述根据本发明实施例的路由数据的示例性数据结构的框图。
图3描述根据本发明实施例的用于分发请求到服务器的示例性处理的流程图。
图4描述根据本发明实施例的用于在服务器处理请求的流程图。
具体实施例方式
参考附图,其中在若干视图中相同标号指示相同的部分,图1是根据本发明实施例的经由网络130连接到客户端计算机系统132和服务器计算机系统134的计算机系统100的高级框图表示。术语“服务器”和“客户端”仅出于方便使用,而在一实施例中充当客户端的计算机可在另一实施例中充当服务器,反之亦然。计算机系统100的主要组件包括一个或多个处理器101、主存储器102、终端接口111、存储接口112、I/O(输入/输出)设备接口113和通信/网络接口114,所有这些组件都经由存储器总线103、I/O总线104和I/O总线接口单元105相耦合用于组件间的通信。
计算机系统100包含一个或多个通用的可编程中央处理单元(CPU)101A、101B、101C和101D,在此被统称为处理器101。在一实施例中,计算机系统100包含典型的较大型系统的多个处理器;不过,在另一实施例中,计算机系统100可替换地可以是单CPU系统。每个处理器101执行主存储器102中存储的指令,并可包括一级或多级机载高速缓存。
主存储器102是用于存储数据和程序的随机存取的半导体存储器。主存储器102在概念上是单个单片实体,但是在其它实施例中,主存储器102是更复杂的装置,诸如其它存储器设备和高速缓存的分层结构。例如,存储器可存在于多级高速缓存中,并且这些高速缓存可以被进一步按照功能划分,使得一个高速缓存保持指令,而另一个高速缓存保持由一个或多个处理器使用的非指令数据。存储器可以被进一步分布,并与不同CPU或CPU组相关联,如各种被称为非统一存储器存取(NUMA)计算机体系结构中的任一种中所知的那样。
存储器102包括负载均衡器168和路由数据170。尽管所示出的负载均衡器168和路由数据170被包含在计算机系统100的存储器102中,但在其它实施例中,它们中的某些或全部可以处于不同计算机系统上,并可例如经由网络130被远程访问。计算机系统100可使用虚拟寻址机制,其允许计算机系统100的程序的行为就好像是它们仅访问单个大型的存储实体,而不是访问多个较小的存储实体。因此,尽管所示出的负载均衡器168和路由数据170被包含在计算机系统100的存储器102内,但这些单元不必非要同时被完全包含在同一存储设备中。
负载均衡器168从客户端132接收请求,并基于路由数据170在多个服务器(通常被组织成群集)之中选择服务器134来处理每个相应请求。以下参考图2进一步描述了路由数据。在一实施例中,负载均衡器168包括能够在处理器101上执行的指令或者能够由在处理器101上执行的指令进行解释的语句,所述指令或语句用于执行以下参考图3进一步描述的功能。在另一实施例中,负载均衡器168可用微代码实现。在另一实施例中,可通过逻辑门和/或其它适当的硬件技术来代替基于处理器的系统或与基于处理器的系统一起来实现负载均衡器168。
存储器总线103提供用于在处理器101、主存储器102和I/O总线接口单元105之间传送数据的数据通信路径。I/O总线接口单元105还被耦合于用于将数据传送至各种I/O单元和从各种I/O单元传送数据的系统I/O总线104。I/O总线接口单元105通过系统I/O总线104与多个I/O接口单元111、112、113和114(也被称为I/O处理器(IOP)或I/O适配器(IOA))通信。系统I/O总线104可以是例如工业标准PCI(外围组件互连)总线或任何其它适当的总线技术。I/O接口单元支持与多种存储和I/O设备进行的通信。例如,终端接口单元111支持一个或多个用户终端121、122、123和124的附接。
存储接口单元112支持一个或多个直接存取存储设备(DASD)125、126和127(其典型地是旋转磁盘驱动存储设备,尽管它们可替换地可以是其它设备,包括被配置成对于主机呈现为单个大型存储设备的盘驱动器阵列)的附接。DASD 125、126和127的内容在需要时可从存储器102中加载,并被存储到存储器102。存储接口单元112还可支持其它类型的设备,诸如磁盘设备、磁带设备、光设备或任何其它类型的存储设备。
I/O设备接口113提供到多种其它输入/输出设备或其它类型的设备中的任一种的接口。在图1的示例性实施例中示出了两个这样的设备打印机128和传真机129,但是在其它实施例中可存在许多其它这样的设备,其可以属于不同类型。
网络接口114提供从计算机系统100到其它数字设备和计算机系统的一个或多个通信路径;这样的路径可包括例如一个或多个网络130。在各种实施例中,网络接口114可经由调制解调器、LAN(局域网)卡、虚拟LAN卡、或任何其它适当的网络接口或网络接口的组合来实现。
尽管在图1中将存储器总线103示出为提供处理器101、主存储器102和I/O总线接口105之间的直接通信路径的相对简单的单一总线结构,但是实际上,存储器总线103可包括多种不同总线或通信路径,其可以用多种形式中的任一形式来安置,所述多种形式诸如分层结构中的点对点链路、星形或网状配置、多层级总线、并行和冗余路径等等。此外,尽管I/O总线接口105和I/O总线104被示出为单个相应单元,但是实际上计算机系统100可包含多个I/O总线接口105和/或多个I/O总线104。尽管示出了多个I/O接口单元,其使得系统I/O总线104与运行到各种I/O设备的各种通信路径相分离,但是在其它实施例中I/O设备中的某些或全部被直接连接到一个或多个系统I/O总线。
图1中示出的计算机系统100具有多个附接终端121、122、123和124,诸如其典型地可以是多用户的“大型机”计算机系统。尽管本发明不会被限于任何特定大小的系统,但是,典型地,在所述情形中,附接设备的实际数量大于图1中示出的设备数量。计算机系统100可替换地可以是单用户系统,其典型地仅包含单个用户显示器和键盘输入,或可以是服务器或类似设备,其几乎没有或没有直接的用户接口,而是从其它计算机系统(客户端)接收请求。在其它实施例中,计算机系统100可被实现为防火墙、路由器、因特网服务提供者(ISP)、个人计算机、便携式计算机、膝上型或笔记本计算机、PDA(个人数字助理)、平板式计算机、袖珍计算机、电话、寻呼机、移动电话、电话会议系统、仪表、或任何其它适当类型的电子设备。
网络130可以是任何适合的网络或网络的组合,并且可支持适于从/向计算机系统100、客户端132和/或服务器134传送数据和/或代码的任何适当的协议。在各种实施例中,网络130可表示直接或者间接连接于计算机系统100的存储设备或存储设备的组合。在一实施例中,网络130可支持Infiniband。在另一实施例中,网络130可支持无线通信。在另一实施例中,网络130可支持硬连线通信,诸如电话线路或电缆。在另一实施例中,网络130可支持以太网IEEE(电气和电子工程师学会)802.3x规范。在另一实施例中,网络130可以是因特网,并可支持IP(网际协议)。在另一实施例中,网络130可以是局域网(LAN)或广域网(WAN)。在另一实施例中,网络130可以是热点(hotspot)服务供应商网络。在另一实施例中,网络130可以是内联网。在另一实施例中,网络130可以是GPRS(通用分组无线服务)网络。在另一实施例中,网络130可以是FRS(家用无线服务)网络。在另一实施例中,网络130可以是任何适当的蜂窝式数据网络或基于蜂窝的无线网络技术。在另一实施例中,网络130可以是IEEE 802.11B无线网络。在再一实施例中,网络130可以是任何适当的网络或网络的组合。尽管示出了一个网络130,但是在其它实施例中可以存在任何数量的(相同或不同类型的)网络。
客户端132还可包括以上之前针对计算机系统100描述的硬件组件的某些或全部。尽管仅示出了一个客户端132,但在其它实施例中可呈现任何数量的客户端。客户端132把对于页的请求以及要检索的页的地址一起发送到计算机系统100。尽管所示出的客户端132是与计算机系统100不同的实体,但在另一实施例中,客户端132可以是计算机系统100的一部分,例如在计算机系统100中的处理器101上执行的存储器102内的另一程序。
服务器134包括应用服务器180和页182。服务器134还可包括以上之前针对计算机系统100描述的硬件组件的某些或全部。在一实施例中,应用服务器180包括能够在处理器(类似于处理器101)上执行的指令或者能够由在处理器101上执行的指令进行解释的语句,所述指令或语句用于执行以下参考图4进一步描述的功能。在另一实施例中,应用服务器180可用微代码实现。在又一实施例中,可通过逻辑门和/或其它适当的硬件技术来代替基于处理器的系统或与基于处理器的系统一起来实现应用服务器180。
页182可以作为文件、数据库、表、字段、记录、条目或以任何适当的格式来存储。页182可包括任何适当的内容,诸如代码、指令、语句、数据、控制标志、文本、视频、音频、图形、或上述内容的任一部分、多个部分或组合。此外,页182可以遵循HTML(超文本标记语言)、XML(可扩展标记语言)、或任何适当的协议或标准。
应该理解,图1旨在描述计算机系统100、网络130、客户端132和服务器134的高级的示意性的主要组件,所述的单独组件可以比图1所示更复杂,可以存在与图1中所示组件不同的组件、更少的组件、或除了图1中所示组件之外的组件,并且这些组件的数量、类型和配置可以不同。在此公开了这些额外的复杂度或额外的变体的若干特定示例;应该理解,这些仅作为示例而并不一定是仅有这些变体。
图1中所示的实现本发明的各种实施例的各种软件组件可以用多种方式来实现,包括使用各种计算机软件应用、例程、组件、程序、对象、模块、数据结构等,在此被称为“计算机程序”或简称为“程序”。计算机程序典型地包括多次驻留在计算机系统100和/或服务器134的各种存储器和存储设备中的一个或多个指令,并且当所述指令被计算机系统100和/或服务器134中的一个或多个处理器101读取并执行时使得计算机系统100和/或服务器134执行下述步骤,所述步骤是执行包括本发明实施例的各方面的步骤或单元所必需的。
此外,尽管本发明实施例已经并在下文中将在完全运行的计算机系统的上下文中进行描述,但是本发明的各种实施例能够作为程序产品以各种形式分布,并且不管被用来实际执行所述分布的信号承载媒体的特定类型均可等同地适用本发明。定义此实施例的功能的程序可以经由各种有形的信号承载媒体被递送到计算机系统100和/或服务器134中,所述信号承载媒体可以在操作上或通信上(直接或间接)连接到处理器(例如处理器101)。所述信号承载媒体包括但不限于(1)永久性存储在不可再写的存储媒体上的信息,所述不可再写的存储媒体例如附接于计算机系统或在计算机系统内的只读存储器设备,诸如可由CD-ROM驱动器读取的CD-ROM;(2)存储在可再写的存储媒体上的可变信息,所述可再写的存储媒体例如硬盘驱动器(例如DASD 125、126或127)、CD-RW或磁盘;或者(3)通过通信媒体传送到计算机系统100和/或服务器134的信息,诸如通过计算机或电话网络(例如网络130),其包括无线通信。
这种有形的信号承载媒体当承载了指引本发明的功能的计算机可读且可执行指令或者用其进行编码时表示了本发明的实施例。
此外,在下文中描述的各种程序可基于在本发明特定实施例中实现这些程序的应用而标识出来。但是,以下的任何特定程序命名法仅为了方便而使用,并因此本发明实施例不应被限于仅在由这些命名法所标识和/或暗示的任何特定应用中进行使用。
图1所示的示例性环境并非旨在限制本发明。实际上,不脱离本发明的范围可以使用其它可替换硬件和/或软件环境。
图2描述根据本发明实施例的路由数据170的示例性数据结构的框图。路由数据170包括示例性记录205、210、215和220,每个记录包括示例性的请求页字段225和示例性的负载均衡度量实例字段230。
请求页字段225标识来自客户端132的请求所要请求检索的页182。在各种实施例中,请求页225可以由地址标识,所述地址诸如URL(统一资源定位符)、URI(统一资源指示符)、任何其它类型的地址。此外,请求页225的地址可以被部分限定或完全限定,例如,请求页225的地址可以指定文件名称、类型或扩展、子目录、目录、或上述内容的任一部分、多个部分或组合。此外,请求页225的地址可以是相对的或绝对的,可以指定位置、数据库行或记录、文件、记录、或任何其它位置,或可以包括在搜索页182时使用的搜索或查询术语。在各种实施例中,由请求页字段225标识的特定页182可以在一个、某些或所有服务器134上呈现,或可以能够被所有应用服务器180所检索,而不管该特定页182位于哪个服务器134上。
负载均衡度量实例字段230标识用于选择服务器134来接收请求的技术,所述请求指向请求页225或对其进行请求。负载均衡度量实例字段230标识算法和作为对于/来自该算法的输入和输出参数而使用的一个或多个变量。如果仅呈现了单个变量,则同一变量可被用作输入和输出参数。负载均衡度量实例字段230可具有任何数量的输入变量/参数以及任何数量的输出变量/参数。
输入参数包含下述值,其表示接收了曾请求由相关联的请求页字段225标识的页的前一请求的前一服务器134。输出参数包含下述值,其表示将要接收请求由相关联的请求页字段225标识的页的下一请求的下一服务器134。所标识的算法把输入参数转换为输出参数,即,所标识的算法把对前一服务器的标识转换为对下一服务器的标识,以便接收请求由相关联的请求页字段225标识的页的请求。因此,针对一个对页的请求的输出参数成为针对下一个对该页的请求的输入参数。
例如,记录205、215和220均指定了“循环法”算法,但分别具有不同变量“counter a”、“counter c”和“counter d”。“循环法”算法把接收当前请求的服务器从一个服务器到下一服务器依次进行旋转,直到所有服务器均已接收了请求,并且接着循环法算法把服务器的旋转从头开始。例如,如果服务器134的群集包括十个服务器,则使用“counter a”的“循环法算法”(记录205)可以例如令变量“counter a”加1并对10取模,从而“counter a”包含从1到10的值,这依次表示服务器134中的每个。尽管记录215和220也指定了同一循环法算法,但记录215和220分别指定了与记录205不同的变量“counter c”和“counter d”。因此,尽管“counter a”、“counter c”和“counter d”均具有从1到10的值,并均经由同一循环法算法进行转换,但在任一时间,“counter a”、“counterc”和“counter d”可能具有不同值,从而指向不同请求页225(在不同的记录205、215和220中指定)的不同请求可能在任一时间被发送到不同服务器134。
负载均衡度量的不同实例彼此独立地操作,从而使用特定负载均衡度量230来请求特定页225的请求不会影响到哪个服务器接着被不同负载均衡度量实例所选择。例如,请求“/home/login.jsp”且具有参数用户名和口令(记录205)的请求不会影响到对于哪个服务器接着被选择用于指向“/home.shoppingcart”页(记录215)的请求的选择,即便这些请求均使用循环法算法,但因为它们是不同实例且使用不同变量(“counter a”与“counter c”)。
“循环法”算法仅是示例性的,还可以使用选择下一服务器的其它算法,诸如加权平均、指数加权平均(记录210)或任何其它适当的算法。
记录之一(记录220)包括“所有其它”的请求页225,其指示出当在路由数据170中未特别标识由请求所请求的页之时将使用的记录220。因此,记录220中的负载均衡度量实例230是默认的负载均衡度量实例,其被负载均衡器168用于未被请求页字段225明确标识的请求页。
图3描述用于由负载均衡器168分发请求到服务器134的示例性处理的流程图。控制开始于框300。接着控制继续到框305,其中负载均衡器168从客户端132接收请求。
接着控制继续到框310,其中负载均衡器168确定关联于所接收请求的会话是否已存在。会话表示客户端132和应用服务器180之间的活动连接,其使得不同请求彼此相关,从而该会话中不同但是相关的请求被发送到同一服务器134,如以下进一步描述的。如果请求是同一事务或操作的一部分且彼此依赖,即,当前请求依赖于前一请求的输出、结果或存在,则所述请求是相关的。例如,从客户端132到应用服务器180的、为购物车中的物品付款的请求依赖于将该物品从目录添加到购物车的前一请求,所述前一请求依赖于浏览目录的前一请求,因此这些请求是彼此依赖和相关的,因此它们是同一会话的一部分并被发送到同一服务器134,从而它们可由同一应用服务器180来处理。因此,如果当前请求与已经或者正在被服务器134处的应用服务器180处理的至少一个前一请求相关,并且当前请求需要被与前一请求相同的服务器134处的同一应用服务器180处理,则当前请求关联于已经存在的会话。
如果框310的确定为真,则关联于所接收请求的会话已存在,因此控制继续到框315,其中负载均衡器168发送所接收请求到已经在处理现有会话的服务器134(曾处理现有会话中的前一相关请求的同一服务器)。已经在处理现有会话的服务器134处的应用服务器180处理所述请求,如下参考图4进一步描述的。
再次参考图3,接着控制继续到框320,其中负载均衡器168从应用服务器180接收响应,其中所述响应关联于已在框315发送的请求。接着控制继续到框325,其中负载均衡器168确定响应是否指示所述请求导致会话的创建。
如果框325的确定为真,则响应指示出所述请求导致会话的创建,因此控制继续到框330,其中负载均衡器168通过将针对由创建了会话和负载均衡度量实例230的请求所请求的页225的记录添加到路由数据170,来创建关联于请求页的负载均衡度量的实例。接着控制继续到框399,其中图3的逻辑返回。
如果框325的确定为假,则响应未指示出所述请求导致会话的创建,因此控制继续到框399,其中图3的逻辑返回。
如果框310的确定为假,则关联于请求的会话尚未存在,因此控制继续到框335,其中负载均衡器168确定请求是否将导致会话的创建,即,请求是否指向在路由数据170的记录中的请求页字段225所指定的请求页。因为响应于会话的创建而把记录添加到路由数据170(如以上参考框325和330在前所述的),所以框335的确定确定前一请求是否指向与当前请求的同一页,以及前一请求是否创建了前一会话。不过,因为框335处于框310的“假”支路上,所以当前请求未关联于前一会话。
如果框335的确定为真,则请求将导致会话的创建,因此控制继续到框340,其中负载均衡器168基于关联于请求页225的负载均衡度量实例230(基于由负载均衡度量实例所指定的算法和输入参数变量)来选择服务器134。负载均衡器168执行算法,并把输入参数变量传递给算法。算法产生作为输出参数的对所选择服务器的标识,其可以是与输入参数相同的变量或者是不同变量。负载均衡器168将来自通过负载均衡度量实例标识的算法的前一次执行的输出参数作为输入参数进行传递。
接着控制继续到框345,其中负载均衡器168发送请求到由负载均衡度量实例230的算法的输出参数标识的所选择服务器。在所选择服务器134处的应用服务器180接收和处理请求,如以下参考图4进一步描述的。再次参考图3,接着控制继续到框320,如以上之前所述。
如果框335的确定为假,则所接收请求将不会导致新会话的创建,因此控制继续到框350,其中负载均衡器168基于诸如路由数据170的记录220所示的默认的负载均衡度量实例(基于由默认负载均衡度量实例所指定的算法和输入参数变量)来选择服务器134。接着控制继续到框345,其中负载均衡器168发送请求到所选择服务器。接着控制继续到框320,如上面之前描述的。
图4描述根据本发明实施例的用于由应用服务器180处理请求的流程图。控制开始于框400。接着控制继续到框405,其中应用服务器180从负载均衡器168接收请求。
接着控制继续到框410,其中应用服务器180确定所接收请求是否导致新会话的创建。在各种实施例中,框410的确定基于请求、基于请求的参数、基于请求所指定的页182、基于任何其它适当的标准、或基于上述内容的任一部分、多个部分或组合。例如,如果请求是具有用户标识符和口令参数的登录请求,则应用服务器180可以确定当前请求创建会话,以及指向同一页的未来请求与当前请求有关,并应该被认为是同一会话的一部分,以便保持关联于所述页和/或与未来请求的数据的秘密性。与此相反,作为另一示例,如果请求仅检索信息文本的页,则应用服务器180可以确定当前请求不创建会话,以及指向同一页的未来请求与当前请求无关,因此它们不应该被认为是同一会话的一部分。
如果框410的确定为真,则所接收请求确实导致新会话的创建,因此控制继续到框415,其中应用服务器180发送响应到负载均衡器168,通知负载均衡器168所接收请求的页与新会话的创建相关联。(负载均衡器168如以上参考图3的框320之前描述的那样接收和处理响应。)再次参考图4,接着控制继续到框420,其中应用服务器180处理请求,检索请求所指定的页182,并发送页182到客户端132。接着控制继续到框499,其中图4的逻辑返回。
如果框410的确定为假,则所接收请求不会导致新会话的创建,因此控制继续到框420,如上面之前描述的。
在本发明示例性实施例的之前的详细描述中,参考了构成本发明的一部分的附图(其中相同标号表示相同单元),其中通过图示示出了其中可实践本发明的特定的示例性实施例。这些实施例被描述得足够详细,以使得本领域技术人员能够实践本发明,但是也可使用其它实施例,并且可以做出逻辑、机械、电和其它改变而不会脱离本发明的范围。在本说明书中使用的词“实施例”的不同实例不必非要指代同一实施例,但是它们也可以是同一实施例。这里所图示或描述的任何数据和数据结构仅是示例,并且在其它实施例中,可以使用不同的数据数量、数据类型、字段、字段的数量和类型、字段名称、记录的数量和类型、条目或数据组织。此外,任何数据都可与逻辑相结合,从而单独的数据结构是不必要的。因此,之前的详细描述不会被看成是限制,并且仅由权利要求限定了本发明的范围。
在之前的描述中,所阐述的各种特定细节提供了对本发明实施例的精确理解。但是,可以在没有这些特定细节的情况下实践本发明。在其它实例中,并未详细示出公知的电路、结构和技术,以免混淆本发明。
权利要求
1.一种方法,包括从客户端接收当前请求,其中所述当前请求指向页;确定关联于所述当前请求的第一会话是否已存在;如果所述确定为假,则决定所述请求是否将导致第二会话的创建;以及如果所述决定为真,则基于关联于所述页的负载均衡度量实例来选择第一服务器,并将所述当前请求发送到所述第一服务器。
2.根据权利要求1所述的方法,其中所述决定还包括决定前一请求是否指向了所述页以及所述前一请求是否创建了第三会话。
3.根据权利要求2所述的方法,其中所述决定还包括决定对于前一请求是否接收了响应,其中所述响应指示了所述前一请求创建了所述第三会话。
4.根据权利要求1所述的方法,还包括如果所述确定为真,则发送所述当前请求到关联于所述第一会话的第二服务器。
5.根据权利要求1所述的方法,其中所述负载均衡度量实例包括算法以及对所述算法的输入参数。
6.根据权利要求5所述的方法,其中所述负载均衡度量实例还包括来自所述算法的输出参数,并且其中所述选择还包括执行所述算法,把所述输入参数提供给所述算法,以及选择由来自所述算法的输出参数所标识的第一服务器。
7.根据权利要求6所述的方法,其中所述选择还包括把来自所述算法的前一次执行的输出参数作为输入参数提供给所述算法的当前执行。
8.根据权利要求1所述的方法,还包括如果所述决定为假,则基于默认的负载均衡度量实例来选择第三服务器,其中所述默认的负载均衡度量实例未关联于所述页,并且把所述当前请求发送到所述第三服务器。
9.一种系统,包括用于从客户端接收当前请求的装置,其中所述当前请求指向页;用于确定关联于所述当前请求的第一会话是否已存在的装置,其中所述确定还包括确定所述当前请求是否依赖于前一请求;用于如果所述确定为假,则决定所述请求是否将导致第二会话的创建的装置;用于如果所述决定为真,则基于关联于所述页的负载均衡度量实例来选择第一服务器,并将所述当前请求发送到所述第一服务器的装置;以及用于如果所述确定为真,则将所述当前请求发送到关联于所述第一会话的第二服务器的装置。
10.根据权利要求9所述的系统,其中所述用于决定的装置还包括用于决定前一请求是否指向了所述页以及所述前一请求是否创建了第三会话的装置。
11.根据权利要求10所述的系统,其中所述用于决定的装置还包括用于决定对于前一请求是否接收了响应的装置,其中所述响应指示了所述前一请求创建了所述第三会话。
12.根据权利要求9所述的系统,其中所述负载均衡度量实例包括算法以及对所述算法的输入参数。
13.根据权利要求12所述的系统,其中所述负载均衡度量实例还包括来自所述算法的输出参数,并且其中所述用于选择的装置还包括用于执行所述算法,把所述输入参数提供给所述算法,以及选择由来自所述算法的输出参数所标识的第一服务器的装置。
14.根据权利要求13所述的系统,其中所述用于选择的装置还包括用于把来自所述算法的前一次执行的输出参数作为输入参数提供给所述算法的当前执行的装置。
15.根据权利要求9所述的系统,还包括用于如果所述决定为假,则基于默认的负载均衡度量实例来选择第三服务器,并且把所述当前请求发送到所述第三服务器的装置,其中所述默认的负载均衡度量实例未关联于所述页。
16.一种用于配置计算机的方法,包括配置计算机从客户端接收当前请求,其中所述当前请求指向页;配置计算机确定关联于所述当前请求的第一会话是否已存在,其中所述配置计算机确定还包括配置计算机确定所述当前请求是否依赖于前一请求;如果所述确定为假,则配置计算机决定所述请求是否将导致第二会话的创建,其中如果前一请求指向了所述页并且前一请求创建了第三会话,则所述当前请求将导致第二会话的创建;如果所述决定为真,则配置计算机基于关联于所述页的负载均衡度量实例来选择第一服务器,并将所述当前请求发送到所述第一服务器;以及如果所述确定为真,则配置计算机将所述当前请求发送到关联于所述第一会话的第二服务器。
17.根据权利要求16所述的方法,其中所述配置计算机决定还包括配置计算机决定对于前一请求是否接收了响应,其中所述响应指示了所述前一请求创建了所述第三会话。
18.根据权利要求16所述的方法,其中所述负载均衡度量实例包括算法以及对所述算法的输入参数。
19.根据权利要求18所述的方法,其中所述负载均衡度量实例还包括来自所述算法的输出参数,并且其中所述配置计算机选择还包括配置计算机执行所述算法,把来自所述算法的前一次执行的输出参数作为输入参数提供给所述算法的当前执行,以及选择由来自所述算法的输出参数所标识的第一服务器。
20.根据权利要求16所述的方法,还包括用于如果所述决定为假,则配置计算机基于默认的负载均衡度量实例来选择第三服务器,并且把所述当前请求发送到所述第三服务器,其中所述默认的负载均衡度量实例未关联于所述页。
全文摘要
在一实施例中,接收指向页的请求。通过确定所述请求是否依赖于前一请求而做出关联于所述请求的会话是否已存在的确定。如果所述会话尚未存在,则做出所述请求是否将导致创建会话的决定。如果所述请求将导致会话的创建,则基于关联于所述页的负载均衡度量实例来选择服务器,并将所述请求发送到所选择的服务器。所述负载均衡度量实例具有算法以及对所述算法的输入参数。通过执行所述算法以及选择由来自所述算法的输出参数所标识的服务器来选择服务器。
文档编号H04L29/08GK101026570SQ200710007059
公开日2007年8月29日 申请日期2007年2月8日 优先权日2006年2月9日
发明者J·J·斯特彻, R·维希涅夫斯基 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1