CN102138307B - 用于服务的负载平衡的方法和系统 - Google Patents
用于服务的负载平衡的方法和系统 Download PDFInfo
- Publication number
- CN102138307B CN102138307B CN200980134971.2A CN200980134971A CN102138307B CN 102138307 B CN102138307 B CN 102138307B CN 200980134971 A CN200980134971 A CN 200980134971A CN 102138307 B CN102138307 B CN 102138307B
- Authority
- CN
- China
- Prior art keywords
- message
- application
- load balancer
- described application
- action
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1014—Server selection for load balancing based on the content of a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1027—Persistence of sessions during load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及用于服务的负载平衡的方法、系统和计算机程序产品。本发明的各实施例促进基于消息的亲和、基于消息的内容在服务的实例之间进行负载平衡。例如,相同会话内的消息能被分派到相同的服务实例。与长时间运行和/或有状态服务关联的一序列或一系列相关的消息更可能被分派到服务的相同实例。因此,如果服务实例已保持了客户机状态,则具有增加的可能来使用已保持的客户机状态而不使另一服务实例重新创建客户机状态。
Description
背景技术
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上的本地容器261。容器组202包括机器256上的负载平衡器273以及机器254上的本地容器263。机器253包括位置容器261和位置容器263。本地容器261被包括在容器组201中,而本地容器263被包括在容器组202中。
在计算机架构200内,以字母结尾的附图标记表示分别对应其相应数字的服务的实例。由此,服务实例211A和211B表示服务211的实例,服务实例212A和212B表示服务212的实例,以及服务实例213A和213B表示服务213的实例。因此,如在计算机架构200中描述的,各个服务具有其自己对应的负载平衡器:负载平衡器271至少在服务实例211A和211B之间平衡,负载平衡器272至少在服务实例212A和212B之间平衡,并且负载平衡器273至少在服务实例213A和213B之间平衡。
各个负载平衡器具有对应的服务绑定来接收消息:负载平衡器271包括服务绑定221,负载平衡器272包括服务绑定222,而负载平衡器273包括服务绑定223。各个负载平衡器也包括用于与服务实例的通信的负载平衡器绑定:负载平衡器271包括负载平衡器绑定231,负载平衡器272包括负载平衡器绑定232,并且负载平衡器273包括负载平衡器绑定233。
各个服务实例也包括负载平衡器绑定,用于与其对应的负载平衡器通信。例如,服务实例211A和211B包括负载平衡器绑定241A和241B,用于与负载平衡器271通信。服务实例212A和212B包括负载平衡器绑定242A和242B,用于与负载平衡器272通信。服务实例213A和213B包括负载平衡器绑定243A和243B,用于与负载平衡器273通信。由此,对于各个服务实例端点,存在在应用负载平衡器处的对应的端点。
因此,本发明的实施例促进基于消息亲和在服务的实例之间的负载平衡。例如,相同会话内的消息能被分派到相同的服务实例。与长时间运行和/或有状态服务相关联的一序列或一系列相关消息更可能被分派到服务的相同实例。因此,如果服务实例已保持了客户机状态,则具有增加的可能来使用已保持的客户机状态而不使另一服务实例重新创建客户机状态。
本发明的实施例也促进将消息分发到被部署到服务器场中的服务。例如,各实施例将相关的消息亲和到被高速缓存在存储器中的服务的实例,该服务能是短时间或长时间运行服务。为了促进相关消息的分发和亲和,负载平衡器担当应用的一部分以在将安全信息传递到真实应用来执行授权之前执行消息的必要解密和认证。由于相关联是基于内容的,并且消息的内容是基于应用的变化,因此应用负载平衡器参与真实应用的任意类型的版本。也就是说,即使当存在具有新的消息协定(并因此导致不同的消息内容)的应用的新版本时,应用负载平衡器也能够执行其功能。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述来指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
Claims (15)
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)将所述应用实例发起消息发送到所述另一应用的动作;
所述应用负载平衡器(101)从所述另一应用接收被定向到所述应用的返回消息(132)的动作;
所述应用负载平衡器(101)基于所述返回消息的特征向所述返回消息(132)指派指定标识符的动作;
所述应用负载平衡器(101)基于指定标识符到所述应用的指定实例的映射,将所述返回消息(132)与所述应用实例发起消息(151)相关联的动作;以及
所述应用负载平衡器(101)将所述返回消息(132)发送到所述应用的指定实例的动作。
11.如权利要求10所述的方法,其特征在于,进一步包括基于所述应用实例发起消息的内容将所述应用实例发起消息和消息会话相关联。
12.如权利要求10所述的方法,其特征在于,向所述应用实例发起消息指派指定标识符的动作包括向所述应用实例发起消息指派亲和ID以将所述应用实例发起消息与被定向到所述应用实例的其他消息进行关联的动作。
13.如权利要求12所述的方法,其特征在于,向所述应用实例发起消息指派亲和ID的动作包括基于传输会话、协议会话、以及与所述应用实例发起消息关联的消息会话中的一个或多个,向所述应用实例发起消息指派亲和ID的动作。
14.如权利要求10所述的方法,其特征在于,还包括:
所述应用负载平衡器检查所述返回消息内的认证信息以认证客户机的动作;以及
串行化安全声明以使得所述应用实例能使用所述安全声明用于授权检查的动作。
15.一种用于跨应用的多个实例平衡应用负载的负载平衡系统,所述负载平衡系统包括:
在不同机器上运行的应用的多个实例以及在不同机器上运行的应用负载平衡器,所述应用负载平衡器用于跨所述应用的所述多个实例平衡负载,
其中所述应用的每个实例被配置成:
通过通信栈与所述应用负载平衡器(101)通信;
并行化经串行化的安全(113)声明头部;
从并行化的安全声明头部重构安全声明;
提供与应用实例的健康相关的健康状态信息(133);
提供关于应用实例处的状态变化的生存期事件(134);以及
其中所述应用负载平衡器被配置成:
接收被定向到应用(112)的消息(131,132);
基于消息特征向消息指派标识符;
从多个应用实例的每个应用实例接收生存期事件(134)以及从运行多个应用实例的对应的计算机系统接收健康状态信息(133);
确定所指派的标识符没有被映射到应用实例;
响应于确定所指派的标识符没有被映射到应用实例,基于接收到的健康状态信息和接收到的生存期事件将所指派的标识符映射到应用实例,以使得具有相同特征的一系列消息能被彼此相关联;
确定所指派的标识符被映射到应用实例;
响应于所指派的标识符被映射到应用实例,基于所指派的标识符将接收到的消息(131,132)与一系列消息中的一个或多个先前接收到的消息相关联;
将接收到的消息(131,132)发送到应用实例(112)以使得跨所述应用的多个实例平衡所述应用的负载。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/203,024 US8447881B2 (en) | 2008-09-02 | 2008-09-02 | Load balancing for services |
US12/203,024 | 2008-09-02 | ||
PCT/US2009/053479 WO2010027609A2 (en) | 2008-09-02 | 2009-08-11 | Load balancing for services |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102138307A CN102138307A (zh) | 2011-07-27 |
CN102138307B true CN102138307B (zh) | 2014-01-29 |
Family
ID=41727310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980134971.2A Active CN102138307B (zh) | 2008-09-02 | 2009-08-11 | 用于服务的负载平衡的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8447881B2 (zh) |
EP (1) | EP2321937B1 (zh) |
JP (1) | JP5485993B2 (zh) |
CN (1) | CN102138307B (zh) |
WO (1) | WO2010027609A2 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8402530B2 (en) * | 2010-07-30 | 2013-03-19 | Microsoft Corporation | Dynamic load redistribution among distributed servers |
US8909786B2 (en) * | 2010-08-26 | 2014-12-09 | Futurewei Technologies, Inc. | Method and system for cross-stratum optimization in application-transport networks |
US9094309B2 (en) * | 2012-03-13 | 2015-07-28 | International Business Machines Corporation | Detecting transparent network communication interception appliances |
US9961137B2 (en) * | 2012-04-26 | 2018-05-01 | At&T Intellectual Property I, L.P. | Long term evolution radio network application-level load balancing |
US9158577B2 (en) * | 2012-08-08 | 2015-10-13 | Amazon Technologies, Inc. | Immediately launching applications |
US9729652B2 (en) | 2013-04-22 | 2017-08-08 | Microsoft Technology Licensing, Llc | Dynamically affinitizing users to a version of a website |
US9537742B2 (en) * | 2013-06-25 | 2017-01-03 | Microsoft Technology Licensing Llc | Automatic adjustment of application launch endpoints |
US9530482B2 (en) | 2014-09-25 | 2016-12-27 | Kilopass Technology, Inc. | Methods of retaining and refreshing data in a thyristor random access memory |
US10331493B2 (en) * | 2015-11-03 | 2019-06-25 | Nec Corporation | Systems and methods for distributed assignment of task identifiers |
US10404827B2 (en) * | 2016-06-22 | 2019-09-03 | Cisco Technology, Inc. | Client network information service |
US10237339B2 (en) | 2016-08-19 | 2019-03-19 | Microsoft Technology Licensing, Llc | Statistical resource balancing of constrained microservices in cloud PAAS environments |
CN107704310B (zh) * | 2017-09-27 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种实现容器集群管理的方法、装置和设备 |
WO2019101292A1 (en) * | 2017-11-21 | 2019-05-31 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and function for handling traffic for an application |
US11463516B2 (en) * | 2020-06-29 | 2022-10-04 | Amdocs Development Limited | System, method, and computer program for distributed application execution using a cluster of mobile devices |
CN113094182B (zh) * | 2021-05-18 | 2024-02-27 | 联想(北京)有限公司 | 一种服务的负载均衡处理方法、装置及云端服务器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1354578A (zh) * | 2000-11-21 | 2002-06-19 | 阿瓦雅通信以色列有限公司 | 动态负载平衡器 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9197599B1 (en) | 1997-09-26 | 2015-11-24 | Verizon Patent And Licensing Inc. | Integrated business system for web based telecommunications management |
US6249801B1 (en) * | 1998-07-15 | 2001-06-19 | Radware Ltd. | Load balancing |
US6970913B1 (en) | 1999-07-02 | 2005-11-29 | Cisco Technology, Inc. | Load balancing using distributed forwarding agents with application based feedback for different virtual machines |
US6772333B1 (en) | 1999-09-01 | 2004-08-03 | Dickens Coal Llc | Atomic session-start operation combining clear-text and encrypted sessions to provide id visibility to middleware such as load-balancers |
US6970425B1 (en) * | 2000-04-27 | 2005-11-29 | At&T Corp. | Method and apparatus for throttling and distributing data transmissions across a network |
US7366755B1 (en) * | 2000-07-28 | 2008-04-29 | International Business Machines Corporation | Method and apparatus for affinity of users to application servers |
JP2002189646A (ja) * | 2000-12-22 | 2002-07-05 | Matsushita Electric Ind Co Ltd | 中継装置 |
JP2002351760A (ja) * | 2001-05-30 | 2002-12-06 | Mitsubishi Electric Corp | サーバ負荷分散装置、サーバ負荷分散方法およびその方法をコンピュータに実行させるプログラム |
US7480705B2 (en) | 2001-07-24 | 2009-01-20 | International Business Machines Corporation | Dynamic HTTP load balancing method and apparatus |
US7406524B2 (en) * | 2001-07-26 | 2008-07-29 | Avaya Communication Isael Ltd. | Secret session supporting load balancer |
US8126722B2 (en) | 2001-12-20 | 2012-02-28 | Verizon Business Global Llc | Application infrastructure platform (AIP) |
US7694128B2 (en) * | 2002-03-08 | 2010-04-06 | Mcafee, Inc. | Systems and methods for secure communication delivery |
US7185096B2 (en) * | 2003-05-27 | 2007-02-27 | Sun Microsystems, Inc. | System and method for cluster-sensitive sticky load balancing |
US7613822B2 (en) | 2003-06-30 | 2009-11-03 | Microsoft Corporation | Network load balancing with session information |
US7636917B2 (en) | 2003-06-30 | 2009-12-22 | Microsoft Corporation | Network load balancing with host status information |
RU2365046C2 (ru) * | 2003-08-13 | 2009-08-20 | Майкрософт Корпорейшн | Подсказки о маршруте |
US8266294B2 (en) * | 2003-08-13 | 2012-09-11 | Microsoft Corporation | Routing hints |
US20060064478A1 (en) | 2004-05-03 | 2006-03-23 | Level 3 Communications, Inc. | Geo-locating load balancing |
US8095658B2 (en) * | 2004-05-07 | 2012-01-10 | International Business Machines Corporation | Method and system for externalizing session management using a reverse proxy server |
US8028334B2 (en) | 2004-12-14 | 2011-09-27 | International Business Machines Corporation | Automated generation of configuration elements of an information technology system |
US20060155862A1 (en) | 2005-01-06 | 2006-07-13 | Hari Kathi | Data traffic load balancing based on application layer messages |
JP2006221450A (ja) * | 2005-02-10 | 2006-08-24 | Nec Access Technica Ltd | 負荷分散装置、負荷分散方法、および、負荷分散プログラム |
US20070070937A1 (en) * | 2005-09-28 | 2007-03-29 | Mustafa Demirhan | Multi-radio mesh network channel selection and load balancing |
US7512707B1 (en) * | 2005-11-03 | 2009-03-31 | Adobe Systems Incorporated | Load balancing of server clusters |
JP4961146B2 (ja) * | 2006-02-20 | 2012-06-27 | 株式会社日立製作所 | 負荷分散方法およびシステム |
US20070288466A1 (en) * | 2006-05-02 | 2007-12-13 | Mypoints.Com Inc. | System and method for evenly distributing data across a distributed member architecture utilizing a home silo |
US7606808B2 (en) | 2006-08-25 | 2009-10-20 | Microsoft Corporation | Maintaining and establishing subscriptions with load-balanced servers |
US8214497B2 (en) * | 2007-01-24 | 2012-07-03 | Mcafee, Inc. | Multi-dimensional reputation scoring |
US20080228926A1 (en) * | 2007-03-13 | 2008-09-18 | Asher Shiratzky | Methods, media, and systems for balancing session initiation protocol server load |
US8881167B2 (en) * | 2008-04-28 | 2014-11-04 | International Business Machines Corporation | Load balancing in network based telephony applications |
-
2008
- 2008-09-02 US US12/203,024 patent/US8447881B2/en active Active
-
2009
- 2009-08-11 JP JP2011525075A patent/JP5485993B2/ja active Active
- 2009-08-11 WO PCT/US2009/053479 patent/WO2010027609A2/en active Application Filing
- 2009-08-11 EP EP09811922.5A patent/EP2321937B1/en active Active
- 2009-08-11 CN CN200980134971.2A patent/CN102138307B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1354578A (zh) * | 2000-11-21 | 2002-06-19 | 阿瓦雅通信以色列有限公司 | 动态负载平衡器 |
Also Published As
Publication number | Publication date |
---|---|
WO2010027609A3 (en) | 2010-05-14 |
CN102138307A (zh) | 2011-07-27 |
JP5485993B2 (ja) | 2014-05-07 |
EP2321937B1 (en) | 2017-11-29 |
WO2010027609A2 (en) | 2010-03-11 |
EP2321937A2 (en) | 2011-05-18 |
EP2321937A4 (en) | 2013-03-06 |
US8447881B2 (en) | 2013-05-21 |
US20100058451A1 (en) | 2010-03-04 |
JP2012510651A (ja) | 2012-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102138307B (zh) | 用于服务的负载平衡的方法和系统 | |
CN102792264B (zh) | 路由针对双工应用的请求 | |
CN104753817B (zh) | 一种云计算消息队列服务本地模拟方法和系统 | |
CN107483390B (zh) | 一种云渲染网络部署子系统、系统及云渲染平台 | |
US20040024861A1 (en) | Network load balancing | |
US20190199790A1 (en) | Managing health status of network devices in a distributed global server load balancing system | |
CN110365752A (zh) | 业务数据的处理方法、装置、电子设备和存储介质 | |
US7746824B2 (en) | Method and apparatus for establishing multiple bandwidth-limited connections for a communication device | |
CN101296176B (zh) | 一种基于群集的数据处理方法和装置 | |
EP2916522B1 (en) | File transmission method and system thereof | |
CN102394929A (zh) | 一种面向会话的云计算负载均衡系统及其方法 | |
WO2013097484A1 (zh) | 虚拟机集群的负载均衡方法、服务器及系统 | |
CN110233881A (zh) | 业务请求处理方法、装置、设备及存储介质 | |
CN106254377A (zh) | 支持海量长连接的软负载均衡方法及系统 | |
CN101499995A (zh) | 一种业务调度的方法及用于业务调度的系统、装置 | |
CN105519028A (zh) | 一种无线系统接入控制方法及装置 | |
US8606908B2 (en) | Wake-up server | |
CN115633039A (zh) | 通信建立方法、负载均衡装置、设备及存储介质 | |
Jameel et al. | Mobile-To-Grid Middleware: Bridging the gap between mobile and Grid environments | |
CN101702673A (zh) | 基于bs架构的负载均衡方法 | |
CN102891851A (zh) | 虚拟桌面访问控制方法、设备及系统 | |
US9342281B2 (en) | Method for allowing distributed running of an application and related pre-processing unit | |
CN114024968B (zh) | 一种基于中间设备的报文发送方法、装置和电子设备 | |
JP2012108685A (ja) | 負荷分散システム | |
CN104168206A (zh) | 适配网关负载均衡控制装置方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150505 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150505 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |