服务的负载平衡的制作方法

文档序号:7736295阅读:272来源:国知局
专利名称:服务的负载平衡的制作方法
服务的负载平衡
背景技术
1.背景和相关技术计算机系统和相关技术影响社会的许多方面。的确,计算机系统处理信息的能力 已转变了我们生活和工作的方式。计算机系统现在通常执行在计算机系统出现以前手动执 行的许多任务(例如,文字处理、日程安排和账目管理等)。最近,计算机系统已彼此耦合并 耦合到其它电子设备以形成计算机系统和其它电子设备可以在其上传输电子内容的有线 和无线计算机网络。因此,许多计算任务的执行被分布在多个不同的计算机系统和/或多 个不同的计算组件上。在许多环境内,多个远程用户通过集中式远程位置访问应用和数据。例如,多个客 户机机器能通过因特网访问Web服务。在许多环境内,并且尤其对于具有增加的工作负载 的服务(或其他应用),服务(或应用)的多个实例被创建以提供更好的用户体验。然而, 如果总体工作负载没有被相对均勻地跨服务的多个实例分布,那么具有服务的多个实例获 益很少。例如,如果一个实例(或实例的小的子集)是过载的而与此同时其他实例未被充 分使用,那么具有多个实例的益处被显著降低。由此,多个实例服务器环境通常包括某些类型的负载平衡技术来更均勻地在跨服 务的实例之间分布工作负载。例如,当接收到对于服务的通信时,负载平衡器能将通信路由 到具有已降低的负载的服务的实例。由此,服务的总体工作负载能在跨服务的多个实例更 均勻地分布。然而,确定如何路由新接收到的通信主要是基于当接收到新的通信时的实例工作 负载。例如,可存在一具有与服务的特定实例的先前关于服务的进行中的使用的通信的客 户机。然而,当客户机发送新的关于服务的进行中的使用的通信时,基本上仅仅基于当该新 的通信被接收到时的工作负载来将该新的通信路由到服务的不同实例。这对于较长时间运 行和/或有状态服务而言不是最优的。在客户机和有状态服务之间的通信能包括一系列请求/回复序列。在各个请求/ 回复序列之间,服务能保持关于通信的某些状态,诸如例如,在等待进一步的客户机请求的 同时维护中间值。然而,如果保持了状态的服务的实例经历了随后在请求/回复序列之间 的高工作负载,则负载平衡器可向服务器的不同实例发送进一步的客户机请求。不幸的是, 当通信从服务的一实例切换到服务的另一实例时,服务的该另一实例可能不知道通信的已 保持的状态。如此,该另一实例被请求重新计算已保持的状态。相比于允许保持了状态的实例处理通信中的下一客户机请求,在新的实例上重新 加载(已经保持的)状态消耗更多的资源。由此,将通信转向新的实例会不必要地增加服 务的总体工作负载。进一步,由于已保持的状态不被用于与客户机的进一步通信,因此保持 了状态的实例的存储器资源实质上被浪费。简要概述本发明涉及用于服务的负载平衡的方法、系统和计算机程序产品。在某些实施例 中,应用负载平衡器接收被定向到应用第一客户机发起消息。第一客户机发起消息是被包括在消息序列中的多个消息里的第一消息(例如,激活消息)。应用负载平衡器基于第一客 户机发起消息的特征向包括在消息序列中的多个消息指派指定标识符。应用负载平衡器确 定所指派的标识符没有被映射到应用的实例。应用负载平衡器根据负载平衡算法将指定标识符映射到应用的指定实例。映射帮 助跨应用的多个实例平衡应用的负载。应用负载平衡器将消息发送到应用的指定实例。应用负载平衡器在接收到第一客户机发起消息之后接收被定向到应用的第二客 户机发起消息。应用负载平衡器基于第二客户机发起消息的特征向第二客户机发起消息指 派指定标识符。应用负载平衡器基于指定标识符到应用的指定实例的映射,将第二客户机 发起消息和第一客户机发起的息相关联(例如,产生与激活消息相关联的相关消息)。应用 负载平衡器响应于该相关联,向应用的指定实例发送第二客户机发起消息。在其他实施例中,应用负载平衡器从应用的多个实例的指定实例接收应用实例发 起消息。应用实例发起消息被定向到另一应用。应用负载平衡器基于应用实例发起消息的 特征向应用实例发起消息指派指定标识符。应用负载平衡器将指定标识符映射到应用的指 定实例以跨应用的多个实例平衡应用的负载。映射帮助跨应用的多个实例平衡应用的负 载。应用负载平衡器将消息发送到该另一应用。应用负载平衡器从该另一应用接收被 定向到应用的返回消息。应用负载平衡器基于返回消息的特征向返回消息指派指定标识 符。应用负载平衡器基于指定标识符到应用的指定实例的映射,将返回消息与应用实例发 起消息相关联。应用负载平衡器将返回消息发送到应用的指定实例。提供本发明内容是为了以简化的形式介绍将在以下具体实施方式
中进一步描述 的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用 于帮助确定所要求保护的主题的范围。本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本说明书将是显 而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求 书中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所 附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。附图简述为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出 的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图 只描绘了本发明的各典型实施例,并且因此不被认为是对其范围的限制,将通过使用附图 并利用附加特征和细节来描述和解释本发明,在附图中

图1示出了便于服务的负载平衡的示例计算机构架的视图。图2示出了便于服务的负载平衡的示例计算机构架的视图。图3示出了用于服务的负载平衡的示例方法的流程图。图4示出了用于服务的负载平衡的示例方法的流程图。详细描述本发明涉及用于服务的负载平衡的方法、系统和计算机程序产品。在某些实施例 中,应用负载平衡器接收被定向到应用的第一客户机发起消息。第一客户机发起消息是被 包括在消息序列中的多个消息里的第一个消息(例如,激活消息)。应用负载平衡器基于第一客户机发起消息的特征向包括在消息序列中的多个消息指派指定标识符。应用负载平衡 器确定所指派的标识符没有被映射到应用的实例。应用负载平衡器根据负载平衡算法将指定标识符映射到应用的指定实例。映射帮 助跨应用的多个实例平衡应用的负载。应用负载平衡器将消息发送到应用的指定实例。应用负载平衡器在接收到第一客户机发起消息之后接收被定向到应用的第二客 户机发起消息。应用负载平衡器基于第二客户机发起消息的特征向第二客户机发起消息指 派指定标识符。应用负载平衡器基于指定标识符到应用的指定实例的映射来将第二客户机 发起消息和第一客户机发起消息相关联(例如,产生与激活消息相关联的相关消息)。应用 负载平衡器响应于该关联,向应用的指定实例发送第二客户机发起消息。在其他实施例中,应用负载平衡器从应用的多个实例中的指定实例接收应用实例 发起消息。应用实例发起消息被定向到另一应用。应用负载平衡器基于应用实例发起消息 的特征来向应用实例发起的消息指派指定标识符。应用负载平衡器将指定标识符映射到应 用的指定实例以跨应用的多个实例平衡应用的负载。映射帮助跨应用的多个实例平衡应用 的负载。应用负载平衡器将消息发送到该另一应用。应用负载平衡器从该另一应用接收被 定向到应用的返回消息。应用负载平衡器基于返回消息的特征向返回消息指派指定标识 符。应用负载平衡器基于指定标识符到应用的指定实例的映射,将返回消息与应用实例发 起消息相关联。应用负载平衡器将返回消息发送到应用的指定实例。本发明的各实施例可以包括或利用包含计算机硬件的专用或通用计算机,这将在 下文中更详细地讨论。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令 和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或 专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理 存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限 制,本发明的各实施例可包括至少两种完全不同的计算机可读介质物理存储介质和传输 介质。物理存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁 存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通 用或专用计算机访问的任何其他介质。对于本说明书和所附权利要求书,“网络”被定义为允许在计算机系统和/或模块 和/或其他电子设备之间传输电子数据的一条或多条数据链路。当信息通过网络或另一通 信连接(硬连线、无线、或硬连线或无线的组合)传输或提供给计算机时,该计算机将该连 接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的 所需程序代码装置并可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应 被包括在计算机可读介质的范围内。此外,应当理解,在到达各种计算机系统组件之后,计算机可执行指令或数据结构 形式的程序代码装置可从传输介质自动转移到物理存储介质(或者相反)。例如,通过网 络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如, “NIC”)内的RAM中,然后最终被传送到计算机系统RAM和/或计算机系统处的较不易失的 物理存储介质。由此,应当理解,物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处理设备执行某 一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语 言等中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本 主题,但可以理解的是,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上 述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络 计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息 处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型 计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可以在其中通 过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路 的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实践。在分布式系 统环境中,程序模块可以位于本地和远程存储器存储设备中。图1示出了便于服务的负载平衡示例计算机架构100。如描述的,计算机架构100 包括应用负载平衡器101和容器112。垂直省略号141表示一个或多个其他容器也被包括 在计算机架构100中。计算机架构100能表示容器组,该容器组包括应用负载平衡器101、 容器112、以及一个或多个其他容器。组件中的每一个可通过系统总线和/或诸如例如局域 网(“LAN”)、广域网(“WAN”)或甚至因特网等网络(或作为网络的一部分)彼此连接。因 此,所描绘的组件中的每一个以及任何其他连接的组件都可以创建消息相关数据并通过网 络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议, 诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等)。应用负载平衡器101进一步包括服务绑定102、亲和模块104、声明串行化器105、 负载平衡器绑定106、配置管理器107、活动实例管理器108、节点管理器109以及亲和状态 111。通常,服务绑定102是通信栈,其为应用负载平衡器101提供消息。服务绑定102内 的相关模块103被配置成基于消息内容将消息相关联并将相关标识符插入消息中(例如, 插入消息头部)以指示相关消息。通常,应用负载平衡器101被配置为服务的一部分或被包括在与正在被负载平衡 的应用相同的容器组中。由此,应用负载平衡器101具有与应用相同的安全模型。因此,应 用负载平衡器101具有与应用相同的权限,能访问应用的消息的部分。当设计应用时,应用 负载平衡器101能被设计或构建入应用中。或者,当应用被初始化时,诸如例如,在计算机 架构100中,应用负载平衡器101能被集成到应用中。亲和模块104被配置成检查消息(例如,消息头部),确定消息如何被分派到服务 实例。亲和模块104能在各种不同的枢纽上亲和消息,各种不同的枢纽包括传输会话、协 议会话、消息会话(例如,来自相关模块103的相关标识符)、消息内容等等。亲和可包括生 成亲和ID来将一序列或一系列消息内的消息“锁定”到服务实例或确定哪个服务实例要接 收消息。在使用亲和的情况下,存在相同会话内的消息能被彼此相关联并被分派到相同的 服务实例的显著提高的可能性。通常,应用负载平衡器101能从亲和错误中学习。由于应用负载平衡器101能被包括在容器组112中(该容器组包括服务实例114),因此其能理解由容器112抛出的异常。 由此,如果消息被亲和并被分派到与实例当前正在其上活动的容器不同的后端容器,则由 该不同的后端容器抛出的异常包括指示实例当前在其他地方活动的数据。例如,应用负载平衡器101能理解由后端应用返回的重定向异常。重定向异常能 包括关于应用实例当前正在哪里运行的信息。该信息被应用负载平衡器101用来将消息重 新传送到新的目的地。声明串行化器105被配置成检查消息认证信息并将从消息得出的任何安全声明 串行化为消息头部。该消息头部然后被包括在消息中。因此,消息中的声明能在服务实例 处被重新串行化以执行授权检查。负载平衡器绑定106是在应用负载平衡器101和容器112之间使用的通信栈。节 点管理器109被配置成访问关于应用负载平衡器101正跨其进行平衡的多个服务实例的动 态和静态信息。例如,节点管理器能从健康报告133访问服务实例114的动态和静态信息。 亲和模块103能使用该动态和静态信息来帮助确定如何分派消息。活动实例管理器108被 配置成访问与被负载平衡的服务的当前活动的服务实例以及被负载平衡的服务的每个服 务实例的位置有关的信息。例如,活动实例管理器108能从实例状态变化134访问服务实 例114的信息。活动实例管理器108能将这样的信息存储在在亲和状态111中。配置管理器107被配置成向应用负载平衡器101提供其配置。配置管理器107能 处理配置数据,诸如例如配置数据136,用于加载应用负载平衡器101的配置。配置数据能 对服务指定节流或其他行为,其可被应用到服务的服务实例。容器112包括负载平衡器绑定116、声明并行化器113、服务实例114、容器管理服 务121、以及实例生存期报告122。服务实例114是服务的实例,服务诸如例如,长时间运行 和/或有状态Web服务(例如,基于Windows基础(“WF”)或Windows通信基础(“WCF”) 技术)。服务实例114可以是服务的多个实例中的一个。服务的其他实例能在由垂直省略 号141表示的其他容器上运行。负载平衡器绑定116是在应用负载平衡器101和容器112之间使用的通信栈。声明并行化器113被配置成检查已串行化的声明头部并重建用于执行授权的安 全声明。声明并行化器还被配置成认证应用负载平衡器101来提供安全声明正从应用负载 平衡器101发送的某些保证(例如,作为反欺骗机制)。声明并行化器113还被配置成移除 应用负载平衡器101的声明,例如,作为应用负载平衡器101转发消息的结果被添加到该消 息的声明。因此,客户机认证能在负载平衡器101上执行,之后在容器112上执行客户机授 权。容器管理服务121被配置来提供关于运行服务实例114的计算机系统的健康的健 康信息。计算机系统的健康能从诸如例如存储器、CPU等各种环境条件中确定。容器管理 服务121能在诸如例如健康报告133等中输出健康信息。实例生存期报告服务122被配置成当服务实例114的状态变化时(诸如例如,当 服务实例114结束或脱水(dehydrate) /钝化(passivate)时)提供事件。例如,这两个事 件中的任一个能由活动实例管理器108使用来清除其实例亲和映射(存储在亲和状态111 中)。实例生存期报告服务122能在诸如例如实例状态变化134中输出事件。客户机和服务实例之间的通信能在客户机或服务实例处被发起。图3示出了在具有客户机发起通信的实施例中的用于服务的负载平衡的示例方法300的流程图。方法300 将参考计算机架构100中的组件和数据来描述。方法300包括应用负载平衡器接收被定向到应用的第一客户机发起消息的动作, 第一客户机发起消息是被包括在消息序列中的多个消息里的第一消息(动作301)。例如, 应用负载平衡器101能从客户机接收包括内容141的消息131。消息131可以是包括消息 132和一个或多个其他消息的消息序列中的第一消息。因此,消息131能被视为用于激活消 息序列的负载平衡的激活消息。如先前描述的,应用负载平衡器191能被集成为应用的一 部分。因此,应用负载平衡器能被集成为服务实例114是其实例的应用的一部分。因此,应 用负载平衡器101能在与服务实例114相同的安全模型下访问消息内容。方法300包括应用负载平衡器基于第一客户机发起消息的特征向包括在消息序 列中的多个消息指派指定标识符的动作(动作302)。例如,亲和模块104能向包括消息131 的消息序列指派亲和ID。能例如基于由相关模块103确定的与指定消息会话的关联、内容 141等等来指派亲和ID。方法300包括应用负载平衡器确定所指派的标识符没有被映射到应用的实例的 动作(动作303)。例如,活动实例管理器104能确定指派给消息131的亲和ID没有被包括 在亲和状态111中。方法300包括应用负载平衡器根据负载平衡算法将指定标识符映射到 应用的指定实例的动作(动作304)。例如,亲和模块104能根据负载平衡算法将所指派的 亲和ID映射到服务器实例114。实质上,能使用任何负载平衡算法。在某些实施例中,循环 算法基于应用实例的生存期以及运行指定的应用实例的计算机系统的健康状态信息来向 应用实例指派消息。例如,亲和模块104能基于健康报告133(运行服务实例1140的计算 机系统的)以及实例状态变化134(服务实例114的)连同在由椭圆191表示的其他容器 内的其他服务实例的类似信息,来将所指派的亲和ID映射到服务实例114。方法300包括应用负载平衡器将第一客户机发起消息发送到应用的指定实例的 动作(动作305)。例如,应用负载平衡器101能将消息131发送到容器112。方法300包括应用负载平衡器在接收第一客户机发起消息之后接收消息序列内 所包括的第二客户机发起消息的动作(动作306)。例如,应用负载平衡器101能从客户机 接收消息132。方法300包括应用负载平衡器基于第二客户机发起消息的特征向第二客户 机发起消息指派指定标识符的动作(动作307)。例如,亲和模块104能例如基于与同消息 131相同的指定消息会话的关联、在消息131的消息序列中的包含、内容142等等,来将消息 131的亲和ID指派给消息132。方法300包括应用负载平衡器基于指定标识符到应用的指定实例的映射,将第二 客户机发起消息和第一客户机发起消息相关联的动作(动作308)。例如,活动实例服务管 理器104能确定指派给消息132的亲和ID已经被包括在亲和状态111中(从向消息131指 派亲和ID中确定)并且被映射到服务实例114。由此,消息132能被视为与消息131相关 联的相关消息,其可被视为激活消息。方法300包括应用负载平衡器响应于该相关联将第 二客户机发起消息发送到应用的指定实例的动作(动作309)。例如,应用负载平衡器101 能将消息132发送到容器112。图4示出了在具有服务实例发起的通信的实施例中的用于服务的负载平衡的示 例方法400的流程图。方法400将参考计算机体系结构100中的组件和数据来描述。
方法400包括应用负载平衡器从应用的多个实例中的指定实例接收应用实例发 起消息的动作(动作401),该应用实例发起消息被定向到在应用的多个实例外部的另一应 用。例如,应用负载平衡器101能从容器112接收消息151。消息151能被定向到计算机 架构100中在容器112和应用负载平衡器101外部的另一应用。例如,消息151能被定向 到通过有线或无线网络连接被连接到应用负载平衡器的应用。方法400包括应用负载平衡 器基于应用实例发起消息的特征向应用实例发起消息指派指定标识符的动作(动作402)。 例如,亲和模块104能基于消息151的消息会话、协议会话、传输会话、内容161等等,来向 消息151指派亲和ID。方法400包括应用负载平衡器将指定标识符映射到应用的指定实例来跨应用的 多个实例平衡应用的负载的动作(动作403)。例如,由于消息来自容器112,因此活动实例 管理器108能将消息151的亲和ID映射到服务实例114。在该实施例中,消息151能被视 为激活消息。方法400包括应用负载平衡器将消息发送到该另一应用的动作(动作404)。 例如,应用负载平衡器101能将消息151发送到客户机。方法400包括应用负载平衡器从该另一应用接收被定向到应用的返回消息的动 作(动作405)。例如,应用负载平衡器101能从客户机接收消息132。方法400包括应用 负载平衡器基于返回消息的特征向返回消息指派指定标识符的动作(动作406)。例如,亲 和模块104能基于与同消息151相同的指定消息会话的关联、内容142、或在消息序列中的 包含等等,来向消息132指派相关ID。方法400包括应用负载平衡器基于指定标识符到应用的指定实例的映射,将返回 消息与应用实例发起消息相关联的动作(动作407)。例如,活动实例服务管理器104能查 阅亲和状态111以将相关ID映射到指派给消息151的亲和ID。这实质上是将用于递送的 消息132映射到服务实例114。由此,消息132能被视为与消息151相关联的相关消息,其 可被视为激活消息。方法400包括应用负载平衡器将返回消息发送到应用的指定实例的动 作(动作408)。例如,应用负载平衡器101能将消息132发送到容器112。能使用用于构建应用负载平衡器要平衡的服务的相同基础架构来构建应用负载 平衡器。进一步,由于应用负载平衡器能与服务一起被包括在全局容器中,因此应用负载平 衡器能从服务的任何传输通道接收消息。由此,应用负载平衡器能被配置成从轮询传输接 收消息,诸如例如队列、数据库、外部存储等等。因此,本发明的实施例允许服务被更容易地 扩展。进一步,包括在相同的全局容器中允许应用负载平衡器在与应用相同的安全模型下 访问被定向到应用的消息的内容。例如,图2示出了便于服务的负载平衡的示例计算机构架200的视图。如描述的, 计算机构架200包括容器组201和容器组202。容器组201包括负载平衡器271和负载平 衡器272(在机器251上)、以及在机器252上的本地容器沈1。容器组202包括机器256 上的负载平衡器273以及机器2M上的本地容器沈3。机器253包括位置容器261和位置 容器沈3。本地容器261被包括在容器组201中,而本地容器263被包括在容器组202中。在计算机架构200内,以字母结尾的附图标记表示分别对应其相应数字的服务的 实例。由此,服务实例2IlA和21IB表示服务211的实例,服务实例212A和212B表示服务 212的实例,以及服务实例213A和213B表示服务213的实例。因此,如在计算机架构200 中描述的,各个服务具有其自己对应的负载平衡器负载平衡器271至少在服务实例211A
11和21IB之间平衡,负载平衡器272至少在服务实例212A和212B之间平衡,并且负载平衡 器273至少在服务实例213A和21 之间平衡。各个负载平衡器具有对应的服务绑定来接收消息负载平衡器271包括服务绑定 221,负载平衡器272包括服务绑定222,而负载平衡器273包括服务绑定223。各个负载平 衡器也包括用于与服务实例的通信的负载平衡器绑定负载平衡器271包括负载平衡器绑 定231,负载平衡器272包括负载平衡器绑定232,并且负载平衡器273包括负载平衡器绑 定 233 ο各个服务实例也包括负载平衡器绑定,用于与其对应的负载平衡器通信。例如,服 务实例211A和211B包括负载平衡器绑定MlA和M1B,用于与负载平衡器271通信。服务 实例212A和212B包括负载平衡器绑定M2A和M2B,用于与负载平衡器272通信。服务实 例213A和21 包括负载平衡器绑定M3A和M!3B,用于与负载平衡器273通信。由此,对 于各个服务实例端点,存在在应用负载平衡器处的对应的端点。因此,本发明的实施例促进基于消息亲和在服务的实例之间的负载平衡。例如,相 同会话内的消息能被分派到相同的服务实例。与长时间运行和/或有状态服务相关联的一 序列或一系列相关消息更可能被分派到服务的相同实例。因此,如果服务实例已保持了客 户机状态,则具有增加的可能来使用已保持的客户机状态而不使另一服务实例重新创建客 户机状态。本发明的实施例也促进将消息分发到被部署到服务器场中的服务。例如,各实施 例将相关的消息亲和到被高速缓存在存储器中的服务的实例,该服务能是短时间或长时间 运行服务。为了促进相关消息的分发和亲和,负载平衡器担当应用的一部分以在将安全信 息传递到真实应用来执行授权之前执行消息的必要解密和认证。由于相关联是基于内容 的,并且消息的内容是基于应用的变化,因此应用负载平衡器参与真实应用的任意类型的 版本。也就是说,即使当存在具有新的消息协定(并因此导致不同的消息内容)的应用的 新版本时,应用负载平衡器也能够执行其功能。本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在 所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而 非前述描述来指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求 书的范围所涵盖。
权利要求
1.一种在计算机架构内用于跨应用的多个实例平衡应用的负载的方法,所述计算机架 构包括应用的多个实例(114)以及所述应用的应用负载平衡器(101),应用负载平衡是所 述应用的一部分,所述应用的实例在机器场内的机器上运行,所述方法包括所述应用负载平衡器(101)接收被定向到所述应用的第一客户机发起消息(131)的动 作,所述应用负载平衡器(101)被集成为所述应用的一部分,以使得所述应用负载平衡器 (101)能在与所述应用相同的安全模型下访问消息内容(141),所述第一客户机发起消息 (131)是被包括在消息序列中的多个消息里的第一消息;所述应用负载平衡器(101)基于所述第一客户机发起消息(131)的特征向包括在消息 序列中的所述多个消息指派指定标识符的动作;所述应用负载平衡器(101)确定所指派的标识符没有被映射到所述应用的实例的动作;所述应用负载平衡器(101)根据负载平衡算法将所述指定标识符映射到所述应用的 指定实例以跨所述应用的多个实例平衡所述应用的负载的动作;所述应用负载平衡器(101)将所述第一客户机发起消息(131)发送到所述应用的所述 指定实例(114)的动作;所述应用负载平衡器(101)在接收第一客户机发起消息之后接收被包括在消息序列 内的第二客户机发起消息(132)的动作;所述应用负载平衡器(101)基于所述第二客户机发起消息的特征向所述第二客户机 发起消息(132)指派指定标识符的动作;所述应用负载平衡器(101)基于所述指定标识符到所述应用的指定实例的映射,将所 述第二客户机发起消息(132)和所述第一客户机发起消息(131)相关联的动作;以及所述应用负载平衡器(101)响应于所述相关联,将所述第二客户机发起消息(132)发 送到所述应用的所述指定实例(114)的动作。
2.如权利要求1所述的方法,其特征在于,进一步包括基于所述第一客户机消息的内 容将所述第一客户机发起消息和消息会话相关联。
3.如权利要求1所述的方法,其特征在于,向所述第一客户机发起消息指派指定标识 符的动作包括向所述第一客户机消息指派亲和ID以将所述第一客户机消息与来自所述第 一客户机的被定向到所述应用的其他消息进行关联的动作。
4.如权利要求3所述的方法,其特征在于,向所述第一客户机消息指派亲和ID的动作 包括基于传输会话、协议会话、消息内容、以及与第一客户机消息关联的消息会话中的一个 或多个,向所述第一客户机消息指派亲和ID的动作。
5.如权利要求3所述的方法,其特征在于,所述应用负载平衡器向所述第二客户机发 起消息指派指定标识符的动作包括将亲和ID指派给第二客户机发起消息。
6.如权利要求1所述的方法,其中所述应用负载平衡器将指定标识符映射到所述应用 的指定实例的动作包括基于在所述应用的多个实例中的每个实例处的环境条件来将指定 标识符映射到所述应用的指定实例的动作。
7.如权利要求1所述的方法,其特征在于,所述应用负载平衡器将指定标识符映射到 所述应用的指定实例的动作包括基于空闲的应用的指定实例来将指定标识符映射到所述 应用的指定实例的动作。
8.如权利要求1所述的方法,其特征在于,还包括所述应用负载平衡器检查所述第一客户机发起消息内的认证信息以认证所述客户机 的动作;以及串行化安全声明以使得应用实例能使用所述安全声明用于授权检查的动作。
9.如权利要求1所述的方法,其特征在于,所述应用负载平衡器从轮询传输会话接收 客户机发起消息,所述轮询传输会话是从队列、数据库、以及外部存储中选择的。
10.一种在计算机架构内用于跨应用的多个实例平衡应用的负载的方法,所述计算机 架构包括应用的多个实例(114)以及应用的应用负载平衡器(101),应用负载平衡是所述 应用的一部分,所述应用的各个实例在不同的对应机器上运行,所述方法包括所述应用负载平衡器(101)从所述应用的多个实例中的指定实例接收应用实例发起 消息(151)的动作,所述应用实例发起消息被定向到在应用的多个实例外部的另一应用;所述应用负载平衡器(101)基于所述应用实例发起消息(151)的特征向所述应用实例 发起消息指派指定标识符的动作;所述应用负载平衡器(101)将指定标识符映射到所述应用的指定实例以跨所述应用 的多个实例平衡所述应用的负载的动作;所述应用负载平衡器(101)从所述另一应用接收被定向到所述应用的返回消息(132) 的动作;所述应用负载平衡器(101)基于所述返回消息的特征向所述返回消息(132)指派指定 标识符的动作;所述应用负载平衡器(101)基于指定标识符到所述应用的指定实例的映射,将所述返 回消息(132)与所述应用实例发起消息(151)相关联的动作;以及所述应用负载平衡器(101)将所述返回消息(13 发送到所述应用的指定实例的动作。
11.如权利要求10所述的方法,其特征在于,进一步包括基于所述应用实例发起消息 的内容将所述应用实例发起消息和消息会话相关联。
12.如权利要求10所述的方法,其特征在于,向所述应用实例发起消息指派指定标识 符的动作包括向所述应用实例发起消息指派亲和ID以将所述应用实例发起消息与被定向 到所述应用实例的其他消息进行关联的动作。
13.如权利要求12所述的方法,其特征在于,向所述应用实例发起消息指派亲和ID的 动作包括基于传输会话、协议会话、以及与所述应用实例发起消息关联的消息会话中的一 个或多个,向所述应用实例发起消息指派亲和ID的动作。
14.如权利要求10所述的方法,其特征在于,还包括所述应用负载平衡器检查所述返回消息内的认证信息以认证所述客户机的动作;以及 串行化安全声明以使得所述应用实例能使用所述安全声明用于授权检查的动作。
15.一种用于跨应用的多个实例平衡应用负载的负载平衡系统,所述负载平衡系统包括至少一个计算机系统; 系统存储器;以及一个或多个其上存储有表示应用的计算机可执行指令的计算机可读存储介质,所述应用包括在不同机器上运行的所述应用的多个实例以及在不同机器上运行的应用负载平衡 器,所述应用负载平衡器用于跨所述应用的所述多个实例平衡负载,其中所述应用的每个 实例被配置成通过通信栈与所述应用负载平衡器(101)通信; 并行化经串行化的安全(113)声明头部; 从并行化的安全声明头部重构安全声明; 提供与应用实例的健康相关的健康状态信息(133); 提供关于应用实例处的状态变化的生存期事件(134);以及 其中所述应用负载平衡器被配置成 接收被定向到应用(112)的消息(131,132); 基于消息特征向消息指派标识符;从多个应用实例的每个应用实例接收生存期事件(Π4)以及从运行多个应用实例的 对应的计算机系统接收健康状态信息(133); 确定所指派的标识符没有被映射到应用实例;响应于确定所指派的标识符没有被映射到应用实例,基于接收到的健康状态信息和接 收到的生存期事件将所指派的标识符映射到应用实例,以使得具有相同特征的一系列消息 能被彼此相关联;确定所指派的标识符被映射到应用实例;响应于所指派的标识符被映射到应用实例,基于所指派的标识符将接收到的消息 (131,132)与一系列消息中的一个或多个先前接收到的消息相关联;将接收到的消息(131,132)发送到应用实例(112)以使得跨所述应用的多个实例平衡 所述应用的负载。
全文摘要
本发明涉及用于服务的负载平衡的方法、系统和计算机程序产品。本发明的各实施例促进基于消息的亲和、基于消息的内容在服务的实例之间进行负载平衡。例如,相同会话内的消息能被分派到相同的服务实例。与长时间运行和/或有状态服务关联的一序列或一系列相关的消息更可能被分派到服务的相同实例。因此,如果服务实例已保持了客户机状态,则具有增加的可能来使用已保持的客户机状态而不使另一服务实例重新创建客户机状态。
文档编号H04L12/56GK102138307SQ200980134971
公开日2011年7月27日 申请日期2009年8月11日 优先权日2008年9月2日
发明者B·施马尔茨, G·拉玛纳坦, J·卡蒂, K·帕拉玛斯万姆, P·王, R·普尔纳林格姆, S·J·兰利, V·尚巴格 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1