用于利用非粘性负载均衡器实现有状态云服务的会话粘性的系统和方法与流程

文档序号:19942794发布日期:2020-02-14 23:24阅读:177来源:国知局
用于利用非粘性负载均衡器实现有状态云服务的会话粘性的系统和方法与流程

本公开涉及有状态云服务,并且更具体地涉及用于利用非粘性负载均衡器来实现有状态云服务的会话粘性的系统和方法。



背景技术:

本文提供的背景描述是为了总体上呈现本公开的上下文的目的。目前命名的发明人的工作,在本背景技术部分描述的工作的范围内,以及在提交时可能不具备其他资格作为现有技术的描述的方面,既不明确也不暗示地被承认为针对本公开的现有技术。

有状态云服务需要服务器计算机,其在云服务会话期间跟踪和存储在客户端计算机上运行的应用的当前状态。例如包括web创作工具的web应用可以在与服务器计算机通信的客户端计算机的web浏览器内运行。在云服务会话期间,服务器计算机可以向客户端计算机提供代码和内容,以在客户端计算机的web浏览器中运行web应用。再例如诸如的应用设计工具可以在web浏览器中运行并用于创建移动应用,例如用于移动设备。在应用设计会话期间,用户可以将诸如滑块、按钮和文本的用户界面元素拖动到web浏览器内的空白画布上,以设计和构建移动应用。当web应用在客户端计算机上运行时,诸如在客户端计算机的web浏览器中,客户端计算机与服务器计算机通信,以基于客户端计算机接收的用户输入来接收web应用的代码和内容。为了正常运行,服务器计算机上存储的状态信息必须与客户端计算机的实际当前状态相匹配。例如在客户端计算机的web浏览器中运行的web应用的状态必须在整个会话中与服务器计算机上存储的状态信息同步。

为了确保服务器计算机上存储的状态信息与客户端计算机上的web应用的当前状态保持同步并且保持web应用的连续操作,来自客户端计算机的web浏览器的通信必须被路由到相同的数据中心或服务器集群以到达在整个会话期间存储对应于特定客户端计算机的状态信息的相同服务器计算机。然而,当来自客户端计算机的web浏览器的通信被寻址到全局端点而不是特定服务器集群时,负载均衡器可以将这种通信引导到不正确的服务器集群。在这种情况下,服务器上存储的状态信息可能与web应用的当前状态不同步,导致在客户端计算机的web浏览器中运行的web应用的中断或故障。



技术实现要素:

提供了一种系统,其包括处理器、存储器和应用,应用被存储在存储器中并包括由处理器可执行的指令。指令被配置为通过发送寻址到与多个服务器集群相关联的全局端点的会话发起请求来发起针对应用的有状态会话。指令还被配置为从多个服务器集群中的第一服务器集群的第一服务器接收对会话发起请求的响应,该响应包括与第一服务器集群相关联的集群标识。指令还被配置为发送寻址到全局端点的会话请求,该会话请求包括与第一服务器集群相关联的集群标识。指令还被配置为响应于来自多个服务器集群中的第二服务器集群的第二服务器的会话请求而接收错误消息。指令还被配置为响应于接收到错误消息来重新发送寻址到第一服务器集群的会话请求。

在其他特征中,提供了与多个服务器集群中的第一服务器集群相关联的服务器,所述多个服务器集群与全局端点相关联。该服务器包括处理器、存储器和应用,应用被存储在存储器中并包括由处理器可执行的指令。指令被配置为存储与第一服务器集群相关联的第一集群标识。指令还被配置为从多个客户端的客户端接收会话发起请求,该会话发起请求被寻址到全局端点。指令还被配置为向客户端发送对会话发起请求的响应,该响应包括第一集群标识。指令还被配置为将会话状态信息存储在存储器中,会话状态信息对应于被配置为在客户端处运行的客户端应用的状态。指令还被配置为从多个客户端之一接收被寻址到全局端点的会话请求,该会话请求具有第二集群标识。指令还被配置为将第一集群标识与第二集群标识进行比较。指令还被配置为当第一集群标识与第二集群标识不匹配时用错误消息响应会话请求。

在其他特征中,提供了一种方法,该方法包括通过发送被寻址到与多个服务器集群相关联的全局端点的会话发起请求,用客户端发起针对应用的有状态会话。该方法还包括用客户端从多个服务器集群中的第一服务器集群的第一服务器接收对会话发起请求的响应,该响应包括与第一服务器集群相关联的集群标识。该方法还包括用客户端发送寻址到全局端点的会话请求,该会话请求包括与第一服务器集群相关联的集群标识。该方法还包括响应于来自多个服务器集群中的第二服务器集群的第二服务器的会话请求,用客户端接收错误消息。该方法还包括响应于接收到错误消息,用客户端重新发送被寻址到第一服务器集群的会话请求。

在其他特征中,提供了一种方法,该方法包括用与和全局端点相关联的多个服务器集群的第一服务器集群相关联的服务器来存储与第一服务器集群相关联的第一集群标识。该方法还包括用服务器从多个客户端的客户端接收会话发起请求,该会话发起请求被寻址到全局端点。该方法还包括用服务器发送对来自客户端的会话发起请求的响应,该响应包括第一集群标识。该方法还包括用服务器存储与被配置为在客户端运行的客户端应用的状态相对应的会话状态信息。该方法还包括用服务器从多个客户端之一接收被寻址到全局端点的会话请求,该会话请求具有第二集群标识。该方法还包括用服务器将第一集群标识与第二集群标识进行比较。该方法还包括当第一集群标识与第二集群标识不匹配时,用服务器利用错误消息响应会话请求。

根据具体实施方式、权利要求和附图,本公开的其他应用领域将变得显而易见。具体实施方式和具体示例仅旨在说明的目的,并不旨在限制本公开的范围。

附图说明

图1是根据本公开的实施例的有状态云服务系统的示例的功能框图。

图2是根据本公开的实施例的客户端计算机的示例的功能框图。

图3是根据本公开的实施例的结合应用的服务器计算机的示例的功能框图。

图4示出了根据本公开的实施例的有状态云服务方法。

图5示出了根据本公开的实施例的有状态云服务方法。

图6示出了根据本公开的实施例的有状态云服务方法。

图7示出了根据本公开的实施例的有状态云服务会话的时序图。

在附图中,可以重复使用附图标记来标识相似和/或完全相同的元件。

具体实施方式

在有状态云服务会话期间,来自客户端计算机的请求必须继续被路由到相同的数据中心或服务器集群,以确保请求在整个会话期间由相同服务器计算机处理。此类云服务会话称为“粘性”会话,这意味着在会话期间来自客户端计算机的请求在整个会话期间被路由到相同服务器计算机。(为了进行比较,在“非粘性”会话期间,请求可以在会话期间由不同的服务器计算机处理,这些计算机可以位于不同的数据中心或服务器集群中)。这样,在粘性会话期间,在整个会话期间,会话的特定服务器计算机上的存储的状态信息可以与客户端计算机的实际当前状态保持同步。例如客户端计算机可以在web浏览器中运行web应用。在这种情况下,在客户端计算机的web浏览器中运行的web应用必须在整个会话期间与相同服务器计算机保持通信,以确保在整个会话期间在服务器计算机上存储的状态信息与客户端计算机的实际状态相匹配并保持同步。

当使用多个服务器集群时,负载均衡器可以基于业务路由算法在服务器集群之间分配业务。例如多个服务器集群可以位于不同的数据中心,并且可以由单个全局端点地址来共同寻址。例如单个全局端点地址可以对应于特定的统一资源定位符(url)地址,诸如例如“[域名].com”。负载均衡器可以基于业务路由因子和算法,诸如位置、带宽、当前负载和业务等,将被寻址到全局端点地址的请求引导到不同的服务器集群。单独的服务器集群中的每一个可以由对应于与集群相关联的特定url的直接集群端点地址寻址。例如第一集群(集群a)可能具有直接集群端点地址,诸如“集群a.[域名].com”,并且第二集群(集群b)可能具有直接集群端点,诸如“集群b.[域名]”。然后,负载均衡器可以将被寻址到全局端点地址“[域名].com”的请求引导到在“集群a.[域名].com”处的集群a或在“集群b.[域名]”处的集群b。“虽然此示例使用两个单独的服务器集群-集群a和集群b-但可以使用位于任意数目的数据中心处的任意数目的服务器集群。此外,数据中心和服务器集群可以在地理上分散。例如第一服务器集群可以位于美国的东部地理区域,第二服务器集群可以位于美国的西部地理区域,第三服务器集群可能位于欧洲,并且第四服务器集群可能位于亚洲等。

一旦有状态会话已经开始,则会话期间的后续请求必须被路由回到开始会话的相同服务器集群。通过这种方式,会话期间的后续请求可以被路由到开始会话的特定服务器集群内的相同服务器计算机。例如会话标识(会话id)可用于将特定请求路由到服务器集群内的特定服务器计算机。但是,取决于所使用的负载均衡器的类型,负载均衡器可以将对全局端点地址的请求路由到与开始会话的服务器集群不同的服务器集群。例如可以使用粘性负载均衡器或非粘性负载均衡器。例如粘性负载均衡器可以存储将特定会话或特定客户端计算机与特定服务器集群相关联的信息,并且然后可以在整个会话期间将与该特定会话相关联的或来自该特定客户端计算机的请求路由到相同服务器集群。通过这种方式,粘性负载均衡器可以确保云服务会话期间的请求在整个会话期间被路由到相同服务器集群,以便,在有状态会话期间被寻址到全局端点地址的特定请求被路由到针对该特定会话的正确的服务器集群。因此,粘性负载均衡器需要对每个请求进行额外的编程和处理,以将请求引导到正确的服务器集群。另一方面,非粘性负载均衡器不存储将特定会话或特定客户端计算机与特定服务器集群相关联的此类信息。因此,当使用非粘性负载均衡器时,基于业务路由算法而不是基于会话或客户端计算机信息来路由对全局端点地址的请求。

传统上,当使用非粘性负载均衡器时,为了确保在有状态会话期间来自客户端计算机的请求被引导到正确的服务器集群,客户端计算机将专门地将请求寻址到正确的直接集群端点。换句话说,一旦发起会话,客户端计算机就在会话期间将后续请求寻址到发起会话的特定服务器集群。继续前面的示例,后续会话请求可以被直接寻址到“集群a.[域名].com”或“集群b.[域名].com”。以这种方式,后续请求将被路由到发起会话的正确的服务器集群。因为会话源自被寻址到全局端点地址的请求,所以直接寻址到特定集群的后续请求被视为跨源请求,即,对从其提供原始请求的域之外的域的请求。在跨源资源共享(cors)标准下,当会话请求来自客户端计算机的web浏览器时,此类跨源请求需要到外部域的飞行前请求以确认是否可以安全地进行对外部域的请求。通过这种方式,直接被寻址到特定服务器集群的每个后续请求都可能导致发出两个请求-首先是cors飞行前请求,然后是实际请求。鉴于此,在有状态会话期间直接向特定服务器集群寻址后续请求可以使请求数量增加一倍,增加时延,减少可用带宽,增加延迟,并最终降低在客户端计算机的web浏览器中运行的web应用的速度。cors标准由许多现代浏览器实现,并且是万维网联盟的推荐标准。

为了解决上述问题,本公开提供了用于利用非粘性负载均衡器来实现有状态云服务的会话粘性的系统和方法。如下面进一步详细描述的,在本公开的系统和方法中,一旦发起有状态会话,发起会话的特定服务器计算机通过在对客户端计算机的响应中发送与特定服务器相对应的直接集群端点相关联的集群标识(集群id)和/或通过发送直接集群端点地址本身来响应客户端计算机。在一些实现中,集群id可以与直接集群端点地址相同,在这种情况下,仅将单个值返回给客户端。特定服务器计算机可以在对客户端计算机的超文本传输协议(http)响应的头部中,或者在对客户端计算机的http响应主体内,发送集群id和/或直接集群端点地址。然后,客户端计算机通过继续将请求寻址到全局端点地址来继续会话。但是,每个请求还包括http请求的报头或主体中的集群id和/或直接集群端点地址。然后,服务器计算机分析http请求中包括的集群id和/或直接集群端点地址,以验证集群id和/或直接集群端点地址是否与响应请求的服务器计算机的特定服务器集群的集群id和/或直接集群端点地址匹配。当集群id和/或直接集群端点地址匹配时,请求已正确地被路由到正确的服务器集群。在这种情况下,非粘性负载均衡器已将后续会话请求引导回发起会话的相同服务器集群。然后,会话以这种方式继续,其中客户端继续将后续会话请求寻址到全局端点。在服务器计算机收到具有与服务器计算机的服务器集群的集群id和/或直接集群端点地址不匹配的集群id和/或直接集群端点地址的事件中,则发生集群不匹配。换句话说,非粘性负载均衡器已将会话请求引导到与发起会话的服务器集群不同的服务器集群。然后,服务器计算机使用集群不匹配错误消息来响应请求。在这种情况下,客户端计算机会因集群不匹配错误而重试失败的请求,除了此次将请求寻址到直接集群端点地址而不是全局端点地址。替代地,在集群不匹配的情况下,服务器计算机可以从请求中提取集群id和/或直接集群端点地址,使用集群id和/或直接集群端点地址将请求转发到正确的服务器集群,以及然后通知客户端计算机上一个请求被路由到不正确的服务器集群。在任意一种情况下,客户端计算机然后在会话期间将后续请求寻址到直接集群端点地址而不是全局端点地址。如上所述,此类请求被视为跨源请求,并且需要cors飞行前请求。

在本公开的系统和方法中,一旦会话被发起,客户端计算机就继续将会话请求寻址到全局端点地址,直到特定请求被路由到不正确的服务器集群为止。以这种方式,对于在web浏览器中运行的web浏览器和web应用,本公开的系统和方法尽可能地避免和/或延迟必须利用cors飞行前请求直到请求被不正确地路由的性能惩罚。换句话说,本公开的系统和方法通过尽可能长地避免和/或延迟使用cors飞行前请求来最小化必须利用cors飞行前请求的性能惩罚。在来自客户端计算机的请求继续被路由到正确的服务器集群的情况下,客户端计算机将继续将请求寻址到全局端点。一旦发生集群不匹配并且请求被引导到不正确的服务器集群,则客户端计算机将开始将会话请求寻址到直接集群端点并且导致cors飞行前请求的性能惩罚。如下面进一步详细讨论的,客户端计算机可以针对会话的剩余部分将会话请求寻址到直接集群端点。替代地,客户端计算机可以仅针对预定时间段或预定数目的请求将会话请求寻址到直接集群端点。替代地,客户端计算机可以仅通过将当前请求寻址到直接集群端点来重试当前请求,并且然后可以立即开始再次将会话请求寻址到全局端点地址。

参考图1,有状态云服务系统10包括:客户端计算机16;分布式通信系统18;域名系统(dns)服务器计算机20;非粘性负载均衡器计算机22;以及多个数据中心24a、24b、24c。虽然图1的示例包括三个数据中心24a、24b、24c,但是可以使用任意数量的数据中心。数据中心24a、24b、24c分别包括服务器集群26a、26b、26c。服务器集群26a、26b、26c包括个体服务器计算机。例如数据中心a24a包括服务器集群26a,其中服务器计算机被标记为服务器计算机1到服务器计算机x;数据中心b24b包括服务器集群26b,其中服务器计算机被标记为服务器计算机1到服务器计算机y;并且数据中心c24c包括服务器集群26c,其中服务器计算机被标记为服务器计算机1到服务器计算机z。

如上所述,服务器集群26a、26b、26c可以与诸如“[域名].com”的全局端点地址相关联并由诸如“[域名].com”的全局端点地址共同寻址。此外,个体服务器集群26a、26b、图26c中的每一个可以与对应的直接集群端点地址相关联。例如服务器集群26a可以与直接集群端点地址“集群a.[域名].com”相关联;服务器集群26b可以与直接集群端点地址“集群b.[域名].com”相关联;并且服务器集群26c可以与直接集群端点地址“集群c.[域名].com”相关联。

分布式通信系统18包括路由器,其在客户端计算机16、服务器集群26a、26b、26c、dns服务器计算机20和非粘性负载均衡器计算机22之间引导分组。分布式通信系统18可以包括网络,诸如因特网、局域网(lan)、无线局域网(wlan)和/或诸如因特网的广域网(wan)。

当客户端计算机16发出寻址到全局端点地址的请求时,dns服务器计算机20和非粘性负载均衡器计算机22可以将请求引导到个人体服务器集群26a、26b、26c之一。例如客户端计算机16首先向dns服务器计算机20发送dns查询以解析全局端点地址,例如“[域名].com”。dns服务器计算机20例如包括存储因特网协议(ip)地址-url映射记录的数据存储装置。ip地址-url映射记录将url映射到ip地址。在这种情况下,因为非粘性负载均衡器计算机22用于全局端点地址,所以全局端点地址被映射到非粘性负载均衡器计算机22。对于递归dns查询,例如dns服务器计算机20然后联系非粘性负载均衡器计算机22以解析全局端点地址。例如可以使用业务管理器来实现非粘性负载均衡器计算机22。然后,非粘性负载均衡器计算机22基于业务路由因子和算法来选择服务器集群26a、26b、26c中的一个,并将所选服务器集群的地址返回到dns服务器计算机20。例如非粘性负载均衡器计算机22可以基于服务器集群26a、26b、26c中的每一个的状态、基于服务器集群26a、26b、26c的位置、基于每个服务器集群26a、26b、26c处理的当前请求量和业务、并基于所选择的业务路由方法来选择特定服务器集群。然后,dns服务器计算机20将所选服务器集群的ip地址返回给客户端计算机16,并且客户计算机16基于所选服务器集群的返回ip地址来发送请求。替代地,dns服务器计算机20可以从客户端计算机16接收初始dns查询,并用关于如何联系非粘性负载均衡器计算机22的指令来响应客户端计算机16。客户端计算机16然后可以联系非粘性负载均衡器计算机22,并且然后非粘性负载均衡器计算机22可以将所选服务器集群的ip地址直接提供给客户端计算机16。另一方面,当客户端计算机16发送寻址到直接集群端点的请求时,客户端计算机16可以首先联系dns服务器计算机20,dns服务器计算机20可以简单地返回与特定直接集群端点相关联的ip地址。同样,客户端计算机16然后可以基于返回的直接集群端点的ip地址来发送请求。此外,虽然本示例包括与dns服务器计算机20一起操作的非粘性负载均衡器计算机22,但是本公开的教导也适用于其他非粘性负载均衡器,包括例如非粘性负载均衡器,非粘性负载均衡器在国际标准化组织(iso)的开放系统互连项目的开放系统互连(osi)模型的传输层或应用层运行,由iso/iec7498-1标识维护。

在图2中,示出了客户端计算机16的简化示例。客户端计算机16包括中央处理单元(cpu)或处理器104和诸如小键盘、触摸板、鼠标等的输入设备108。客户端计算机16还包括存储器112,例如易失性或非易失性存储器、高速缓存或其他类型的存储器。客户端计算机16还包括大容量存储设备130,诸如闪存、硬盘驱动器(hdd)或其他大容量存储设备。

客户端计算机16的处理器104执行操作系统(os)114和一个或多个应用118。例如应用118可以包括web浏览器和在web浏览器中运行的web应用。客户端计算机16还包括有线接口(诸如以太网接口)和/或无线接口(诸如wi-fi、蓝牙、近场通信(nfc)或其他无线接口(在128处共同标识)),其可以在分布式通信系统18上建立通信信道。客户计算机16还包括显示子系统124,显示子系统124包括显示器126。

在图3中,示出了服务器计算机26的示例。服务器集群26a、26b、26c每个都可以包括与服务器计算机26相对应的服务器计算机。此外,dns服务器计算机20和非粘性负载均衡器计算机22可以用计算机实现,诸如图3中所示的服务器计算机26。服务器计算机26包括一个或多个处理器160和输入设备148,诸如键盘、触摸板、鼠标等。服务器计算机26还包括服务器存储器162,诸如易失性或非易失性存储器、高速缓存或其他类型的存储器。处理器160执行操作系统(os)164和一个或多个服务器应用168。服务器应用168的示例包括向客户端计算机16的web浏览器提供代码和内容的web应用170。例如web应用170可以包括针对服务器计算机26的用于运行web应用170的服务器侧的服务器代码。服务器计算机26可以向客户端计算机16提供客户端代码以在客户端计算机16的web浏览器中执行web应用170的客户端。服务器应用168的另一个示例包括地址验证应用,用于验证来自客户计算机16的请求中包括的集群id是否对应于与特定服务器计算机26相关联的特定服务器集群,如下面参考图6进一步详细说明。服务器存储器162还存储会话状态信息174,会话状态信息174对应于运行web应用170的客户端侧的客户端计算机16的当前状态。

服务器计算机26还包括有线或无线接口180,其在分布式通信系统18上建立通信信道。服务器计算机26还包括显示子系统182,其包括显示器184。服务器计算机26还可包括:大容量存储设备186,例如闪存、硬盘驱动器(hdd)或其他本地或远程存储设备。处理器160还可以经由接口180和分布式通信系统18来访问远程数据存储190的远程数据存储装置188,或经由接口180来访问数据存储192,诸如数据库。

下面参照图4-6的方法和图7的时序图来进一步描述图1-3的客户计算机16、dns服务器计算机20、非粘性负载均衡器计算机22和服务器集群26a、26b、26c的操作。图4示出了有状态云服务方法的示例。尽管以下操作主要是关于图1-3的实现来描述的,但是可以修改操作以应用于本公开的其他实现。操作可以迭代地被执行。

具体地,图4中所示的有状态云服务方法由客户端计算机16执行并且在400开始。在402处,客户端计算机16发起具有被寻址到全局端点的请求的有状态会话。例如客户端计算机16可以发起有状态会话以在客户端计算机的web浏览器中运行web应用。例如web应用可以是在客户端计算机16的web浏览器内运行的web创作工具。对于进一步的示例,web应用可以是移动应用构建工具,诸如但是,其他适用的有状态web应用可以在客户端计算机的web浏览器中运行。另外,虽然使用在web浏览器中运行的web应用的示例来说明,但是本教导也可应用于在客户端计算机上运行的、web浏览器之外的客户端应用。如上所述,并且在下面进一步详细描述,寻址到全局端点的初始请求被路由到服务器集群26a、26b、26c之一。

在404,客户端计算机16从服务器集群之一的服务器计算机26接收对初始请求的响应。对初始请求的响应可以包括用于在客户端计算机16上运行web应用或客户端应用的内容和代码。此外,响应包括与直接集群端点相关联的集群id和/或直接集群端点地址,其包括响应初始请求的服务器计算机26。如上所述,在一些实现中,集群id可以与直接集群端点地址相同,在这种情况下,在对客户端的响应中仅返回单个值。

在406,客户端计算机16继续运行web应用,并且在现在发起的会话期间,发送会话请求作为被寻址到全局端点的会话的一部分。会话请求包括预期的集群id作为请求的http头部中的字段。替代地,会话请求可以包括http消息主体内的预期集群id。预期的集群id对应于客户端计算机在步骤404接收的集群id。如上所述,并且在下面进一步详细说明,会话请求由非粘性负载均衡器计算机22引导到服务器集群26a、26b、26c之一。如上面进一步讨论的,并且在下面进一步详细说明,接收会话请求的服务器集群的特定服务器从请求的http头部取回集群id,并验证集群id是否与直接集群端点匹配,直接集群端点与响应会话请求的特定服务器相关联。如上面进一步讨论的,并且在下面进一步详细说明,当集群id与和响应会话请求的特定服务器计算机相关联的直接集群端点不匹配时,特定服务器计算机发出集群不匹配错误。

在408处,客户端计算机16响应于在步骤406处发送的先前会话请求,确定是否已从服务器计算机26接收到集群不匹配错误。如下面进一步详细描述的,集群不匹配错误可以是预定的http错误代码。例如本公开的系统和方法可以利用由本公开的系统和方法识别为对应于集群不匹配错误的预定http状态码。例如http状态代码417可以被指定为对应于集群不匹配错误。当在408处没有接收到集群不匹配错误时,客户端计算机16进行到410并确定会话是否已经结束。当会话尚未在410处结束时,客户端计算机16循环回到406并继续运行web应用并且在406处发送寻址到全局端点的下一个会话请求。客户端计算机16以这种方式继续直到在408处接收到集群不匹配错误,或者在410处客户端计算机16确定会话已经结束。在410处,当会话结束时,客户端计算机16进行到418并且该方法结束。

在408处,当客户端计算机16接收到集群不匹配错误时,客户端计算机16进行到412。在412处,客户端计算机16重试最后的会话请求,除了这次客户端计算机16将会话请求寻址到与从步骤404先前接收的集群id相关联的直接集群端点。例如如果客户端计算机16先前在步骤404处接收到直接集群端点的地址和/或如果集群id和直接集群端点地址相同,则客户端计算机16可以使用直接集群端点地址来重试最后的会话请求。如果客户端计算机16仅具有直接集群端点的集群id,则客户端计算机16必须使用集群id来获得直接集群端点地址。例如客户端计算机16可以包括查找表,该查找表为各种集群id提供直接集群端点地址。替代地,客户端计算机16可以发送寻址到全局端点的请求,该请求请求与特定集群id相关联的直接集群端点的地址。作为另外的替代方案,集群不匹配错误可以包括与错误路由的会话请求中包括的集群id相关联的直接集群端点的地址。在这种情况下,所有服务器集群26a、26b、26c可以存储直接集群端点地址和关联的集群id。一旦确定了直接集群端点的地址,客户端计算机16就继续重试寻址到直接集群端点的最后一个会话请求。如上所述,因为客户端计算机现在正在向始发域之外的域地址(即全局端点)发出请求,所以现在必须根据cors标准来进行cors预飞行请求。换句话说,在412处,客户端计算机16的web浏览器向直接集群端点发出cors飞行前请求,以确认发送跨源请求是安全的。一旦从直接集群端点接收到确认,则客户端计算机16然后重新发送寻址到直接集群端点的实际请求。然后,客户端计算机16进行到414。

在414处,客户端计算机16继续运行web应用并发送会话请求,会话请求被寻址到与从步骤404先前接收的集群id相关联的直接集群端点。因为在414处发送的会话请求被寻址到直接集群端点,会话请求可能包括也可能不包括集群id。同样,在414处发出的每个会话请求之前是对直接集群端点的cors预飞行请求,以确认发送跨源请求是安全的。然后,客户端计算机16进行到416并确定会话是否已经结束。例如客户端计算机16的用户可以通过选择web应用内的关闭或结束选项或者通过例如关闭web浏览器或正在运行web应用的web浏览器的特定标记来在416处(或在410处)处结束会话。在416处,当会话结束时,客户端计算机进行到418。

在416处,当会话尚未结束时,客户端计算机16循环回到414并继续运行web应用并发出寻址到直接集群端点的会话请求。客户端计算机16以这种方式继续,直到会话在416和418处结束。

在图4的示例中,一旦在408处接收到集群不匹配错误,则客户端计算机16继续将所有后续会话请求寻址到直接集群端点。替代地,如上所述,客户端计算机16可以仅针对预定时间段或针对预定数目的请求将会话请求寻址到直接集群端点。例如预定时间段可以是五分钟、十分钟或任意其他合适的时间段。对于进一步的示例,预定数目的请求可以是10个请求、20个请求或任意其他合适数目的请求。替代地,客户端计算机可以仅通过将当前请求寻址到直接集群端点来重试当前请求,并且然后可以立即开始再次将会话请求寻址到全局端点地址。

图5中示出了有状态云服务方法的另一示例。尽管主要关于图1-3的实现描述了以下操作,但是可以修改操作以应用于本公开的其他实现。操作可以迭代地执行。

具体地,图5中所示的有状态云服务方法由服务器计算机26执行并且从500开始。在502处,服务器计算机26接收发起有状态会话的请求。请求被寻址到全局端点。如上所述,客户端计算机16可以发起有状态会话以在客户端计算机的web浏览器中运行web应用。例如web应用可以是在客户端计算机16的web浏览器内运行的web创作工具。对于进一步的示例,web应用可以是移动应用构建工具,诸如但是,其他可应用的有状态web应用可以在客户端计算机的web浏览器中运行。

在504处,服务器计算机26将对初始请求的响应发送回客户端计算机16。对初始请求的响应可以包括用于运行web应用的内容和代码。另外,响应包括与直接集群端点相关联的集群id和/或直接集群端点地址,该直接集群端点包括响应初始请求的服务器计算机26。如上所述,在一些实现中,集群id可以与直接集群端点地址相同,在这种情况下,在对客户端的响应中仅返回单个值。

在506处,在会话现在被发起的情况下,该方法结束。

图6中示出了有状态云服务方法的另一示例。尽管主要关于图1-3的实现描述了以下操作,但是可以修改操作以应用于本公开的其他实现。操作可以迭代地执行。

具体地,图6中所示的有状态云服务方法由服务器计算机26执行并且在600处开始。在602处,服务器计算机26在有状态会话期间接收请求。例如在602处接收的会话请求可以在运行web应用时由客户端计算机16的web浏览器生成。

在604处,服务器计算机26确定会话请求是被寻址到全局端点还是寻址到直接集群端点。在604,当会话请求被寻址到直接集群端点时,服务器计算机26进行到612并处理该请求,如下面进一步详细讨论的。在604,当会话请求被寻址到全局端点时,服务器计算机26进行到606。替代地,如果所有会话请求包括集群id,包括寻址到直接集群端点的会话请求,则可以省略步骤604。在这种情况下,服务器计算机26可以从602直接前进到606以验证在会话请求中包括的集群id。在这种情况下,可以省略步骤604,并且在步骤606验证所有接收的会话请求。此外,在这种情况下,在步骤606验证所有会话请求,服务器计算机26不直接跳到步骤612来处理请求。

在606处,服务器计算机26提取在请求的http头部中包括的集群id,如上面详细讨论的。另外,服务器计算机26通过将提取的集群id与和特定服务器计算机26的服务器集群相关联的集群id进行比较来验证所提取的集群id。然后,服务器计算机26进行到608。在608处,服务器计算机26确定所提取的集群id是否被验证,即,所提取的集群id是否与和特定服务器计算机26的服务器集群相关联的集群id匹配。在608处,当两者不匹配时,服务器计算机26进行到610并且发出集群不匹配错误。如上所述,服务器计算机26可以使用http错误代码417来指定集群不匹配错误。附加地,如上所述,集群不匹配错误消息可以包括与和接收的会话请求中包括的集群id相关联的直接集群端点的地址。然后,服务器计算机26进行到614并且该方法结束。

在608处,当提取的集群id被验证为与特定服务器计算机26的服务器集群相关联的集群id匹配时,服务器计算机26前进到612并处理该请求。例如在612处,服务器计算机26可以执行与web应用相关联的处理,并且可以适当地将内容或附加代码发送回客户端计算机16。另外,服务器计算机26可以基于在步骤612中执行的处理来更新服务器计算机26的服务器存储器162(图3中示出)中的会话状态信息174。在与会话请求相关联的会话是由特定服务器集群中的另一服务器计算机处理的事件中,服务器计算机可以将会话请求转发到服务器集群中的适当服务器计算机以用于在那里进行处理。一旦在612处的处理完成,服务器计算机26就前进到614并结束。

每次服务器计算机26接收到会话请求时,重复执行图6中所示的方法。

参考图7,示出了有状态云服务会话的示例时序图700。尽管主要关于图1-3的实现描述了以下操作,但是可以修改操作以应用于本公开的其他实现。操作可以迭代地执行。

在图7中,示出了客户端计算机16、非粘性负载均衡器计算机22、服务器集群a26a和服务器集群b26b之间的通信。

在702处,客户端计算机发送寻址到全局端点的初始有状态会话请求。在704处,基于来自非粘性负载均衡器计算机22的指示,将请求引导到服务器集群a26a。在706处,服务器集群a26a内的服务器计算机26向客户端计算机16发送对初始有状态会话请求的响应。如上所述,响应包括与直接集群端点相关联的集群id和/或直接集群端点地址,直接集群端点包括响应初始请求的服务器计算机26。如上所述,在一些实现中,集群id可以与直接集群端点地址相同,在这种情况下,在对客户端的响应中仅返回单个值。

在708处,客户端计算机发送寻址到全局端点的有状态会话请求,并在请求的http头部中包括预期的集群id。在710处,基于来自非粘性负载均衡器计算机22的指示,该请求再次被引导到服务器集群a26a。基于会话的会话id,请求在服务器集群a26a内被路由回到相同服务器计算机26。在712处,服务器集群a26a内的服务器计算机26将有状态会话响应发送回客户端计算机16。在714处分组的请求和响应可以例如重复多次,包括可能会话的持续时间。

在716处,客户端计算机16发送被寻址到全局端点的有状态会话请求,并再次在请求的http头部中包括预期的集群id。在718处,此时,在负载均衡器的指导下,会话请求被引导到服务器集群b26b。如上所述,服务器集群b26b内的服务器计算机26将来自请求的http头部的集群id与服务器集群b26b的直接集群端点进行比较,并确定存在集群不匹配错误。在720处,服务器集群b内的服务器计算机26然后向客户端计算机16发送集群不匹配错误响应。

在722处,客户端计算机16重试先前的请求,除了这次将请求寻址到服务器集群a26a的直接集群端点。如上所述,如果直接集群端点的地址与集群id相同或者如果直接集群端点的地址是在来自服务器计算机26的初始响应中返回的话,则客户端计算机16可能已经具有直接集群端点的地址。在如上所述,在客户端计算机16不具有直接集群端点的地址的事件中,客户端计算机16可以基于集群id来获得直接集群端点的地址。该请求被路由到服务器集群a26a,并且与该会话相关联的服务器集群a内的服务器计算机26利用有状态会话响应来响应该请求。在726处分组的请求和响应可以例如重复多次,包括潜在地针对会话的剩余部分。如上所述,客户端计算机16可以针对会话的剩余部分将会话请求寻址到针对服务器集群a26a的直接集群端点。替代地,客户端计算机16可以仅针对预定时间段或预定数目的请求来将会话请求寻址到服务器集群a26a的直接集群端点。替代地,客户端计算机16可以仅通过将当前请求寻址到服务器集群a26a的直接集群端点来重试当前请求,并且然后可以通过例如返回708来再次立即开始将会话请求寻址到全局端点地址。

图4-7的上述操作旨在是示意性示例。可以根据应用顺序地、同步地、同时地、连续地、在重叠时间段期间或以不同顺序执行操作。而且,取决于事件的实现和/或顺序,可以不执行或跳过任意操作。

前面的描述本质上仅是示意性的,决不是要限制本公开、其应用或用途。本公开的广泛教导可以以各种形式实现。因此,尽管本公开包括特定示例,但是本公开的真实范围不应受此限制,因为在研究附图、说明书和所附权利要求时,其他修改将变得显而易见。应当理解,在不改变本公开的原理的情况下,方法内的一个或多个步骤可以以不同的顺序(或同时)执行。此外,尽管上面将每个实施例描述为具有某些特征,但是关于本公开的任意实施例描述的那些特征中的任意一个或多个可以在任意其他实施例的特征中实现和/或与任意其他实施例的特征组合,即使该组合未明确描述。换句话说,所描述的实施例不是相互排斥的,并且一个或多个实施例彼此的排列仍然在本公开的范围内。

使用各种术语描述元件之间的空间和功能关系,包括“连接”、“接合”、“耦合”、“相邻”、“接近”、“在...之上”、“在...上方”、“在下面”、“被布置”。除非明确地描述为“直接”,否则当在上面的公开中描述第一和第二元素之间的关系时,该关系可以是在第一和第二元素之间不存在其他中间元素的直接关系,但也可以是间接关系,其中在第一和第二元件之间存在(空间或功能上)一个或多个中间元件。如本文所使用的,短语a、b和c中的至少一个应该被解释为使用非排他性逻辑or表示逻辑(aorborc),并且不应该被解释为表示“a中的至少一个、b中的至少一个、以及c中的至少一个”。

在附图中,如由箭头所指示的箭头方向通常表示对图示有意义的信息流(例如数据或指令)。例如当元素a和元素b交换各种信息但是从元素a发送到元素b的信息与图示相关时,箭头可以从元素a指向到元素b。这个单向箭头并不意味着没有其他信息被从元素b发送到元素a。此外,对于从元素a发送到元素b的信息,元素b可以向元素a发送对信息的请求或接收信息的确认。

处理器可以指执行代码的处理器电路(共享、专用或组);存储器电路(共享,专用或组),其存储由处理器电路执行的代码;提供所述功能的其他合适的硬件组件;或者上述部分或全部的组合,诸如在片上系统中。

处理器可包括一个或多个接口电路。在一些示例中,接口电路可以包括连接到局域网(lan)、因特网、广域网(wan)或其组合的有线或无线接口。本公开的任意给定处理器的功能可以分布在经由接口电路连接的多个电路中。例如多个电路可以允许负载均衡。

如上所使用的术语代码可以包括软件、固件和/或微代码,并且可以指代程序、例程、函数、类、数据结构和/或对象。术语共享处理器电路涵盖单个处理器电路,其执行来自多个电路的一些或所有代码。术语组处理器电路涵盖处理器电路,该处理器电路与附加处理器电路组合,执行来自一个或多个电路的一些或所有代码。对多个处理器电路的引用涵盖分立管芯上的多个处理器电路、单个管芯上的多个处理器电路、单个处理器电路的多个核、单个处理器电路的多个线程、或上述的组合。术语共享存储器电路包括单个存储器电路,其存储来自多个电路的一些或所有代码。术语组存储器电路涵盖存储器电路,该存储器电路与附加存储器组合存储来自一个或多个电路的一些或所有代码。

术语存储器或存储器电路是术语计算机可读介质的子集。本文使用的术语计算机可读介质不涵盖通过介质传播的瞬时电信号或电磁信号(例如载波上);因此,术语计算机可读介质可以被认为是有形的和非暂时的。非暂时性有形计算机可读介质的非限制性示例是非易失性存储器电路(诸如闪存电路、可擦除可编程只读存储器电路或掩模只读存储器电路)、易失性存储器电路(例如静态随机存取存储器电路或动态随机存取存储器电路)、磁存储介质(例如模拟或数字磁带或硬盘驱动器)和光存储介质(例如cd、dvd或蓝光光盘)。

在本申请中,被描述为具有特定属性或执行特定操作的装置元件被具体配置为具有那些特定属性并执行那些特定操作。具体地,对执行动作的元素的描述意味着该元素被配置为执行动作。元素的配置可以包括例如通过在与元素相关联的非暂时性有形计算机可读介质上对指令进行编码的元素的编程。

本申请中描述的装置和方法可以由专用计算机部分或全部实现,该专用计算机通过配置通用计算机以执行计算机程序中体现的一个或多个特定功能而创建。上述功能块、流程图组件和其他元件用作软件规范,其可以通过熟练技术人员或程序员的例行工作转换成计算机程序。

计算机程序包括存储在至少一个非暂时性有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括或依赖于存储的数据。计算机程序可以涵盖与专用计算机的硬件交互的基本输入/输出系统(bios)、与专用计算机的特定设备交互的设备驱动程序、一个或多个操作系统、用户应用、后台服务、后台应用等

计算机程序可以包括:(i)要解析的描述性文本,诸如javascript对象表示法(json)、超文本标记语言(html)或可扩展标记语言(xml),(ii)汇编代码,(iii)由编译器从源代码生成的目标代码,(iv)由解释器执行的源代码,(v)由即时编译器编译和执行的源代码等。仅作为示例,源代码可以使用来自包括以下各项的语言的句法来编写:c、c++、c#、objectivec、haskell、go、sql、r、lisp、fortran、perl、pascal、curl、ocaml、html5、ada、asp(活动服务器页面)、php、scala、eiffel、smalltalk、erlang、ruby、lua和

权利要求中所述的任意要素均不旨在是35u.s.c§112(f)意义上的部件加功能元件,除非元件使用短语“用于…的部件”或在方法权利要求的情况下使用短语“用于…的操作”或“用于…的步骤”被明确记载。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1