CN104380278A - 用于一个或多个客户端和数据中心的服务器之间的客户端管理会话持续性的设备、系统和方法 - Google Patents

用于一个或多个客户端和数据中心的服务器之间的客户端管理会话持续性的设备、系统和方法 Download PDF

Info

Publication number
CN104380278A
CN104380278A CN201380028625.2A CN201380028625A CN104380278A CN 104380278 A CN104380278 A CN 104380278A CN 201380028625 A CN201380028625 A CN 201380028625A CN 104380278 A CN104380278 A CN 104380278A
Authority
CN
China
Prior art keywords
session
load equalizer
message
computing device
client computing
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.)
Granted
Application number
CN201380028625.2A
Other languages
English (en)
Other versions
CN104380278B (zh
Inventor
R·科恩
M·嘎姆拉维
S·玛哈卡里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN104380278A publication Critical patent/CN104380278A/zh
Application granted granted Critical
Publication of CN104380278B publication Critical patent/CN104380278B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1027Persistence of sessions during load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Abstract

一种用于维护一个或多个客户端和一个或多个数据服务器之间的会话持续性的设备、系统和方法包括根据包括在由负载均衡器从客户端接收的消息中的负载均衡器提示头,在客户端和数据服务器之间提供持续会话。客户端修改可由应用生成的消息,以便包括标识消息内标识特定持续会话的会话ID的位置的负载均衡器提示头。负载均衡器基于会话ID从会话-服务器表标识数据服务器并且将消息传输到所标识的数据服务器。如果负载均衡器不能定位相应的数据服务器,负载均衡器可与其他负载均衡器通信,以便确定相应的数据服务器的位置。

Description

用于一个或多个客户端和数据中心的服务器之间的客户端管理会话持续性的设备、系统和方法
背景
云计算是向公司和其他实体提供虚拟计算资源和服务所借助的常用工具。随着客户端公司的需要随着时间变化,云计算可为客户端公司提供许多优势,包括计算资源的相对快速、高效和廉价的可升级性和可扩展性。在云计算中,基础设施、平台、和/或软件可由云计算提供商提供给客户端公司作为网络上(即,云上)的服务。例如,不是将独立的软件包加载到客户端公司的每台计算机上,软件可被提供给客户端公司作为使用网络浏览器或相关联的轻型应用可由客户端公司的任何计算机访问的服务。
云计算提供商通常管理一个或多个数据中心,这便于客户端公司访问计算资源和服务。每个数据中心可包括一个或多个数据服务器(例如网络服务器、应用服务器等等)以及一个或多个负载均衡器以便使用负载均衡算法跨数据服务器均衡来自客户端公司计算机的工作负载(或一个或多个“全局负载均衡器”来均衡跨数据中心的工作负载)。随着客户端公司的计算需要的增长,可向公司的云计算资源添加附加的数据服务器和/或数据中心,以便满足增长的计算需要。为了支持公司客户端计算机对虚拟计算资源和服务的多重同时访问,每个数据服务器可包括由计算资源/服务使用的数据的本地副本。为了确保每个数据服务器能够访问所存储数据的完整副本,周期性地跨数据服务器复制数据。
附图简要说明
通过举例而非通过限制在附图中示出在此描述的本发明。为了示出的简单和清晰,图中所示元件无需按比例绘制。例如,为了清晰的目的,某些元件的尺寸可能相对于其他元件被放大。而且,当考虑合适时,已经在附图中重复参考标号以便表明相应的或类似的元素。
图1是用于维护客户端计算设备与数据中心的数据服务器之间的会话持续性的系统的至少一个实施例的简化框图;
图2是图1的系统的客户端计算设备的环境的至少一个实施例的简化框图;
图3是图1的系统的负载均衡器的环境的至少一个实施例的简化框图;
图4是可由图2的客户端计算设备执行的用于生成持续消息的方法的至少一个实施例的简化流程图;
图5和图6是可由图1的负载均衡器执行的用于维护客户端计算设备和一个或多个数据服务器之间的会话持续性的方法的至少一个实施例的简化流程图;
图7是用于维护客户端计算设备与数据中心的数据服务器之间的会话持续性的系统的另一个实施例的简化框图。
附图详细描述
尽管本公开的概念可受到各种修改和替代形式,已经通过举例在附图中并且将在此详细地描述其特定示例性实施例。然而,应当理解的是不旨在将本公开的概念限制为所公开的具体形式,而是相反,本发明涵盖与本公开和所附权利要求书一致的所有修改、等效方案和替代方案。
在以下说明中,列出了许多特定细节,诸如逻辑实现方式、操作码、用于指定操作数的装置、资源划分/共享/复制实现方式、系统组件的类型和相互关系、以及逻辑划分/集成选择,以便提供本公开的更透彻理解。然而,本领域普通技术人员将认识到本公开的实施例可在没有这些特定细节的情况下实践。在其他实例中,未详细地示出控制结构、门级电路、以及全软件指令序列,以便不混淆本发明。通过所包括的描述,本领域普通技术人员将能够在无需不适当的试验的情况下实现适当的功能。
在说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表明所描述的实施例可包括具体的特征、结构或特性,但是每个实施例可无需包括该具体的特征、结构或特性。而且,这种短语无需指代相同的实施例。而且,当结合实施例描述具体的特征、结构或特性时,认为其在本领域普通技术人员结合显式地或未显式地描述的其他实施例实施这种特征、结构或特性的知识范围内。
本发明的实施例可在硬件、固件、软件或其任何组合中实现。在计算机系统中实现的本发明的实施例可包括组件之间的一个或多个基于总线的互连和/或组件之间的一个或多个点到点互连。本发明的实施例还可被实现为由瞬态或非瞬态机器可读(例如计算机可读)介质携带或存储在其上的指令,这些指令可由一个或多个处理器读取并执行。机器可读介质可被实施为任何用于存储或传输机器(例如,计算设备)可读形式的信息的设备、机制、或物理结构。例如,机器可读介质可被实施为只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪存设备;迷你或微SD卡、存储器棒、电信号和其他信号。
在附图中,可出于描述简单的目的示出示意元素(诸如表示设备、模块、指令框和数据元素的那些)的特定安排或排序。然而,本领域普通技术人员应当理解的是附图中的示意元素的特定排序或安排不旨在暗示要求具体的处理顺序或序列或分离的过程。进一步地,附图中的示意元素的包括不旨在暗示所有实施例中要求这种元素或者暗示这种元素所表示的特征可不包括在某些实施例中的其他元素或与其组合。
总体上,可使用任何合适形式的机器可读指令(诸如软件或固件应用、程序、功能、模块、例程、过程、流程、插件、小程序、小工具、代码片段和/或其他)实现用于表示指令框的示意元件,以及可使用任何合适的编程语言、库、应用编程接口(API)、和/或其他软件开发工具实现每个这种指令。例如,可使用Java、C++、和/或其他编程语言实现某些实施例。类似地,可使用任何合适的电子安排或结构(诸如寄存器、数据存储、表格、记录、阵列、索引、散列、映射、树、列表、图示、文件(具有任何文件类型)、文件夹、目录、数据库、和/或其他)实现用于表示数据或信息的示意元件。
进一步地,在附图中,当连接元素(诸如实线或虚线或箭头)用于示出两个或更多个示意元素之间的连接、关系或关联,任何这种连接元素的不存在不意味着暗示不存在连接、关系或关联。换言之,元素之间的某些连接、关系或关联可不在附图中示出,以便不混淆本公开。附加地,为了示出简单,单个连接元素可用于表示元素之间的多个连接、关系或关联。例如,当连接元素表示传递信号、数据或指令时,本领域普通技术人员应当理解的是这种元素可表示可需要以实现通信的一个或多个信号路径(例如总线)。
现在参考图1,在一个实施例中,用于维护客户端和一个或多个数据服务器之间的会话持续性的系统100包括负载均衡器102,该负载均衡器被配置成用于通过网络108从一个或多个客户端计算设备104、106接收消息并将这种消息转发到数据中心114的所选择的一个或多个数据服务器110、112。为了这样做,如以下更详细讨论的,客户端计算设备104、106被配置成用于修改具体的传出消息以便包括负载均衡器提示头,该负载均衡器提示头标识会话标识符(ID)所位于的消息内的位置。负载均衡器102基于负载均衡器提示头的存在识别这种消息,并且基于负载均衡器提示头中包括的数据从消息检索会话ID。负载均衡器102维护使会话ID与一个或多个特定数据服务器110、112相关的会话服务器表。这样,负载均衡器102可通过参照会话服务器表以便确定适当的数据服务器110、112接收消息,来维护一个或多个特定客户端计算设备104、106和一个或多个特定数据服务器110、112之间的持续会话。一旦确定,负载均衡器102将消息转发到适当的数据服务器110、112。以此方式,最终一致性导致的问题被基本上避免并且由负载均衡器102根据一个或多个客户端计算设备104、106发送的经修改的消息,维护客户端计算设备104、106和一个或多个数据服务器110、112之间的会话持续性。
相反,在典型的云计算系统中,最终一致性相关的问题会难以避免。例如,如图1所示地安排的典型云计算系统可在某些情况下展现写后读问题。例如,当客户端计算设备向一个服务器写入新数据(即,相关联的负载均衡器将写消息路由到第一数据服务器)并且随后从尚未通过复制更新的不同的数据服务器(即,相关联的负载均衡器将读消息路由到第二数据服务器)读取数据时,这种情况可发生。这种写后读问题的发生是由于跨云计算系统的数据服务器复制的暂时延迟。
某些云计算系统尝试缓解写后读问题并且通过使用附加于客户端计算设备发送的消息并与其分离的cookie或数据来确保最终一致性。这种cookie或附加的分离数据消息的使用可增加云计算系统的开销和延迟。其他云计算系统可将数据嵌入到消息本体中,其用于建立如本领域已知的“粘性会话”。然而,这种系统要求负载均衡器解析每个所接收到的消息本体以便扫描所嵌入的粘性数据。这种解析和扫描会显著地影响负载均衡器性能,因为负载均衡器不具有对这种粘性数据位于消息中哪里的指示并且因此必须搜索整个消息或其大部分,以便定位粘性数据。
返回参考图1,系统100的每个客户端计算设备104、106可被实施为能够执行在此所描述的功能的任何类型的计算设备。例如,每个客户端计算设备104、106可被实施为而不限于被配置成用于存储和访问数据中心114中的数据的计算机、桌上计算机、个人计算机(PC)、平板计算机、膝上计算机、笔记本计算机、移动计算设备、智能电话、蜂窝电话、手机、通讯设备、工作站、网络电器、web电器、分布式计算系统、微处理器系统、基于处理器的系统、消费者电子设备、数字电视设备、机顶盒、和/或任何其他计算设备。在某些实施例中,计算设备104、106中的一个或多个可被实施为服务器(例如,消费者网络入口或数据服务器,其充当数据中心114的客户端)。附加地,尽管系统100在图1中被示出为包括两个客户端计算设备104、106,应当认识到在其他实施例中系统100可包括附加的客户端计算设备。
在图1的说明性实施例中,客户端计算设备104包括处理器120、I/O子系统124、存储器126、数据存储设备128、通信电路130、以及一个或多个外围设备132。在某些实施例中,前述组件中的若干组件可被结合到客户端计算设备104的母板或主板上,而其他组件可通过例如外围端口通信地耦合到母板。进一步地,应当认识到客户端计算设备104可包括在计算机和/或计算设备中通常发现的其他组件、子组件、以及设备,为了描述清晰的目的,未在图1中示出。
客户端计算设备104的处理器120可被实施为能够执行软件/固件的任何类型的处理器(诸如微处理器、数字信号处理器、微控制器等等)。处理器120被说明性地实施为具有处理器核122的单核处理器。然而,在其他实施例中,处理器120可被实施为具有多个处理器核122的多核处理器。附加地,客户端计算设备104可包括具有一个或多个处理器核122的附加处理器120。
客户端计算设备104的I/O子系统124可被实施为用于促进客户端计算设备104的处理器120和/或其他组件的输入/输出操作的电路和/或组件。在某些实施例中,I/O子系统124可被实施为存储器控制器中枢(MCH或“北桥”)、输入/输出控制器中枢(ICH或“南桥”)以及固件设备。在这种实施例中,I/O子系统124的固件设备可被实施为用于存储基本输入/输出系统(BIOS)数据和/或指令和/或其他信息(例如,在客户端计算设备104的启动期间使用的BIOS驱动器)的存储器设备。然而,在其他实施例中,可使用具有其他配置的I/O子系统。例如,在某些实施例中,I/O子系统124可被实施为平台控制器中枢(PCH)。在这种实施例中,存储器控制器中枢(MCH)可被结合到处理器120中或以其他方式与其相关联,并且处理器120可直接与存储器126通信(如图1中的虚线所示)。附加地,在某些实施例中,I/O子系统124可形成片上系统(SoC)的一部分并且可与客户端计算设备104的处理器120和其他组件一起结合到单个集成电路芯片上。
处理器120通过多条信号路径通信地耦合到I/O子系统124。这些信号路径(以及图1中示出的其他信号路径)可被实施为能够促进客户端计算设备104的组件之间的通信的任何类型的信号路径。例如,这些信号路径可被实施为任何数量的点到点链路、接线、线缆、光导、印刷电路板迹线、通孔、总线、介入设备等等。
客户端计算设备104的存储器126可被实施为或以其他方式包括一个或多个存储器设备或数据存储位置,其包括例如动态随机存取存储器设备(DRAM)、同步动态随机存取存储器设备(SDRAM)、双数据速率同步动态随机存取存储器设备(DDR SDRAM)、掩码只读存储器(ROM)设备、可擦可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)设备、闪存设备、和/或其他易失性和/或非易失性存储器设备。存储器126通过多条信号路径通信地耦合到I/O子系统124。尽管在图1中示出仅单个存储器设备126,在其他实施例中,客户端计算设备104可包括附加存储器设备。各种数据和软件可被存储在存储器126中。例如,组成处理器120执行的软件堆栈的一个或多个操作系统、应用、程序、库、以及驱动器可在执行期间驻留在存储器126中。
数据存储设备128可被实施为被配置成用于数据的短期或长期存储的任何类型的设备,诸如例如存储器设备和电路、存储器卡、硬盘驱动、固态驱动、或其他数据存储设备。在说明性实施例中,客户端计算设备104维护存储在数据存储设备128中的消息策略数据库206(见图2)。如以下更详细讨论的,消息策略数据库206包括用于确定哪些传出消息是持续消息并且因此应当被修改以便包括负载均衡器提示头的策略或规则。当然,在其他实施例中,客户端计算设备104可存储、访问、和/或维护数据存储128中的其他数据。客户端计算设备104的通信电路130可包括用于实现客户端计算设备104和负载均衡器102之间的通过网络108的通信的任何数量的设备和电路,如以下更详细讨论的。通信电路130可被配置成用于使用任何一种或多种通信协议或其组合来与负载均衡器102通信,诸如例如有线网络通信协议(例如TCP/IP)、无线网络通信协议(例如,WiMAX)、蜂窝通信协议(例如,宽带码分多址(W-CDMA))、和/或其他通信协议。
在某些实施例中,客户端计算设备104还可包括一个或多个外围设备132。这种外围设备132可包括任何数量的附加输入/输出设备、接口设备、和/或其他外围设备。例如,在某些实施例中,外围设备132可包括显示器、图形电路、键盘、鼠标、扬声器系统、和/或其他输入/输出设备、接口设备、和/或外围设备。
客户端计算设备106可基本上类似于客户端计算设备104并且包括具有共同参考标号的已经在图1中标识的类似组件。这样,客户端计算设备104的组件的上述描述可同样适用于客户端计算设备106的那些类似组件,并且在此不再赘述,以便不混淆本公开。当然,应当认识到在某些实施例中,客户端计算设备104、106(或系统100的其他客户端计算设备)可相互不同。例如,系统100的客户端计算设备可被实施为彼此不同的各种类型的计算设备(例如,桌上计算机、移动计算机、平板计算机、智能电话、或其他计算设备)并且包括通常在这种相应的计算设备中发现的组件。
如以下更详细讨论的,客户端计算设备104、106被配置成用于通过网络108向数据中心114的负载均衡器102传输消息。网络108可被实施为任何数量的各种有线和/或无线网络。例如,网络108可被实施为或以其他方式包括有线或无线局域网(LAN)、有线或无线广域网(WAN)、和/或公共可访问的全球网络(诸如因特网)。这样,网络108可包括任何数量的附加设备,诸如附加计算机、路由器、和交换机,以便促进客户端计算设备104、106和数据中心114的负载均衡器102之间的通信。
如上所述,数据中心114包括负载均衡器102和一个或多个数据服务器110、112。负载均衡器102被配置成用于从客户端计算设备104、106接收消息并且将这种消息路由到数据服务器110、112中的一个(或多个)。如果所接收到的消息是持续消息(即,该消息包括负载均衡器提示头),负载均衡器102被配置成用于根据负载均衡器提示头从该消息检索标识特定消息会话的会话ID,并且基于所检索到的会话ID确定将持续消息路由到哪个(哪些)数据服务器110、112,如以下更详细讨论的。尽管数据中心114在图1中被示出为包括仅单个负载均衡器102和数据服务器110、112,应当认识到的是在其他实施例中,数据中心114可包括附加负载均衡器以及通信地耦合到每个负载均衡器的一个、两个或更多个数据服务器。附加地,如图7所示,在某些实施例中,系统100可包括多个数据中心114。
负载均衡器102可被实施为能够执行在此描述的功能的任何类型的数据服务器或类似的计算设备。在图1的说明性实施例中,负载均衡器102包括处理器140、I/O子系统144、存储器146、数据存储设备148、通信电路150、以及一个或多个外围设备152。在某些实施例中,前述组件中的若干组件可被结合到负载均衡器102的母板或主板上,而其他组件可通过例如外围端口通信地耦合到母板。进一步地,应当认识到负载均衡器102可包括在服务器和/或计算设备中通常发现的其他组件、子组件、以及设备,为了描述清晰的目的,未在图1中示出。
负载均衡器102的处理器140可被实施为能够执行软件/固件的任何类型的处理器(诸如微处理器、数字信号处理器、微控制器等等)。处理器140被说明性地实施为具有处理器核142的单核处理器。然而,在其他实施例中,类似于处理器120,处理器140可被实施为具有多个处理器核142的多核处理器。附加地,负载均衡器102可包括具有一个或多个处理器核142的附加处理器140。
负载均衡器102的I/O子系统144可被实施为用于促进负载均衡器102的处理器140和/或其他组件的输入/输出操作的电路和/组件。在某些实施例中,I/O子系统144可被实施为存储器控制器中枢(MCH或“北桥”)、输入/输出控制器中枢(ICH或“南桥”)以及固件设备。在这种实施例中,I/O子系统144的固件设备可被实施为用于存储基本输入/输出系统(BIOS)数据和/或指令和/或其他信息(例如,在客户端计算设备104的启动期间使用的BIOS驱动器)的存储器设备。然而,在其他实施例中,可使用具有其他配置的I/O子系统。例如,在某些实施例中,I/O子系统144可被实施为平台控制器中枢(PCH)。在这种实施例中,存储器控制器中枢(MCH)可被结合到处理器140中或与其相关联,并且处理器140可直接与存储器146通信(如图1中的虚线所示)。附加地,在某些实施例中,I/O子系统144可形成片上系统(SoC)的一部分并且可与负载均衡器102的处理器140和其他组件一起结合到单个集成电路芯片上。
处理器140通过多条信号路径通信地耦合到I/O子系统144。这些信号路径(以及图1中示出的其他信号路径)可被实施为能够促进负载均衡器102的组件之间的通信的任何类型的信号路径。例如,这些信号路径可被实施为任何数量的点到点链路、接线、线缆、光导、印刷电路板迹线、通孔、总线、介入设备等等。
负载均衡器102的存储器146可被实施为或以其他方式包括一个或多个存储器设备或数据存储位置,其包括例如动态随机存取存储器设备(DRAM)、同步动态随机存取存储器设备(SDRAM)、双数据速率同步动态随机存取存储器设备(DDR SDRAM)、掩码只读存储器(ROM)设备、可擦可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)设备、闪存设备、和/或其他易失性和/或非易失性存储器设备。存储器146通过多条信号路径通信地耦合到I/O子系统144。尽管在图1中示出仅单个存储器设备146,在其他实施例中,负载均衡器102可包括附加存储器设备。各种数据和软件可被存储在存储器146中。例如,组成处理器140执行的软件堆栈的一个或多个操作系统、应用、程序、库、以及驱动器可在执行期间驻留在存储器146中。
数据存储设备148可被实施为被配置成用于数据的短期或长期存储的任何类型的设备,诸如例如存储器设备和电路、存储器卡、硬盘驱动、固态驱动、或其他数据存储设备。在说明性实施例中,负载均衡器102维护存储在数据存储设备148中的会话-服务器表306(见图3)。如以下更详细讨论的,会话服-务器表306交叉引用、或以其他方式使会话ID与数据服务器110、112相关。即,当在一个或多个客户端计算设备104、106和一个或多个数据服务器110、112之间建立持续会话时,负载均衡器用特定持续会话的会话ID到数据服务器对更新会话-服务器表306。当然,在其他实施例中,负载均衡器102可存储、访问、和/或维护数据存储设备148中的其他数据。
负载均衡器102的通信电路150可包括用于实现负载均衡器102和客户端计算设备104、106之间的通过网络108的通信的任何数量的设备和电路。通信电路150可被配置成用于使用任何一种或多种通信协议使如以上参照客户端计算设备104的通信电路130所讨论的这种通信生效。附加地,在某些实施例中,负载均衡器102还可包括一个或多个外围设备152。这种外围设备152可包括通常与服务器或计算设备相关联的任何数量的附加输入/输出设备、接口设备、和/或其他外围设备。
类似于负载均衡器102,数据服务器110、112可被实施为能够执行在此描述的功能的任何类型的服务器(例如,网络服务器)或类似的计算设备。这样,每个数据服务器110、112可包括类似于负载均衡器102的组件和特征,诸如处理器、I/O子系统、存储器、数据存储、通信电路、以及各种外围设备,为了本描述的清晰,未在图1中示出。数据服务器110、112可被实施为与图1中示出的负载均衡器102分离的独立服务器或计算设备。可替代地,在某些实施例中,数据服务器110、112中的一个或多个可被结合到负载均衡器102中或以其他方式形成其一部分。
在图1的说明性实施例中,每个数据服务器110、112维护存储有各种服务器侧应用、基于客户端的应用数据、以及其他数据存储的一个或多个数据库160。在云计算实现方式中,数据服务器110、112可执行与在客户端计算设备104、106上执行的应用相对应的各种服务器侧应用(例如,独立式或基于浏览器的应用)。附加地,数据服务器110、112可将从客户端计算设备104、106接收的数据和/或由客户端侧和服务器侧应用生成的数据存储在数据库160中。如以上所讨论的,存储在数据库160中的数据可被周期性地跨数据中心的所有数据服务器110、112(以及跨多个数据中心)复制,以便确保每个数据服务器维护完整的和当前的数据集。
现在参考图2,在一个实施例中,客户端计算设备104、106在操作期间建立环境200。说明性环境200包括一个或多个应用202、会话持续性模块204、消息策略数据库206、以及通信模块208。应用202可被实施为被配置成用于在执行期间与数据中心114通信的任何类型的软件或固件应用。例如,在云计算实现方式中,应用202可被实施为被配置成用于与在一个或多个数据服务器110、112上执行的相应服务器侧应用通信的基于浏览器的应用和/或“瘦”客户端侧应用。可替代地,在其他实施例中,应用202可被实施为被配置成用于与数据中心114通信以便远程地存储数据的独立式、全特征应用。
会话持续性模块204可被实施为硬件、固件、软件或其组合。在某些实施例中,会话持续性模块204可被实施为结合到应用202中或以其他方式与其互连的应用程序接口。可替代地,在其他实施例中,会话持续性模块204可被结合到通信模块208的通信堆栈(例如,堆栈TCP/IP)中。会话持续性模块204被配置成用于标识从应用202发送的持续消息并且修改这种消息以便包括负载均衡器提示头,其标识包括在消息内的会话ID的位置(以及在某些实施例中的长度)。会话持续性模块204可通过访问可存储在数据存储设备128中的消息策略206标识持续消息。
消息策略206包括由会话持续性模块204用于确定从应用202发送的哪些传出消息是持续消息(即,发起或属于客户端-服务器持续会话)的规则和/或策略。例如,在某些实施例中,消息策略206可提供用于基于消息的终点(例如,消息所指向的负载均衡器102和数据中心114的互联网协议(IP)地址或媒体访问控制(MAC)地址)、消息类型(例如,在消息中使用的超文本传输协议(HTTP)方法的类型、在消息中使用的简单对象访问协议(SOAP)动作的类型)、包括在HTTP或其他协议有效载荷中的其他数据、和/或会话持续性模块204可用于标识应当被认为是持续消息的那些传出消息的其他数据来标识持续消息的规则或策略。
一旦被标识为持续消息,会话持续性模块204修改该持续消息以便包括负载均衡器提示头。如以下参照图4更详细讨论的,负载均衡器提示头包括标识消息内的会话ID的位置的位置标识符以及标识会话ID的长度的长度标识符。附加地,在某些实施例中,负载均衡器提示头可包括标识要由负载均衡器102执行的动作的动作。在持续消息已经被修改以便包括负载均衡器提示头之后,持续消息被通过网络108经由通信模块208使用如上所讨论的合适通信协议传输到数据中心114。类似于会话持续性模块204,通信模块208可被实施为硬件、固件、软件或其组合。
现在参考图3,在一个实施例中,负载均衡器102在操作期间建立环境300。说明性环境300包括通信模块302、会话持续性模块304、会话-服务器表或数据库306、以及负载均衡器模块308。通信模块302可被实施为硬件、固件、软件或其组合,并且被配置成用于通过网络108从客户端计算设备104、106接收消息。通信模块302将所接收到的消息传递到会话持续性模块304以用于分析和处理。
类似于会话持续性模块204,会话持续性模块304可被实施为硬件、固件、软件或其组合。会话持续性模块304被配置成用于从自客户端计算设备104、106接收的那些消息标识持续消息。为了这样做,会话持续性模块304确定特定消息是否包括负载均衡器提示头。如果包括,会话持续性模块204基于包括在负载均衡器提示头中的数据检索包括在持续消息中的会话ID,如以下更详细讨论的。将所检索到的会话ID与会话-服务器表306进行比较以便确定该特定会话ID已经被指派给哪个(哪些)数据服务器110、112。通信模块302随后将持续消息路由到所标识的数据服务器110、112。可替代地,如果会话ID不位于会话-服务器表306中,消息被提供给负载均衡器模块308,该负载均衡器模块基于或者以其他方式使用典型的负载均衡算法(例如,基于数据服务器110、112的工作负载)选择将消息路由到其上的一个或多个数据服务器110、112。会话持续性模块304随后用新指派的会话-服务器对更新会话-服务器表306。
现在参考图4,在使用时,客户端计算设备104、106可执行用于生成持续消息的方法400。方法400以框402开始,其中,客户端计算设备104、106被初始化,其可包括任何合适的初始化过程。在某些实施例中,客户端计算设备104、106可在框404中检索或以其他方式生成会话ID,其可被实施为标识特定持续会话的任何类型的数据。例如,在框404中,如果会话ID已经由负载均衡器102生成并指派,客户端计算设备104、106可检索会话ID。可替代地,会话ID可由客户端计算设备104、106从负载均衡器102请求或简单地由负载均衡器102指派给与新会话相关联的第一消息。仍进一步地,在某些实施例中,会话ID可由客户端计算设备104生成。在这种实施例中,会话ID可被实施为从其他客户端计算设备唯一地标识客户端计算设备104、106的数据字,诸如媒体访问控制(MAC)地址或全局唯一标识符(GUID)。在这种实施例中,可在执行方法400之前将会话ID指派给客户端计算设备104、106或以其他方式与其关联,并在框404中对其进行检索。在其他实施例中,会话ID可被实施为使用合适的随机数生成器在框404中随机地生成的数据字或其他数据,以便产生基本上唯一的标识符。在这种实施例中,会话ID可唯一地标识持续会话,从而使得单个客户端计算设备104、106可维护多个持续会话。
在框406,客户端计算设备104、106还可配置消息策略206。如以上所讨论的,消息策略包括可由客户端计算设备104、106的会话持续性模块204用于确定哪些传出消息是持续消息的规则和/或策略。如此,在框406中,客户端计算设备104、106可建立、更新、或以其他方式维护这种规则和策略。
在框408中,客户端计算设备104、106随后通过网络108建立与数据中心114的连接。在框410中,客户端计算设备104、106的会话持续性模块204确定在客户端计算设备104、106上执行的应用202是否正在尝试向数据中心114发送消息。如果是,方法400前进到框412,其中,客户端计算设备104、106确定传出消息是否是持续消息(即,属于持续会话的消息或者应当发起持续会话的消息)。为了这样做,会话持续性模块204在框414中检索消息策略206并且在框416中使用消息策略分析传出消息。如以上所讨论的,消息策略206的规则和策略可被实施为用于确定消息是否是持续消息的任何类型的规则或策略,诸如例如基于消息的终点、消息的类型、或其他数据的规则或策略。
如果会话持续性模块204在框418中确定消息是持续消息,方法400前进到框420,其中,会话持续性模块204修改消息以便包括负载均衡器提示头。如以上所讨论的,负载均衡器提示头标识消息内可发现会话ID的位置。这样,负载均衡器提示头允许负载均衡器102快速地检索会话ID而无需扫描或分析整个消息。负载均衡器提示头可被实施为标识会话ID在消息内的位置的任何类型的数据。例如,在使用HTTP消息的实施例中,负载均衡器提示头可具有以下形式:
LB-HINT:X,Y\r\n,
其中,“LB-HINT”是将头标识为LB-HINT头的头标记,“X”是标识会话ID在消息内的位置的位置标识符,“Y”是标识会话ID的长度的长度标识符,并且“/r/n”是标识负载均衡器提示的结束的结束标记。当然,应当认识到头标记可被实施为标识负载均衡器提示头的任何类型的头标记,并且在其他实施例中无需是取决于例如消息的类型的“LB-HINT”。位置标识符可使用绝对值(即,消息内的准确位置)或相对值(即,消息内的会话ID相对于负载均衡器提示的位置的位置)标识会话ID的位置。位置标识符可使用任何合适的位置度量(诸如行数、字节数、字符数等等)标识会话ID的位置。类似地,长度标识符可使用任何合适的度量(诸如会话ID的字符数、字节数、或字数)标识会话ID的长度。在某些实施例中,会话ID可不固有地包括在消息内。在这种实施例中,在框422中,会话持续性模块204还可修改消息以便包括会话ID(在包括负载均衡器提示头之前或者之后)。
附加地,在系统100包括如图7所示的多个数据中心114或者每个数据中心114包括多个负载均衡器的实施例中,负载均衡器提示头可包括标识要由负载均衡器102执行的动作的动作类型。例如,在使用HTTP消息的实施例中,负载均衡器提示头可具有以下形式:
LB-HINT:X,Y;[action]\r\n,
其中,“action(动作)”定义要由负载均衡器102执行的动作。动作类型可被实施为适合标识所请求的动作的任何类型的标识符。在某些实施例中,在框424中,会话持续性模块204可从一组预定义的动作类型中选择并且设置负载均衡器提示头中的所请求的动作。例如,在一个具体实施例中,可使用“创建”动作类型或“搜索”动作类型。在这种实施例中,“创建”动作类型指令负载均衡器102应当使用当前会话发起新的持续会话。“搜索”动作类型指令负载均衡器102针对包括在消息内的会话ID已经存在持续会话,以及如果当前负载均衡器102没有该会话的记录(即,在本地会话-服务器表306中不存在会话-服务器对),负载均衡器102应当与其他负载均衡器通信以便定位持续会话。在已经根据需要在框420、422和/或424中修改了消息之后,在框426中,通信模块208将经修改的消息传输到负载均衡器102。
返回参考框418,如果持续性模块204确定该消息不是持续消息,方法400前进到框426。在框426中,通信模块208照常将该消息传输到负载均衡器102。即,该消息被视为要发送到负载均衡器的正常消息(非持续)。
现在参考图5和图6,在使用时,负载均衡器102可执行用于维护一个或多个客户端计算设备104、104和一个或多个数据服务器110、112之间的会话持续性的方法500。方法500以框502开始,其中,负载均衡器被初始化,其可包括任何合适的初始化过程。例如,在某些实施例中,在框504中,负载均衡器102可建立或以其他方式维护会话-服务器表306。相应地,在某些实施例中,向每个持续会话指派超时阈值,从而使得每个持续会话仅持续预定或参考时间段。在这种实施例中,在框506中,可选择、确定、或以其他方式设置会话超时阈值。在某些实施例中,会话超时阈值的大小被选择为允许跨数据服务器110、112进行数据复制(即,持续会话仅被维护足够长以便确保跨数据服务器110、112进行数据复制)。
在负载均衡器102已经被初始化之后,在框508中,负载均衡器102确定是否已经从客户端计算设备104、106接收到消息。如果已经接收到,在框510中,负载均衡器102的会话持续性模块304确定所接收到的消息是否是持续消息。为了这样做,会话持续性模块304确定该消息是否包括负载均衡器提示头。如果会话持续性模块304确定所接收到的消息不是持续消息(即,不包括负载均衡器提示头),方法500前进到框512,其中,负载均衡器102将所接收到的消息路由到由负载均衡器模块308使用典型的负载均衡算法选择的数据服务器110、112。
然而,如果所接收到的消息被确定为持续消息(即,该消息包括负载均衡器提示头),在框514中,负载均衡器102的会话持续性模块304标识负载均衡器提示头。随后,在框516中,会话持续性模块304根据负载均衡器提示头(即,使用包括在负载均衡器提示头内的数据)检索会话ID。例如,在负载均衡器提示头包括位置标识符和长度标识符的实施例中,会话持续性模块304使用位置标识符在消息内定位会话ID并且使用长度标识符检索会话ID。如以上所讨论的,位置标识符可标识会话ID的绝对或相对位置。
在框518中,会话持续性模块304确定负载均衡器提示头是否包括动作类型。如果不包括,方法500前进到框520,其中,会话持续性模块304使用所检索到的会话ID搜索本地会话-服务器表306,以便确定该会话ID的持续会话是否是活跃的。在框522中,如果会话持续性模块304在会话-服务器表306中定位到会话ID,方法500前进到框524,其中,负载均衡器102的通信模块302将该消息路由到在会话-服务器表306中被标识为与会话ID成对的数据服务器110、112。附加地,在某些实施例中,负载均衡器102可使用除会话ID以外的数据或标准(例如,负载均衡、复制状态等等)确定将该消息路由到哪一个或多个数据服务器110、112。在框532,会话持续性模块304确定包括在会话-服务器表306中的任何持续会话是否已经达到超时阈值。如果是,方法500前进到框534,其中,任何超时持续会话的会话-服务器对被从会话-服务器表306移除。如果否,或者会话-服务器对已经被从会话-服务器表306移除之后,方法500循环回到框508,其中,负载均衡器102监视来自客户端计算设备104、106的消息。
返回参考框522,如果会话ID不包括在会话-服务器表306中,方法500前进到框526,其中,负载均衡器102的负载均衡器模块308为新的持续会话选择一个或多个数据服务器110、112(即,数据服务器110、112用于从客户端计算设备104、106接收用于新的持续会话的消息)。如上所述,负载均衡器模块308可使用任何合适的负载均衡算法或技术来选择数据服务器110、112。一旦被选定,在框528中,会话持续性模块304用使用所选择的数据服务器110、112的新的会话ID-服务器对来更新会话-服务器表306。在框530中,为新建立的持续会话(即,为新的会话-服务器对)发起会话计时器。在某些实施例中,会话计时器与会话-服务器对相关联地被记录在会话-服务器表306中并且可被实施为例如新的持续会话被建立的时间。方法500随后前进到框532,其中,会话持续性模块304确定包括在会话-服务器表306中的任何持续会话是否已经达到超时阈值,如上所述。如果已达到,方法500前进到框534,其中,任何超时持续会话的会话-服务器对被从会话-服务器表306移除。如果未达到,或者会话-服务器对已经被从会话-服务器表306移除之后,方法500循环回到框508,其中,负载均衡器102监视来自客户端计算设备104、106的消息。
返回参考框518,如果会话持续性模块304确定负载均衡器提示头确实包括动作类型,方法500前进到框550(见图6)。在框550中,会话持续性模块304确定动作类型是否是“创建”动作。如果是,方法500前进到框552、554、和556,其中,负载均衡器模块308为新的持续会话选择一个或多个数据服务器110、112、更新会话-服务器表306、以及为新建立的持续会话发起会话计时器,如以上参照框526、528、和530所讨论的。在已经建立新的持续会话之后,方法500前进到框558,其中,会话持续性模块304确定包括在会话-服务器表306中的任何持续会话是否已经达到超时阈值。如果已达到,方法500前进到框560,其中,任何超时持续会话的会话-服务器对被从会话-服务器表306移除。如果未达到,或者会话-服务器对已经被从会话-服务器表306移除之后,方法500循环回到框508,其中,负载均衡器102监视来自客户端计算设备104、106的消息。
返回参考框550,如果负载均衡器提示头的动作类型被确定不是“创建”动作,方法500前进到框462,其中,会话持续性模块304确定动作类型是否是“搜索”动作。如果不是,方法500循环回到框520(见图5),其中,该消息被处理为不具有动作类型的消息。然而,如果动作类型被确定为是“搜索”动作,方法500前进到框566,其中,会话持续性模块304使用所检索到的会话ID搜索本地会话-服务器表306,以便确定该会话ID的持续会话是否是活跃的,如以上参照框520所讨论的。如果会话持续性模块304确定在会话-服务器表306中包括会话ID,方法500前进到框570,其中,负载均衡器102的通信模块302将该消息路由到在会话-服务器表306中被标识为与会话ID成对的数据服务器110、112。方法500随后前进到框558,其中,会话持续性模块304确定包括在会话-服务器表306中的任何持续会话是否已经达到超时阈值,如上所述。如果已达到,方法500前进到框560,其中,任何超时持续会话的会话-服务器对被从会话-服务器表306移除。如果未达到,或者会话-服务器对已经被从会话-服务器表306移除之后,方法500循环回到框508,其中,负载均衡器102监视来自客户端计算设备104、106的消息。
返回参考框568,如果会话持续性模块304在本地会话-服务器表306中不包括会话ID(即,持续会话不是由对应的负载均衡器102维护),方法500前进到框572,其中,负载均衡器102向系统100的数据中心114或其他数据中心114内的其他负载均衡器发送请求(见图7)。在这样做时,负载均衡器102请求其他负载均衡器针对会话ID搜索其本地会话-服务器表306,以便确定其他负载均衡器中的哪一个或多个正在维护该持续会话。随后,在框578中,负载均衡器102确定会话ID是否已经由另一个负载均衡器定位到(例如,负载均衡器102是否从其他负载均衡器接收到肯定响应)。如果接收到,在框580中,负载均衡器102向提供维护该特定持续会话的负载均衡器的标识数据(例如,IP地址)的客户端计算设备104、106发送重定向消息。然而,如果会话ID未被定位到,在框582中,向客户端计算设备104、106发送错误消息,并且方法循环回到框508,其中,负载均衡器102监视来自客户端计算设备104、106的消息。
示例
以下提供在此公开的设备、系统、和方法的说明性示例。设备、系统、和方法的实施例可包括以下所描述的示例中的任何一个或多个以及任何组合。
在一个示例中,一种用于跨多个数据服务器均衡来自多个客户端计算设备的工作负载的负载均衡器可包括:通信模块,用于从该多个客户端计算设备中的客户端计算设备接收消息;以及会话持续性模块,用于根据包括在该消息内的负载均衡器提示头在一个或多个客户端计算设备和一个或多个数据服务器之间提供持续会话。该负载均衡器提示头可标识该消息内的标识该持续会话的会话标识符的位置。
在示例中,该会话持续性模块用于:根据该负载均衡器提示头检索该会话标识符;将该会话标识符与会话-服务器表进行比较以便标识至少一个数据服务器用于接收该消息;以及向所标识的至少一个数据服务器传输该消息。在示例中,该会话持续性模块可响应于与该一个或多个客户端计算设备与所标识的至少一个数据服务器之间的该持续会话相关联的会话计时器的过期,从该会话-服务器表移除该会话标识符。在示例中,该会话持续性模块可响应于该会话标识符不包括在该会话-服务器表中使用负载均衡算法从该多个数据服务器选择数据服务器,并且将该消息传输到所选择的数据服务器。在示例中,该会话持续性模块可响应于选择该数据服务器,发起与该一个或多个客户端计算设备与所选择的数据服务器之间的该持续会话相关联的会话计时器。
在示例中,该负载均衡器提示头可包括标识该消息内该会话标识符的位置的位置标识符。在示例中,该位置标识符可包括标识该消息内该会话标识符相对于以下之一的位置的偏移值:(i)该负载均衡器提示头在该消息内的位置或(ii)该消息的起始。在示例中,该负载均衡器提示头可进一步包括标识该会话标识符的长度的长度标识符。在示例中,该会话持续性模块可根据该位置标识符和该长度标识符从该消息获得该会话标识符、将该会话标识符与本地会话-服务器表进行比较来根据该会话标识符标识用于接收该消息的数据服务器、以及将该消息传输到所标识的数据服务器。
在示例中,该负载均衡器提示头可包括标识该消息内该会话标识符的位置的位置标识符以及指示要由该负载均衡器执行的动作的动作类型。在这种示例中,该会话持续性模块可基于包括在该负载均衡器提示头中的该动作类型执行多个动作之一。在示例中,该会话持续性模块响应于该述负载均衡器提示头包括相应的动作类型,可使用负载均衡算法从该多个数据服务器选择数据服务器以便接收该消息以及将该消息传输到所选择的数据服务器。在示例中,该会话持续性模块可响应于选择该数据服务器,发起与该持续会话相关联的会话计时器。在示例中,该会话持续性模块响应于该负载均衡器提示头包括相应的动作类型,可确定该会话标识符是否包括在本地会话-服务器表中,以及响应于确定该会话标识符不包括在该本地会话-服务器表中,向至少一个其他负载均衡器传输确定该会话标识符是否包括在该其他负载均衡器所管理的会话-服务器表中的请求。在示例中,该会话持续性模块可从另一个负载均衡器接收该会话标识符包括在由该其他负载均衡器管理的会话-服务器表中的确认,以及响应于该确认,将重定向消息传输到发送该消息的该客户端计算设备。该重定向消息可包括标识管理包括该会话标识符的会话服-务器表的负载均衡器的负载均衡器标识数据。在示例中,该会话持续性模块可从在该其他负载均衡器所管理的该会话-服务器表中标识的与该会话标识符相关联的该相应数据服务器接收响应消息,以及将该响应消息重新传输到发送该消息的该客户端计算设备。在示例中,该会话持续性模块响应于确定该会话标识符包括在该本地会话-服务器表中,可根据该会话标识符从该本地会话-服务器表标识多个数据服务器中的一个或多个数据服务器,并且将该消息传输到所标识的一个或多个数据服务器。
在示例中,该负载均衡器提示头可包括标识该负载均衡器提示头的标签、标识该消息内该会话标识符的位置的位置标识符、标识该会话标识符的长度的长度标识符、以及标识要由该负载均衡器执行的动作的动作类型。在示例中,该负载均衡器提示头包括超文本标记语言头。在示例中,该会话标识符唯一地标识发送该消息的该客户端计算设备与该数据服务器之一之间的持续会话。
在另一个示例中,一种用于与数据中心的一个或多个数据服务器通信的客户端计算设备可包括:会话持续性模块,用于修改要从在该客户端计算设备上执行的应用发送到该一个或多个数据服务器的消息,以便包括标识该消息内会话标识符的位置的负载均衡器提示头,会话标识符标识该客户端计算设备和该一个或多个数据服务器之间的持续会话。该客户端计算设备还可包括通信模块,用于向管理该一个或多个数据服务器的负载均衡器传输该经修改的消息。
在示例中,该负载均衡器提示头可包括标识该消息内该会话标识符的位置的位置标识符。在示例中,该位置标识符可包括标识该消息内该会话标识符相对于以下之一的位置的偏移值:(i)该负载均衡器提示头在该消息内的位置或(ii)该消息的起始。在示例中,该负载均衡器提示头可进一步包括标识该会话标识符的长度的长度标识符。在示例中,该负载均衡器提示头可进一步包括标识要由该负载均衡器执行的动作的动作类型。在示例中,该会话持续性模块可确定要由该负载均衡器执行的该动作以及设置该动作类型以便指示要由该负载均衡器执行的该动作。在示例中,该动作类型可指示,该负载均衡器用于在该客户端计算设备与该一个或多个数据服务器之间创建持续会话。在示例中,该动作类型指示,该负载均衡器将与另一个负载均衡器通信以便定位该客户端计算设备与其进行当前持续会话的相应的数据服务器。
在示例中,该会话持续性模块可基于存储在该客户端计算设备上的消息策略,确定该消息是否是要包括在该客户端计算设备与该一个或多个数据服务器之间的持续会话中的持续消息。在示例中,该消息策略可基于以下至少一项标识持续消息:该消息的目的地、包括在该消息内的超文本传输协议方法、以及包括在该消息内的简单对象访问协议动作。在示例中,该会话持续性模块可生成该会话标识符并且进一步通过包括该会话标识符来修改该消息。在示例中,该会话标识符可唯一地从与该负载均衡器通信的其他计算设备标识该客户端计算设备。在示例中,该会话标识符唯一地标识该客户端计算设备与该一个或多个数据服务器之间的持续会话。在示例中,该会话标识符唯一地标识该负载均衡器与该一个或多个数据服务器之间的持续会话。
在另一个示例中,一种在客户端计算设备和多个数据服务器之间提供持续会话的方法可包括:通过负载均衡器从该客户端计算设备接收消息;通过该负载均衡器基于包括在该消息内的负载均衡器提示头确定该消息内会话标识符的位置,该会话标识符标识该持续会话;通过该负载均衡器比较该会话标识符和由该负载均衡器管理的会话-服务器表以便标识该多个数据服务器中的至少一个数据服务器来接收该消息;以及从该负载均衡器向所标识的至少一个数据服务器传输该消息。在示例中,该方法可进一步包括响应于与该持续会话相关联的会话计时器的过期,从该会话-服务器表移除该会话标识符。在示例中,该方法可进一步包括响应于该会话标识符不包括在该会话-服务器表中使用负载均衡算法从该多个数据服务器选择数据服务器,并且将该消息传输到所选择的数据服务器。附加地,在示例中,该方法可进一步包括响应于选择该数据服务器,发起与该持续会话相关联的会话计时器。
在示例中,确定该会话标识符的该位置包括根据(i)标识该消息内该会话标识符的位置的该负载均衡器提示头的位置标识符和(ii)标识该会话标识符的长度的长度标识符,确定该会话标识符的位置。在示例中,根据该位置标识符确定该会话标识符的位置包括根据该位置标识符和该消息内该负载均衡器提示头的位置,确定该消息内该会话标识符的位置。
在示例中,该方法可进一步包括基于包括在该负载均衡器头中的动作类型确定要由该负载均衡器执行的动作,其中,该动作类型指示要由该负载均衡器执行的该动作。在示例中,该方法可进一步包括响应于基于动作类型确定相应的动作,(i)使用负载均衡算法从该多个数据服务器选择数据服务器以便接收该消息以及(ii)将该消息从负载均衡器传输到所选择的数据服务器。在示例中,该方法可进一步包括响应于基于该动作类型确定相应的动作,(i)确定该会话标识符是否包括在本地会话-服务器表中,以及(ii)响应于确定该会话标识符不包括在该本地会话-服务器表中,向至少一个其他负载均衡器传输确定该会话标识符是否包括在该其他负载均衡器所管理的会话-服务器表中的请求。在示例中,该方法可进一步包括响应于该请求从另一个负载均衡器接收该会话标识符包括在该其他负载均衡器所管理的会话-服务器表中的确认,并且响应于该确认向发送该消息的该客户端计算设备传输重定向消息,其中,该重定向消息包括标识管理包括该会话标识符的该会话-服务器表的该负载均衡器的负载均衡器标识数据。在示例中,该方法可进一步包括响应于该请求,从在该其他负载均衡器所管理的该会话-服务器表中标识的与该会话标识符相关联的该相应数据服务器接收响应消息,以及将该响应消息重新传输到发送该消息的该客户端计算设备。
在另一个示例中,一种负载均衡器可包括处理器和存储器,该存储器具有存储在其中的多条指令,当被该处理器执行时,这些指令致使该负载均衡器执行任何上述方法。附加地,在另一个示例中,一个或多个机器可读介质可包括存储在其上的多条指令,响应于被执行,这些指令导致负载均衡器执行任何上述方法。
在另一个示例中,一种用于客户端计算设备和多个数据服务器的数据服务器之间的持续会话通信的方法可包括:修改要从在该客户端计算设备上执行的应用发送到该数据服务器的消息以便包括标识该消息内标识该持续会话的会话标识符的位置的负载均衡器提示头,以及将该经修改的消息传输到管理该数据服务器的负载均衡器。在示例中,修改该消息可包括设置该负载均衡器提示头的位置标识符以便标识该消息内该会话标识符的位置。在示例中,修改该消息包括设置该负载均衡器提示头的位置标识符以便标识该消息内该会话标识符相对于以下之一的位置:(i)该负载均衡器提示头在该消息内的位置或(ii)该消息的起始。在示例中,修改该消息包括设置该负载均衡器提示头的长度标识符以便标识该会话标识符的长度。在示例中,修改该消息包括设置该负载均衡器提示头的动作类型,该动作类型指示要由该负载均衡器执行的动作。
在示例中,设置该动作类型可包括设置该动作类型以便指示该负载均衡器将在该客户端计算设备和该数据服务器之间创建持续会话。在示例中,设置该动作类型可包括设置该动作类型以便指示该负载均衡器将与另一个负载均衡器通信以便定位该客户端计算设备与其进行当前持续会话的相应的数据服务器。
在示例中,该方法可进一步包括基于存储在该客户端计算设备上的消息策略,确定该消息是否是要包括在该客户端计算设备与该一个或多个数据服务器之间的持续会话中的持续消息。在示例中,确定该消息是否是持续消息可包括基于以下至少一项确定该消息是否是持续消息:该消息的目的地、包括在该消息内的超文本传输协议方法、以及包括在该消息内的简单对象访问协议动作。在示例中,该方法可进一步包括生成该会话标识符并且进一步通过包括该会话标识符来修改该消息。
在另一个示例中,一种客户端计算设备可包括处理器和存储器,该存储器具有存储在其中的多条指令,当被该处理器执行时,这些指令致使该客户端计算设备行执任何上述方法。附加地,在另一个示例中,一个或多个机器可读介质可包括存储在其上的多条指令,响应于被执行,这些指令导致客户端设备执行任何上述方法。
尽管已经在附图和前述描述中详细地示出并描述本公开,这种示出和描述应被认为是本质上是示例性的并且不是限制性的,应理解的是仅示出并描述说明性实施例并且希望保护与本公开和所引用的权利要求书相一致的所有变化和修改。

Claims (30)

1.一种用于跨多个数据服务器均衡多个客户端计算设备的工作负载的负载均衡器,所述负载均衡器包括:
通信模块,用于从所述多个客户端计算设备中的客户端计算设备接收消息;以及
会话持续性模块,用于根据包括在所述消息内的负载均衡器提示头,在一个或多个客户端计算设备和一个或多个数据服务器之间提供持续会话,其中所述负载均衡器提示头标识所述消息内标识所述持续会话的会话标识符的位置。
2.如权利要求1所述的负载均衡器,其中,所述会话持续性模块用于:
根据所述负载均衡器提示头检索所述会话标识符;
将所述会话标识符与会话-服务器表进行比较以便标识至少一个数据服务器来接收所述消息;以及
向所标识的至少一个数据服务器传输所述消息。
3.如权利要求1所述的负载均衡器,其中,所述负载均衡器提示头包括标识所述消息内所述会话标识符的所述位置的位置标识符。
4.如权利要求3所述的负载均衡器,其中,所述位置标识符包括标识所述消息内所述会话标识符相对于以下之一的位置的偏移值:(i)所述负载均衡器提示头在所述消息内的位置或(ii)所述消息的起始。
5.如权利要求3所述的负载均衡器,其中,所述负载均衡器提示头还包括标识所述会话标识符的长度的长度标识符。
6.如权利要求1所述的负载均衡器,其中,所述负载均衡器提示头包括标识所述消息内所述会话标识符的所述位置的位置标示符和指示要由所述负载均衡器执行的动作的动作类型,并且
其中所述会话持续性模块用于基于所述负载均衡器提示头中包括的所述动作类型执行多个动作之一。
7.如权利要求6所述的负载均衡器,其中,所述会话持续性模块响应于所述负载均衡器提示头包括相应的动作类型:
确定所述会话标识符是否包括在本地会话-服务器表中,以及
响应于确定所述会话标识符不包括在所述本地会话-服务器表中,向至少一个其他负载均衡器传输确定所述会话标识符是否包括在所述其他负载均衡器所管理的会话-服务器表中的请求。
8.如权利要求7所述的负载均衡器,其中,所述会话持续性模块用于:
从另一个负载均衡器接收所述会话标识符包括在所述其他负载均衡器所管理的会话-服务器表中的确认,并且
响应于所述确认,向发送所述消息的所述客户端计算设备传输重定向消息,其中所述重定向消息包括标识管理包括所述会话标识符的所述会话-服务器表的负载均衡器的负载均衡器标识数据。
9.如权利要求7所述的负载均衡器,其中,所述会话持续性模块用于:
从在所述其他负载均衡器所管理的所述会话-服务器表中标识的与所述会话标识符相关联的所述相应数据服务器接收响应消息;以及
将所述响应消息传输到发送所述消息的所述客户端计算设备。
10.如权利要求1所述的负载均衡器,其中,所述负载均衡器提示头包括标识所述负载均衡器提示头的标签、标识所述消息内所述会话标识符的位置的位置标识符、标识所述会话标识符的长度的长度标识符、以及标识要由所述负载均衡器执行的动作的动作类型。
11.一种用于与数据中心的一个或多个数据服务器通信的客户端计算设备,所述客户端计算设备包括:
会话持续性模块,用于修改要从在所述客户端计算设备上执行的应用发送到所述一个或多个数据服务器的消息以便包括标识所述消息内会话标识符的位置的负载均衡器提示头,所述会话标识符标识所述客户端计算设备和所述一个或多个数据服务器之间的持续会话;以及
通信模块,用于向管理所述一个或多个数据服务器的负载均衡器传输所述经修改的消息。
12.如权利要求11所述的客户端计算设备,其中,所述负载均衡器提示头包括标识所述消息内所述会话标识符的位置的位置标识符。
13.如权利要求12所述的客户端计算设备,其中,所述负载均衡器提示头进一步包括标识所述会话标识符的长度的长度标识符。
14.如权利要求13所述的客户端计算设备,其中,所述负载均衡器提示头进一步包括标识要由所述负载均衡器执行的动作的动作类型。
15.如权利要求14所述的客户端计算设备,其中,所述会话持续性模块用于:
确定要由所述负载均衡器执行的动作;以及
设置所述动作类型以便指示要由所述负载均衡器执行的动作。
16.如权利要求14所述的客户端计算设备,其中,所述动作类型指示所述负载均衡器将与另一个负载均衡器通信以便定位所述客户端计算设备与其进行当前持续会话的相应的数据服务器。
17.一种在客户端计算设备和多个数据服务器之间提供持续会话的方法,所述方法包括:
通过负载均衡器从所述客户端计算设备接收消息;
通过所述负载均衡器基于包括在所述消息内的负载均衡器提示头确定所述消息内会话标识符的位置,所述会话标识符标识所述持续会话;
通过所述负载均衡器比较所述会话标识符和由所述负载均衡器管理的会话-服务器表以便标识所述多个数据服务器中的至少一个数据服务器来接收所述消息;以及
从所述负载均衡器向所标识的至少一个数据服务器传输所述消息。
18.如权利要求17所述的方法,其中,确定所述会话标识符的位置包括根据(i)标识所述消息内所述会话标识符的位置的所述负载均衡器提示头的位置标识符和(ii)标识所述会话标识符的长度的长度标识符,确定所述会话标识符的位置。
19.如权利要求18所述的方法,其中,根据所述位置标识符确定所述会话标识符的位置包括根据所述位置标识符和所述消息内所述负载均衡器提示头的位置,确定所述消息内所述会话标识符的位置。
20.如权利要求17所述的方法,进一步包括基于包括在所述负载均衡器头中的动作类型确定要由所述负载均衡器执行的动作,其中所述动作类型指示要由所述负载均衡器执行的动作。
21.如权利要求20所述的方法,进一步包括响应于基于所述动作类型确定相应的动作,(i)确定所述会话标识符是否包括在本地会话-服务器表中,以及(ii)响应于确定所述会话标识符不包括在所述本地会话-服务器表中,向至少一个其他负载均衡器传输确定所述会话标识符是否包括在所述其他负载均衡器所管理的会话-服务器表中的请求。
22.如权利要求21所述的方法,进一步包括:
响应于所述请求从另一个负载均衡器接收所述会话标识符包括在所述其他负载均衡器所管理的会话-服务器表中的确认,并且
响应于所述确认向发送所述消息的所述客户端计算设备传输重定向消息,其中,所述重定向消息包括标识管理包括所述会话标识符的所述会话-服务器表的所述负载均衡器的负载均衡器标识数据。
23.如权利要求21所述的方法,进一步包括:
响应于所述请求,从在所述其他负载均衡器所管理的所述会话-服务器表中标识的与所述会话标识符相关联的所述相应数据服务器接收响应消息;以及
将所述响应消息重新传输到发送所述消息的所述客户端计算设备。
24.一种用于客户端计算设备和多个数据服务器中的数据服务器之间的持续会话通信的方法,所述方法包括:
修改要从在所述客户端计算设备上执行的应用向所述数据服务器发送的消息以便包括标识所述消息内标识所述持续会话的会话标识符的位置的负载均衡器提示头;以及
将所述经修改的消息传输到管理所述数据服务器的负载均衡器。
25.如权利要求24所述的方法,其中,修改所述消息包括设置所述负载均衡器提示头的位置标识符以便标识所述消息内所述会话标识符的位置。
26.如权利要求24所述的方法,其中,修改所述消息包括设置所述负载均衡器提示头的位置标识符以便标识所述消息内所述会话标识符相对于以下之一的位置:(i)所述负载均衡器提示头在所述消息内的位置或(ii)所述消息的起始。
27.如权利要求25所述的方法,其中,修改所述消息包括设置所述负载均衡器提示头的标识所述会话标识符的长度的长度标识符。
28.如权利要求27所述的方法,其中,修改所述消息包括设置所述负载均衡器提示头的指示要由所述负载均衡器执行的动作的动作类型。
29.如权利要求28所述的方法,其中,设置所述动作类型包括设置所述动作类型以便指示所述负载均衡器将在所述客户端计算设备和所述数据服务器之间创建持续会话。
30.如权利要求28所述的方法,其中,设置所述动作类型包括设置所述动作类型以便指示所述负载均衡器将与另一个负载均衡器通信以便定位所述客户端计算设备与其进行当前持续会话的相应的数据服务器。
CN201380028625.2A 2012-06-29 2013-06-21 用于客户端管理会话持续性的设备、系统和方法 Expired - Fee Related CN104380278B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/538,118 US9325785B2 (en) 2012-06-29 2012-06-29 Device, system, and method for client-governed session persistency between one or more clients and servers of a data center
US13/538,118 2012-06-29
PCT/US2013/047088 WO2014004308A1 (en) 2012-06-29 2013-06-21 Device, system, and method for client-governed session persistency between one or more clients and servers of a data center

Publications (2)

Publication Number Publication Date
CN104380278A true CN104380278A (zh) 2015-02-25
CN104380278B CN104380278B (zh) 2017-07-18

Family

ID=49779366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380028625.2A Expired - Fee Related CN104380278B (zh) 2012-06-29 2013-06-21 用于客户端管理会话持续性的设备、系统和方法

Country Status (4)

Country Link
US (1) US9325785B2 (zh)
CN (1) CN104380278B (zh)
DE (1) DE112013003289T5 (zh)
WO (1) WO2014004308A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105072182A (zh) * 2015-08-10 2015-11-18 北京佳讯飞鸿电气股份有限公司 一种负载均衡方法、负载均衡器和用户终端
CN105959410A (zh) * 2016-06-29 2016-09-21 深圳中兴网信科技有限公司 服务器集群的负载均衡方法及负载均衡系统
CN109168054A (zh) * 2018-09-10 2019-01-08 杭州联驱科技有限公司 显示屏播放系统及控制方法
CN109495526A (zh) * 2017-09-12 2019-03-19 北京金山云网络技术有限公司 一种报文发送方法、装置、系统、电子设备及存储介质
CN110609746A (zh) * 2018-06-15 2019-12-24 伊姆西Ip控股有限责任公司 管理网络系统的方法、设备和计算机程序产品
CN112217857A (zh) * 2019-07-12 2021-01-12 电子湾有限公司 连接服务发现和负载重新均衡
CN112866355A (zh) * 2015-05-26 2021-05-28 爱唯思有限公司 用于服务器故障转移和负荷平衡的系统和方法
WO2023165429A1 (zh) * 2022-03-01 2023-09-07 百果园技术(新加坡)有限公司 一种会话状态管理方法、系统、装置、设备及存储介质

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9325785B2 (en) 2012-06-29 2016-04-26 Rodolfo Kohn Device, system, and method for client-governed session persistency between one or more clients and servers of a data center
US8972491B2 (en) * 2012-10-05 2015-03-03 Microsoft Technology Licensing, Llc Consistency-based service-level agreements in cloud storage environments
CN104995615B (zh) * 2012-12-27 2018-03-30 英特尔公司 本地计算设备的预订和执行镜像写入
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
CN104754003B (zh) * 2013-12-30 2019-01-08 腾讯科技(深圳)有限公司 传输数据的方法及系统
EP3200407B1 (en) * 2014-10-17 2019-08-28 Huawei Technologies Co., Ltd. Data flow distribution method and device
US20160135235A1 (en) * 2014-11-06 2016-05-12 David R. Elmaleh System and method for information sharing based on wireless association
RU2015102736A (ru) * 2015-01-29 2016-08-20 Общество С Ограниченной Ответственностью "Яндекс" Система и способ обработки запроса в сети распределенной обработки данных
US9882976B1 (en) * 2015-06-16 2018-01-30 Amazon Technologies, Inc. Supporting heterogeneous environments during code deployment
US10447773B2 (en) * 2015-12-29 2019-10-15 General Motors Llc Aggregating vehicle-related big data
BR112019003923A2 (pt) * 2016-09-19 2019-05-21 Huawei Technologies Co., Ltd. método de persistência de sessão, dispositivo de nó, balanceador de carga, e meio de armazenamento legível em computador
US10394903B2 (en) * 2016-10-21 2019-08-27 Sap Se Highly scalable application services
US10628233B2 (en) * 2016-12-30 2020-04-21 Samsung Electronics Co., Ltd. Rack-level scheduling for reducing the long tail latency using high performance SSDS
CN108696549B (zh) * 2017-04-05 2021-05-25 北京京东尚科信息技术有限公司 负载均衡方法、装置和系统
US20200028713A1 (en) * 2018-07-16 2020-01-23 Dwight L. Stewart Computer system having controller configured to create data tunnel based on device information
WO2020102349A1 (en) 2018-11-13 2020-05-22 Illumy, Inc. Methods, systems, and apparatus for email to persistent messaging and/or text to persistent messaging
CN113206877A (zh) * 2021-04-29 2021-08-03 工银科技有限公司 一种会话保持方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003574B1 (en) * 2000-11-01 2006-02-21 Microsoft Corporation Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier
CN101304436A (zh) * 2008-07-07 2008-11-12 杭州华三通信技术有限公司 实现应用层会话持续性的负载均衡方法、系统及设备
US20090113055A1 (en) * 2007-10-11 2009-04-30 Vonage Holdings Corp. Method and apparatus for fulfilling information requests in a networked environment

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0926608B1 (en) 1997-12-24 2004-03-10 Nortel Networks Limited Distributed persistent storage for intermittently connected clients
JPH11306244A (ja) 1998-04-16 1999-11-05 Hitachi Ltd ワーク管理システム
US7954144B1 (en) * 2000-01-18 2011-05-31 Novell, Inc. Brokering state information and identity among user agents, origin servers, and proxies
US7296076B1 (en) 2002-10-23 2007-11-13 Cisco Technology, Inc. Maintaining session persistence without client-supported cookies
US8458467B2 (en) * 2005-06-21 2013-06-04 Cisco Technology, Inc. Method and apparatus for adaptive application message payload content transformation in a network infrastructure element
JP5458688B2 (ja) * 2009-03-19 2014-04-02 富士通株式会社 一意性保証支援プログラム、サービス提供システム、及び一意性保証実現方法
US9325785B2 (en) 2012-06-29 2016-04-26 Rodolfo Kohn Device, system, and method for client-governed session persistency between one or more clients and servers of a data center

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003574B1 (en) * 2000-11-01 2006-02-21 Microsoft Corporation Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier
US20090113055A1 (en) * 2007-10-11 2009-04-30 Vonage Holdings Corp. Method and apparatus for fulfilling information requests in a networked environment
CN101304436A (zh) * 2008-07-07 2008-11-12 杭州华三通信技术有限公司 实现应用层会话持续性的负载均衡方法、系统及设备

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112866355A (zh) * 2015-05-26 2021-05-28 爱唯思有限公司 用于服务器故障转移和负荷平衡的系统和方法
CN105072182A (zh) * 2015-08-10 2015-11-18 北京佳讯飞鸿电气股份有限公司 一种负载均衡方法、负载均衡器和用户终端
CN105959410A (zh) * 2016-06-29 2016-09-21 深圳中兴网信科技有限公司 服务器集群的负载均衡方法及负载均衡系统
CN105959410B (zh) * 2016-06-29 2019-06-04 深圳中兴网信科技有限公司 服务器集群的负载均衡方法及负载均衡系统
CN109495526A (zh) * 2017-09-12 2019-03-19 北京金山云网络技术有限公司 一种报文发送方法、装置、系统、电子设备及存储介质
CN110609746A (zh) * 2018-06-15 2019-12-24 伊姆西Ip控股有限责任公司 管理网络系统的方法、设备和计算机程序产品
CN109168054A (zh) * 2018-09-10 2019-01-08 杭州联驱科技有限公司 显示屏播放系统及控制方法
CN112217857A (zh) * 2019-07-12 2021-01-12 电子湾有限公司 连接服务发现和负载重新均衡
CN112217857B (zh) * 2019-07-12 2024-03-08 电子湾有限公司 连接服务发现和负载重新均衡
WO2023165429A1 (zh) * 2022-03-01 2023-09-07 百果园技术(新加坡)有限公司 一种会话状态管理方法、系统、装置、设备及存储介质

Also Published As

Publication number Publication date
WO2014004308A1 (en) 2014-01-03
US20140006578A1 (en) 2014-01-02
US9325785B2 (en) 2016-04-26
DE112013003289T5 (de) 2015-07-30
CN104380278B (zh) 2017-07-18

Similar Documents

Publication Publication Date Title
CN104380278A (zh) 用于一个或多个客户端和数据中心的服务器之间的客户端管理会话持续性的设备、系统和方法
CN105939313B (zh) 状态码重定向方法及装置
CN102119512A (zh) 分布式负载平衡器
WO2019237594A1 (zh) 会话保持方法、装置、计算机设备及存储介质
EP2824872B1 (en) Host providing system and communication control method
CN111064804B (zh) 网络访问方法和装置
CN105450759A (zh) 一种系统镜像的管理方法和装置
US20140143339A1 (en) Method, apparatus, and system for resource sharing
US20190335012A1 (en) Systems and methods for determining a destination location for transmission of packetized data in a network system based on an application server attribute
US8972968B1 (en) Alternate service for applications
US20200112510A1 (en) Redirecting data packets between overlay network and underlay network
CN108293047B (zh) 由用户访问跨多个分布式计算网络的资源的系统和方法
CN110233902A (zh) 会话处理方法、装置、电子设备及机器可读存储介质
CN111800511B (zh) 同步登录态的处理方法、系统、设备及可读存储介质
CN113452778A (zh) 会话保持方法、装置、设备、系统及存储介质
CN103051544B (zh) 实现IPv4私网接入IPv6网络的方法及接入设备
EP4022469A1 (en) Systems and methods for in-application dynamic content loading
WO2014146448A1 (en) Method and system for synchronizing browser bookmarks
US10481963B1 (en) Load-balancing for achieving transaction fault tolerance
US10200301B1 (en) Logical control groups for distributed system resources
US10958580B2 (en) System and method of performing load balancing over an overlay network
CN115516842A (zh) 编排代理服务
US11153391B2 (en) Connecting application instances to client devices
CN112637316B (zh) 一种通信方法及装置
CN105915582A (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
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170718

Termination date: 20200621