用于动态更新会话状态亲缘性的方法和系统转让专利

申请号 : CN200510113547.3

文献号 : CN1764191B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 斯里尼瓦斯·哈斯迪加布雷尔·加西亚·蒙特罗阿拉温德·斯里尼瓦桑仁加纳桑·桑达拉拉曼凯文·艾德华·沃格汉

申请人 : 国际商业机器公司

摘要 :

在包括超文本传输协议(HTTP)路由服务器和多个应用服务器的工作负荷平衡系统中保持会话状态亲缘性。应用服务器把用于到多个应用服务器的第一服务器的第一会话的备份会话状态信息保持在少于全部的多个应用服务器的应用服务器处,在多个应用服务器中的不同于第一应用服务器的一个应用服务器处检测第一应用服务器不可用,以及确定继续进行第一会话的第二服务器。第二服务器的标识和第一会话是响应于检测到第一服务器不可用而从多个应用服务器的一个应用服务器发送到HTTP路由服务器的。第二服务器的标识和第一会话在HTTP路由服务器处被接收,以及响应于接收到第二服务器的标识,与第一会话有关的通信从HTTP路由服务器被路由到第二服务器,这样,被保持在第二服务器中的备份会话状态信息被使用来在第二服务器处继续进行来自第一服务器的第一会话。

权利要求 :

1.一种用于在包括超文本传输协议HTTP路由服务器和多个应用服务器的工作负荷平衡系统中保持会话状态亲缘性的方法,所述多个应用服务器把到所述多个应用服务器中的第一应用服务器的第一会话的备份会话状态信息保持在少于全部的所述多个应用服务器的应用服务器处,在所述多个应用服务器中的不同于第一应用服务器的一个应用服务器处检测第一应用服务器不可用,以及确定继续进行第一会话的第二应用服务器,所述方法包括:响应于检测到第一应用服务器不可用,把第二应用服务器的标识和第一会话从所述多个应用服务器中的另一个应用服务器发送到HTTP路由服务器;

在HTTP路由服务器处接收第二应用服务器的标识和第一会话;

响应于接收到第二应用服务器的标识,把与第一会话有关的通信信息从HTTP路由服务器路由到第二应用服务器,这样,被保持在第二应用服务器中的备份会话状态信息被使用来在第二应用服务器处继续进行来自第一应用服务器的第一会话。

2.权利要求1的方法,其中发送第二应用服务器的标识包括把第二应用服务器的标识和第一会话合并到与不同于第一会话的第二会话有关的响应中。

3.权利要求2的方法,其中HTTP路由服务器执行以下步骤:

接收与第二会话有关的响应;

从与第二会话有关的响应中剥离出第二应用服务器的标识;以及

转发被剥离标识后的响应。

4.权利要求1的方法,还包括HTTP路由服务器向应用服务器请求应用服务器与会话的相关性的标识;以及响应于来自HTTP路由服务器的请求,把应用服务器与会话的相关性的标识从应用服务器发送到HTTP路由服务器。

5.权利要求4的方法,还包括确定在HTTP路由服务器处的应用服务器与会话的相关性的标识是否过时,且其中HTTP路由服务器请求标识是响应于确定关于在HTTP路由服务器处的应用服务器与会话的相关性的标识过时进行的。

6.权利要求4的方法,其中应用服务器与会话的相关性的标识包括由HTTP路由服务器保持的分区到服务器映射表,其中分区是由应用服务器分组而成。

7.权利要求1的方法,其中响应于检测到第一应用服务器不可用,把第二应用服务器的标识和第一会话从所述多个应用服务器中的另一个应用服务器发送到HTTP路由服务器,包括:检测在所述另一个应用服务器处保持的分区到服务器映射信息的改变,其中分区是由应用服务器分组而成;以及响应于检测到分区到服务器映射信息中的改变,把第二应用服务器的标识和第一会话发送到HTTP路由服务器。

8.一种用于在包括超文本传输协议HTTP路由服务器和多个应用服务器的工作负荷平衡系统中保持会话状态亲缘性的系统,所述多个应用服务器把到所述多个应用服务器中的第一应用服务器的第一会话的备份会话状态信息保持在少于全部的所述多个应用服务器的应用服务器处,在所述多个应用服务器中的不同于第一应用服务器的一个应用服务器处检测第一应用服务器不可用,以及确定继续进行第一会话的第二应用服务器,所述系统包括:响应于检测到第一应用服务器不可用,把第二应用服务器的标识和第一会话从所述多个应用服务器中的另一个应用服务器发送到HTTP路由服务器的装置;

在HTTP路由服务器处接收第二应用服务器的标识和第一会话的装置;

响应于接收到第二应用服务器的标识,把与第一会话有关的通信信息从HTTP路由服务器路由到第二应用服务器使得被保持在第二应用服务器中的备份会话状态信息被使用来在第二应用服务器处继续进行来自第一应用服务器的第一会话的装置。

9.一种用于与存储部分一起使用的HTTP路由服务器的方法,所述存储部分存储有分区到服务器映射表和服务器到互联网协议IP地址映射表,其中,分区是由应用服务器分组而成,分区到服务器映射表被配置成将会话与应用服务器相关,服务器到互联网协议IP地址映射表被配置成将应用服务器与IP地址相关,所述方法包括:接收来自应用服务器的通信信息,从接收的通信信息中剥离出分区到服务器映射表信息,用剥离出的信息更新分区到服务器映射表,和转发被剥离后的通信信息;

接收到一个应用服务器的通信信息,确定与接收的通信信息有关的分区,根据确定的分区和利用分区到服务器映射表识别服务器,通过使用服务器到IP地址映射表识别所识别的服务器的IP地址,以及把接收的通信信息转发到识别的IP地址;以及确定分区到服务器映射表是否为过时的,以及如果分区到服务器映射表是过时的,则存储接收的通信信息,从应用服务器请求分区到服务器映射表信息,接收响应于请求的来自应用服务器的更新的分区到服务器映射表信息,用接收的分区到服务器映射表信息更新分区到服务器映射表,以及通过使用更新的分区到服务器映射表转发存储的请求。

10.权利要求9的方法,其中该方法还包括:从应用服务器请求分区到服务器映射表信息,接收响应于请求的来自应用服务器的更新的分区到服务器映射表信息,以及用接收的分区到服务器映射表信息更新分区到服务器映射表。

11.权利要求10的方法,其中该方法还包括:如果确定分区到服务器映射表不是最新的,则请求分区到服务器映射表信息。

12.权利要求11的方法,其中该方法还包括:在初始化后请求分区到服务器映射表信息。

说明书 :

技术领域

本发明涉及数据处理系统之间的工作负荷分配,以及更具体地涉及在具有多个应用服务器的系统中保持会话状态亲缘性。

背景技术

互联网协议(“IP”)被设计为无连接协议。所以,IP工作负荷平衡解决方案典型地把到由特定的目的地IP地址和端口号组合识别的特定应用的每个传输控制协议(“TCP”)连接请求当作是独立于所有的其它的这种TCP连接请求的。这样的IP工作负荷平衡系统的例子包括来自国际商用机器公司(“IBM”)的Sysplex Distributor,它被包括在IBM的z/OS和OS/390TCP/IP实施方案中,以及来自Cisco系统公司的Multi-Node Load Balancer(“MNLB”)中。诸如这些的工作负荷平衡解决方案使用相对服务器容量(以及,在Sysplex Distributor的情形下,也使用网络策略信息和服务质量考虑),以动态选择服务器来操控每个进入的连接请求。然而,某些应用需要在特定的客户端与特定的服务器之间的关系持续到单个交互的生存期(lifetime)以外(即,在连接请求及其相关的响应消息以外)。
Web应用是需要正在进行的关系的应用的一个例子。例如,考虑web购物应用,其中在客户端浏览器处的用户可以把他的用户标识(“用户ID”)和口令提供给在特定的服务器上执行的web应用的特定示例,然后进行购物。在使用这种web应用的同时,用户的浏览器可以发送多个分开的--但相关的--超文本传输协议(“HTTP”)请求消息,每个消息在分开的TCP连接请求中被载送。当用户浏览在线目录,选择一个或多个货物物品,进行预订,提供付费和货运信息,以及最后确认或取消订单时,可以发送分开的请求消息。为了组装和处理用户的订单,可能必须保持状态信息(诸如用户ID、请求的货物物品等等),直至购物交易完成为止。所以,可能必须把所有的相关的连接请求路由到相同的应用示例,因为这个状态信息只存在于该特定的web应用示例中。因此,工作负荷平衡实施方案典型地必须考虑这种类型的正在进行的关系以及只使第一连接请求经受工作负荷平衡过程。
需要特定的客户端与特定的服务器之间持久的关系的应用的另一个例子是其中客户端访问对安全敏感的或访问受限的网页的应用。典型地,用户在对于这样的应用的早先的连接请求(例如,“登录”请求)中提供他的ID和口令。这个信息必须被应用记住及在相关的请求的整个过程中被携带而不需要用户重新输入它。所以,必须把所有以后的连接请求路由到记住客户端的信息的服务器应用示例。因此,工作负荷平衡实施方案必须对于所有的而不是初始的那一个连接请求旁路它的正常选择过程,以使得正在进行的关系是持久的。
提供这些持久关系的需要常常被称为“服务器亲缘性(affinity)”或“粘性(sticky)路由问题”。在现有技术中被使用来解决这一web应用的问题的一种技术是使用“cookie”。“cookie”是在HTTP请求和响应报头内的可变长度域中传输的数据对象。cookie存储服务器应用想要记住的关于特定的客户端的某些数据。这可包括客户端标识、在正在进行的交易中使用的参数和状态信息、用户偏好、或应用编写者可想到的要包括进去的几乎任何其它信息。cookie通常在交易的持续时间内(例如在客户经由单个浏览器示例与在线商人的电子购物交互整个过程中)或者永久地被存储在客户端装置。web应用可以在它在响应消息中发送到客户端的cookie中提供识别信息,然后客户端在以后的请求消息中返回该信息。这样,客户端和服务器应用利用面向连接的信息,而不管HTTP设计所依照的无连接模型。
通过使用cookie,对于与客户端的会话可以保持服务器亲缘性。而且,因为可以保持服务器亲缘性,服务器可以保持与客户端的会话的状态信息。备份服务器也可以保持会话的状态信息以便在原始服务器不可用的情形下使用。然而,虽然服务器亲缘性可被对于会话保持,但如果原始服务器故障,可能很难把对于会话的请求路由到正确的备份服务器,特别是在备份服务器是服务器组中的特定的服务器,以及它不是统计地定义的或可能随着到原始服务器的不同的会话而变化的情况下。
例如,在WebSphere应用服务器v.5中,HTTP路由服务器可以根据在通信中的特定的服务器的标识,把会话通信路由到第一应用服务器。在应用服务器集群中的其它应用服务器可以保持到第一应用服务器的会话的备份会话状态信息。如果第一应用服务器故障,则在集群中其它应用服务器之一通过使用备份会话状态信息继续进行会话。所利用的备份服务器可以静态地被选择,即,以静止配置被建立的特定的那个应用服务器,或动态地被选择,即在第一应用服务器故障时被快速(on-the-fly)选择。在其中备份应用服务器被应用服务器集群动态地选择的情形下,HTTP路由服务器可能不知道哪个应用服务器已被选择,以及使用服务器到IP地址的表,查找故障的服务器作为转发通信的目的地。而且,如果多个会话由不同的备份应用服务器继续进行(这可以是保持负荷平衡的情形),以及如果因为会话可能很难事先建立使得路由应用服务器可能会以备份信息预配置,多个HTTP路由服务器被作为备份应用服务器的身份使用,则问题甚至可能变得更复杂。

发明内容

本发明的某些实施例提供用于在包括超文本传输协议(HTTP)路由服务器和多个应用服务器的工作负荷平衡系统中保持会话状态亲缘性的方法。所述多个应用服务器把到多个应用服务器中的第一应用服务器的第一会话的备份会话状态信息保持在少于全部的所述多个应用服务器的应用服务器中,在所述多个应用服务器中的不同于第一应用服务器的一个应用服务器处检测第一应用服务器不可用,以及确定继续进行第一会话的第二应用服务器。所述方法包括:响应于检测到第一应用服务器不可用,把第二应用服务器的标识和第一会话从所述多个应用服务器的另一个应用服务器发送到HTTP路由服务器;在HTTP路由服务器处接收第二应用服务器的标识和第一会话;以及响应于接收到第二应用服务器的标识,把与第一会话有关的通信信息从HTTP路由服务器路由到第二应用服务器,这样,被保持在第二应用服务器中的备份会话状态信息被使用来在第二应用服务器处继续进行来自第一应用服务器的第一会话。
在本发明的另一些实施例中,发送第二应用服务器的标识包括把第二应用服务器的标识和第一会话合并到与不同于第一会话的第二会话有关的响应中。而且,HTTP路由服务器可以接收与第二会话有关的响应,从与第二会话有关的响应中剥离出第二应用服务器的标识,以及转发被剥离标识后的响应。
在本发明的另外的实施例中,HTTP路由服务器向应用服务器请求应用服务器与会话的相关性的标识。响应于来自HTTP路由服务器的请求,应用服务器与会话的相关性的标识从应用服务器被发送到HTTP路由服务器。另外,可以确定在HTTP路由服务器处应用服务器与会话的相关性的标识是否过时,且响应于确定出在HTTP路由服务器处应用服务器与会话的相关性的标识已经过时,HTTP路由服务器请求应用服务器与会话的相关性的标识。
在其中服务器被分组成分区(partition)的本发明的特定的实施例中,应用服务器与会话的相关性的标识包括被HTTP路由服务器保持的分区到服务器映射表。分区的使用可以提供允许客户端使用同一个分区标识而不管被映射到该分区的特定的服务器的一种抽象水平。这会有助于减少在备份服务器处继续进行会话时的时序问题。
本发明的另一个实施例提供一种用于在包括超文本传输协议HTTP路由服务器和多个应用服务器的工作负荷平衡系统中保持会话状态亲缘性的系统,所述多个应用服务器把到所述多个应用服务器中的第一应用服务器的第一会话的备份会话状态信息保持在少于全部的所述多个应用服务器的应用服务器处,在所述多个应用服务器中的不同于第一应用服务器的一个应用服务器处检测第一应用服务器不可用,以及确定继续进行第一会话的第二应用服务器,所述系统包括:响应于检测到第一应用服务器不可用,把第二应用服务器的标识和第一会话从所述多个应用服务器中的另一个应用服务器发送到HTTP路由服务器的装置;在HTTP路由服务器处接收第二应用服务器的标识和第一会话的装置;响应于接收到第二应用服务器的标识,把与第一会话有关的通信信息从HTTP路由服务器路由到第二应用服务器使得被保持在第二应用服务器中的备份会话状态信息被使用来在第二应用服务器处继续进行来自第一应用服务器的第一会话的装置。
本发明的另一个实施例提供一种用于与存储部分一起使用的HTTP路由服务器的方法,所述存储部分存储有分区到服务器映射表和服务器到互联网协议IP地址映射表,其中,分区是由应用服务器分组而成,分区到服务器映射表被配置成将会话与应用服务器相关,服务器到互联网协议IP地址映射表被配置成将应用服务器与IP地址相关,所述方法包括:接收来自应用服务器的通信信息,从接收的通信信息中剥离出分区到服务器映射表信息,用剥离出的信息更新分区到服务器映射表,和转发被剥离后的通信信息;接收到一个应用服务器的通信信息,确定与接收的通信信息有关的分区,根据确定的分区和利用分区到服务器映射表识别服务器,通过使用服务器到IP地址映射表识别所识别的服务器的IP地址,以及把接收的通信信息转发到识别的IP地址;以及确定分区到服务器映射表是否为过时的,以及如果分区到服务器映射表是过时的,则存储接收的通信信息,从应用服务器请求分区到服务器映射表信息,接收响应于请求的来自应用服务器的更新的分区到服务器映射表信息,用接收的分区到服务器映射表信息更新分区到服务器映射表,以及通过使用更新的分区到服务器映射表转发存储的请求。
HTTP路由服务器还可被配置成从应用服务器请求分区到服务器映射表信息,接收响应于该请求的来自应用服务器的更新的分区到服务器映射表信息,以及用接收的分区到服务器映射表信息更新分区到服务器映射表。如果确定分区到服务器映射表不是最新的话,HTTP路由服务器也可被配置成请求分区到服务器映射表信息。HTTP路由服务器可被配置成在初始化后请求分区到服务器映射表信息。
在其中分区是与会话相关的本发明的另外的实施例中,系统包括应用服务器,其被配置成把分区到服务器映射信息合并到路由到HTTP路由服务器的通信信息中。映射信息例如可以作为cookie被合并到HTTP响应,或被合并到被路由到HTTP路由服务器的消息的报头中。
本发明的其它实施例通过把与第一会话有关的路由信息承载(piggyback)在从服务器集群中的一个服务器到与服务器集群有关的HTTP路由服务器的通信上,提供在保持到服务器集群中的服务器的会话的状态信息的集群计算环境中更新路由信息的方法、系统和/或计算机程序产品。其上承载路由信息的通信是与不同于第一会话的第二会话有关的。
正如本领域技术人员还将会理解的,虽然以上主要是对于方法方面进行描述的,本发明还可以被实施为方法、设备/系统和/或计算机程序产品。

附图说明

图1是引入本发明的某些实施例的系统的框图。
图2是按照本发明的某些实施例的适合于用作为应用服务器或HTTP路由服务器的数据处理系统的框图。
图3是用于提供引入本发明的某些实施例的HTTP路由服务器的数据处理系统的框图。
图4是用于提供引入本发明的某些实施例的应用服务器的数据处理系统的框图。
图5A,5B和5C是显示按照本发明的某些实施例的应用服务器的操作的流程图。
图6和7是显示按照本发明的某些实施例的HTTP路由服务器的操作的流程图。

具体实施方式

现在将在下面参考附图更全面地描述本发明,图上显示本发明的说明性实施例。然而,本发明可以以许多不同的形式被实施,以及不应当被看作为限制为这里所阐述的实施例;而是这些实施例被提供来使得本公开内容是透彻和全面的,以及将充分地传达本发明的范围给本领域技术人员。在全文中相同的标号是指相同的单元。正如这里使用的,术语“和/或”包括一个或多个相关的列出的项目的任何的和所有的组合以及可以用“/”缩略表示。
这里使用的术语仅仅是为了描述具体的实施例,而不是打算限制本发明。正如这里使用的,单数形式“a”,“an”和“the”旨在也包括复数形式,除非上下文明显表示不是这种情况。还将会理解,术语“包括”和/或“包含”,当被使用于本说明书时,规定描述的特征、整数、步骤、操作、单元、和/或部件的存在,但并不排除一个或多个其它特征、整数、步骤、操作、单元、部件和/或它们的组的存在或添加。
除非另外规定的,否则这里所使用的所有的术语(包括技术和科学术语)具有与通常由本发明所属的技术领域的普通技术人员所理解的相同的意义。还将会理解,诸如在通用的字典中定义的那些术语应当被解释为具有与它们在相关的技术的上下文中的意义相一致的意义,以及除非在这里直接地这样规定,否则不按理想化的或过分正式的意义来解释。
正如本领域技术人员将会理解的,本发明可被实施为方法、数据处理系统、和/或计算机程序产品。因此,本发明可以取完全硬件实施例、完全软件实施例、或组合软件和硬件方面的实施例的形式。而且,本发明可以取在计算机可用的存储媒体上的具有在媒体上体现的计算机可用的程序代码的计算机程序产品的形式。任何适当的计算机可读的媒体可被利用,包括硬盘、CD-ROM、光存储装置、诸如支持互联网或内部网的那样的传输媒体、或磁存储装置。
用于实行本发明的操作的计算机程序代码可以以面向对象的编程语言,诸如JAVA,Smalltalk或C++被编写。然而,用于实行本发明的操作的计算机程序代码也可以以传统的过程编程语言,诸如“C”编程语言或以面向视觉的编程环境,诸如VisualBasic被编写。
程序代码可以完全在用户的计算机上执行,部分地在用户计算机上执行,作为独立的软件包执行,部分地在用户计算机上执行,部分地在远程计算机上执行,或完全在远程计算机上执行。在后者的情形下,远程计算机可以通过局域网(LAN)或广域网(WAN)被连接到用户计算机,或可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。
本发明部分地在下面参考按照本发明的实施例的方法、系统和/或计算机程序产品的流程图和/或框图被描述。将会理解,图的每个块和块的组合可以由计算机程序指令被实施。这些计算机程序指令可被提供到通用计算机的处理器、专用计算机、或其它可编程数据处理设备,以产生一个机器,以使得经由计算机的处理器或其它可编程数据处理设备执行的指令创建用于实施在块中规定的功能/动作的装置。
这些计算机程序指令也可被存储在计算机可读的存储器中,它可引导计算机或其它可编程数据处理设备以特定的方式起作用,这样,被存储在计算机可读的存储器中的指令产生包括实施在块中规定的功能/动作的指令装置的制品。
计算机程序指令也可被装载到计算机或其它可编程数据处理设备以使得在计算机或其它可编程设备上执行一系列操作步骤,以产生计算机实施的处理,这样,在计算机或其它可编程设备上执行的指令提供用于实施在块中规定的功能/动作的步骤。
现在参考图1到7讨论本发明的实施例。图1是引入本发明的某些实施例的用于保持会话状态亲缘性的系统的图。如图1所示,多个用户14,14’,14”和14”’在网络10上通过HTTP路由服务器12和12’与多个应用服务器20,20’和20”的特定的应用服务器进行通信。多个用户14,14’,14”和14”’的每个用户可以具有与一个或多个应用服务器20,20’和20”的一个或多个会话。因此,例如,图1显示用户A 14与应用服务器120的会话A、用户B 14’与应用服务器220’的会话B、用户C 14”与应用服务器3 20”的会话C和用户D 14”’与应用服务器120的会话D。会话到应用服务器20,20’和20”的特定的应用服务器的分配例如可以通过应用服务器20,20’和20”藉其登记的工作负荷管理功能(未示出)被提供。例如,在其中应用服务器20,20’和20”是WebSphere应用服务器(WAS)的本发明的实施例中,应用服务器20,20’和20”可以是用提供WAS工作负荷管理(WLM)能力的HTTP插件登记的应用服务器组。
应用服务器20,20’和20”保持与特定的应用服务器20,20’和20”的会话的会话状态信息。例如,应用服务器120保持会话A的会话状态信息A 22和会话D的会话状态信息D 28。应用服务器220’保持会话B的会话状态信息B 24。应用服务器320”保持会话C的会话状态信息C 26。
应用服务器20,20’和20”也保持备份会话状态信息以在原始应用服务器不可用的情况下接管会话。备份会话状态信息被保持在应用服务器20,20’和20”的指定的一个应用服务器中。例如,如图1所示,应用服务器120保持会话C的备份会话状态信息C’26’。应用服务器220’保持会话A的备份会话状态信息A’22’。应用服务器320”保持会话B的备份会话状态信息B’24’和会话D的备份会话状态信息D’28’。
应当指出,备份会话状态信息不是被分配到每个应用服务器20,20’和20”或被存储在对于每个应用服务器20,20’和20”可访问的公共存储器中,而是被保持在指定的一个应用服务器或少于全部的应用服务器20,20和20的子集中。在应用服务器20,20和20之一不可用的情形下,应用服务器20,20和20的其余的应用服务器被告知该不可用性,以及指定的备份服务器接管它通过使用相应的备份会话状态信息而被指定到的会话。在指定的备份服务器处保持会话状态信息的备份拷贝以及把应用服务器20,20和20之一的不可用通知应用服务器20,20和20中的其余应用服务器,例如可以如由来自纽约Armonk的国际商用机器(IBM)公司的WebSphere应用服务器,V.5那样被提供,或如本领域技术人员知道的其它适用的技术那样被提供。例如,会话状态信息可被保持在用WAS WLM登记的服务器组中的多个服务器中,以及不可用服务器的检测和通知可以是由WebSphere应用服务器,V.6提供的WAS高度可用性管理器所提供的。会话状态信息的备份拷贝的保持和应用服务器不可用的通知不属于本发明的范围,因此这里不需要作进一步描述。
然而,在本发明的某些实施例中,在原始服务器出现故障后,备份服务器把它要继续进行的会话告知HTTP路由服务器12和12’,以使得HTTP路由服务器12和12’可以把以后的对于继续进行的会话的请求路由到指定的备份服务器。HTTP路由服务器12和12’保持关于与由HTTP路由服务器12和12’路由的特定的会话有关的当前指定的服务器的信息。由HTTP路由服务器12和12’保持的路由信息在HTTP路由服务器12和12’被告知备份应用服务器已接管会话以及通过使用更新的信息路由与会话有关的以后的通信时被更新。而且,在某些实施例中,HTTP路由服务器12和12’确定它们具有的路由信息是否为当前的,以及如果不是,则从应用服务器20,20’和20”请求当前的信息。这样的方法可以是与单个或多个会话是否与特定的用户有关或多个用户是否具有多个会话无关的。
在本发明的某些实施例中,应用服务器20,20’和20”是在服务器集群中的服务器,以及可以是WebSphere应用服务器集群。而且,用户14,14’,14”和14”’可以是能够建立与应用服务器20,20’和20”的会话的任何设备。例如,用户14,14’,14”和14”’可以是具有有线和/或无线网络功能的设备,以及可以执行浏览或能够在网络上通信和建立会话的其它软件。而且,网络10可以是有线和/或无线网,互联网和/或内部网或用于允许在用户与服务器之间建立会话的其它适当的网络。
现在参考图2讨论适合于用作为在按照本发明的某些实施例的系统中的HTTP路由服务器和/或应用服务器的数据处理系统的框图。如图2所示,数据处理系统30的示例性实施例典型地包括诸如键盘或小型键盘的输入设备32、显示器34、和与处理器38通信的存储器38。数据处理系统30还可包括扬声器44和也与处理器38通信的I/O数据端口46。I/O数据端口46可被使用来在数据处理系统30与另一个计算系统或网络之间传送信息。这些部件可以是惯用的部件,诸如在许多惯用的数据处理系统中使用的那些部件,它们可被配置成如这里描述的那样操作。
图3和4是显示按照本发明的实施例的系统、方法、和/或计算机程序产品的数据处理系统的框图。处理器38经由地址/数据总线48与存储器36通信。处理器38可以是任何市面上可买到的或传统的处理器,诸如微处理器。存储器36代表存储器装置的总的体系,其包含被使用来实施数据处理系统30的功能的软件和数据。存储器36可包括,但不限于,以下类型的装置:超高速缓存器、ROM、PROM、EPROM、EEPROM、快闪存储器、SRAM和/或DRAM。
如图3和4所示,存储器36可包括在数据处理系统30中使用的几种类别的软件和数据:操作系统52;应用程序54;输入/输出(I/O)设备驱动器58;和数据67。正如本领域技术人员将会理解的,操作系统52可以是适合于用于数据处理系统的任何操作系统,诸如OS/2、来自IBM公司,Armonk,NY的AI/X或系统390、来自微软公司,Redmond,WA的Windows 95、Windows 98、Windows 2000或Windows XP、Unix或Linux。I/O设备驱动器58典型地包括由应用程序54通过操作系统52访问的用来与诸如I/O数据端口46和某些存储器36部件的设备通信的软件例程。应用程序54例示了实施数据处理系统30的各种特征的程序的程序。最后,数据67代表由应用程序54、操作系统52、I/O设备驱动器58、和可以位于存储器36中的其它软件程序使用的静态和动态数据。
如在图3上进一步看到的,应用程序54可包括一个或多个HTTP路由服务器62。存储器36的数据部分67,如图3所示的实施例中显示的,可包括被HTTP服务器62使用来路由请求到应用服务器80的请求的分区到服务器映射表65和服务器到IP映射表66。应用服务器组可被划分成分区,分区标识可与每个分区相关。与应用服务器的会话可以与分区相关。然后可以通过识别与例如可以由客户端作为cookie的一部分提供的通信有关的分区,在分区到服务器映射表65中查找分区以识别服务器,然后在服务器到IP映射表66中查找服务器的IP地址而进行用于通信的服务器的识别。因此,分区标识提供抽象层,在其中通信被发送到的服务器可以通过改变在HTTP路由服务器62中的分区到服务器映射表65而被改变,即使客户端不改变在它的通信中所识别的分区。
如在图4上进一步看到的,应用程序54可包括多个应用服务器80。应用服务器80可包括web容器部件,其被配置来与HTTP路由服务器62通信,如这里描述的。存储器36的数据部分67,如图4所示的实施例中显示的,可包括用于给定的应用服务器80的原始会话状态信息85a,它可存储到应用服务器80的会话的会话状态信息,以及用于其它应用服务器的备份会话状态信息85b,应用服务器80是用于所述其它应用服务器的备份服务器。
虽然在图3和4上参考在应用程序、数据等等之间的具体划分显示了本发明的实施例,但本发明不应当被看作为限于图3和4的配置,而是打算包括能够实行这里描述的操作的的任何配置。而且,这里描述的功能例如可以通过用来提供功能给现有的应用的插件或其它辅助代码而被提供。而且,本发明的某些实施例作为WebSphere应用服务器系统的一部分被提供,诸如在标题为WebSphere应用服务器V5体系结构,2003的IBM红皮书论文中描述的那种系统。因此,例如HTTP路由服务器可以作为加到HTTP服务器的WebSphere工作负荷管理插件被提供,以及应用服务器可以通过集聚安装Web容器和/或EJB容器的应用服务器而被提供。
图5A显示按照本发明的某些实施例的诸如图1的应用服务器20,20’和20”或图4的80的应用服务器的操作。如图5A所示,如果另一个服务器不是不可用的(块500),则应用服务器的操作继续进行。然而,如果另一个应用服务器不可用(块500),则应用服务器用该不可用的服务器来更新其用于会话的分区到服务器的映射,以反映会话在会话的备份服务器处继续进行(块510)。关于另一个服务器不可用的确定例如可以通过从检错功能或服务--诸如如上所述的WAS高可用性管理器功能--接收不可用的通知而作出。
图5B显示按照本发明的某些实施例的在从诸如图1的应用服务器20,20’和20”或图4的80的应用服务器发送HTTP通信中应用服务器的操作。当应用服务器要发送外出的通信时(块520),应用服务器确定自从上一个消息被发送以来分区到服务器映射表是否被更新(块530)。如果分区映射信息没有被更新(块530),则操作可继续进行。然而,如果分区到服务器映射信息已被更新(方框530),则应用服务器把信息加到通过HTTP路由服务器发送的以后的响应(即,在响应上“承载”信息),以表示应用服务器已接管的会话作为用于不可用的服务器的备份(块540)。新的会话信息例如可被包括在与由应用服务器提供的下一个响应一起发送的cookie或报头中。在本发明的某些实施例中在分区到服务器映射信息被更新后,信息被承载在下一个以后的消息上。关于映射信息被更新的变量、标志或其它指示符然后可被复位。在本发明的其它实施例中,信息可被承载在到HTTP路由服务器的几个以后的响应上。信息可被包括在对于除了由应用服务器接管的会话的会话的响应中。而且,信息可以作为被HTTP路由服务器使用来选择与特定的会话有关的服务器的分区到服务器映射表的更新或已经更新的分区到服务器的映射表被提供。
例如,在图1显示的系统中,如果应用服务器320”成为不可用的,则应用服务器120和应用服务器220’被告知应用服务器320”不可用。应用服务器120具有会话C的备份会话状态信息C’26’,所以将继续进行与用户C 14”的会话C。为了告知HTTP路由服务器212’应用服务器120已接管会话C,应用服务器120和/或应用服务器220’把表示用于会话C的以后的通信要被路由到应用服务器120的信息合并到以后的响应,诸如对于会话D的请求的响应。这个通知例如可以通过把HTTP路由服务器212’接下来如在下面更详细地描述的那样将会使用来路由通信的修正的分区到服务器映射表合并到以后的通信的cookie或报头中而被提供。
虽然图5A和5B显示的操作在许多情形下对于提供信息到图1的HTTP路由服务器12和12’或图3的60是足够的,但如果在备份服务器向图1的HTTP路由服务器12和12’或图3的60识别自身之前接收到对于到不可用的服务器的会话的请求,则图1的HTTP路由服务器12和12’或图3的60可能把请求不正确地路由到不正确的应用服务器。图5C提供允许图1的HTTP路由服务器12和12’或图3的60积极地得到路由信息的应用服务器的操作。对于路由信息的这样的积极的请求例如可以在HTTP路由服务器的初始操作后,或如图6所示,当HTTP路由服务器确定它具有过时的分区到服务器映射表时发生。
如图5C所示,当图1的应用服务器20、20’和20”或图4的80接收来自图1的HTTP路由服务器12和12’或图3的60之一的通信时,它们确定通信是否包括对于更新的分区到服务器映射表的请求(块550)。这样的请求例如可以通过在图1的HTTP路由服务器12和12’或图3的60与图1的应用服务器20、20’和20”或图4的80之间的专用通信而被提供,或可被承载在从图1的HTTP路由服务器12和12’或图3的60到图1的应用服务器20、20’和20”或图4的80的其它通信上。然而,为了提供图1的HTTP路由服务器12和12’或图3的60的初始化,用于请求分区到服务器映射表的专用通信的使用比起把请求承载在其它通信上可以是更加有效的。而且,如果来自HTTP路由服务器的请求被承载在现有的通信上,则应用服务器需要分析接收的通信以及以类似于下面参考HTTP路由服务器描述的方式剥离出承载的请求。
如果通信不包括对于更新的表的请求(块530),则应用服务器以惯用的方式处理通信。然而,如果通信包括对于更新的分区到服务器映射表的请求(块550),则应用服务器发送更新的表到HTTP路由服务器(块560)。例如,更新的表可以作为对于来自HTTP路由服务器的请求的专用响应被发送。在替换实施例中,更新的表可被承载在通过请求HTTP路由服务器被路由的用于到应用服务器的会话的以后的通信上。替换地,响应可被广播到所有的HTTP路由服务器。
图6显示按照本发明的某些实施例的诸如图1的HTTP路由服务器12和12’或图3的60的HTTP路由服务器的操作。如图6所示,诸如图1的HTTP路由服务器12和12’或图3的60的HTTP路由服务器接收来自与诸如用户14,14’,14”或14”’那样的用户有关的客户端的通信(块600)。HTTP路由服务器评估通信,以确定与通信有关的分区标识(块610)。分区ID可以合并到被包括在通信中的cookie中,以及可以是用于识别与通信有关的服务器的任何适当的指示符。
任选地,HTTP路由服务器确定分区到服务器映射表是否为当前的(块620),以及如果不是,则存储通信和把对于更新的分区到服务器映射表的请求发送到应用服务器(块625)。HTTP路由服务器然后等待从应用服务器接收更新的表(块630)。HTTP路由服务器可以通过例如使用在分区到服务器映射表上的时间戳确定分区到服务器映射表是否为当前的。表上的时间戳可被使用来确定表的有效性是否过时。发送到请求更新表的应用服务器的通信可以如参考图5C描述的那样被提供。
无论如何,在从应用服务器接收到更新的表后,HTTP路由服务器根据通信的分区标识在分区到服务器映射表中查找服务器,以确定与通信有关的服务器(块640)。分区到服务器映射表表示具有与通信有关的会话状态信息的服务器,因此,通过在分区到服务器映射表中查找服务器,与会话有关的服务器可被改变,以使得HTTP路由服务器可以发送通信到用于与通信有关的会话的当前的原始服务器。HTTP路由服务器也在服务器到IP地址映射表中查找识别的服务器的IP地址(块650)以及把通信转发到识别的IP地址(块660)。
回到块620,如果分区到服务器映射表是当前的(块620),则HTTP路由服务器根据通信的分区标识在分区到服务器映射表中查找服务器,以确定与通信有关的服务器(块640)。HTTP路由服务器然后在服务器到IP地址映射表中查找识别的服务器的IP地址(块650)以及把通信转发到识别的IP地址(块660)。
如果转发通信成功(例如,接收到对于转发通信的响应)(块670),则该通信从为了重试而存储的项目中取消(块690)以及操作完成。如果转发通信不成功(例如,没有接收到对于通信的响应)(块670),则确定是否应当重试转发请求(块680)。这个确定例如可以通过保存重试计数和查看通信的重试最大数目是否已被超过或将被另一次重试超过而进行。如果还有用于通信的重试(块680),则操作从方框625通过从应用服务器请求更新的表,以便得到用于重试的信息继续进行。因此,HTTP路由服务器可以通过转发通信是否成功而确定映射表不是当前的以及是否需要被更新。
正如上面讨论的,HTTP路由服务器可任选地跟踪对于到应用服务器的通信的响应是否接收到来自应用服务器的响应以确定分区到服务器映射表是否为当前的。如果没有接收到响应,则HTTP路由服务器可请求在以后的通信中使用的更新的分区到服务器映射表。可任选地,如果在更新的分区到服务器映射表中表示用于与通信有关的分区的映射的改变,则路由服务器可以把通信重发到新识别的服务器。
图7显示当从诸如图1的应用服务器20,20’,20”之一或图4的80的应用服务器接收到通信时,按照本发明的某些实施例的诸如图1的HTTP路由服务器12和12’或图3的60的HTTP路由服务器的操作。如图7所示,HTTP路由服务器接收来自应用服务器的通信(块700),以及确定该通信是否为在对于表更新的请求的专用响应中接收的表更新通信(块710)。如果该通信是专用表更新通信,则HTTP路由服务器从通信中提取分区到服务器映射表信息(块720)和更新它的分区到服务器映射表(块730)。对于接收的通信的操作然后完成。
用于更新分区到服务器映射表的具体的机制可取决于更新消息的表信息的格式。例如,如果应用服务器每个都包括分区到服务器映射表的完全的拷贝,则该表可以用新的表代替。替换地,更新消息可以只包含改变的数据,以使得现有的分区到服务器映射表用新的数据被更新,或者改变现有的项目或者加上新的项目。而且,在其中信息的类型被规定为表替换或项目更新的情形下,可以使用两种技术的组合。由应用服务器提供的表信息的范围也可被HTTP路由服务器规定。例如,初始化HTTP服务器可以请求和接收整个表,而工作的HTTP路由服务器可以只请求和接收更新。
回到图7,如果通信不是表更新通信(块710),则HTTP路由服务器确定在接收的通信上是否承载有与分区到服务器映射有关的信息(块740)。这样的确定例如可以通过询问被包含在通信中的cookie以检测分区到服务器映射表信息的存在而被作出。如果分区到服务器映射表信息被包含在通信中(块740),则从通信中剥离出分区到服务器映射表信息(块750),以及用剥离出的信息更新分区到服务器映射表(块760)。分区到服务器映射表的更新可以如上面讨论的那样被提供。带有从通信剥离出的更新信息的通信然后由HTTP路由服务器被转发到由通信规定的目的地(块770)。关于接收的通信的操作然后完成。
如果分区到服务器映射表信息没有被包含在通信中(块740),则通信由HTTP路由服务器被转发到由通信规定的目的地(块770)。关于接收通信的操作然后完成。
受益于本公开内容的教导的本领域普通技术人员可以在不背离本发明的精神和范围的条件下作出许多替换和修正方案。所以,必须理解,所说明的实施例仅仅是为了举例而被阐述的,不应当被看作为限制由以下权利要求所规定的本发明。所以,以下的权利要求要被解读为不仅仅包括被字面阐述的元件的组合,而且包括用于以基本上相同的方式执行基本上相同的功能以得到基本上相同的效果的所有的等价的元件。因此,权利要求应被理解为包括以上具体地示出和描述的事物、概念上等价的事物、以及也包括引入本发明的基本概念的事物。