用于应用实例级工作负荷分配亲合性的方法和系统的利记博彩app

文档序号:7593142阅读:254来源:国知局
专利名称:用于应用实例级工作负荷分配亲合性的方法和系统的利记博彩app
技术领域
本发明涉及数据处理系统之间的工作负荷分配,更具体地说,涉及在一个应用的多个实例之间的工作负荷分配。
背景技术
因特网协议(“IP”)被设计成无连接协议。所以,IP工作负荷平衡解决方案把对一个特定的目的地IP地址和端口号组合所标识的特定应用的每个传输控制协议(“TCP”)连接请求看作是独立于所有其他这样的TCP连接请求。这种IP工作负荷平衡系统的实例包括来自国际商业机器公司(“IBM”)的Sysplex分配器,其被包括在IBM的z/OS和OS/390TCP/IP实现中,以及来自Cisco Systems公司的多节点负荷平衡器(“MNLB”)。诸如这些工作负荷平衡解决方案使用相对的服务器能力(在Sysplex分配器的情况中还使用网络策略信息和服务质量考虑)来动态选择服务器以处置每个到来的连接请求。然而,某些应用要求一个特定客户机和一个特定服务器之间的关系持续到超过单个交互作用的存在期(即超出连接请求及其相关响应消息)。
Web应用是要求持续存在的关系的应用的一个实例。例如,假定有一个Web购物应用,其中在一个客户机浏览器处的用户可把他的用户标识(“用户ID”)和口令提供给在一特定服务器上执行的该Web应用的一个特定实例,然后购买商品。在使用这一Web应用时,该用户的浏览器可传送若干个单独的但相关的超文本传输协议(“HTTP”)请求消息,其中每个消息被承载在一个单独的TCP连接请求中。当用户浏览在线目录,选择一个或多个商品项目,下订单,提供付款和发货信息以及最后确认或取消该订单的时候,可传送若干单独的请求消息。为了汇集和处理该用户的订单,必须保持状态信息(如用户ID、所请求的商品项目等)直至购物事务完成为止。所以必须把所有这些相关的连接请求路由到同一个应用实例,因为该状态信息只存在于该特定的Web应用实例。这样,工作负荷平衡的实现必须考虑这一类持续存在的关系并且只使第一个连接请求经历工作负荷平衡过程。
要求在特定客户机和特定服务器之间有持续关系的应用的另一例子是客户机访问安全敏感或访问受限的网页的应用。通常,对于这些应用,用户在一个早期连接请求(例如“log on(登录)”请求)上提供他的ID和口令。这一信息必须由该应用记忆,并在所有相关请求到来时该应用携带着这一信息而无需用户重新输入它。所以必须把其后的连接请求路由到记忆该客户机信息的服务器应用实例。所以,工作负荷平衡实现必须对除初始的一个连接请求之外的全部这些连接请求跳过它的正常选择过程,以便持续其进行关系。
提供这些持续性关系的这种需求往往被称作“服务器亲合性”或“粘性路由选择问题”,在现有技术中已用于解决Web应用的这一问题的一项技术是“cookie(点心文件)”的使用。一个“cookie”是一个在HTTP请求和响应标头内以可变长度字段传送的数据对象。一个cookie存储该服务器应用想要记忆的关于一个特定客户机的某些数据。这能包括客户机标识、正在持续的事务中使用的参数和状态信息、用户偏好、或一个应用的编写者能想到要包括的几乎任何其他信息。cookie通常存储在客户机设备上,或者在一个事务的进行期间(例如,经由单个浏览器实例,一个顾客与一个在线商人进行的电子购物交互的整个过程)中被保存,或者被永久地保存。一个Web应用可在cookie中提供标识信息,这些cookie在响应消息中由Web应用传送给客户机,然后客户机在其后的请求消息中在那些cookie中返回那个信息。以这种方式,客户机和服务器应用利用面向连接的信息,而不是在其上设计了HTTP的无连接的模型。
然而,使用cookie有若干缺点。首先,传送cookie信息可能增加包的大小,从而可能增加网络通信量。其次,人们不能在多个Web事务之间依靠cookie作为保持应用状态信息(如客户机标识)的手段。某些客户机设备没有能力存储cookie;这些设备包括无线应用设备(如Web电话、个人数字助理(或称“PDA”)等),它们通常使用无线会话协议(“WSP”)通过无线应用协议(“WAP”)网关访问因特网。WSP不支持cookie,而且即使使用另一个协议,这些设备中许多设备有严格限制的存储器和存储容量,因此没有足够的容量存储cookie。再有,cookie的使用已引起对保密性和安全性的关注,因此许多用户或者在他们的设备上打开“cookie提示”特性(使他们有选择地接受cookie,如果不是根本不接受的话)或者完全禁用对cookie的支持。
其他类型的应用可使用诸如唯一特定于应用的协议等技术在相继的连接存在期之间保持和传送关系状态信息,以此为依靠客户机和服务器应用合作的粘性路由选择问题提供解决方案。例如,来自Lotus开发公司的Lotus Notes软件产品要求客户机应用与服务器应用一起参与定位一个服务器应用的适当实例的过程,该特定客户机用户的电子邮件消息被存储在该适当实例上。(“Lotus Notes”是Lotus开发公司的注册商标)。在另一项合作技术中,服务器应用可把一个特殊的返回地址传送给客户机,然后该客户机把它用于其后的消息。
通常,一个客户机和服务器应用能知道一个持续存在的关系(即需要多个连接的关系)何时开始和何时结束。然而,对于普及的应用(如Web应用),客户机的数量比服务器的数量大许多个数量级。这样,尽管服务器应用有可能被重新设计以明确考虑持续存在的关系,但是期望现有的客户机软件会被类似地重新设计和重新布置是不切实际的(除非在很有限的情形中),所以,这一方法对于一般情况不是一个可行的解决方案。
粘性路由选择问题由于下列事实而被进一步复杂化有时从单个客户机并行建立多个TCP连接,从而能并行地做出相关请求和处理这些请求(例如,为更快地分发由多个元素构成的Web文档)。一个典型的浏览器在四个同时的TCP连接上并发地加载多达四个对象。当处理并行请求时,需要或希望有状态信息的那些应用中,不能允许工作负荷平衡实现去独立地选择服务器以处理每个连接请求。
在网络环境中进行工作负荷平衡的对粘性路由选择问题的一个现有技术解决方案是通过对工作负荷平衡实现进行配置以对来自预定客户机IP地址(或者或许是用子网地址指定的一组客户机IP地址)的连接请求进行特殊处置,从而建立客户机和服务器之间的亲合性。工作负荷平衡器的这一配置通常是一个手工过程而且需要大量管理性工作。因为它是具体地针对已知的客户机IP地址或子网,所以这一方法不能很好地扩展为一个通用的解决方案,也不能很好地适应于动态确定的客户机IP地址,这些IP地址不能事先被准确地预测。再有,这一配置方案是静态的,为改变特殊定义的处置,需要对工作负荷平衡器重新配置。这种静态的对定要向其提供特殊处置的特定客户机地址的指定可能会随着时间的流逝造成显著的工作负荷不平衡,因此这不是一个最佳解决方案。
在另一解决方案中,可以对客户机群静态地赋予不同的目标服务器名(它们被解析为服务器IP地址)。这一方案被许多全国性因特网服务提供商(“ISP”)使用,它要求配置客户机而不是配置服务器。
在网络环境中进行工作负荷平衡的对粘性路由选择问题的另一个现有技术方案是使用“定时的”亲合性。一旦一个服务器已被选定用于来自一个特定客户机IP地址(或者或许来自一个特定子网)的请求,在预定的固定时间段(它可以是可配置的)内到达的全部后续请求被自动发送到该同一个服务器。然而,网络通信量的动态性质使得很难准确地预测一个最佳的亲合性持续时间,所以使用定时的亲合性可能造成低效率和工作负荷不平衡。如果亲合性持续时间太短,则可能会过早地结束关系。如果亲合性持续时间太长,则会失去工作负荷平衡的目的。此外,当亲合性在不再需要时还在持续,则大量资源会被浪费。

发明内容
本发明的实施例用于指派从一个客户机到多个应用实例中各个实例的连接,这些应用实例从一个共享通信协议栈接收数据。该客户机与该多个应用实例中的相应一个实例之间的亲合性被定义。如果在该客户机和该多个应用实例中的相应一个实例之间定义了亲合性,则将在共享通信协议栈从该客户机接收的连接请求指派给该多个应用实例中的该相应一个实例。如果在该客户机和该多个应用实例中的相应一个实例之间没有定义亲合性,则将在共享通信协议栈从该客户机接收的连接请求分配给该多个应用实例中选定的一些实例。
在本发明的又一些实施例中,根据收到的来自该客户机的先前的连接请求动态地定义亲合性,以此提供定义该客户机和该多个应用实例的相应一个实例之间的亲合性。再有,还可通过接收来自该多个应用实例中一个实例的指示,该指示指出对来自该客户机的连接请求的亲合性,以此提供该客户机和该多个应用实例中的相应一个实例之间的亲合性。
在本发明的特定实施例中,根据客户机的源标识和来自该客户机的连接请求的目的地标识来定义亲合性。该客户机的源标识可以是该客户机的因特网协议(IP)地址,而来自该客户机的连接请求的目的地标识可以是该连接请求的一IP地址和端口。
在本发明的又一些实施例中,通过向该多个应用实例的相应一个应用实例所关联的侦听套接口(listening socket)提供从该客户机接收的连接请求,而将在共享通信协议栈从该客户机接收的连接请求指派给该多个应用实例中的该相应一个应用实例,如果在该客户机和该多个应用实例中的该相应一个应用实例之间的亲合性被定义的话。通过向该多个应用实例中的一个选定实例所关联的侦听套接口提供从该客户机接收的连接请求,而将在共享通信协议栈从该客户机接收的连接请求分配给这多个应用实例中的一些选定实例,如果没有定义该客户机和该多个应用实例中的相应一个应用实例之间的亲合性的话。
在本发明的另一些实施例中,该共享通信协议栈是在一个系统复合体(sysplex)中的一个目标通信协议栈。在这样一些实施例中,对于该系统复合体的一个路由选择通信协议栈,与这多个应用实例的一个实例关联的亲合性定义可以被识别,以便其后的与该亲合性定义关联的连接请求被提供给该目标通信协议栈。
如本领域技术人员将进一步理解的那样,尽管上文的描述主要针对方法方面,但本发明可以实现为方法、装置/系统和/或计算机程序产品。


图1是根据本发明的实施例引入应用实例级亲合性的系统的方框图;图2是流程图,其显示根据本发明实施例的操作;图3是根据本发明的又一些实施例引入应用级亲合性的系统复合体的方框图;图4是流程图,其显示根据本发明特定实施例的操作;以及图5是流程图,其显示根据本发明特定实施例的进一步操作。
具体实施例方式
现在将参考附图更充分地描述本发明,在这些附图中显示本发明的示例性实施。然而,本发明可以以许多不同的形式实现,不能被认作是限定于这里举出的实施例;相反,提供这些实施例以便使这一公开是彻底的和完全的,并将向本领域技术人员充分地传达本发明的范围。各图中相同的标号代表相同的部件。
如本领域技术人员将会理解的那样,本发明可以作为方法、数据处理系统或计算机程序产品来实现。因此,本发明可以采取完全硬件实施例、完全软件实施例或把软件和硬件方面组合起来的实施例等形式,在这里所有这些都被通称为“电路”或“模块”。再有,本发明可采取计算机可用存储介质上的计算机程序产品的形式,该计算机可用介质具有包括在该介质中的计算机可用程序代码。任何适当的计算机可读介质都可利用,包括硬盘、CD-ROM、光存储设备、诸如支持因特网或内联网的传输介质或磁存储设备。
用于实现本发明操作的计算机程序代码可以以面向对象的编程语言,如Java、Smalltalk或C++来编写。然而,用于实现本发明操作的计算机程序代码也可以以传统的过程编程语言,如“C”编程语言来编写。该程序代码可以完全在用户计算机上执行,部分地在用户计算机上执行,作为独立的软件包,部分地在用户计算机上和部分地在远程计算机上执行或者完全地在远程计算机上执行。在后一种情况中,远程计算机可以通过局域网(LAN)或广域网(WAN)连接到用户计算机,或者这是要与一外部计算机的连接(例如,使用因特网服务提供商通过因特网的连接)。
下面参考根据本发明实施例的方法,装置(系统)和计算机程序产品的流程图和/或方框图描述本发明。将会理解,流程图和/或方框图的每一块以及流程图和/或方框图的块组合能以计算机程序指令来实现。这些计算机程序指令可提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生一个机器,使得通过该计算机或其他可编程数据处理装置的处理器执行的这些指令创建实现在这些流程图和/或方框图块中指定的功能/动作的手段。
这些计算机程序指令还可以存储在计算机可读存储器中,它们能指引计算机或其他可编程数据处理装置以特定方式发挥其功能,使得存储在该计算机可读存储器中的指令构成一个包括指令单元的制造物,该指令单元实现在这些流程图和/或方框图块中指定的功能/动作。
这些计算机程序指令还可以加载到计算机或其他可编程数据处理装置上,以使在该计算机或其他可编程装置上执行一系列操作步骤以产生一个计算机实现的过程,使得在该计算机或其他可编程装置上执行的指令提供实现在这些流程图和/或方框图块中指定的功能/动作的步骤。
现在将参考附图描述本发明的各种实施例。然而,本发明不应被认为是限定于用在诸如图1和图3中显示的那些系统中,而是可以用于采用应用实例级工作负荷分配的任何系统之中。
本发明的实施例可以利用诸如在共同被转让的美国专利公开US2002/0143965A1和US2002/0143953A1中描述的亲合性技术,这二者在2002年10月3日公开,它们所公开的内容在这里被纳入,如同它们被整体列出那样,这些技术用于单个数据处理系统上的多个应用实例。
本发明的实施例可提供在网络环境中改进对相关的连接请求消息的处置的技术,该网络环境使用工作负荷分配,如工作负荷平衡(其可以等效地被称作“负荷平衡”)以在数据处理系统(如服务器)的多个应用实例之间分配工作负荷。因为绕过工作负荷平衡功能可能导致在其中工作负荷分配失去平衡的整个系统,所以所公开的技术被定义为只当特定应用实例需要时才能发生这种绕过。这样,到来的不需这种特殊处置的连接请求都经历工作负荷平衡,从而以对变化的网络环境作出动态反应的方式在服务器上的各应用实例之间分担工作负荷。
在本发明的特定实施例中,一个特定应用的多个实例中的各个实例可在运行时间动态地确定是否期望与一特定源(例如,一个特定客户机或子网)的关系要包含多个相继的连接请求,然后指定那些相继的请求应被引导到该数据处理系统上的该同一个应用实例。在本发明的某些实施例中,亲合性有一最长持续时间,在这一持续时间之后该亲合性结束,于是用于保持该亲合性的资源被释放。为此目的,可使用一种超时机制。多个应用实例中的一个特定实例也可被允许使用特定于应用的考虑,明确地取消一亲合性或延长一亲合性。在若干情形下延长亲合性是有用的。例如,一个应用实例可能意识到已经发生了对于一特定关系的大量处理,而且很可能对于这一关系的处理接近结束。通过延长亲合性,有可能完成该处理(从而避免使用固定持续时间亲合性的现有技术系统中遇到的低效率)。在与一客户机的正持续的关系出乎意料地结束这种情况下(例如,因为该客户机应用失败或该用户改变了关于继续运行的想法),取消一亲合性的能力(或者明确地取消,或者因为它的最长持续时间已超过)是特别有好处的。还可能希望根据从该客户机接收的消息来取消一亲合性,该消息指示不再需要该持续性关系。
在本发明的另一些实施例中,一个特定服务器应用的各实例能指定发自一个特定客户机(以及可选地,发自那台客户机的指定端口)的连接请求要被自动地路由到这一服务器应用的同一实例,如果那个实例当前正在处置来自这同一客户机的其他这类请求的话。如先前描述的本发明的实施例中的情况那样,相关连接请求中的第一个请求要经历正常的工作负荷平衡。
图1显示引入本发明实施例的一个示例系统。如图1中所见,多个客户机处理器110、110’和110”建立与服务器120的通信协议栈121的通信连接。服务器120包括同一应用的多个实例124、124’和124”,它们共享通信协议栈121;以及工作负荷分配功能122,它在应用实例124、124’和124”之间分配从这些连接到共享通信协议栈121的通信。客户机处理器110、110’和110”可以是能建立与另一数据处理系统的通信连接的任何类型数据处理系统,包括例如通用数据处理系统,如个人计算机、膝上计算机等、个人数字助理、数据使能电话或其他普及计算设备,以及定制数据处理系统,如销售终端点、测试设备、监视设备等。类似地,服务器120可以是能支持同一应用的多个实例和能执行这里描述的为客户机连接提供亲合性的操作的任何类型数据处理系统。
尽管对本发明实施例的描述是参考图1所示特定系统配置,但如本领域技术人员将理解的那样,其他配置也能采用,而得益于本发明的教导。这样,本发明不应被认为是限定于图1的配置,而是要包括能执行这里所述操作的任何配置。
根据本发明实施例的服务器120的操作示于图2中。当一个客户机(如客户机110)利用通信协议栈121向服务器120请求一个连接时,该连接被建立起来,并且工作负荷分配功能122确定用于该连接的通信应被提供给绑定在共享通信协议栈121的应用实例124、124’或124”中的哪一个。这样,如在图2中所见,工作负荷分配功能122确定该连接请求是否来自一个先前的客户机(块200)。一个先前的客户机可以是已经存在与通信协议栈121的连接的客户机或者最近曾存在连接的客户机(例如先前曾建立连接并在一个预定时间段内终止)。
如果该连接请求不是来自一个先前的客户机(块200),则常规的工作负荷平衡技术,如循环(round-robin)技术或更复杂的技术可用于把该连接指派给应用实例124、124’和124”中的一个特定实例(块206)。例如,可通过维护一个连接路由选择表并更新该连接路由选择表以反映从客户机源地址到目标地址和端口的连接要被引导到与一特定应用实例关联的唯一侦听套接口,来提供该连接的这类通信路由选择。
工作负荷分配功能121在应用于该客户机正与之通信的应用时还可检验客户机亲合性是否已被定义(块208)。对一客户机亲合性的适用性的这样一种标识可以预先定义或者动态建立。例如,对于一个特定应用,可对全部客户机对全部后续连接建立亲合性,或者对到特定端口或端口组的连接建立亲合性。替代或附加的作法是,一旦已接收一个特定的通信,则可由一个应用向工作负荷分配功能指定亲合性。例如,可在从客户机接收一个“登录”通信之前使用工作负荷分配功能分配来自这同一客户机的连接请求,然后为在成功“登录”通信序列之后的连接建立亲合性。在任何情况下,如果为该客户机指定了客户机亲合性(块208),则例如通过维护一个亲合性表并向该亲合性表添加客户机标识信息,来为其后的连接标识出该客户机的亲合性(块210)。客户机亲合性表也可以与前述连接路由选择表合并。否则,由工作负荷分配功能122以常规的方式继续进行处理连接的操作。
如果该连接请求是来自一个先前的客户机(块200),则确定对于请求该连接的客户机是否定义了客户机亲合性(块202)。如果尚未定义客户机亲合性(块202),则可使用常规的工作负荷平衡把该连接指派给应用实例124、124’和124”中的一个特定实例(块206)。如果已对该客户机连接请求定义了客户机亲合性(块202),则可绕过常规的工作负荷平衡,将该连接指派给该客户机亲合性所指定的特定应用实例。如前文讨论的那样,可以按逐个客户机的方式或按逐个连接请求的方式定义客户机亲合性,而且可以静态地或动态地定义。再有,可以对预先定义的可延长的时间段,对预定数量的连接请求和/或对所有的后续连接请求来定义客户机亲合性。这样,例如工作负荷分配功能122可以询问一个客户机亲合性表以根据客户机源标识(如源地址)确定对一客户机是否存在一个条目,以及确定是否存在与该连接的目的地标识(如目的地地址和/或连接端口)对应的条目。该工作负荷分配功能122还可以确定该连接请求是否落入一个预先定义的时间和/或连接个数之中以便该客户机亲合性是有效的。或者可以周期性地评估客户机亲合性信息并去掉无效的客户机亲合性信息,以使客户机亲合性表只包含关于有效亲合性的客户机亲合性信息。
作为举例,参考图1,如果客户机110向服务器120发出一个初始连接请求,则共享通信协议栈121接收该连接请求,且工作负荷分配功能122确定应用实例124、124’或124”中哪一个要接收与所请求的连接关联的通信。因为它是一个初始连接请求,工作负荷分配功能122采用常规的工作负荷分配技术选择应用实例124、124’或124”中之一。这样,可选择应用实例124。一个连接路由选择表可被更新,以反映用于该连接的通信要被路由到与应用实例124关联的侦听套接口。当收到来自客户机110的一个后续连接请求时,如果对客户机110指定了客户机亲合性,则工作负荷分配功能122将绕过对该连接的通信的常规分配,并将根据对客户机110指定的客户机亲合性将该连接指派给应用实例124。这样,便可为在单处理器上执行和/或共享一个通信协议栈的一个应用的多个实例提供工作负荷分配和亲合性。
本发明的又一些实施例可在例如图3描绘的联网环境中工作。多个数据处理系统20、24、28、32和36被显示为互连。这一互连在这里称作“系统复合体(sysplex)”,并表示为单元10。图3中的示例环境说明本发明如何可以与IBM的系统复合体分配器一起使用。然而,这里公开的教导也可以有利地应用于其他网络环境,而且这些教导如何适应于这些其他环境对于本领域普通技术人员是显然的。
数据处理系统20、24、28、32和36可以是在一个或多个计算机系统上执行的操作系统映像,如MVSFTM映像。(“MVS”是IBM的一个商标)。尽管将主要参考在OS/390和/或z/OS环境中执行的MVS操作系统来描述本发明,但数据处理系统20、24、28、32和36可以是大型计算机、中型计算机、服务器或能支持这里公开的亲合性技术的其他系统。因此,本发明不应被认为是限定于系统复合体分配器环境或限定于执行MVS或使用OS/390的数据处理系统。
如图3中进一步显示的那样,数据处理系统20、24、28、32和36有与其关联的通信协议栈22、26、30、34和38,为优选实施例的目的,优选地,它们是TCP/IP栈。如在图3中进一步看到的那样,一个数据处理系统,如系统32,可以引入多个通信协议栈(在本例中显示为栈34和38)。通信协议栈22、26、30、34和38已被修改以引入这里描述的亲合性管理逻辑。
尽管图3中所示的每个通信协议栈22、26、30、34和38被假定为引入亲合性处置逻辑70,但并不严格要求在一个系统复合体或网络环境中的所有这类栈都引入这一逻辑。这样,本发明的优点可以以向后兼容的方式实现,藉此使不认识这里定义的亲合性消息的任何栈可以忽略那些消息。
如在图3中进一步看到的那样,通信协议栈22、26、30、34和38可通过系统复合体10的耦合机制40彼此通信。通过一个耦合机制进行通信的实例是在System/390 Parallel Sysplex中由MVS操作系统提供的机制,称作“MVS XCF消息传送”,这里“XCF”代表“交叉耦合机制(Cross-Coupling Facility)”。MVS XCF消息传送提供支持一个系统复合体内运行的各授权程序之间的合作的功能。当使用XCF作为协作机制时,栈优选地使XCF消息传送技术彼此通信。这类技术在本领域是公知的,这里将不详细描述。通信协议栈22、26、30、34和38还可与外部网络44,如因特网、内联网或外联网、局域网(LAN)和/或广域网(WAN)进行通信。在一个MVS系统中,企业系统连接(“ESCON”)42或其他机制可用于动态连接多个数据处理系统20、24、28、32和36。所以,客户机46可利用网络44通过通信协议栈22、26、30、34和38与系统复合体10中一个MVS映像上的一个应用通信。
在本发明的特定实施例中,每个通信协议栈22、26、30、34和38有与其关联的由该栈负责的地址(如IP地址)列表。还有,每个数据处理系统20、24、28、32和36或MVS映像可以在系统复合体10内有与其关联的唯一标识符。优选地,在对通信协议栈22、26、30、34和38初始化时,对这些栈配置该栈将负责的地址并向这些栈提供该数据处理系统的MVS映像的标识符。
应该指出,尽管在系统复合体内的目的地地址在这里被称作“IP”地址,但优选地,这些地址是某种虚拟IP地址,如在美国专利(序列号09/640,409)中描述的动态虚拟IP地址(“DVIPV”),该专利被转让给IBM,且其标题为“Methods,Systems and Computer Program Products forCluster Workload Distribution(用于集群工作负荷分配的方法、系统和计算机程序产品)”,该专利公开的内容在这里被全文引入作为参考,或者一个等效于DVIPA的回环(loopback),藉此使该地址看起来在不只一个栈上有效,尽管该网络只知道向一个地方发送以那个IP地址为目的地的IP包。如在DVIPA专利中教导的那样,一个IP地址不是以DEVICE(设备)、LINK(链路)和HOME(主机)语句的正常组合在配置简档中被静态定义的,而是代之以在需要时被创建(例如当系统复合体分配器需要时)。
一个工作负荷平衡功能,如工作负荷管理(“WLM”),可用于提供输入,该输入当使用工作负荷平衡技术为一个客户机请求选择一个初始目的地时被使用,WLM用于OS/390和/或z/OS TCP/IP实现中以获得关于系统负荷和系统容量的运行时信息。这种工作负荷平衡功能可由路由选择协议栈提供,如美国专利(序列号09/640,409)中描述的那样。
如图3中进一步显示的那样,一个MVS映像的单个协议栈可以有执行和利用该公用协议栈的同一应用的多个实例。例如,MVS2的协议栈26被显示为向APP A的两个实例提供该协议栈。类似地,MVS3的协议栈30被显示为向APP B的三个实例提供该协议栈。在这种情况中,工作负荷分配功能70可与该协议栈关联并可利用客户机亲合性信息72,从而有选择地利用该工作负荷分配功能为来自客户机如客户机46的连接请求选择应用实例。
再有,在管理亲合性时,可在路由选择栈上和在宿主目标栈上的连接路由选择散列表(CRHT)中添加一个条目。该条目可指定客户机(在连接请求中的源IP地址)和服务器之间的亲合性。在路由选择栈中,亲合性以唯一IP地址指定宿主目标栈,如同使用常规的连接平衡系统,如CiscoMNLB或WebSphere边缘服务器网络调度器那样。在目标栈上,该条目指定一个特定应用实例侦听套接口队列。当一个连接请求到达目标栈时,首先CRHT被检索以寻找一个匹配条目,这一匹配条目通常在正常情况下不会找到。然后CRHT被检索以寻找一个亲合性条目,且不考虑客户机(源)端口。如果发生亲合性匹配,该连接请求被指派给指定的实例侦听套接口。如果没有发生匹配,则该连接请求被指派给侦听服务器实例之一,以平衡各实例之间的有效连接。一个亲合性条目可存储在该目标栈CRHT中。即使当只有一个有效侦听服务器应用实例时,也可在目标栈上保持这样的亲合性信息。这样,允许另一实例在任何时刻启动。即使一个新的实例启动之后,仍保持对现有实例的客户机亲合性。
当路由选择栈发生中断故障时,该目标栈把它的整个CRHT传送给备用路由选择栈,包括亲合性。该接收备用栈将有效连接和亲合性条目存储在它的整个路由选择CRHT中,指定连接条目和亲合性二者为指向把该条目发送到该备用路由选择栈的宿主目标栈。以这种方式,即使当存在路由选择栈故障时也能保持亲合性。
如上所述,本发明的实施例可提供对通信协议栈,如TCP栈的协作,这一协作以两个阶段的方式保持对一个应用的特定实例的亲合性首先,把连接请求路由到适当的目标栈,然后把来自客户机的连接请求路由到适当的侦听服务器实例。这允许该服务器应用的多个实例被容纳在单个操作系统和TCP/IP栈中。通过保持特定客户机和相应的特定服务器实例之间的亲合性,这样的系统可以更有效地使用系统资源同时保证正常的应用功能。
图4显示根据本发明特定实施例的操作,这些操作用于根据亲合性信息的应用描述和/或亲合性信息的路由选择通信协议栈描述,动态管理与一通信协议栈关联的亲合性信息。例如,这样的操作可由通信协议栈26、30和/或工作负荷分配功能70来完成。如图4中所见,管理亲合性信息72的协议栈26、30或工作负荷分配功能70从应用实例(如APP A或APP B)接收一个消息,或者可从路由选择通信协议栈接收一个消息(块400)。这种消息传送可以是基于美国公开的专利申请US2002/0143965A1和US2002/0143953A1中描述的消息传送。该消息被评估,以确定该消息是否创建与一客户机关联的亲合性(块402)。如果该消息是要创建一亲合性(块402),则在该通信协议栈的连接路由选择散列表(CRHT)中的亲合性信息被更新,以反映来自一个客户机的连接的亲合性(块408)。在CRHT中可生成一个条目,其指出该客户机亲合性应用于一个特定的源IP地址、目的地IP地址和目的地端口。这样,该条目指出来自同一个源IP地址、目的地IP地址和目的地端口三元组的后续连接请求将被路由到这同一应用实例。该亲合性指示可以指定一个时间限制、该亲合性的连接请求数和/或对其使用该亲合性的连接请求的特定特性。再有,该亲合性信息还可应用于来自一个客户机的多个连接请求,并可例如使用通配符来指定该亲合性信息,如用于目的地端口标识的指定。
如果该消息不要创建一个亲合性(块402),则该消息被评估以确定它是否要修改已存在的亲合性信息(块404)。如果该消息是要修改已存在的亲合性信息(块404),则CRHT被以修改后的信息更新(块410)。如果该消息不是要修改已存在的亲合性信息(块404),则该消息被评估以确定它是否要删除已存在的亲合性信息(块406)。如果该消息是要删除已存在的亲合性信息(块406),则该亲合性信息从CRHT中被移除(块412)。
图4所示操作可提供亲合性的动态创建和/或管理。也可提供静态亲合性。
图5是流程图,其显示引入本发明实施例的通信协议栈的操作。如图5中所见,当由通信协议栈接收来自一客户机的通信时,该通信被评估以确定它是否是一个连接请求(块500)。如果该通信不是一个连接请求(块500),则在CRHT中已经存在用于该通信的一个条目,且该通信被转发到由对应于该客户机源地址和该目的地IP地址和端口的CRHT条目所指定的应用买例(块506)。
如果该通信是一个连接请求(块500),则确定是否对来自该客户机的连接请求指定了亲合性(块502)。这一确定可通过检索CRHT以查找亲合性条目来完成,不考虑该客户机(源)端口。如果存在一个条目,则对该连接请求指定了亲合性。如果对该连接请求指定了亲合性(块502),则该连接被指派给该应用实例的指定侦听套接口,而CRHT可被更新以反映为未来通信的这一指派(块508)。该连接请求被转发到指定的应用实例(块506)。
如果对该连接请求没有指定亲合性(块502),则根据工作负荷分配选择一个应用实例,且该连接被指派给所选定的应用实例的侦听套接口(块504)。CRHT还可被更新以反映为未来通信的这一指派(块504)。可选地,如果为该应用指定了亲合性,则也可在CRHT中生成一个亲合性条目。该连接请求被转发到指定的应用实例(块506)。
尽管已参考在工作负荷分配功能内对客户机亲合性的维持和利用描述了本发明的实施例,但是,考虑了本公开的本领域技术人员将会理解,可以与工作负荷分配功能分开而单独提供对连接进行分配的这种客户机亲合性控制。再有,尽管工作负荷分配功能70和客户机亲合性信息72被显示为通信协议栈的一部分,但这些功能和/或信息可以与通信协议栈分开而单独提供。
图1至图5的流程图和方框图显示了根据本发明各种实施例的用于应用实例级亲合性的系统、方法和计算机程序产品的各种可能的实现的体系结构、功能和操作。在这方面,流程图或方框图中的每一块可以代表代码的模块、片段或部分,其包含一个或多个用于实现指定的逻辑功能的可执行指令。还应该指出,在某些可选的实现中,在块中标明的功能发生顺序可能不同于图中所示顺序。例如,相继显示的两个块可能在事实上基本上并发执行,或者它们有时可能以相反的顺序执行,这取决于所涉及的功能。还会理解,在方框图和/或流程图中的每个块,及在方框图和/或流程图中的块组合,能由专用的基于硬件的系统实现,这些系统完成指定的功能或动作,或者由专用硬件和计算机指令的组合来实现。
在附图和说明中,已经公开了本发明的典型示例性实施例,尽管利用了专用术语,但它们只是在普通的和描述性的意义上被使用而不是为了进行限制,本发明的范围由下文中的权利要求提出。
权利要求
1.一种指派从一客户机到多个应用实例中各个应用实例的连接的方法,这些应用实例从一个共享通信协议栈接收数据,该方法包括以下步骤定义该客户机和该多个应用实例中的相应一个应用实例之间的亲合性;如果在该客户机和该多个应用实例中的相应一个应用实例之间定义了亲合性,则将在共享通信协议栈从该客户机接收的连接请求指派给该多个应用实例中的该相应一个应用实例;以及如果在该客户机和该多个应用实例中的相应一个应用实例之间没有定义亲合性,则将在共享通信协议栈从该客户机接收的连接请求分配给该多个应用实例中的选定的一个应用实例。
2.权利要求1的方法,其中定义该客户机和该多个应用实例中的相应一个应用实例之间的亲合性包括根据从该客户机接收的先前的连接请求动态地定义亲合性。
3.权利要求1的方法,其中定义该客户机和该多个应用实例中的相应一个应用实例之间的亲合性包括从该多个应用实例中的一个实例接收一指示,该指示指出对来自该客户机的连接请求的亲合性。
4.权利要求1的方法,其中所述亲合性是根据该客户机的源标识和来自该客户机的连接请求的目的地标识定义的。
5.权利要求4的方法,其中所述客户机的源标识包括该客户机的因特网协议(IP)地址,并且所述来自该客户机的连接请求的目的地标识包括该连接请求的IP地址和端口。
6.权利要求1的方法,其中如果在该客户机和该多个应用实例中的相应一个应用实例之间定义了亲合性则将在共享通信协议栈从该客户机接收的连接请求指派给该多个应用实例中的该相应一个应用实例,包括将从该客户机接收的连接请求提供给与该多个应用实例中的该相应一个应用实例关联的侦听套接口;以及其中如果在该客户机和该多个应用实例中的相应一个应用实例之间没有定义亲合性则将在共享通信协议栈从该客户机接收的连接请求分配给该多个应用实例中的选定的一个应用实例,包括将从该客户机接收的连接请求提供给与该多个应用实例中的选定的一个应用实例关联的侦听套接口。
7.权利要求1的方法,其中所述共享通信协议栈包括在一系统复合体内的一目标通信协议栈,该方法进一步包括将与该多个应用实例之一关联的亲合性定义标识到该系统复合体的路由选择通信协议栈,从而使与该亲合性定义关联的后续连接请求提供给该目标通信协议栈。
8.一种用于指派从一客户机到多个应用实例中各个实例的连接的系统,这多个应用实例从共享通信协议栈接收数据,该系统包括用于定义该客户机和该多个应用实例中的相应一个应用实例之间的亲合性的装置;用于如果在该客户机和该多个应用实例中的相应一个应用实例之间定义了亲合性则将在共享通信协议栈从该客户机接收的连接请求指派给该多个应用实例中的该相应一个应用实例的装置;以及用于如果在该客户机和该多个应用实例中的相应一个应用实例之间没有定义亲合性则将在共享通信协议栈从该客户机接收的连接请求分配给该多个应用实例中的选定的一个应用实例的装置。
9.权利要求8的系统,其中所述用于定义该客户机和该多个应用实例中的相应一个应用实例之间的亲合性的装置包括根据从该客户机接收的先前的连接请求动态地定义亲合性的装置。
10.权利要求8的系统,其中所述用于定义该客户机和该多个应用实例中的相应一个应用实例之间的亲合性的装置包括从该多个应用实例中的一个实例接收一指示的装置,该指示指出对来自该客户机的连接请求的亲合性。
11.权利要求8的系统,其中所述亲合性是根据该客户机的源标识和来自该客户机的连接请求的目的地标识定义的。
12.权利要求11的系统,其中所述客户机的源标识包括该客户机的因特网协议(IP)地址,并且所述来自该客户机的连接请求的目的地标识包括该连接请求的IP地址和端口。
13.权利要求8的系统,其中所述用于如果在该客户机和该多个应用实例中的相应一个实例之间定义了亲合性则将在共享通信协议栈从该客户机接收的连接请求指派给该多个应用实例中的该相应一个实例的装置包括用于将从该客户机接收到的连接请求提供给与该多个应用实例中的该相应一个应用实例关联的侦听套接口的装置;以及其中所述用于如果在该客户机和该多个应用实例中的相应一个应用实例之间没有定义亲合性则将在共享通信协议栈从该客户机接收的连接请求分配给该多个应用实例中的选定的一个应用实例包括将从该客户机接收的连接请求提供给与该多个应用实例中的选定的一个应用实例关联的侦听套接口的装置。
14.权利要求8的系统,其中所述共享通信协议栈包括在一系统复合体内的一目标通信协议栈,该系统进一步包括用于将与该多个应用实例之一关联的亲合性定义标识到该系统复合体的路由选择通信协议栈,从而使与该亲合性定义关联的后续连接请求提供给该目标通信协议栈的装置。
15.一种用于指派从一客户机到多个应用实例中各个应用实例的连接的计算机程序产品,这多个应用实例从共享通信协议栈接收数据,该计算机程序产品包括在其中具有计算机可读程序代码的计算机可读介质,该计算机可读程序代码包括被配置成定义该客户机和该多个应用实例中的相应一个应用实例之间的亲合性的计算机可读程序代码;被配置成如果在该客户机和该多个应用实例中的相应一个应用实例之间定义了亲合性则将在共享通信协议栈从该客户机接收的连接请求指派给该多个应用实例中的该相应一个应用实例的计算机可读程序代码;以及被配置成如果在该客户机和该多个应用实例中的相应一个应用实例之间没有定义亲合性则将在共享通信协议栈从该客户机接收的连接请求分配给该多个应用实例选定的一个应用实例的计算机可读程序代码。
16.权利要求15的计算机程序产品,其中所述被配置成定义该客户机和该多个应用实例的相应一个应用实例之间的亲合性的计算机可读程序代码包括被配置成根据从该客户机接收的先前的连接请求动态地定义亲合性的计算机可读程序代码。
17.权利要求15的计算机程序产品,其中所述被配置成定义该客户机和该多个应用实例的相应一个应用实例之间的亲合性的计算机可读程序代码包括被配置成从多个应用实例中的一个实例接收一指示的计算机程序代码,该指示指出对来自该客户机的连接请求的亲合性。
18.权利要求15的计算机程序产品,其中所述亲合性是根据该客户机的源标识和来自该客户机的连接请求的目的地标识定义的。
19.权利要求18的计算机程序产品,其中所述客户机的源标识包括该客户机的因特网协议(IP)地址,并且所述来自该客户机的连接请求的目的地标识包括该连接请求的IP地址和端口。
20.权利要求15的计算机程序产品,其中所述被配置成如果在该客户机和该多个应用实例中的相应一个应用实例之间定义了亲合性则将在共享通信协议栈从该客户机接收的连接请求指派给该多个应用实例中的该相应一个应用实例的计算机可读程序代码包括被配置成将从该客户机接收的连接请求提供给与该多个应用实例中的该相应一个应用实例关联的侦听套接口的计算机可读程序代码;以及其中所述被配置成如果在该客户机和该多个应用实例中的相应一个应用实例之间没有定义亲合性则将在共享通信协议栈从该客户机接收的连接请求分配给该多个应用实例中的选定的一个应用实例的计算机可读程序代码包括被配置成将从该客户机接收的连接请求提供给与该多个应用实例中的选定的一个应用实例关联的侦听套接口的计算机可读程序代码。
21.权利要求15的计算机程序产品,其中所述共享通信协议栈包括在一系统复合体内的目标通信协议栈,该计算机程序产品进一步包括,被配置成将与该多个应用实例之一关联的亲合性定义标识到该系统复合体的路由选择通信协议栈的计算机可读程序代码,从而使与该亲合性定义关联的后续连接请求提供给该目标通信协议栈。
22.一种用于指派从一客户机到多个应用实例中各个应用实例的连接的系统,这多个应用实例从共享通信协议栈接收数据,该系统包括一工作负荷分配电路,被配置成存储该客户机和该多个应用实例中的相应一个应用实例之间的亲合性定义,如果在该客户机和该多个应用实例中的相应一个应用实例之间定义了亲合性则将在共享通信协议栈从该客户机接收的连接请求指派给该多个应用实例中的该相应一个应用实例,如果在该客户机和该多个应用实例中的相应一个应用实例之间没有定义亲合性则将在共享通信协议栈从该客户机接收的连接请求分配给该多个应用实例中选定的一个应用实例。
全文摘要
本发明提供了一种通过定义客户机和从共享通信协议栈接收数据的多个应用实例中的相应一个应用实例之间的亲合性,来指派从客户机到该多个应用实例中各个应用实例的连接的方法和系统。如果在该客户机和该多个应用实例中的相应一个应用实例之间定义了亲合性,则将在共享通信协议栈从该客户机接收的连接请求指派给该多个应用实例中的该相应一个应用实例。如果在该客户机和该多个应用实例中的相应一个应用实例之间没有定义亲合性,则将在共享通信协议栈从该客户机接收的连接请求分配给该多个应用实例中的选定的一个应用实例。
文档编号H04L29/06GK1592303SQ200410048058
公开日2005年3月9日 申请日期2004年6月10日 优先权日2003年8月28日
发明者J·A·小艾肯, 廖素珠, M·W·麦克林托克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1