用于启用高可用性受管理故障转移服务的系统和方法与流程

文档序号:30855933发布日期:2022-07-23 06:59阅读:67来源:国知局
用于启用高可用性受管理故障转移服务的系统和方法
背景技术
::1.一般来说,云或基于网络的计算是一种通过诸如网络服务等服务提供对信息技术资源的访问的方法,其中用于支持这些服务的硬件和/或软件可动态地扩展以满足任何给定时间的服务需求。在基于网络的服务中,弹性是指可以由服务提供者扩大和缩小以适应用户不断变化的要求的网络交付的计算资源。例如,这些资源的弹性可能是在处理能力、存储、带宽等方面。弹性计算资源可自动按需交付,从而动态地适应给定用户系统上或给定用户系统内的资源要求的变化。例如,用户可以使用云或基于网络的服务来托管大型在线流媒体服务并使用弹性资源进行设置,使得向用户流式传输内容的网络服务器数量在高峰观看时段扩大以满足带宽需求,然后在系统使用率较低时缩小。2.用户通常会租用、租赁通过云或经由网络访问的弹性资源或以其他方式支付对所述弹性资源的访问的费用,因此不必购买和维护提供对这些资源的访问的硬件和/或软件。这提供了若干益处,包括允许用户响应于企业的不断变化的需求而快速地重新配置其可用计算资源,并使云或网络服务提供者能够基于使用情况、流量或其他运营要求自动地扩展所提供的计算服务资源。与内部部署计算环境的相对静态基础设施相比,云(例如,基于网络的)计算服务的这种动态性质要求一种可根据其用户群的不断变化的需求和对基于网络的服务的需求来可靠地重新分配其硬件的系统架构。3.在弹性联网实施方案中,其中可托管和/或分割应用的位置可被描述为区域和/或可用区。每个区域都包括与其他区域分开的地理地区,并且包括多个经隔离的可用区。每个区域可与云或基于网络的计算系统中的所有其他区域隔离开。可用区是区域内的经隔离的位置。每个区域由几个可用区组成,每个可用区都属于单个区域。而且,每个可用区都是经隔离的,但特定区域中的可用区通过低时延链路连接。当应用分布在多个可用区上时,可能会在不同的可用区中启动实例,以使您的应用程序能够在实例中的一个发生故障时维持运行(例如,通过允许另一可用区中的另一实例来处置对应用的请求)。附图说明4.图1描绘了其中可实现根据本公开的各种实施方案的网络服务提供者的示意图。5.图2描绘了在如图1中示出的网络服务提供者的不同区中托管的应用小区的状态机图的示例。6.图3描绘了图1的网络服务提供者的区的示意图,包括被配置成根据本公开的各方面针对应用实现小区之间的故障转移的故障转移服务。7.图4描绘了根据本公开的各方面的实现图3的高可用性故障转移服务的示例交互工作流。8.图5是根据本公开的各方面的用于处置应用的至少一部分的故障转移的示例例程的流程图。9.图6描绘了根据本公开的各方面的用于强制执行由图3的故障转移服务定义的只读应用状态的示例工作流。10.图7示出了客户可在他们的应用中实现的一种潜在的状态转变过程。11.图8示出了主机轮询图1的基于网络的服务的示例工作流。12.图9描绘了示例计算系统的示意图。具体实施方式13.简介14.一般而言,本公开的各方面涉及基于网络的故障转移服务的管理。说明性地,客户可设计跨各种经隔离计算系统(称为“可用区”或区域)进行分割的应用。当如此分割时,各种区或区域中的每个都托管该应用的与该应用的其他分区等同的分区。如果所述区或区域中的一个发生故障,则所述应用的由其他区或区域托管的分区提供冗余或故障转移,从而允许应用基于其他区或区域中的资源而继续运行。更具体地,本公开的各方面涉及管理基于网络的故障转移服务。当一个应用分区的此种故障不妨碍该应用在其他分区中的操作时,或对与应用相关联的数据的数据完整性不产生负面影响时(即,当故障转移工作流确保网络请求等被适当转变或定向到备份分区时),应用可能被表征为高可用性的,因为分区使应用通常是可用的。15.现有的故障转移机制过于复杂,显著增加了客户所需的设计工作,并且缺乏提供客户对机制的可见性和控制的特征。本公开通过提供基于网络的故障转移服务(有时称为“故障转移服务”)来解决这此类问题,所述故障转移服务更好地协调故障转移工作流设计和执行,同时维持与应用分区相关联的数据的数据完整性以实现高可用性的应用。本文描述的故障转移服务支持广泛的故障转移用例。例如,当主应用分区和辅助应用分区两者都在云中运行(例如,通过网络)以及当主应用分区和辅助应用分区中的一者在云中运行而另一者在客户(或其他)处所运行时,本文描述的故障转移服务可为分区之间的故障转移提供支持。相似地,当客户具有在云中或内部部署设置的灾难恢复(dr)分区以用于故障转移事件之后的恢复时,本文所描述的故障转移服务可为分区之间的故障转移提供支持。16.本公开的基于网络的故障转移服务以多种方式对现有机制的错误进行了改进。例如,故障转移服务是高可用性的(例如,在云计算系统(也称为“云提供者系统”或“网络服务提供者”)运行的100%时间基本上可用)受管理服务,所述受管理服务协调跨云计算系统的多个分区分割的应用的复杂故障转移工作流,即使在最混乱的事件期间也是如此。另外或替代地,故障转移服务可为托管在多个区或区域中的应用的分区或节点提供状态信息的权威来源。此外,本公开的故障转移服务使客户能够基于实时条件和/或业务需求而手动触发故障转移。在一些实施方案中,基于网络的故障转移服务基于由客户指定的条件而自动触发受影响应用的故障转移。例如,如果客户应用或主小区变得不健康,则故障转移服务可能会自动触发一个或多个动作,例如发起到备份或辅助小区的故障转移。在一些实施方案中,应用小区对应于有关应用的应用分区、节点或其他容错域。因此,术语小区、分区和节点在本文中可能可互换地使用。故障转移服务还可提供可视化编辑器来帮助客户:(1)在设计他们的应用时为其应用创建依赖关系树,以及(2)理解不同的应用、其部件和/或系统如何彼此交互。这可使客户能够以自动化的可预测的方式对故障转移工作流进行建模,以供本文所描述的故障转移系统进行监管。故障转移服务还可提供事件历史日志和对当前故障转移阶段的可见性,以用于审计和/或合规性目的。下面提供了关于这些益处中的每个的额外细节。17.现在将关于某些示例和实施方案来描述本公开的这些和其他方面,所述示例和实施方案意在说明但不限制本公开。虽然出于说明的目的,本文描述的示例和实施方案将集中于具体的计算和算法,但是本领域技术人员将了解示例仅是说明性的且并不意在进行限制。18.图1描绘了示例计算环境100,其中网络服务提供者110经由网络向客户端装置102提供基于网络的服务。如本文所使用的,网络服务提供者110实现基于网络的服务110(有时简称为“基于网络的服务110”或“服务110”),并且指代可能是虚拟化的或裸金属的网络可访问计算资源(诸如,计算、存储或联网资源、应用或服务)的大型共享池。网络服务提供者110可提供对可配置计算资源共享池的便利的按需网络访问,所述计算资源可响应于客户命令而以编程方式供应和释放。可动态地供应和重新配置这些资源以调整可变负载。“云计算”或“基于网络的计算”的概念因此可被认为是以下两者:作为服务通过网络104交付的应用和网络服务提供者110中提供这些服务的硬件和软件。19.如图1中所示,网络服务提供者110被说明性地划分成若干区域112a至112d。每个区域112可在地理上与其他区域112隔离开。例如,区域112a的地理位置可能位于美国东海岸,区域112b的地理位置可能位于美国西海岸,区域112c的地理位置可能位于欧洲,区域112d的地理位置可能位于亚洲,等等。虽然在图1中示出了四个区域112,但是网络服务提供者110可包括任何数量的区域。每个区域112说明性地经由网络进行通信,该网络可能是系统110的专用网络(例如,私有电路、租用线路等)或公共网络(例如,互联网)。20.在图1中,每个区域112还被示出为划分成若干区120(跨所有区域112,区120a至120l),所述区也可称为可用区或可用区域。每个区120说明性地表示一种计算系统,所述计算系统与其他区120的系统隔离开,以使得降低诸如自然或人为灾难等大规模事件影响区域中的所有(或任何两个)区120的操作的可能性。例如,可通过在整个区域112中以选定的距离分布来物理地隔离每个区120的计算资源,以降低影响所有(或任何两个)区120的性能的大规模事件的可能性。此外,每个区120的计算资源可与独立的电力相关联,并且因此与其他区120的资源(尽管所述资源仍然可经由网络彼此通信,这可能涉及传输用于通信而不是电力的电气信号)、独立的冷却系统、独立的区内联网资源等电气地隔离。在一些实例中,可通过限制区120之间的计算资源的操作来进一步隔离区120。例如,区120中的虚拟机实例可能限于使用该区120中的存储资源、处理资源和通信链路。对区间的云或基于网络的计算操作进行约束可能会限制单个区120内任何故障的“爆炸半径”,从而降低此种故障抑制其他区120的操作的可能性。说明性地,由网络服务提供者110提供的服务通常可在区120内复制,以使得客户端装置102可(如果其如此选择)通过与单个区120交互来完全(或几乎完全)利用网络服务提供者110。21.如图1中所示,每个区120经由通信链路与其他区120通信。优选地,区120之间的通信链路表示高速专用网络。例如,区120可经由专用光纤线路(或其他通信链路)互连。在一个实施方案中,区120之间的通信链路完全或部分专用于区间的通信,并且与所述区的其他通信链路分开。例如,每个区120可具有到每个其他区的一个或多个光纤连接,以及到其他区域112和/或网络104的一个或多个单独连接。22.每个区域112内的每个区120说明性地连接到网络104。网络104可包括任何适当的网络,包括内联网、互联网、蜂窝网络、局域网或任何其他此种网络或它们的组合。在示出的实施方案中,网络104是互联网。用于经由互联网或其他前面提及的类型的通信网络中的任何一个进行通信的协议和部件对于计算机通信领域的技术人员来说是已知的,并且因此本文不必更详细地描述。虽然在图1中将系统110示出为具有与网络104的单个连接,但是在各种实现方式中可存在多个连接。例如,每个区120可具有与和其他区120不同的网络104的一个或多个连接(例如,与互连互联网上的不同自主系统的互联网交换点的一个或多个链路)。23.每个区域112a至112d分别包括端点125a至125d。端点125a至125d可包括计算装置或系统,客户的应用可通过所述计算装置或系统访问基于网络的服务110。提供给端点125中的一个的信息可传播给所有其他端点125。每个区域112可包括一个以上的端点125,或者每个区域112甚至可能不包括一个端点125。24.客户端计算装置102可包括任何配备网络的计算装置,例如台式计算机、膝上计算机、智能电话、平板计算机、电子阅读器、游戏控制台等。用户可经由网络104访问网络服务提供者110以查看或管理其数据和计算资源,以及使用由网络服务提供者110托管的网站和/或应用。例如,用户可访问具有由区域112a中的区120a(例如,主分区)和区域112d中的区120l(例如,辅助分区)托管的分区的应用。25.根据本公开的实施方案,具有托管在不同区中的分区的应用可能够承受区120或区域112中的一个中的故障,在所述区或区域中,分区中的一个正在操作。例如,如果托管在区120a中的主分区经历故障,则通常将由区120a中的主分区处置的任何请求可改为被路由到在区120l中运行的辅助分区并由所述辅助分区进行处置。此种故障可能导致故障转移情况,其中主分区的操作被传送到辅助分区进行处置。故障转移情况可能涉及客户的与应用相关联的手动动作以请求从主分区到辅助分区的通信路由等等。然而,本公开的实施方案还可为具有托管在不同区中的分区的应用提供高可用性的受管理故障转移服务,这使得客户的应用能够在故障转移情况期间以减少或最少的来自客户的交互来承受区或区域故障,同时维持此类故障和故障转移期间的数据完整性。26.故障转移状态的概述27.如上面参考图1所描述的,客户应用可包括托管在相同或不同区域112中的若干不同区120中的分区。每个分区可包括相同的节点(例如,工作者节点),其中每个节点表示和/或映射到计算、存储、数据库和联网资源的任何组合。分区中的一个或多个可能托管在经历故障(例如,硬件故障)的区中。本文描述的故障转移服务在发生此种故障时管理步骤或动作(例如,故障转移工作流)。分区(或节点)可在不同状态下操作并在不同状态之间转变;故障转移服务可识别每个分区正在操作的状态,并致使一个或多个分区在任何给定时间在状态之间进行更改或转变。在一些实施方案中,分区内的节点可在与分区相同的状态下或在与分区不同的状态下操作。参考图2提供了分区(或节点)可操作的可用状态。28.图2描绘了托管在如图1中示出的基于网络的服务110的不同区120中的应用小区的状态机图的示例。如图所示,状态机图定义了由基于网络的服务110托管的应用分区和节点(在本文中有时称为应用小区)可用的三种不同的状态:活动状态205、待机状态(或被动)状态210和受防护状态215。在一些实施方案中,示出的三种状态是仅有的可用状态。在一些实施方案中,额外的或更少的状态是可用的。虽然以下参考了应用分区,但以下关于状态的讨论同样适用于应用节点。29.当处于活动状态205时,应用分区可接收和处理从其他实体接收到的查询(例如,读取查询和写入查询)或请求。在一些实施方案中,查询或请求包括应用能够执行的任何操作。例如,读取查询包括分区读取或访问区中的存储装置中的数据而不操纵存储装置中的任何数据的操作。写入查询可包括分区写入或修改存储装置中的数据的操作。因此,在活动状态中,分区可以全能力操作,支持处理分区接收的并且分区能够处理的任何查询或请求。在一些实施方案中,有限数量的分区在活动状态205中操作以防止数据覆写和/或数据丢失。例如,在任何给定时刻,仅一个分区在活动状态205中操作。这可通过不允许一个以上分区对对应于应用的数据进行更改或修改(例如,写入)来帮助维持不同分区之间的数据完整性。在一些实施方案中,处于活动状态205的分区由未经历任何故障的区托管。30.当处于待机状态210时,分区可能不接收或处理任何查询或请求。例如,处于待机状态210的分区可能无法被使用应用的实体访问和/或可能无法从该区中的存储装置读取或写入该存储装置。因此,在待机状态210中,分区可能不以任何能力操作并且可能被禁止处理分区接收的任何查询或请求。在一些实施方案中,任何数量的分区在待机状态210中操作,因为在待机状态210中操作的分区不会覆写数据或造成数据丢失。31.当处于受防护状态215时,分区可接收和处理读取查询或请求,但不处理任何写入查询。例如,处于受防护状态215的分区可被请求从存储装置进行读取操作的实体访问,但不能被请求对存储装置中的数据进行写入操作的实体访问。因此,在受防护状态215中,分区可以以部分能力操作,支持处理分区接收的并且分区能够处理的只读查询或请求。在一些实施方案中,任何数量的分区在受防护状态215中操作,因为在受防护状态215中操作的分区不会覆写数据或造成数据丢失。在一些实施方案中,处于受防护状态215的分区由正在经历或最近经历了阻止分区正确操作或可能对分区的操作产生不利影响的故障的区托管。在一些实施方案中,客户将分区定义为处于受防护状态215,而与托管分区的区的状态无关。通过允许分区在受防护状态215中操作,分区可继续服务于一些请求(例如,仅读取请求),同时避免修改与存储装置中的应用相关的信息或数据,直到受防护分区将状态更改为活动状态205。此种约束可通过不允许分区在经历故障时或在另一个分区在活动状态205中操作时覆写数据来维持数据完整性。32.区和受管理故障转移的概述33.图3描绘了区120a的示例配置。如上所述,区120可表示独立于其他区120的计算系统向客户端装置102可访问的各种应用提供多种服务或托管所述多种应用的独立的、经隔离的计算系统。因此,每个区可包括向客户端装置102提供各种服务的多种计算、存储和网络资源,以及有助于创建和管理此类资源的部件。因此,本领域的技术人员将了解,图2的说明性配置被简化以易于描述。34.如图3中所示,区120a包括故障转移服务302,对应于本文所描述的故障转移服务。一般地描述,故障转移服务302使客户能够控制哪些应用小区为应用305提供流量以及哪些小区不提供流量。图3还示出了与区120a通信并且定义和监测向用户提供应用305的应用小区(即,分区或节点)的状态的客户端装置102。在一些实施方案中,应用305的分区的每个节点与状态相关联。在一些实施方案中,特定分区的节点采用其所属分区的状态。在一些实施方案中,分区中的个别节点可具有彼此不同的状态或与分区不同的状态。35.图3中示出的故障转移服务302可能是故障转移服务302的分区的表示形式。如本文所使用的,术语故障转移服务和故障转移服务分区可能可互换地使用。图3中示出的故障转移服务302的分区包括工作者303,所述工作者包括映射到或对应于计算资源的节点。故障转移服务302还包括存储装置304,所述存储装置可包括映射到存储装置或数据库资源的节点,故障转移服务302可在所述存储装置或数据库资源中存储由故障转移服务302使用的数据,诸如状态数据、工作流等。其他区120中的故障转移服务302的其他分区可能与图3的故障转移区302相同。36.该节点120a还包括应用305。如图所示的应用305可能是经分割的应用305的分区的表示形式。如本文所使用的,术语应用和应用分区可以可互换地使用。图3中示出的应用305的分区包括工作者306,所述工作者包括映射到或对应于计算资源的节点。应用305还包括存储装置307,所述存储装置可包括映射到存储装置或数据库资源的节点,并且应用305可在所述存储装置或数据库资源中存储由应用305使用或与所述应用相关的数据。其他区120中的应用305的其他分区可与图3的应用305相同。37.在一些实施方案中,网络服务提供者110可通过在故障转移服务302的存储装置304之间传播更改(例如,状态更改信息)来确保故障转移服务302的存储装置304与故障转移服务302的其他分区的存储装置保持同步。在一些实施方案中,基于网络的服务110以预定的、动态的或可定制的间隔(例如,每1秒、每1分钟等)传播更改。38.在一些实施方案中,基于网络的服务110可确保应用305的存储装置307与应用305的其他小区的存储装置307保持同步。基于网络的服务110可在应用存储装置307之间传播更改(例如,对存储在存储装置307中的数据的更改)。在一些实施方案中,基于网络的服务110以预定的、动态的或可定制的间隔(例如,每1秒、每1分钟等)传播更改。39.下面讨论了基于网络的服务110如何使用故障转移服务302来定义应用小区的状态并在区120或区域112故障的情况下管理故障转移的细节。40.在一些实施方案中,基于网络的服务110为分布在区120、区域112和内部部署的任何组合上的客户应用305提供高可用性的受管理故障转移服务302。如本文所述,故障转移服务302本身可分布在多个区域112和/或区120上。例如,可在区域112a、112b、112c和112d中的两个或更多个中的区120之间分割故障转移服务302。故障转移服务302的此种分割可确保故障转移服务302的至少一个分区始终可用,从而确保故障转移服务302始终可用,即使在区域112a、112b、112c与112d之间的一个或多个区同时发生故障的情况下也是如此。为此,故障转移服务302可能是高可用性的。41.另外,由于故障转移服务302的分割,故障转移服务302能够充当由基于网络的服务110托管的应用分区和节点的状态信息的权威来源。更具体地,通过存储分布在故障转移服务302的分区的多个存储装置304上的应用305的状态信息和故障转移工作流的副本,故障转移服务302能够确保多个存储装置304之间的信息匹配,以使得所提供的信息更可能是有效和准确的。例如,故障转移服务302的每个分区包括存储装置304中由基于网络的服务110托管的应用小区的状态信息的副本。因此,故障转移服务302可保证向应用小区或其他实体报告的应用小区的状态信息的强一致性。例如,要保证由故障转移服务302报告的状态是正确的,故障转移服务302可确认故障转移服务302的存储装置304的仲裁指示状态与正在报告的状态相同。更具体地,在故障转移服务302可保证应用305的主分区处于活动状态205之前,故障转移服务302可确认大多数故障服务存储装置304指示应用305的主分区处于活动状态205。42.如果大多数故障服务存储装置304未指示活动状态205,则故障转移服务302不报告应用305的主分区处于活动状态205。在一些实施方案中,所述仲裁是大多数故障服务存储装置。在一些实施方案中,仲裁是设定数量(例如,三(3)或五(5)个)的故障转移服务存储装置304,所述故障转移服务存储装置必须同意故障转移服务302以保证报告该状态(或其他信息)。43.在一些实施方案中,客户可为其应用生成规则(或限制),或者故障转移服务302可包括限制应用305的多少分区和/或节点可在给定状态下操作的规则。在一些实施方案中,故障转移服务302配置并强制执行此类规则。例如,故障转移服务302可允许客户识别例如在任何给定时刻有多少分区或节点可在每种状态中操作。例如,故障转移服务302可将活动状态205下允许的分区或节点的数量限制为一(1)个,同时在待机状态210或受防护状态215中的每个中允许无限数量的分区或节点。在一些实施方案中,故障转移服务302还可将在受防护状态215中允许的分区或节点的数量限制为一(1)个。在一些实施方案中,通过将可写入对应应用存储装置的分区或节点的数量限制为一个,减轻了数据覆写和数据丢失的风险。另外,此类规则可使故障服务能够触发手动和/或自动化故障转移。手动故障转移可包括客户为故障转移服务302和基于网络的服务110识别有关例如主分区和辅助分区的状态更改。自动化故障转移可包括客户识别主分区更改状态并且故障转移服务302或基于网络的服务110基于生成的故障转移工作流而识别和执行后续工作流动作。44.在一些实施方案中,基于网络的服务110利用用户接口(图中未示出),以使得应用305由基于网络的服务110托管的客户能够为其应用305创建依赖关系树和故障转移工作流。依赖关系树可映射(例如,识别)和跟踪客户的应用的上游和下游依赖关系,以确定在故障转移中要采取的步骤,以确保应用分区之间的数据完整性和应用305的持续可用性。此外,故障转移服务302和/或基于网络的服务110可映射客户应用的子应用的上游和/或下游依赖关系。基于经映射的分区和依赖关系,故障转移服务302和/或基于网络的服务110可以顺序方式为由基于网络的服务110提供的个别应用中的任何一个协调分区或节点故障转移。在一些实施方案中,依赖关系可包括向应用305提供数据、请求等或从应用305接收数据、请求等的其他应用或服务。45.在一些实施方案中,该接口还用于识别要基于故障转移状态和/或其他条件而触发的故障转移工作流。可在客户设计和创建应用305时或在创建和分割了应用305之后创建依赖关系树和工作流。此类依赖关系树和故障转移工作流可使故障转移服务302和基于网络的服务110能够提供对应用305的特定依赖关系的可见性。例如,使客户能够看到其应用的上游依赖关系和下游依赖关系,客户可更好地了解在应用分区或节点的故障转移期间需要什么步骤或动作顺序,以确保应用305的可用性和相关联的数据的数据完整性,并且可相应地生成故障转移工作流。因此,与依赖关系树不可用时相比,客户可能够更容易地生成工作流,包括在发生故障转移时所需的步骤或动作顺序。46.在一些实施方案中,此类故障转移工作流可由客户手动触发或由故障转移服务302基于应用分区或节点的故障转移状态而自动地触发。通过跟踪应用依赖关系和对应的工作流,基于网络的服务110和故障转移服务302可使客户能够以安全、可靠和可预测的方式为应用305协调故障转移程序,以使得维持数据完整性和应用可用性。47.在一些实施方案中,客户使用故障转移服务302对他们的应用和/或他们的应用的小区进行建模。如本文所使用的,小区可表示分区、节点或应用的例如在区120或区域112中可能是故障点或可能经历故障的任何单元。客户可使用故障转移服务302的模型来基于依赖关系树等而定义在跨一个或多个应用的故障转移期间所需的步骤顺序。例如,如果客户在应用305的主分区中检测到故障,则客户可触发自动缩放步骤以在辅助分区中缩放应用305,之后客户可触发流量管理服务来将用户流量重新定向到辅助分区。在一些实施方案中,流量管理服务管理流量的网络级路由。此类控制使客户能够以受控、可靠和可预测的方式管理分布式多层应用。在一些实施方案中,流量管理服务基于与应用的性能相关的各种参数而将流量路由到最佳应用端点。在一些实施方案中,客户可生成工作流以在故障被触发的情况下包括上面识别的动作,以使得所述动作由故障转移服务302自动执行。48.相似地,故障转移服务302可向客户提供此类控制,以配置基于应用分区或节点的状态更改而实现的工作流(例如,包括使用流量管理服务和/或域名系统(dns)服务的流量路由动作)。在一些实施方案中,客户还可为应用分区或节点配置具有状态更改的元数据。例如,应用分区或节点状态更改触发流量管理服务和/或dns服务(本文也称为路由服务)的每个区120或区域112的端点或流量权重的故障转移或更改,这可能支持故障转移工作流和/或步骤顺序的自动化。49.在一些实施方案中,故障转移服务302和基于网络的服务110支持与客户应用305相关联的事件的简化聚合和跟踪,包括事件历史日志等。因此,客户可使用基于网络的服务110来生成各种事件的报告和/或审计踪迹,诸如状态更改和/或故障转移工作流的细节,诸如对当前故障转移工作流步骤或阶段的可见性。此类报告或审计踪迹可使操作跟踪和/或合规性变得容易。50.故障转移服务的操作51.如本文所述,客户应用305的故障转移服务302可使客户能够为应用生成故障转移工作流,该工作流识别如果应用的主分区经历故障则要采取的一个或多个动作或步骤。因此,如上所述,故障转移工作流可包括要采取的步骤,以确保应用的持续操作并通过个别分区故障维持数据完整性。例如,工作流可包括当先前的主分区经历故障时,作为主分区的备份(例如,变成新的主分区)的辅助分区的标识。故障转移工作流还可定义主分区在其经历故障时转变到的状态(例如,待机状态210或受防护状态215)。虽然本文参考了主分区和辅助分区,但是故障转移服务和故障转移工作流可同样适用于主节点和辅助节点。52.在一些实施方案中,故障转移服务302的基于网络的服务110将由客户生成的故障转移工作流存储在与故障转移服务302相关联的存储装置304中。替代地或另外地,工作流被存储在基于网络的服务110的存储装置中、与应用305相关联的存储装置307中或外部存储装置中。当主分区更改状态时、当客户指示或请求故障转移时或者当故障转移服务302请求故障转移时,可视需要访问工作流。一旦存储了故障转移工作流,故障转移服务302就可等待触发故障转移工作流的状态更改或其他条件,例如主分区的状态更改。53.客户可将上述互斥状态中的一个(活动状态205、待机状态210和受防护状态215)指派给应用305的每个分区。状态的此种指派可被传达给故障转移服务302。在一些实施方案中,当存储了故障转移工作流时,主分区处于活动状态205,而辅助分区处于待机状态210。当主分区在活动状态205中操作时,dns服务或流量管理服务可将应用305的流量(例如,读取请求和写入请求)定向到主分区。54.在一些实施方案中,故障转移服务302可确定主分区的状态更改,例如从活动状态205更改为受防护状态210。在一些实施方案中,故障转移服务302可基于从客户接收到指示或者从自动检测到由客户做出的主分区的状态更改而检测主分区的状态更改。响应于主分区的这种状态更改,故障转移服务302可参考对应应用的故障转移工作流来识别要采取什么动作。例如,故障转移服务302识别要作为主分区的备份操作的辅助分区。在一些实施方案中,作为主分区的备份操作的辅助分区是支持或维持与主分区最相似的依赖关系的辅助分区,从而尽可能地减少上游和/或下游依赖关系的更改。在一些实施方案中,当主分区更改为受防护状态215时,工作流包括用于dns服务和/或流量管理服务以将读取请求定向到主分区或备份辅助分区中的任何一个并且将所有写入请求定向到作为备份操作的备份辅助分区的指令。替代地,当主分区更改为待机状态210时,故障转移工作流指导dns服务和/或流量管理服务将所有读取请求和写入请求定向到备份辅助分区。在一些实施方案中,故障转移工作流识别主分区和辅助分区转变到的状态顺序以及故障转移步骤或动作顺序。相关于主分区的状态更改的故障转移服务的操作的进一步细节在下面关于图4提供。55.在一些实施方案中,应用305的故障转移工作流可另外地或替代地包括如果辅助分区或节点经历故障则要采取的一个或多个动作或步骤。例如,如果备份辅助分区经历故障,则故障转移工作流可从剩余的辅助分区中识别出替代备份辅助分区。56.故障转移工作流可包括一个或多个协调步骤,所述协调步骤包括确保辅助分区准备好转变到活动状态205的一个或多个动作(例如,确认主分区已经从活动状态205转变到另一状态),同时维持数据完整性,直到转变为止并贯穿整个转变。在一些实施方案中,一个或多个协调步骤还包括指导流量管理服务和/或dns服务将请求路由到辅助分区的步骤。一旦完成了一个或多个协调步骤,辅助分区就可从待机状态210(或受防护状态215)提升到活动状态205,并且与应用相关联的所有请求都可被路由到处于活动状态205的辅助分区。故障转移服务可在其中分割了故障转移服务应用的区120和区域112中的对应存储装置中的故障转移后,复制主分区和辅助分区的状态更改信息。通过在故障转移后更新主分区和辅助分区的状态更改信息,故障转移服务可提供主分区和辅助分区的当前状态的共识或仲裁视图。57.如上面参考图1所描述的,可跨区120、区域112和/或内部部署分割客户应用(例如,用于灾难恢复目的)。在一些实施方案中,分区是相同的并且包括相同的节点,其中每个节点表示和/或映射到计算、存储、数据库和联网资源的任何组合。在一些实施方案中,每个节点轮询故障转移服务302或基于网络的服务110以确定节点的当前状态。为此,状态条件可触发故障转移工作流的节点级别的特定动作。58.故障转移服务302或基于网络的服务110可跟踪存储装置304中基于网络的服务110的节点、分区和其他部件的状态。在一些实施方案中,故障转移服务302和/或基于网络的服务110可通过确定或检测到节点、分区、区120或区域112正在经历故障来从客户或自动地接收经更新的状态信息。当接收到经更新的状态信息时,故障转移服务302可尝试更新或传播所有故障转移服务分区302中的存储装置304,如上所述。59.参考图4,示出了根据本公开的各方面的实现高可用性故障转移服务302的示例交互工作流。如图4中所示,实现高可用性故障转移服务302涉及许多装置、系统或实体之间的通信。例如,客户端装置102、dns提供者或流量管理服务402、故障转移服务302和多个节点(例如,节点1404和节点2406)在实现故障转移服务302时进行通信。60.在(1)处,节点1404可轮询故障转移服务302以识别节点1404的状态。在一些实施方案中,节点1404的轮询连续地或以预定或定制的间隔发生。在一些实施方案中,节点1404可轮询故障转移服务302的单个分区或故障转移服务302的一个或多个端点。61.在(2)处,故障转移服务302向节点1404报告节点1404的状态。在一些实施方案中,故障转移服务302仅在由故障转移服务302的存储装置304的仲裁确认了状态时向节点1404报告节点1404的状态。如上所述,通过将状态的报告限制为仅由存储装置的仲裁确认的信息,故障转移服务302可保证节点1404的状态信息是准确的。例如,在(2)处,故障转移服务302报告节点1404处于活动状态205,如由存储装置304的仲裁所确认。虽然图4中未示出,但是在节点1404与故障转移服务302之间的通信(1)和通信(2)之前、同时或之后,节点2406可与故障转移服务302交换通信以确定节点2406的状态,故障转移服务302可将所述状态报告为待机状态210(在与存储装置304的仲裁确认之后)。62.在(3)处,客户向故障转移服务302指示节点1404的状态更改。在一些实施方案中,客户经由与故障转移服务302和/或基于网络的服务110的接口(例如,应用编程接口(api))来指示状态更改。如本文所述,因为故障转移服务302被分割或分布在各种区120和区域112中,所以客户可访问接口以指示在基本任何时间点的状态更改。为此,接口和故障转移服务302是高可用性的。在一些实施方案中,故障转移服务302可基于在给定区120或区域112中已经发生故障的确定而自动检测节点1404(或任何其他小区)的状态更改。因此,在(3)处,客户指示节点1404的状态从活动状态205到受防护状态215的更改。63.在(4)处,故障转移服务302将来自(3)的状态更改传播到分布在其他区120和区域112中的存储装置304。在一些实施方案中,状态信息的传播以预定的或可定制的间隔或连续地发生,如本文所述。在一些实施方案中,对于每个故障转移服务分区302,状态信息的传播可双向发生,以使得每个故障转移服务分区302用从其他故障转移服务分区302接收到的状态信息来更新存储在其存储装置304中的状态信息,并通过传输从客户接收到的状态信息更新致使其他存储装置304中的更新。因此,在(4)处,故障转移服务302将节点1404的受防护状态215传播到存储装置304,从而允许故障转移服务302的任何分区有权访问应用305的分区的相同状态信息。64.在(5)处,节点1404在此轮询故障转移服务302以识别节点1404的状态。如上所述,节点1404的轮询可连续地或者以预定的或定制的间隔发生。在一些实施方案中,节点1404可轮询故障转移服务302的单个分区或故障转移服务302的一个或多个端点。65.在(6)处,故障转移服务302向节点1404报告节点1404的经更新受防护状态。在一些实施方案中,节点1406的经报告的状态不包括应用305的任何其他节点406的任何状态信息。在一些实施方案中,故障转移服务302仅在故障转移服务302的存储装置304的仲裁确认了状态时(因此在(4)之后,将受防护状态传播到存储装置304之后),向节点1404报告节点1404的状态。因此,在(6)处,故障转移服务302报告节点1404处于受防护状态215,如由存储装置304的仲裁所确认的。66.在(7)处,节点2406轮询故障转移服务302以识别节点2406的状态。应用305的不同节点不知道应用305的其他节点的状态;为此,节点2406可轮询故障转移服务302以识别节点2406的状态以确定节点2406是否需要为任何特定动作做好准备(例如,确定是否有任何故障转移工作流动作适用于节点2406)。与节点1404的轮询相似,节点2406的轮询可连续或者以预定或定制的间隔发生。在一些实施方案中,节点2406可轮询故障转移服务302的单个分区或故障转移服务302的一个或多个端点。67.在(8)处,故障转移服务302向节点2406报告节点2406的经更新的活动状态。在一些实施方案中,节点2406的经报告的状态不包括应用305的任何其他节点406的任何状态信息。在一些实施方案中,节点2406从待机状态到活动状态的更改由当客户将节点1404的状态更改指示为受防护状态并发起故障转移工作流时发起的故障转移工作流来定义。在一些实施方案中,节点2406是主节点1404的辅助或备份节点。当节点1404将状态更改为受防护状态215到期时,故障转移工作流指导辅助节点2406接管主节点1406的处理和操作。故障转移服务302可仅在故障转移服务302的存储装置304的仲裁确认了状态时(因此在(4)之后,在将节点2406的状态定义为活动状态的指令被传播到存储装置304之后),才向节点2406报告节点2406的状态。因此,在(8)处,故障转移服务302报告节点2406处于活动状态205,如由存储装置304的仲裁所确认。68.在(9)处,路由服务402(例如,dns服务或流量管理服务)轮询故障转移服务302以识别节点1404和节点2406的状态。如本文所述,路由服务402可轮询故障转移服务302以理解哪些节点是活动的和/或可用于处理应用请求。在一些实施方案中,路由服务402可连续地或根据预定的或可定制的间隔轮询故障转移服务302以了解节点1404和节点2406的状态。在一些实施方案中,每当路由服务402接收到路由到节点1404的请求(等等)时,路由服务402可轮询故障转移服务302以了解节点1404的状态。69.在(10)处,故障转移服务302可向路由服务402报告节点1404的状态和节点2406的状态。在一些实施方案中,故障转移服务302在路由服务402请求状态之前向路由服务402报告节点1404的状态和节点2406的状态(例如,以预定或可定制的间隔自动地报告)。当故障转移服务302的存储装置304的仲裁确认了状态时,故障转移服务302可仅向路由服务402报告节点1404的状态和节点2406的状态。因此,在(10)处,故障转移服务302报告节点1404处于受防护状态215,并且节点2406处于活动状态205,如存储装置304的仲裁所确认。70.在(11)处,路由服务402将应用写入请求路由到在活动状态205中操作的节点2406。在一些实施方案中,当节点1404处于受防护状态215并且节点2406处于活动状态(如通过轮询故障转移服务302所确定的)时,路由服务402可将读取请求路由到节点1404或节点2406。71.因此,图4描绘了不同部件可如何交互以识别状态更改或故障转移,以及管理当发起状态更改或故障转移时要采取的动作的工作流。72.当客户使用故障转移服务302实现故障转移工作流时,基于网络的服务110可为客户提供跨多个区域112分割的专用基础设施堆栈,从而以高可用性方式存储其应用状态信息。使用故障转移服务302,客户可启动跨越多个小区的应用。这些小区可能是区120、区域112和内部部署的任何组合。在这些应用内,可跨区120、区域112和内部部署复制小区。在一些实施方案中,这些小区被映射到个别或一组云或基于网络的服务和/或存储资源。客户可为每个小区设置三种状态中的一种(活动状态205、待机状态210和受防护状态215)。一旦设置了小区的状态,故障转移服务302就将基础设施堆栈内的节点状态传播到多个区域112以取得仲裁。映射到这些小区的资源可继续(例如,连续地或间隔地)轮询故障转移服务302api,以理解小区的状态。此外,路由服务可轮询故障转移服务302,以理解将流量(例如,接收到的应用请求)路由到哪个资源。当小区的状态更新时,该更改会再次在基础设施堆栈中传播以取得共识状态。要与路由服务或流量管理服务集成,客户可创建依赖关系树,并关联属于依赖关系的一部分的相应小区。例如,要对在托管在2个不同区域的两个小区之间的流量进行故障转移,客户可在两个分区中创建节点,并将两个分区一起绑定在依赖关系树中,以使得流量管理服务能够在两个分区之间路由流量。73.参考图5,将描述用于实现本公开的各方面的说明性例程。具体地,图5描绘了根据本公开的各方面的用于处置应用的至少一部分的故障转移的说明性例程。74.参考图5,例程500开始于框502,其中基于网络的服务110或故障转移服务302(例如,工作人员303)接收客户应用305的配置信息。在一些实施方案中,配置信息包括应用305的小区的标识符、应用305的依赖关系、应用305的不同小区的状态以及故障转移工作流。在一些实施方案中,标识符包括分布在若干区120或区域112上的应用的多个小区中的每个的标识符。在一些实施方案中,故障转移工作流包括基于每个小区的状态和应用305的一个或多个依赖关系中的一者或多者,在应用的一个或多个小区发生故障转移事件时要采取的动作。在一些实施方案中,经由用户接口接收配置信息。75.在框504处,响应于配置信息的接收,故障转移服务302(例如,经由工作者303)可将配置信息存储在存储装置304中,并且然后将配置信息传播到分布在其他区120和区域112中的其他故障转移服务分区302(例如,其他存储装置304)。在一些实施方案中,配置信息在其他存储装置304之间或与所述其他存储装置的传播包括将对应小区的状态更新到其他存储装置304,并且将故障转移工作流、应用依赖关系和其他配置信息传达给其他存储装置304。配置信息的此种传播使故障转移服务302能够提供本文描述的高可用性服务。另外,在其他存储装置304之间或与所述其他存储装置共享配置信息和经更新的状态还使得故障转移服务302能够提供高度一致的数据,因为数据存储区是用相同的数据和信息更新的。76.在框506处,故障转移服务302(例如,经由故障转移服务302的分区中的一个)接收应用305的小区(例如,主小区)中的一个的状态更改的指示,或者接收发起故障转移(例如,响应于故障转移事件)的请求。在一些实施方案中,可直接从客户接收指示,例如经由与故障转移服务302进行数据通信的用户接口。在一些实施方案中,由故障转移服务302或基于网络的服务110基于检测到节点120或区域112或相似部件中的故障而自动地检测该指示。在一些实施方案中,状态更改或故障转移请求被传播到故障转移服务302的其他分区或小区。77.在框508处,故障转移服务302(例如,经由工作者303)访问故障转移工作流(例如,从存储装置304)。如上所述,故障转移服务302识别在故障转移事件期间或之后要采取的动作。例如,故障转移工作流识别一个或多个应用小区或分区的新状态、要更新的依赖关系等等。故障转移服务302可使用故障转移工作流中的动作来更新状态和依赖关系,以在故障转移事件期间和之后维持应用302的可操作性并维持应用305的数据完整性。例如,故障转移服务302可将主小区更新为具有受防护状态215或待机状态210,并且将辅助小区更新为具有活动状态205。78.在框510处,故障转移服务302确保基于网络的服务110基于经更新的状态和依赖关系而管理应用305的流量。例如,故障转移服务302确保流量管理服务和/或路由服务以及dns服务提供者适当地路由应用305的流量,以确保应用的持续操作,同时保持应用305的数据完整性。因此,故障转移服务302可确保更新主小区与辅助小区之间的流量路由。79.虽然图5中未示出,故障转移服务302还可被配置成识别主小区将状态从活动状态更改为受防护状态,并且可在主小区将状态更改为受防护状态之后的至少一段持续时间内将读取流量的至少一部分路由到主小区。这可允许替换主小区的具有活动状态的辅助小区有一些时间来完成其状态转变,并在成为应用请求的目标之前跟上进度。在一些实施方案中,并且在本文中描述,故障转移服务302使用分布在不同区120和区域112之间的存储装置304的仲裁来识别主小区从活动状态205更改状态到例如受防护状态215或待机状态210。80.示例故障转移服务工作流81.本文描述的故障转移服务302可由基于网络的服务110中的不同方以不同方式实现。例如,开发应用305的客户可使用以下工作流来集成故障转移服务302,并使客户能够为其应用305的一个或多个小区触发故障转移。82.在(1)处,客户可启动应用305。通过提供应用305的标识符和应用305的小区的标识符,客户可使用故障转移服务302对要跨分区复制的应用305或应用305的小区进行建模。在一些实施方案中,启动应用305包括提供配置信息,所述配置信息包括应用305的小区的标识符、应用305的依赖关系、应用305的不同小区的状态以及故障转移工作流。83.在(2)处,故障转移服务305可创建分区,应用305在所述分区上被复制。如本文所述,分区可能是由区120、区域112或内部部署的任何组合托管的任何分区。84.在(3)处,客户在应用305内创建节点。在一些实施方案中,节点表示或是应用305内的经隔离工作者单元,所述经隔离工作者单元跨应用分区305自动地复制。客户还可将节点的状态设置为以下状态中的一个,如本文中所述:活动/被动/受防护。在一些实施方案中,客户可通过接口或通过自动化工作流手动地设置状态。在一些实施方案中,每种状态任选地包括与应用305的依赖关系共享的一些元数据,如由应用305的依赖关系树所识别的。85.在(4)处,客户使用故障转移服务302为应用305创建依赖关系。客户可配置依赖关系,诸如路由服务和/或流量管理服务,并关联应用305的将与这些依赖关系介接的节点。在一些实施方案中,依赖关系将轮询故障转移服务302,以识别和理解应用305的每个节点的状态。基于应用的每个节点的状态,依赖关系可能会返回具体的元数据,并且可基于应用305的每个节点的状态而触发动作(例如,故障转移工作流的动作),诸如更改定向到特定节点的请求流量的量。86.在(5)处,故障转移服务302可触发生成的故障转移工作流。触发故障转移工作流可包括使用规则引擎来当触发了节点中的一个的状态更改时对需要强制执行的步骤顺序进行建模。87.替代地,站点可靠性工程师可使用以下工作流程。88.在(1)处,客户使用故障转移服务302来创建所有应用305的依赖关系树。对于多层应用,不同的应用305可被分组成分层的故障转移群组。在一些实施方案中,故障转移服务302和/或基于网络的服务110包括使客户能够拖放故障转移群组并显示任何依赖关系冲突的可视化编辑器。89.在(2)处,客户创建故障转移工作流,所述故障转移工作流定义了在触发故障转移时需要发生的活动顺序。90.在(3)处,故障转移服务302监测多层应用的总故障转移的状态。对于总故障转移演习,多层依赖关系树可提供对个别应用级别和故障转移群组级别的故障转移状态的可见性。91.在一些实施方案中,客户可使用故障转移服务302经由流量管理服务手动地将流量故障转移到辅助小区。例如,客户的应用包括在第一主区域中运行的第一实例和在第二辅助区域中运行的第二实例,并且客户希望手动地将流量故障转移到辅助区域。92.在(1)处,客户创建跨两(2)个分区复制的应用,一个托管在主区域中,而另一个托管在辅助区域中。93.在(2)处,客户在应用内创建节点并为该节点指派名称“节点1”。该节点可能会自动出现在两个分区中。94.在(3)处,客户将主区域中的节点的状态设置为“活动”,并且将辅助区域中的节点的状态设置为“被动”。客户还配置了两个排除规则:活动&活动=假,这防止两个节点同时处于活动状态205;以及被动&被动=假,这防止两个节点同时处于待机状态210。95.在(4)处,故障转移服务302以键值对的形式为状态中的每种状态配置元数据。例如,对于活动状态和被动状态,元数据可包括以下键值对:96.活动:97.{98.节点:节点199.依赖关系:全球加速器100.全球加速器arn:aws:globalaccelerator::123456101.分区:主102.流量拨号:100%103.}104.被动:105.{106.节点:节点1107.依赖关系:全球加速器108.全球加速器arn:aws:globalaccelerator::123456109.分区:辅助110.流量拨号:0%111.}112.在(5)处,客户使用故障转移服务302来创建称为“全球加速器”的依赖关系并将两个节点与该依赖关系相关联。全球加速器可轮询依赖关系(例如,连续地或间隔地),并且可基于哪个全球加速器会动态地为活动/被动设置配置流量拨号而返回元数据。113.在(6)处,要手动将流量故障转移到辅助区域,客户将辅助区域中的node1节点更新为“活动”。这会自动将主区域中的node1节点的状态转变为“被动”。元数据将被更新并返回给流量管理服务。114.用于强制执行只读状态的示例交互115.如上所述,故障转移服务定义了活动状态205、待机状态210和受防护状态215,它们中的每个都与不同的可用能力相关联。例如,受防护分区或节点可服务于或处理读取请求,但可能不服务于或处理写入请求。因为不同的状态指示不同的能力,所以重要的是由基于网络的服务110的各种部件强制执行对应的状态。例如,这些状态和对应的可用能力或约束的强制执行允许故障转移服务和基于网络的服务110防止“脑裂”情况,其中单个应用的多个分区或节点处理关于存储的数据或信息的写入请求。此种情况可能会导致数据被覆写(例如,多个分区或节点正在写入相同的数据)和数据完整性受损。116.在一些实施方案中,可通过在基于网络的服务110中的各个级别上约束或拒绝写入请求同时允许读取请求来强制执行和/或协调受防护状态215。在一些实施方案中,可通过约束或任何所有请求来强制执行和/或协调待机状态210。客户可负责拒绝应用层的请求。然而,让客户负责拒绝请求可能会给客户带来很大的负担,要求他们付出很大程度的努力来对其应用进行更改、测试更改和部署更改(例如,针对数据库访问逻辑),以正确慎重对待状态更改以及对应的能力或约束。替代地,存储提供者可负责拒绝存储层的请求。因此,存储提供者可负责采用由故障转移服务定义的状态,并且每个提供者可能需要经受与客户相似的努力水平来强制执行所述状态。117.用于强制执行由故障转移服务定义的对客户和存储提供者相对不可见的状态的替代方案是在通信层或线路级应用由故障转移服务或基于网络的服务110实现的代理系统。例如,代理系统可针对小区(例如,应用的特定分区或节点)的当前状态审查和验证数据库请求和相关联的选项。代理系统可允许故障转移服务和/或基于网络的服务110通过对新数据存储区的基本协议支持来支持新数据存储区和/或新客户应用,而无需对数据存储区进行定制的更改或对数据存储区进行定制的协议支持。因此,由故障转移服务和基于网络的服务110定义的状态的采用可对应于代理系统的集成或采用。然后,可在部署期间并且通过更新端点配置而将代理系统添加到现有的基于网络的服务110的基础设施,以将对应的请求(例如,对受防护分区或节点的读取/写入请求)路由通过代理系统以使得代理审查请求。118.关于图6,示出了根据本公开的各方面的用于强制执行只读应用状态的说明性交互。如图6中所示,区120a与通信接口602介接并托管代理系统605和数据存储区610。虽然未示出,但是数据存储区610可被应用305的小区代替以用于下面的讨论。在一些实施方案中,数据存储区610与具有由区120a托管的分区的应用相关联。在一些实施方案中,虽然图6中未示出,但是区120a还托管应用的提供本文所描述的故障转移服务的至少一个分区。119.通信接口602可被配置成与一个或多个其他区120、用户、互联网等进行通信。在一些实施方案中,通信接口可接收应用305的被定向到数据存储区610的请求。在(1)处,通信接口602接收与由区120a托管的应用中的一个或多个相关的一个或多个请求。由通信接口602接收到的一个或多个请求可被定向到数据存储区610。数据存储区610可包括存储与由区120a托管的应用相关的数据的任何类型的非暂时性数据存储部件。120.在(2)处,通信接口602将所有接收到的请求路由到代理系统605。因此,定向到数据存储区610的所有应用请求都被路由到代理系统605。在一些实施方案中,通信接口602除了将接收到的请求转发到代理系统605之外,不会对所述接收到的请求执行任何分析或处理。在一些实施方案中,通信接口602将请求路由到代理系统605,而不是路由到请求被定向到的数据存储区610。121.在(3)处,代理系统605确定数据存储区610的状态,例如数据存储区610正在操作的状态(例如,活动状态205、待机状态210和受防护状态215中的一个)。例如,代理系统605审查轮询故障转移服务,以确定数据存储区610是否处于活动状态205、待机状态210和受防护状态215中的一个。在一些实施方案中,代理系统605每次接收到从通信接口602转发的请求时轮询故障转移服务以确定数据存储区610的状态。在一些实施方案中,代理系统605以预定或动态间隔轮询故障转移服务,以使得代理系统605不需要针对每一个请求轮询故障转移服务。例如,预定或动态间隔可能是0.01秒、0.1秒、1秒、1分钟等等。代理系统605可继续轮询故障转移服务以识别数据存储区610何时更改状态。122.在(3)处,代理系统605还可根据数据存储区610的状态识别数据存储区610容许或能够处理的命令的数据库,并且根据数据存储区610的状态识别数据存储区610不容许或不能够处理的命令的数据库。在一些实施方案中,故障转移服务302的存储装置304中的每个可包括可接受命令和不可接受命令的这些数据库。在一些实施方案中,可接受命令和不可接受命令可存储在单个数据库中。123.代理系统605可轮询故障转移服务302以获得数据存储区610的状态信息。在一些实施方案中,代理系统605专门轮询故障转移服务302的一个或多个端点125以获得状态信息。在一些实施方案中,返回的状态信息可基于一个或多个端点125的仲裁。在一些实施方案中,代理系统605可在给定数据存储区的状态的情况下轮询故障转移服务302,以获得用于数据存储区610的可接受命令和/或不可接受命令。124.基于数据存储区610的状态,代理系统605将访问针对数据存储区610的状态的可接受命令和不可接受命令。代理系统605可解析每个请求以识别请求中的一个或多个命令。然后,代理系统605可基于将相关联的一个或多个命令与针对数据存储区610状态的可接受命令和不可接受命令进行比较而识别该请求是否是可接受请求。在一些实施方案中,识别请求中的一个或多个命令包括检查请求的个别分组,例如如下面所描述的。如果请求仅包括可接受命令,则该请求将被确定为是有效请求。如果请求包括任何不可接受命令,则该请求将被确定为是无效请求。125.在一些实施方案中,活动状态205包括所有命令作为可接受命令,待机状态210不包括命令作为可接受命令,并且受防护状态215包括读取命令作为可接受命令(不修改或写入数据的命令)和写入命令(修改或写入任何数据的命令)作为不可接受命令。126.在一些实施方案中,对于由通信接口602转发的每个请求,代理系统605可确定该请求是读取类型请求(例如,仅请求访问数据存储区中的数据而不修改数据存储区中的任何数据)还是写入类型请求(例如,请求在数据存储区中修改数据存储区中的至少一部分数据)。在一些实施方案中,当代理系统605确定该请求是读取类型请求时,代理系统605可在(5)处将该请求转发到数据存储区610以进行处理。在一些实施方案中,当代理系统605确定该请求是读取类型请求时,代理系统605可确认数据存储区610处于活动状态205和故障转移状态215中的一个,或者确定数据存储区610正在操作的状态。如果数据存储区不处于活动状态205或故障转移状态215,则代理系统605在(4)处向通信接口602发送对请求的拒绝。如果数据存储区处于活动状态205或故障转移状态215,则代理系统605在(5)处将经分析的请求转发到数据存储区610以进行处理。在一些实施方案中,当代理系统605向通信接口602发送对请求的拒绝时,代理系统605在(4)处例如用对数据存储区610的状态的指示来指示请求被拒绝的原因(例如,数据存储区610处于错误状态无法处理请求)。127.在一些实施方案中,当代理系统605确定请求是写入类型请求时,代理系统605可确认数据存储区610处于活动状态205而不处于待机状态210或故障转移状态215中的任何一个。如果数据存储区不处于活动状态205,则代理系统605在(4)处向通信接口602发送对请求的拒绝。如果数据存储区处于活动状态205,则代理系统605在(5)处将经分析的请求转发到数据存储区610以进行处理。在一些实施方案中,当代理系统605向通信接口602发送对请求的拒绝时,代理系统605指示请求被拒绝的原因(例如,数据存储区610处于错误状态无法处理请求)。128.数据存储区610处理由代理系统605转发的有效请求。当数据存储区610处于活动状态205并且接收到的请求包括读取请求或写入请求时,数据存储区610在(6)处处理接收到的请求并向通信接口602提供任何输出(例如,根据读取请求从数据存储区610读取的数据)。在一些实施方案中,数据存储区610可在(6)处发送对已完成请求(例如,写入请求)的确认(虽然图6中未示出)。129.在(7)处,通信接口602可向请求实体传输任何被拒绝的请求、请求确认或读取的数据。在一些实施方案中,被拒绝的请求包括请求被拒绝的原因,如由代理系统605所提供的。在一些实施方案中,请求确认包括来自数据存储区610的对接收到的请求已完成的确认(例如,已完成读取确认或已完成写入确认)。在一些实施方案中,当接收到的请求是对来自数据存储区610的数据的请求时,通信接口602向请求实体传输数据。130.在一些实施方案中,要缩短通信时延并改进正在被审查的数据库请求的分析时间,代理系统605和由代理系统605审查的数据库请求所指定的数据存储区610共享主机(例如,由与图6中相同的区120a进行托管)。替代地,代理系统605和数据存储区610可属于不同的区或区域。当代理系统605与数据存储区610之间的距离增加时,因此对应时延和用于分析请求的分析时间也会增加。在一些实施方案中,本文所描述的代理系统可为各种通信介质(例如,中间件、表述性状态转移(rest)、grpc等)或为身份验证和/或授权机制(诸如,身份和访问管理(iam))强制执行定义的状态。131.在一些实施方案中,数据存储区610可能不具有其自身的定义状态。相反,数据存储区610可具有由其中托管了数据存储区610的区或区域的状态定义的状态。在一些实施方案中,故障转移服务可定义个别数据存储区610的状态,其中数据存储区610是具有定义的状态的节点。在一些实施方案中,代理系统可由软件部件、硬件部件或它们的组合来实现。132.下面提供了软件实现的代理系统的示例。下面的示例代码提供了代理系统来强制执行任意应用与mysql数据库之间的只读通信(例如,仅读取请求)。代理系统通过检查发送或定向到数据库的每个分组来强制执行只读通信。发送到数据库的分组可能是由mysql数据库支持的任何数量的命令类型中的一个。例如,如果代理系统确定分组是com_query,则代理系统检查查询以确定查询是否包含任何标准sql写入操作(例如,insert、drop、create等等)。如果查询确实包含在当前状态(例如,受防护状态)期间被列入黑名单的操作,则代理系统可能会丢弃分组而不是将分组转发到数据存储区。代理系统还任选地用mysql错误分组来响应分组的来源(例如,应用客户端)。代理系统创建mysql错误分组以表示由于小区的只读状态而导致的包括写入操作的分组的故障。如果代理系统确定该分组仅包含标准的sql读取操作,诸如select,则代理系统可将分组转发到mysql数据库而无需干预。133.在下面的示例代码中,代理系统是tcp代理,该代理将端口8123转发到3306(sql数据库正在此运行)。代理系统引用返回表示mysql数据库的受防护状态的常量值的函数,但该函数将被替换为轮询故障转移服务的动作,如上所述。[0134][0135][0136]构建自定义错误响应,.show()将分组打印到标准输出:[0137][0138][0139]代理系统对小区状态执行模拟检验,并验证查询不包括任何“写入”操作。这被代理(下一帧)中的validate_request调用,它将分组反序列化,将其打印到标准输出以进行调试,并检验分组是否是查询:[0140][0141]转发验证分组的代理(扭转的api实现方式):[0142][0143]执行以下语句,以针对端口8123(代理系统在此处)创建新表:[0144]mysql-h127.0.0.1-p8123-uroot-p-e"createtableifnotexiststasks(task_idintauto_increment,titlevarchar(255)notnull,start_datedate,due_datedate,prioritytinyintnotnulldefault3,descriptiontext,primarykey[0145](task_id));"[0146]这导致以下协议事务:[0147]从登录握手开始——应当注意密码是不透明的,也使用了mysql的衍生产品mariadb,但协议是相同的。[0148][0149]此处应当注意,客户端在创建之前执行选择语句,"allowing:x"只是调试输出,表示可转发该查询[0150][0151]在此,客户端最终执行了创建语句,因为'insert'、'create'、'drop'命令被列入黑名单,所以这可能会失败。[0152][0153]代理系统截获此并用自定义错误分组进行响应,并且不会将com_query转发到数据库服务器:[0154][0155]客户端响应于代理,表示由于错误它想退出该交互[0156][0157]mysql命令行客户端然后处理错误并打印以下内容:[0158]error1234(hy000)atline1:cannotwritetofenceddatabase[0159]用于多区域架构之间的协调状态的示例交互[0160]如上所述,已进入受防护状态的应用小区应服务于读取请求,而不服务于写入请求。如上所述,协调到该状态的转变和在该状态下操作对于防止脑裂情况很重要。一个挑战可能是协调应用的数据存储区的只读状态的强制执行。[0161]客户如何应用受防护状态的示例是在从一个区域或区到另一区域或区的故障转移事件期间。由于客户的基础设施在区120a中的某种退化,客户可能会将其工作负载从区120a转移到区120b。虽然区120a受到损害,但客户可将其区120a的小区设置为受防护状态215,从而允许区120a的小区继续服务于读取请求,同时在区120b中扩大操作和/或容量并且流量从区120a转移到区120b。因此,允许区120a的小区对客户应用305的读取请求提供持续的部分响应性。经协调的防护(例如,当一个应用小区处于受防护状态215时协调操作)确保在协调的时间点之后写入不再被区120a处理,从而允许在区120b中处理工作负载而不用担心脑裂情况。[0162]故障转移服务302允许客户通过100%可用的故障转移服务数据平面(在本文中也称为“数据平面”)来设置应用305的一个或多个小区的小区状态。在一些实施方案中,数据平面通过将一个或多个应用用于协调的状态来强制执行写入一致性。在一些实施方案中,用于协调的状态的应用可能够跨多个区域操作。在一些实施方案中,向客户提供若干端点(例如,五(5)个端点),客户可通过所述端点访问数据平面,并保证若干端点的至少一个子集(例如,五(5)个端点中的至少三(3)个)将在任何给定时间可用并具有响应性,而不考虑任何区域性停电或其他情况。端点通常包括相同的信息,因为一个端点中的状态信息的更改可能会传播到其他端点中的每个。为了让客户将其应用小区中的一个转变成受防护状态215,客户可针对任何数量的端点进行api、控制台或sdk调用。故障转移服务数据平面可经由仲裁来协调这些请求(例如,确保端点的至少大多数具有相同的信息),将新决定的状态传播到所有数据平面主机,并使新决定的状态可用于由故障转移服务客户端读取,并理解客户应用305将作用于受防护状态215。下面提供额外细节。[0163]如本文所描述的,小区通过轮询故障转移服务302来获知它们所处的状态,并且因此知道允许小区执行什么操作。因此,处于活动状态205的小区知道它们可执行所有操作,处于待机状态210的小区知道它们不能执行任何操作,而处于受防护状态215的小区知道它们可执行一些操作(例如,读取操作)。在一些实施方案中,如果小区不能轮询故障转移服务302或没有接收到对轮询的响应,则小区可默认为待机状态210或受防护状态215。客户可基于应用小区的经轮询状态而实现逻辑,以慎重对待和允许/防止对其应用的一些操作。[0164]故障转移服务302可指导路由服务和/或流量管理服务将与处于活动或受防护状态的主机相关联的端点视为健康的端点以发送流量。另一方面,如果小区处于待机状态,则故障转移服务302可指导路由服务和/或流量管理服务将对应的端点视为是健康的,并防止任何流量到达该端点。然而,考虑到为每个小区运行的路由服务的健康检验和dns生存时间值(ttl)致使的延迟,流量流不会仅仅由于对应端点的健康状况就立即切换。为此,客户可在应用305中包括解释小区状态以在状态更改时帮助协调通信的逻辑。[0165]在一些实施方案中,客户可将逻辑引入至少部分地控制状态转变的应用305。例如,在第一时间点,应用305的第一分区可以活动状态205开始,并且应用305的第二分区可以待机状态210开始。应用305中的逻辑可控制分区可直接转变到哪些状态或在哪些状态之间转变。图7示出了客户可在他们的应用中实现的一种潜在的状态转变过程。例如,从第一时间点705开始,第一分区可转变到受防护状态215,并且第二分区可在第二时间点710维持待机状态210。从第二时间点710开始,第一分区可转变到待机状态210,并且第二分区可在第三时间点715维持待机状态210。从第三时间点715开始,第一分区可维持待机状态210,并且第二分区可在第四时间点720转变到活动状态205。在一些实施方案中,客户可在第三时间点715与第四时间点720之间引入另一个任选状态,其中第一分区维持待机状态210,并且第二分区在转变到第四时间720处示出的状态之前转变到受防护状态215。[0166]在一些实施方案中,客户可使用故障转移服务控制平面api(或相似服务)来创建故障转移服务堆栈,并且将被提供数据平面端点以用于检验应用小区的状态,如本文所述。作为堆栈创建的一部分,客户可为其应用定义最小状态更改间隔。在一些实施方案中,最小状态更改间隔是控制应用小区可多快地从一种状态转变到另一种状态的值(例如,状态更改之间必须经过的时间量)。此种值可防止任何应用小区在另一状态更改之后过快地切换状态,过快地切换状态可能会导致一个以上的分区同时处于活动状态205。[0167]客户可使用将具有恢复时间目标(rto)和恢复点目标(rpo)标的。在应用小区更改状态之后,应用可被编程以在一段时间内监测分区更改状态的度量(例如,数据复制滞后等等),以验证状态更改是否成功。一旦验证了成功的状态更改,应用305就可决定是否将应用小区转变到不同的状态。客户可确定应用小区在转变到当前状态之后将多快地从当前状态更改到新状态。在一些实施方案中,如果客户不希望在应用305中包括执行此类状态更改验证的逻辑,则客户可编程为2y秒的最低允许最小状态更改间隔(其中y是数据平面服务器上的缓存持续时间)。在一些实施方案中,最低允许最小状态更改间隔可以是客户可定义的或动态的。[0168]在一些实施方案中,给定分区的每个主机(例如,节点)创建故障转移服务客户端的实例。该客户端可负责与数据平面端点交互以取得应用305的给定分区、小区或主机的状态和/或属性。因此,每当在主机上运行的任何部件想要检验该部件的状态时,该部件都会调用故障转移服务客户端。故障转移服务客户端可检验故障转移服务客户端的存储器缓存中是否存在某种状态信息。如果是,则故障转移服务客户端可回复该状态,而无需对故障转移服务数据平面服务器进行任何调用。如果不是,则故障转移服务客户端可查询故障转移服务数据平面服务器以获知分区的状态。在一些实施方案中,来自故障转移服务数据平面服务器的对故障转移服务客户端的查询响应的响应可包含经查询的值(例如,状态)以及包括租用持续时间的额外字段。租用持续时间可指定应用305可在其间缓存和使用接收到的状态值的时间段、时间或日期。一旦租用持续时间的时间段到期(例如,时间段结束或时间或日期过去),应用305就可抛弃状态值并从故障转移服务数据平面服务器请求经更新的值。在一些实施方案中,应用305的每个主机轮询故障转移服务302以获得该主机的经更新的状态,而不使用具体的故障转移服务客户端。[0169]在一些实施方案中,从应用305接收读取请求的故障转移服务数据平面服务器可基于故障转移服务数据平面服务器的本地缓存何时被设置为到期而设置租用持续时间。在一些实施方案中,经确立的租用持续时间可忽略装置之间的调用延迟和/或时钟歪斜。如果故障转移服务客户端无法到达指定的端点,则故障转移服务客户端可轮询其他数据平面端点中的任何一个。如果故障转移服务客户端无法到达端点中的任何一个,则故障转移服务客户端可向待机状态210的应用305提供默认回复。替代地,如果数据平面端点无法为请求应用小区的状态信息生成仲裁,则故障转移服务客户端可向待机状态210的应用305提供默认回复。在一些实施方案中,状态信息的租用持续时间细节可直接提供给应用305而无需故障转移服务客户端接口。相似地,在一些实施方案中,应用小区轮询端点而不使用故障转移服务客户端来识别应用小区的状态。[0170]客户可能认识到应用305正在经历灾难情况并且应用305需要执行故障转移。在一些实施方案中,接口为应用305和应用305的主机提供可见性度量。在一些实施方案中,客户可监测度量(例如,经由操作者)以及关于应用健康、数据复制滞后等等的任何其他度量,以决定故障转移是否可安全地执行。[0171]应用305可调用故障转移服务数据平面端点以识别经历灾难情况的主机的状态的任何更改。故障转移服务数据平面可检验在先前的时间单位数量内是否进行了任何状态更改(例如,对应于上述最小状态更改间隔)。如果是这样,则故障转移服务数据平面可能会通知客户:由于先前的状态更改在最小状态更改间隔内,故尚未完成状态更改。如果不是,则故障转移服务数据平面可能会更新分区的状态并向客户确认更新。[0172]每当应用主机可能需要状态信息来执行操作时,应用主机可用故障转移服务客户端进行检验,该客户端将在其存储器缓存中查找状态信息,或将联系故障转移服务数据平面服务器,如上所述。一旦租用持续时间到期,故障转移服务服务器就可向故障转移服务客户端通知状态已经转变为新的值,并且然后应用主机可开始在其新状态下操作。在一些实施方案中,因为故障转移服务器数据平面服务器上的最大缓存持续时间是y秒,所以所有应用主机在2y秒内以新设置的状态工作。[0173]图8中示出了对分区进行轮询的主机的示例。图8在(1)处示出了操作者(例如,客户)805,所述操作者向例如基于网络的服务110的第一实例发送通信。该通信可包括操作者805正在为其提供经更新的状态的应用305的名称或标识符、已更新状态的应用305的分区的分区名称或标识符以及所识别的分区的新状态。如图8中所示,新的状态信息被发送到故障转移服务302(例如,故障转移服务302的数据平面)。在一些实施方案中,如图所示的故障转移服务302可表示用于故障转移服务302的计算系统(例如,用于故障转移服务302的小区)。在一些实施方案中,计算系统可包括故障转移服务302的端点125。[0174]如本文所述,主机(例如,托管应用305的实例的个别节点、计算部件等等)810a至810j可轮询故障转移服务302,以识别与相应主机相关联的分区的状态。为此,在(2)处,第一分区的主机中的每个将向故障转移服务302发送轮询请求,该请求包括与主机相关联的应用305的名称以及将第一分区识别为主机所属的分区的标识符。相似地,在(3)处,第二分区的主机中的每个将向故障转移服务302发送轮询请求,该请求包括与主机相关联的应用305的名称以及将第二分区识别为主机所属的分区的标识符。响应于轮询,故障转移服务302可传达指示第一主机的状态的第一值。为此,每个主机将接收对应于其状态的值,如由故障转移服务302所确定的(例如,如存储在故障转移服务的存储装置304中)。在一些实施方案中,故障转移服务302可控制所传达的值,以确保仅一个主机被赋予活动状态205。在一些实施方案中,故障转移服务302可允许多个主机在活动状态205中操作。在此类实施方案中,客户可能需要识别故障转移服务302用来将流量路由到适当主机的一个或多个参数,或识别哪个主机是主控主机等,以确保正确路由请求和维持数据完整性。虽然图8中未示出,但是故障转移服务302可响应于主机中的每个,从而识别存储在故障转移服务302的存储装置304中的主机的相应分区的状态。[0175]如本文所述,当主机从故障转移服务302接收到它们的状态值时,如果主机需要更改到不同的状态则它们可更新其状态,或者如果接收到的状态值与主机的现有状态相同则维持其状态。在一些实施方案中,对主机的轮询的响应可包括控制主机可多快地更改状态的状态更改时间间隔,和/或主机转变以达到由接收到的状态值指示的状态的状态顺序的指示。在一些实施方案中,主机可在更改状态之前评估状态更改时间间隔以及有关主机的其他度量。在一些实施方案中,对轮询的响应包括针对状态值的租用持续时间。如上所述,租用持续时间可向主机指示在接收到的状态值到期之前还有多长时间。当租用持续时间到期时,主机可轮询故障转移服务302以获得其经更新的状态值。在一些实施方案中,主机对故障转移服务302的轮询可指向故障转移服务302的一个或多个端点。[0176]验证方案[0177]最初,第一分区中的所有主机(例如,节点)可处于活动状态205,并且第二分区中的所有主机都处于待机状态210。在第一时间t=0,客户可决定将第一分区切换到受防护状态。到时间t=2y,第一分区中的所有节点都将接收到状态更改为受防护状态215的指示,并且更改状态到受防护状态。在一些实施方案中,主机中的一些较早地更改状态,但无论如何都将在2y时间单位内将状态更改为受防护状态215,因此到t=2y。在t=x,客户可能够再次更改第一分区中的主机的状态,将有资格再次更改状态。因为x》=2y,所以到t=x,第一分区的所有主机都应当处于经更新的状态。在该时间之前尝试的任何状态更改都可能被故障转移服务拒绝。在时间t=z,客户可指导将第一分区设置为待机,并且到时间t=z+2y,第一分区中的所有主机可将状态更改为待机状态。在时间t=z+2y,第一分区中的主机可能仍在接收一些流量,但如果客户在应用305中包括在主机处于待机状态210时不做任何事情的逻辑,则可不处理所述流量。到时间t=z+x,客户可能有资格执行下一状态更改。在时间t=u,客户可决定第二分区活动,并且到时间t=u+2y,第二分区中的所有主机可能都处于活动状态205。第二分区中的主机可能尚未接收流量,因为路由服务和/或流量管理服务可能会在路由流量时延迟(例如,由于健康检验和/或dnsttl)。然而,当流量到达时,这些主机将为流量做好准备。[0178]在所描述的情况中,在任何时间点都不可能存在第一分区中的主机中的一个或多个和第二分区中的一个或多个主机都处于活动状态205的情况。在任何时间点,如果任何主机出现故障(例如,由于任何问题而无法调用故障转移服务数据平面服务器),则该主机将认为其自身处于待机状态210,并且因此,即使主机正在接收流量,也可不会处理流量。例如,如果第一分区的主机从活动状态205更改为受防护状态215,但第一分区主机中的一个无法联系故障转移服务客户端以识别新状态,则第一分区主机中的一个可默认为待机状态210而不是停留在活动状态205。[0179]读取调用协议[0180]在一些实施方案中,每当故障转移服务端点接收到读取调用时,故障转移服务端点用响应以及响应中的状态信息的租用持续时间来进行回复,如上面所讨论的。客户可重用/缓存返回的状态值,直到租用持续时间到期为止。然而,在租用到期之后,客户应重新调用故障转移服务以接收经更新的状态。在一些实施方案中,故障转移服务可不提供写后读一致性信息。例如,故障转移服务为任何读取调用提供的响应可包含也可不包含有关过去的y秒内进行的写入的信息,其中y是故障转移服务数据平面服务器上的缓存时间。[0181]写入调用协议[0182]在一些实施方案中,当故障转移服务端点接收到写入调用时,故障转移服务端点将执行一个或多个验证程序,并且然后仅提交写入操作。客户可能会接收到对写入操作成功的确认。如果在状态更改之后预期任何流量翻转,则预期可能会在基于dnsttl到期的一段时间后最终发生流量翻转。然而,故障转移服务可能会开始传达新的状态,以使得客户主机可相应地采取行动。在一些实施方案中,预期客户传送呈utc的请求时间戳作为请求参数的一部分。如果请求时间戳是在未来,或者它早于迄今为止任何故障转移服务端点看到的最大时间戳,则故障转移服务端点服务器可不处理请求,并且可简单地回复outoforderrequestexception。[0183]如果对故障转移服务进行了多个同时写入调用,则故障转移服务端点服务器可使用故障转移服务客户端供应的请求时间戳来决定哪个请求较旧。如果多个请求具有相同的时间戳,则在这些请求之中,首先到达故障转移服务端点服务器的请求将被视为较旧的请求。可按顺序将提交从较旧的请求应用到较新的请求。[0184]写入调用行为[0185]在一些实施方案中,操作者将调用故障转移服务数据平面来更改应用小区的状态。对于应用与故障转移服务302之间的写入调用交互,可能存在各种选项。[0186]例如,在第一选项中,当客户正在调用控制平面或相似的api时,客户可使用api来注册故障转移服务302,以执行诸如写入操作等任务。客户可在任何稍后的时间点检验任务是失败还是成功。相似地,当客户调用故障转移服务数据平面或相似的api时,故障转移服务数据平面可回复标识符,从而确认写入操作(例如,所请求的状态更改)已在故障转移服务服务器中成功注册。故障转移服务数据平面可致力于执行注册的任务,并且客户可在稍后的时间使用该标识符来查询注册的任务的状态。在一些实施方案中,状态可包括“在队列中”、“写入成功”、“验证错误”等中的一个或多个。在一些实施方案中,成功的写入调用响应意味着写入操作已成功注册以供未来处理。[0187]在第二操作中,客户可调用故障转移服务数据平面api进行写入操作。该调用可接受写入操作并返回成功响应。在一段时间之后,当故障转移服务302尝试在端点125之间同步更改时,故障转移服务可检测写入操作请求之间的冲突等等,并且可尝试解决所述冲突。在一些实施方案中,客户可能不会接收到任何明确的更新,因为先前提交的写入调用在冲突解决期间被拒绝。例如,如果一个端点125接收到将分区1设置为活动的调用,而第二个端点收到删除分区1的调用,则两个客户都将接收到对写入操作的其相应调用的初始成功响应,但是在后端,由于数据验证,写入操作中的一个可能会被静默地拒绝。为此,成功的写入调用可包括故障转移服务302接受但如果需要可抛弃以使故障转移服务进入稳定状态的写入调用。[0188]在第三选项中,客户可调用故障转移服务数据平面api进行写入操作。如果故障转移服务302提交了请求,则该调用可仅返回成功响应。为此,故障转移服务保证在为写入调用返回200ok之后,故障转移服务可能不会在故障转移服务中发现可能迫使故障转移服务静默地抛弃写入操作的任何数据验证问题或冲突。因此,成功的写入调用可能意味着在确保没有验证错误或冲突的写入之后,故障转移服务实际上已经执行了写入操作。[0189]基于这些选项,选项3可在客户与故障转移服务302之间提供更方便的交互,而不是为写入操作注册表提供令牌。下一优选替代方案可能是选项1,因为在选项1下,客户可能与故障转移控制平面api同步。最后一个选项可能是选项2,因为由于在冲突解决期间确认的写入可能会被抛弃,所以客户可能会取得关于哪些写入是接着的最少量可见性。[0190]示例计算机系统[0191]图9是示出了根据各种实施方案的示例计算机系统的框图。例如,计算机系统900的实例可被配置成与本文描述的应用305交互,实现故障转移服务302中的主机装置,实现应用305中的主机装置,实现本文所描述的计算系统或装置(例如,客户端装置102)等等。计算机系统900可能是各种类型的装置中的任何一种,包括但不限于个人计算机系统、台式计算机、膝上型或笔记本计算机、大型计算机系统、手持式计算机、工作站、网络计算机、消费者装置、应用服务器、存储装置、电话、移动电话或一般任何类型的计算装置。[0192]计算机系统900包括经由输入/输出(i/o)接口930耦合到系统存储器920的一个或多个处理器910(其中任何一个可包括多个内核,所述多个内核可能是单线程或多线程的)。计算机系统900还包括耦合到i/o接口930的网络接口940。在各种实施方案中,计算机系统900可能是包括一个处理器910的单处理器系统,或者是包括几个处理器910(例如,两个、四个、八个或另一合适数量)的多处理器系统。处理器910可能是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器910可能是实现多种指令集架构(isa)中的任何一种(诸如,x86、powerpc、sparc或mipsisa或任何其他合适的isa)的通用或嵌入式处理器。在多处理器系统中,处理器910中的每个通常可(但不一定)实现相同的isa。计算机系统900还包括一个或多个网络通信装置(例如,网络接口940),以用于通过通信网络(例如,互联网、lan等)与其他系统和/或部件通信。[0193]在示出的实施方案中,计算机系统900还包括一个或多个持久性存储装置960和/或一个或多个i/o装置980。在各种实施方案中,持久性存储装置960可对应于磁盘驱动器、磁带驱动器、固态存储器、其他大容量存储装置、基于块的存储装置或任何其他持久性存储装置。计算机系统900(或在其上操作的分布式应用或操作系统)可根据需要将指令和/或数据存储在持久性存储装置960中,并且可视需要检索存储的指令和/或数据。例如,在一些实施方案中,计算机系统900可充当工作者,并且持久性存储装置960可包括附接到该工作者的ssd以有助于写入日志条目的存储。[0194]计算机系统900包括一个或多个系统存储器920,所述一个或多个系统存储器被配置成存储可由处理器910访问的指令和数据。在各种实施方案中,可使用任何合适的存储器技术(例如以下中的一个或多个:缓存、静态随机存取存储器(sram)、dram、rdram、edoram、ddr10ram、同步动态ram(sdram)、rambusram、eeprom、非易失性/快闪类型存储器或任何其他类型的存储器)实现系统存储器920。系统存储器920可包含可由处理器910执行以实现本文所描述的例程、交互和技术的程序指令925。在各种实施方案中,可以平台原生二进制、诸如java字节码等任何解释语言或诸如c/c++、java等任何其他语言或以上的任何组合来对程序指令925进行编码。例如,在示出的实施方案中,程序指令925可包括可执行以实现本文所描述的任何软件、模块、部件等的功能性的程序指令。在一些实施方案中,程序指令925可实现应用305的装置、故障转移服务302、或者区120、区域112或系统110的其他元件。[0195]在一些实施方案中,程序指令925可包括可执行以实现操作系统(未示出)的指令,该操作系统可能是各种操作系统中的任何一种,诸如unix、linux、solaris、macos、windows等。程序指令925中的任何一个或全部可作为计算机程序产品或软件提供,所述计算机程序产品或软件可包括其上存储有指令的非暂时性计算机可读存储介质,所述指令可用于对计算机系统(或其他电子装置)进行编程以执行根据各种实施方案的过程。非暂时性计算机可读存储介质可包括用于以机器(例如,计算机)可读的形式(例如,软件、处理应用)存储信息的任何机制。一般来说,非暂时性计算机可访问介质可包括计算机可读存储介质或存储器介质,诸如磁性或光学介质(例如,经由i/o接口930耦合到计算机系统900的磁盘或dvd/cd-rom)。非暂时性计算机可访问存储介质还可包括任何易失性或非易失性介质,诸如ram(例如,sdram、ddrsdram、rdram、sram等)、rom等,它们可作为系统存储器920或另一种类型的存储器包括在计算机系统900的一些实施方案中。在其他实施方案中,可使用经由诸如网络和/或无线链路等通信介质传送的光学、声学或其他形式的传播信号(例如,载波、红外信号、数字信号等)来传达程序指令,诸如可经由网络接口940实现。[0196]在一些实施方案中,系统存储器920可包括数据存储区945。一般来说,系统存储器920(例如,系统存储器920内的数据存储区945)、持久性存储装置960和/或远程存储装置970可以存储数据、数据块、指令、与数据相关联的元数据和/或状态数据或信息、配置信息和/或可用于实现本文所描述的方法和技术的任何其他信息。[0197]在一个实施方案中,i/o接口930可被配置成协调处理器910、系统存储器920和系统中的任何外围装置之间的i/o流量,包括通过网络接口940或其他外围接口。在一些实施方案中,i/o接口930可执行任何必要的协议、定时或其他数据变换,以将来自一个部件(例如,系统存储器920)的数据信号转换成适合于由另一部件(例如,处理器910)使用的格式。在一些实施方案中,例如,i/o接口930可包括支持通过各种类型的外围总线(诸如,外围部件互连(pci)总线标准或通用串行总线(usb)标准的变体)附接的装置。在一些实施方案中,例如,i/o接口930的功能可拆分成两个或更多个单独的部件,诸如北桥和南桥。而且,在一些实施方案中,i/o接口930(诸如,到系统存储器920的接口)的功能性中的一些或全部可直接并入处理器910中。[0198]例如,网络接口940可被配置成允许在计算机系统900与附接到网络的其他装置(诸如,其他计算机系统990)之间交换数据。另外,网络接口940可被配置成允许计算机系统900与各种i/o装置950和/或远程存储装置970(其可表示例如存储装置304和/或307或数据存储区610)之间的通信。在一些实施方案中,输入/输出装置950可包括一个或多个显示终端、键盘、小键盘、触摸板、扫描装置、语音或光学辨识装置或适合用于通过一个或多个计算机系统900键入或检索数据的任何其他装置。多个输入/输出装置950可存在于计算机系统900中,或者可分布在包括计算机系统900的分布式系统的各种节点上。在一些实施方案中,相似的输入/输出装置可与计算机系统900分开,并且可通过有线或无线连接(诸如,通过网络接口940)与包括计算机系统900的分布式系统的一个或多个节点交互。网络接口940可共同地支持一个或多个无线联网协议(例如,wi-fi/ieee802.11或另一无线联网标准)。然而,在各种实施方案中,例如,网络接口940可支持经由任何合适的有线或无线通用数据网络(诸如,其他类型的以太网网络)进行的通信。另外,网络接口940可支持经由电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、经由存储局域网(诸如光纤通道san)或经由任何其他合适类型的网络和/或协议进行的通信。在各种实施方案中,计算机系统900可包括比图9中示出的部件更多、更少或不同的部件(例如,显示器、视频卡、音频卡、外围装置、其他网络接口,诸如,atm接口、以太网接口、帧中继接口等)。[0199]应当注意,本文所描述的分布式系统实施方案中的任何一个或其部件中的任何一个可实现为一个或多个基于网络的服务。例如,计算服务内的计算集群可将计算和/或存储服务和/或采用本文描述的分布式计算系统的其他类型的服务作为基于网络的服务呈现给客户端。在一些实施方案中,可通过被设计成通过网络支持可互操作的机器对机器交互的软件和/或硬件系统来实现基于网络的服务。基于网络的服务可具有以机器可处理格式(诸如,web服务描述语言(wsdl))描述的接口。其他系统可按通过基于网络的服务的接口的描述规定的方式与基于网络的服务交互。例如,基于网络的服务可定义其他系统可调用的各种操作,并且可定义可预期在请求各种操作时其他系统所遵循的特定应用编程接口(api)。[0200]在各种实施方案中,可通过使用包括与基于网络的服务请求相关联的参数和/或数据的消息来请求或调用基于网络的服务。可根据诸如可扩展标记语言(xml)等特定标记语言来格式化此种消息,和/或可使用诸如简单对象访问协议(soap)等协议来封装此种消息。要执行基于网络的服务请求,基于网络的服务客户端可汇编包括请求的消息,并使用基于互联网的应用层传送协议(诸如,超文本传送协议(http))将消息传送到对应于基于网络的服务的可定址端点(例如,统一资源定位符(url))。[0201]在一些实施方案中,可使用表述性状态转移(“restful”)技术而非基于消息的技术来实现基于网络的服务。例如,可通过http方法(诸如,put、get或delete)内包括的而非封装在soap消息内的参数调用根据restful技术实现的基于网路的服务。[0202]术语rom或任何其他形式的非暂时性计算机可读存储介质中。示例性存储介质可以耦合到处理器装置,使得处理器装置可以从存储介质读取信息以及将信息写入存储介质。在替代方案中,存储介质可以与处理器装置成一体。处理器装置和存储介质可以驻留在asic中。asic可以驻留在用户终端中。在替代方案中,处理器装置和存储介质可以作为离散部件驻留在用户终端中。[0208]除非另有特别说明,或者在所使用的上下文中另外理解,否则本文使用的条件语言(诸如“能够”、“可以”、“可能”、“可”、“例如”等)通常旨在表达某些实施方案包括而其他实施方案不包括某些特征、元件或步骤。因此,这种条件语言通常不旨在暗示无论如何特征、元件或步骤都是一个或多个实施方案必需的,或者一个或多个实施方案必然包括用于在有或没有其他输入或提示的情况下,判定这些特征、元件或步骤是否包括在任何特定实施方案中或将要在任何特定实施方案中执行的逻辑。术语“包括(comprising)”、“包括(including)”、“具有”等是同义的,并且以开放形式作为包括性使用,且不排除附加元件、特征、动作、操作等。此外,术语“或”以其包括性意义(而非排他性意义)使用,使得当用于例如连接元件列表时,术语“或”意指列表中的一个、一些或所有要素。[0209]除非另有特别说明,否则析取语言(诸如短语“x、y或z中的至少一个”)在上下文中应理解为通常使用的情况以表示项目、项等可以是x、y或z或其任何组合(例如,x、y或z)。因此,这样的析取语言通常不旨在并且不应该暗示某些实施方案要求x中的至少一个、y中的至少一个和z中的至少一个各自存在。[0210]尽管以上详细说明已展示、描述并指出应用于各种实施方案的新颖特征,但是可以理解的是可以在不脱离本公开的精神的情况下作出所说明的装置或算法的形式和细节上的各种省略、替代和改变。如可认识到的,本文所描述的某些实施方案可体现在不提供本文阐述的所有特征和益处的形式内,这是因为一些特征可与其他特征分开使用或实践。在所述条款的等效形式的含义和范围内的所有更改都将涵盖在所述条款的范围内。[0211]可鉴于以下条款来描述本公开的实施方案的示例。[0212]条款1.一种用于管理跨基于网络的系统的多个区分割的应用的故障转移的系统,所述系统包括:计算系统,所述计算系统包括通信接口和数据存储区,所述计算系统被配置成接收所述应用的配置信息并将所述接收到的配置信息存储在所述数据存储区中,所述配置信息包括:跨所述多个区分布的所述应用的多个小区中的每个的标识符,所述多个小区至少包括主小区和辅助小区;所述多个小区中的每个的定义状态;所述应用的一个或多个依赖关系;以及故障转移工作流,所述故障转移工作流基于每个小区的所述定义状态和所述一个或多个依赖关系而定义在故障转移事件中要采取的动作;以及用户接口,所述用户接口与所述计算系统进行数据通信,并且被配置成从客户接收所述主小区的状态更改的指示或发起所述故障转移事件的请求;其中所述计算系统还被配置成:在所述数据存储区中基于所述故障转移工作流而更新所述多个小区中的对应小区的状态,并且在所述数据存储区中基于所述故障转移工作流而更新所述应用的所述一个或多个依赖关系。[0213]条款2.如条款1所述的系统,其中所述计算系统还被配置成:识别出所述主小区将状态更改为受防护状态;并且在所述主小区将状态更改为所述受防护状态之后的至少一段持续时间内,将读取流量的至少一部分路由到所述主小区。[0214]条款3.如条款2所述的方法,其中所述计算系统被配置成识别出所述主小区将状态更改为所述受防护状态包括:所述计算系统还被配置成识别出跨所述多个区的数据存储分区的至少一个仲裁指示所述主小区的当前状态值不是活动状态。[0215]条款4.如条款2所述的方法,其中所述计算系统被配置成在所述主小区将状态更改为所述受防护状态之后的至少一段持续时间内将读取流量的至少一部分路由到所述主小区包括:所述计算系统被配置成向流量管理服务和域名系统(dns)服务提供者中的至少一个提供路由指令。[0216]条款5.如条款1所述的系统,其中所述配置信息将所述主小区定义成具有活动状态并且将所述辅助小区定义成具有待机状态,并且其中在所述数据存储区中基于所述故障转移工作流而更新所述多个小区中的对应小区的所述状态包括:将所述主小区更新成具有受防护状态,以及将所述辅助小区更新成具有所述活动状态。[0217]条款6.如条款1所述的系统,其中所述计算系统还被配置成将所述配置信息传播到跨所述多个区分布的多个其他数据存储区。[0218]条款7.如条款1所述的系统,其中由所述计算系统在所述数据存储区中基于所述故障转移工作流而更新所述应用的所述一个或多个依赖关系包括:所述计算系统被配置成更新所述应用在所述主小区与所述辅助小区之间的流量路由。[0219]条款8.如条款1所述的系统,其中所述计算系统还被配置成将对所述多个小区中的所述对应小区的所述状态的更新传播到托管在与所述计算系统不同的至少一个区中的其他计算系统的其他数据存储区,并且其中对所述对应小区的所述状态的所述更新的所述传播使所述计算系统和所述其他计算系统能够提供用于管理所述对应小区的所述状态的高可用性服务。[0220]条款9.如条款8所述的方法,其中所述计算系统还被配置成基于所述其他数据存储区的至少一个仲裁而识别所述主小区和所述辅助小区中的一个的当前状态值,其中所述其他数据存储区的所述仲裁提供高度一致的数据。[0221]条款10.一种管理跨基于网络的系统的多个区分割的应用的故障转移的方法,其中每个小区包括主节点和至少一个辅助节点,其中所述多个区经由通信网络进行通信,并且其中每个节点被设置成若干互斥状态中的一个,所述互斥状态包括:活动状态,其中所述节点处理读取请求和写入请求;被动状态,其中所述节点不处理读取请求或写入请求;以及受防护状态,其中所述节点处理读取请求但不处理写入请求,所述方法包括:识别出所述主节点从所述活动状态更改状态,其中所述主节点从所述活动状态更改状态会触发故障转移;以及当触发所述故障转移时执行故障转移工作流的一个或多个动作,所述一个或多个动作包括:基于所述故障转移工作流而将所述至少一个辅助节点中的第一个节点从所述被动状态转变到所述活动状态,将所述至少一个辅助节点中的所述第一个节点的当前状态值作为所述活动状态存储在所述多个区的子集的存储装置中,以及将读取流量和写入流量路由到所述至少一个辅助节点中转变成所述活动状态的所述第一个节点。[0222]条款11.如条款10所述的方法,其还包括:识别出所述主节点将状态更改为所述受防护状态;以及在所述主节点将状态更改为所述受防护状态之后的至少一段持续时间内,将所述读取流量的至少一部分路由到所述主节点。[0223]条款12.如条款10所述的方法,其中识别出所述主节点从所述活动状态转变到所述受防护状态包括:轮询所述多个区的所述子集的所述存储装置以确定所述主节点的当前状态值。[0224]条款13.如条款12所述的方法,其中轮询所述多个区的所述子集的所述存储装置包括:识别出所述多个区的所述子集的所述存储装置的至少一个仲裁指示所述主节点的所述当前状态值不是所述活动状态。[0225]条款14.如条款10所述的方法,其中将所述读取流量和所述写入流量路由到转变成所述活动状态的所述至少一个辅助节点包括:向流量管理服务和域名系统(dns)服务提供者中的至少一个提供路由指令。[0226]条款15.如条款10所述的方法,其中所述故障转移工作流定义一个或多个规则,包括定义在任何时刻只有一个节点能够在所述活动状态下操作的规则。[0227]条款16.如条款10所述的方法,其中经由用户接口和自动化工作流中的一个来接收指示触发了第一故障转移的指示符。[0228]条款17.如条款10所述的方法,其还包括生成故障转移工作流,所述故障转移工作流定义当所述主节点从所述活动状态更改状态时要执行的所述一个或多个动作。[0229]条款18.一种用于管理跨基于网络的系统的多个区分割的应用的故障转移的方法,所述方法包括:经由接口接收所述应用的配置信息,所述配置信息包括:跨所述多个区分布的所述应用的多个小区中的每个的标识符,所述多个小区至少包括主小区和辅助小区;所述多个小区中的每个的定义状态;所述应用的一个或多个依赖关系;以及故障转移工作流,其基于每个小区的所述定义状态和所述一个或多个依赖关系而定义在故障转移事件中要采取的动作;接收所述主小区的状态更改的指示或发起所述故障转移事件的请求;基于所述故障转移工作流而更新所述多个小区中的对应小区的状态;以及基于所述故障转移工作流而更新所述应用的所述一个或多个依赖关系。[0230]条款19.如条款18所述的方法,其中所述配置信息将所述主小区定义成具有活动状态并且将所述辅助小区定义成具有待机状态,并且其中所述故障转移工作流将所述主小区更新成具有受防护状态,并且将所述辅助小区更新成具有所述活动状态。[0231]条款20.如条款18所述的方法,其还包括将所述配置信息传播到跨所述多个区分布的多个存储装置。[0232]条款21.如条款18所述的方法,其中更新所述一个或多个依赖关系包括更新所述应用在所述主小区与所述辅助小区之间的流量路由。[0233]条款22.如条款18所述的系统,其还包括:识别出所述主小区将状态更改为受防护状态;以及在所述主小区将状态更改为所述受防护状态之后的至少一段持续时间内,将读取流量的至少一部分路由到所述主小区。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1