一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

切换到最终一致的数据库副本的制作方法

2022-06-01 20:41:58 来源:中国专利 TAG:

切换到最终一致的数据库副本
1.对于相关申请的交叉引用
2.本技术是于2019年11月13日提交的美国专利申请no.16/682,513的延续,其公开内容通过引用并入本文。


背景技术:

3.基础设施即服务由用作控制和数据平面的计算设备的全局网络支持。数据存储为此类大型控制平面服务提供数据。在全局网络中存在多个不同的地区。虽然一些计算资源在地区内是隔离的,但一些资源是全局性的。然而,控制平面通常不直接与全局数据库通信。为全局资源维护全局堆栈。例如,堆栈可以是一组具有业务逻辑的计算资源。例如,当客户想要创建虚拟机时,向地区堆栈发送请求,并且在地区堆栈中实现的业务逻辑将探出到全局数据库以获取所请求的信息。
4.上述设置的一个问题是所有地区都通过网络链路互连,并且链路可能会出现中断。因此,全局数据库在全局克隆数据库中被复制。但是,由于全局数据库和全局克隆是异步更新的,因此在更新全局数据库和在全局克隆数据库中复制此类更新之间通常存在延迟。例如,延迟能够从几十毫秒到几十秒不等。因此,在给定时间从全局数据库和全局克隆数据库读取可能会产生不一致的读取。这可能会触发业务逻辑中的多个问题和副作用。作为一个示例,如果控制平面存储在第一时间戳然后在第二连续时间戳处的读取数据,则来自第一时间戳的数据将始终比第二时间戳更旧,或者可能与第二时间戳相同。这个不变量确保了完整性。例如,已经被“删除”的虚拟机资源无法“取消删除”。然而,从全局数据库中读取然后从全局克隆中连续读取通常不会提供相同的不变量。相反,它将允许从全局数据库中读取“已删除”的虚拟机,然后在稍晚时间处读取克隆并且发现它仍然“活动”。


技术实现要素:

5.本公开提供了在复制到一个或多个全局克隆的全局数据库中的一致读取。为每个地区中的每个项目独立实施和执行状态机。例如,一个项目可以是属于同一客户的一组资源。基于接收到读取请求时项目的状态,读取请求将由全局数据库提供服务,由全局克隆提供服务,或作为无效请求被忽略。
6.本公开的一个方面提供了一种方法,包括在第一地区中为项目启用全局克隆,其中,启用全局克隆包括在全局克隆处从全局数据库接收用于项目的数据以进行复制。该方法还包括:由第一地区中的一个或多个处理器将项目的状态设置为未决状态;由第一地区中的一个或多个处理器记录与状态被设置为未决状态的时间对应的时间戳;由第一地区中的一个或多个处理器接收对于读取项目的数据的请求;以及,当项目的状态处于未决状态时,在与时间戳对应的时间将请求重定向到全局数据库。根据一些示例,该方法可以进一步包括:由第一地区中的一个或多个处理器来确定全局克隆是否已经用截至时间戳的时间与全局数据库中相同的数据进行了更新;以及,如果全局克隆已使用相同的数据进行更新,则将项目的状态改变为就绪状态。
7.它还可以包括:由第一地区中的一个或多个处理器接收对于从项目读取数据的第二请求;以及,当项目处于就绪状态时,使用来自全局克隆的数据来实现请求。在其他示例中,它还可以包括:将项目的状态从就绪状态改变回未决状态;以及记录从就绪状态变为未决状态的时间的第二时间戳。
8.本公开的另一方面提供了一种系统,包括:第一地区中的全局克隆,全局克隆被配置为从项目的全局数据库复制数据;以及一个或多个计算设备。一个或多个计算设备被配置为在从全局克隆处的全局数据库接收项目的数据以进行复制;将项目的状态设置为未决状态;记录与状态被设置为未决状态的时间相对应的时间戳;接收对于读取项目的数据的请求;以及,当项目的状态处于未决状态时,在与时间戳对应的时间将请求重定向到全局数据库。
9.根据一些示例,一个或多个计算设备可以进一步被配置为:确定全局克隆是否已经用截至时间戳的时间与全局数据库中相同的数据进行了更新;以及如果全局克隆已使用相同的数据进行了更新,则将项目的状态改变为就绪状态。
10.本公开的又一方面提供了一种存储指令的非暂时性计算机可读介质,该指令可由一个或多个处理器执行以用于执行向全局克隆提供读取请求的方法。该方法包括:从全局克隆处的全局数据库接收项目的数据以进行复制;将项目的状态设置为未决状态;记录与状态被设置为未决状态的时间相对应的时间戳;接收对于读取项目的数据的请求;以及,当项目的状态处于未决状态时,在与时间戳对应的时间将请求重定向到全局数据库。根据一些示例,指令的执行可以进一步提供用于:确定全局克隆是否已经用截至时间戳的时间用与全局数据库中相同的数据进行了更新;以及,如果全局克隆已使用相同的数据进行了更新,则将项目的状态改变为就绪状态。指令的执行还可以提供:接收对于从项目读取数据的第二请求;以及当项目处于就绪状态时,使用来自全局克隆的数据来实现所述请求。
附图说明
11.图1图示了根据本公开的各方面的示例系统。
12.图2是图示图1的系统的组件的示例细节的框图。
13.图3是图示根据本公开的各方面的全局数据库与全局克隆之间的延迟的示例的时序图。
14.图4是图示了根据本公开的各方面的全局克隆中的项目的不同状态的示例的状态图。
15.图5图示了根据本公开的各方面的数据块的示例。
16.图6是示出根据本公开的各方面的示例事务的另一个时序图。
17.图7是示出根据本公开的各方面的为项目设置状态的示例方法的流程图。
18.图8是图示根据本公开的各方面的基于项目状态来服务读取请求的示例方法的流程图。
具体实施方式
19.图1图示了示例系统100,其包括全局数据库110和多个地区数据库120、160。在每个地区105、155内是分区数据库140、150、180、190。例如,其中,分区数据库140、150所在的
分区可以是地区数据库120服务的地区的子区域。类似地,分区数据库180、190所在的分区可以是地区数据库160服务的地区的子区域。这些分区可以具有与同一地区中的其他分区的高带宽、低延迟网络连接。虽然仅示出了几个地区105、155,但应当理解,全局系统可以包括任意数量的地区,每个地区中具有任意数量的分区。
20.每个地区105、155还包括全局克隆数据库130、170。全局数据库110被异步复制到全局克隆数据库130、170。在一些示例中,来自全局数据库110的所有数据可以被复制到两个克隆130、170。根据其他示例,来自全局数据库110的一些数据被复制到第一克隆130,而来自全局数据库110的其他数据被复制到第二克隆170。例如,特定项目可以被复制到特定地区中的克隆。
21.每个数据库由堆栈控制。例如,全局堆栈112用作全局数据库101的控制平面。地区堆栈122、162分别用作地区数据库120、170的控制平面。在第一地区105内,分区堆栈142、152分别用作分区数据库140、150的控制平面。在第二地区155内,分区堆栈182、192分别用作分区数据库180、190的控制平面。
22.控制平面存储为控制平面服务提供数据层。每个数据库和堆栈都可以具有专用的控制平面存储。例如,如图1所示,全局控制平面存储114为全局堆栈112提供数据层。地区控制平面存储124、164分别为地区堆栈122、162提供数据层。分区控制平面存储144、154、184、194分别为分区堆栈142、152、182、192提供数据层。
23.全局数据库110能够读取过去版本的数据。例如,当对数据库110进行更新时,不是立即擦除先前的信息,而是可以将先前的信息保留一时间段。时间段可以是数分钟、数小时、数天等。因此,全局数据库110允许控制平面存储114服务在过去的任意时间戳(诸如“当前”时间戳之前的30分钟、之前的4小时等)读取数据。
24.图2提供了关于堆栈和控制平面存储的进一步细节。地区堆栈202包括一组计算资源。例如,堆栈202包括一个或多个处理器240。处理器240被配置为执行存储器230中的数据和指令。例如,处理器240可以执行业务逻辑235以控制项目的虚拟基础设施(iaas)。
25.处理器240能够是任何传统的处理器,诸如市售的cpu。或者,处理器能够是专用组件,诸如专用集成电路(“asic”)或其他基于硬件的处理器。尽管不是必需的,但堆栈202可以包括专门的硬件组件来执行特定的计算过程。
26.堆栈202可以使用数据库200来保持由处理器240处理的资源的状态。数据库200存储器230可以是一种能够存储处理器240可访问的信息的非暂时性计算机可读介质,诸如硬盘驱动器、固态驱动器、磁带驱动器、光存储、存储卡、rom、ram、dvd、cd-rom、可写和只读存储器。
27.存储器230能够存储处理器240可访问的信息,包括能够由处理器240执行并且能够由处理器240检索、操纵或存储的指令。
28.指令能够是由处理器240直接执行的指令集,诸如机器代码,或间接执行的指令集,诸如脚本。在这方面,术语“指令”、“步骤”和“程序”能够在本文互换使用。指令能够以目标代码格式存储以供处理器240直接处理,或以其他类型的包括脚本或独立源代码模块的集合的计算机语言存储,这些模块按需解释或预先编译。指令的功能、方法和例程在前面的示例和下面的示例方法中得到更详细的解释。
29.处理器240能够根据指令来检索、存储或修改数据。数据也能够被格式化为计算机
可读格式,诸如但不限于二进制值、ascii或unicode。此外,数据能够包括足以识别相关信息的信息,诸如数字、描述性文本、专有代码、指针、对存储在其他存储器(包括其他网络位置)中的数据的引用或由函数用于计算相关数据的信息.
30.存储器230包括用于控制数据库200中的数据的业务逻辑235。例如,业务逻辑235可以确定如何处理与数据库200的事务。取决于项目的全局克隆的状态,业务逻辑235将以不同的方式服务于读取请求。例如,并且如本文进一步描述的,如果项目的全局克隆未决,则业务逻辑235将在与克隆进入未决状态时的时间戳相对应的时间从全局数据库读取数据。如果项目的全局克隆已准备好,则业务逻辑235将通过从全局克隆读取数据来服务于请求。
31.尽管图2在功能上将计算设备200的处理器、存储器和其他元件图示为在同一块内,但处理器、计算机、计算设备或存储器实际上能够包括可能会或可能不会存储在同一物理外壳中的多个处理器、计算机、计算设备或存储器。例如,存储器能够是位于与计算设备200不同的外壳中的硬盘驱动器或其他存储介质。因此,对处理器、计算机、计算设备或存储器的引用将被理解为包括对可能并行或不并行操作的一组处理器、计算机、计算设备或存储器的引用。例如,计算设备200可以包括作为负载平衡的服务器群、分布式系统等操作的服务器计算设备。此外,尽管以下描述的一些功能被指示为发生在具有单个处理器的单个计算设备上,但是本文描述的主题的各个方面可以由多个计算设备来实现,例如,通过网络传达信息。
32.地区控制平面存储204可以包含一个或多个处理器270、存储器260和用于向控制平面服务提供数据层的其他组件。控制平面存储204还可以包括用于被复制到该地区中的全局克隆的项目的一个或多个状态机280。状态机280例如可以是被编程为响应于特定输入或状况从一种状态改变到另一种状态的计算设备。如本文结合图4的示例进一步描述的,状态可以包括无效状态、未决状态和就绪状态。在一些示例中,状态还可以包括禁用状态。
33.存储器260能够存储可由处理器270访问的信息,包括能够由处理器270执行的指令262。存储器还能够包括可由处理器270检索、操纵或存储的数据264。存储器260可以是一种能够存储由处理器270可访问的信息的非暂时性计算机可读介质,诸如硬盘驱动器、固态驱动器、磁带驱动器、光存储、存储卡、rom、ram、dvd、cd-rom、可写和只读存储器。处理器270能够是众所周知的处理器或其他鲜为人知的处理器类型。或者,处理器270能够是专用控制器,诸如asic。
34.指令262能够是由处理器270直接执行的指令集,诸如机器代码,或间接执行的指令,诸如脚本。在这方面,术语“指令”、“步骤”和“程序”能够在本文互换使用。指令262能够以目标代码格式存储以供处理器270直接处理,或以其他类型的包括脚本或独立源代码模块的集合的计算机语言存储,这些独立源代码模块按需解释或预先编译。
35.处理器270能够根据指令262检索、存储或修改数据264。例如,尽管系统和方法不受特定数据结构的限制,但是数据264能够存储在计算机寄存器中,在关系数据库中作为具有多个不同字段和记录的表或在xml文档中。数据264也能够被格式化为计算机可读格式,诸如但不限于二进制值、ascii或unicode。此外,数据264能够包括足以识别相关信息的信息,诸如数字、描述性文本、专有代码、指针、对存储在其他存储器(包括其他网络位置)中的数据的引用或者由函数用来计算相关数据的信息。
36.指令262可以包括性能维护活动267。可以执行维护活动以确定全局克隆中的项目的状况,并且基于确定的状况来更新项目的全局克隆的状态。例如,维护活动267可以确定项目的全局克隆已经被启用,并且将项目的全局克隆从无效状态更新为未决状态。此外,维护活动267可以确定项目的全局克隆被赶上到全局数据库的特定时间点。因此,维护活动267可以更新项目的状态机280的状态,将项目状态从未决状态转变为就绪状态。
37.虽然图2在功能上将处理器270和存储器260示为在同一块内,但处理器270和存储器260实际上可以包括多个可以或可以不存储在同一物理外壳内的处理器和存储器。例如,一些指令262和数据264能够存储在可移动cd-rom上,而其他的能够存储在只读计算机芯片内。一些或所有指令和数据能够存储在物理上远离处理器270但仍可由处理器270访问的位置。类似地,处理器270实际上能够包括处理器的集合,这些处理器可以并行操作也可以不并行操作。
38.数据库200可以是单个存储设备或多个存储设备,诸如硬盘驱动器、随机存取存储器、磁盘、磁盘阵列、磁带驱动器等。数据库200可以实现多种架构和技术中的任何一种,包括但不限于直接附加存储(das)、网络附加存储(nas)、存储区域网络(san)、光纤通道(fc)、以太网光纤通道(fcoe)和混合架构网络等。此外,在一些示例中,数据库200可以包括虚拟化或容器化环境。例如,数据库200可以包括在主机上运行的一个或多个虚拟机。数据库200可以存储例如数据文件、文档、代码、模式、持久性框架、应用或通常存储在数据库中的各种其他信息或工具中的任何一种。
39.堆栈202可以服务于来自客户端设备(未示出)的请求,诸如通过网络。客户端设备可以配置有处理器、存储器、指令和数据。客户端可以是个人计算机,其旨在供具有个人计算机中通常存在的所有内部组件(例如中央处理单元(cpu)、硬盘驱动器和输入/输出设备)以及用于将这些元件相互连接的所有组件的个人使用。客户端可以是任何能够处理指令并且向人和其他计算机传输数据以及从人和其他计算机传输数据的设备,该设备包括通用计算机、平板计算机、移动电话、智能手表、家庭助理、视频游戏系统、缺乏本地存储能力的网络计算机、电视的机顶盒和其他联网设备。
40.客户端可以包括用于访问由数据库200提供的服务的应用接口模块。例如,应用接口模块可以包括用于允许服务器和客户端相互通信的子例程、数据结构、对象类和其他类型的软件组件。一方面,应用接口模块可以是可与本领域已知的几种类型的操作系统结合操作的软件模块。例如,客户端可以连接到结构化查询语言(sql)数据库服务器,该数据库服务器可以与应用接口模块一起操作以保存和检索信息数据。
41.网络和中间节点可以包括各种配置和协议,其包括互联网、万维网、内联网、虚拟专用网络、广域网、局域网、使用一个或多个公司专有的通信协议的专用网络、以太网、wifi(例如,702.71、702.71b、g、n或其他此类标准)和http以及前述的各种组合。这种通信可以通过能够向其他计算机传输数据和从其他计算机传输数据的设备来促进,该设备诸如是调制解调器(例如,拨号、电缆或光纤)和无线接口。
42.图3是图示全局数据库和全局克隆之间的延迟示例的时序图。如图所示,版本1在时间1之前在全局数据库中更新。版本可以是例如特征的版本,诸如项目或应用等。由于延迟,版本1直到时间2之后才会在全局克隆中复制。在此示例中,到版本1在全局克隆中被复制的时间,版本2才在全局数据库中可用。因此,如果在时间1处处理了客户请求,则业务逻
辑将从全局数据库中看到版本1。在时间2处,业务逻辑仍会从全局数据库中看到版本1。
43.在时间3之后,在由地区数据库服务的特定地理地区(诸如图1的第一地区105)中运送和启用该特征。因此,在时间3处处理的客户请求将产生最近的来自全局数据库的版本,版本2,因为在时间3处,该特征尚未在该地区启用。
44.在时间4之前,版本3在全局数据库中实现。然而,此时版本2仍未在全局克隆中实现。因此,在时间4处处理的请求将从全局克隆产生版本1。尽管此时在全局数据库中已经实现了版本3,但全局克隆正在从先前版本产生数据。这能够导致意想不到的副作用。例如,如果版本3是虚拟网络的“删除”,则从全局克隆产生版本1实质上将“取消删除”虚拟网络。
45.到时间5,全局克隆将产生特征的版本2,但该版本仍然没有数据。直到时间6全局克隆才赶上全局数据库。因此,在时间6之前的任何请求都可能收到不准确的响应。
46.由全局数据库和全局克隆在不同时间处的差异引起的意外影响可以通过为每个地区中的每个项目实现状态机来解决。例如,返回参考图1,状态机可以在每个地区105、155的地区控制平面存储124、164中实现。
47.图4是图示全局克隆中的项目的不同状态的示例的状态图。根据该示例,不同状态包括无效状态410、克隆_未决状态420、克隆_就绪状态430和禁用状态440。
48.新项目可以自动地置于无效状态410。在此状态下,该项目可能尚未在全局克隆中启用。因此,在项目处于无效状态时处理的所有读取数据的请求都将从全局数据库中产生数据。
49.维护活动可以例如通过扫描来发现新项目。例如,维护活动可以读取全局数据库中的每个项目资源并且检测该项目是否是新的。如果在特定地区克隆中不存在项目状态,则可以确定该项目是新的。当检测到新项目时,可以将项目设置为克隆_未决状态420。记录项目在从无效状态410改变为克隆_未决状态420时的时间戳。例如,如下面结合图5进一步描述的,时间戳可以与项目的状态的指示一起被记录在地区数据库中。
50.对处于克隆_未决状态420的项目的地区控制平面存储的所有全局数据请求在对应于记录的时间戳的时间处被重定向到全局数据库。例如,项目可以在时间t1处从无效状态410转换到克隆_未决状态420,并且记录时间t1。虽然可能在稍后的时间t1 x处接收到读取请求,但是如果项目仍处于克隆_未决状态420,则读取请求将在时间t1处被重定向到全局数据库。尽管全局数据库可能在时间t1和时间t1 x之间已使用项目的较新版本进行了更新,但为了保持一致性,仍将产生在时间t1处的版本。
51.地区控制平面存储中的维护活动还可以检测在克隆_未决状态420中的项目的事务。例如,维护活动可以检测到项目的读取或写入的阈值数量已经发生。阈值数量可以是一个或多个。当这种情况发生时,维护活动可以确定项目是否应当转换到克隆_就绪状态430。例如,维护活动可以验证该地区中的全局克隆是否赶上了项目的全局数据库。如果全局克隆中可用的最新版本与截至记录时间戳的全局数据库中可用的版本相同,则可以认为全局克隆已被赶上。如果全局克隆被赶上,则维护活动将项目的状态改变为克隆_就绪状态430。在克隆_就绪状态430中,所有读取都由全局克隆实现。
52.维护活动可以进一步检测处于克隆_就绪状态430的项目何时变得与全局数据库不一致。例如,维护活动可以周期性地检查全局克隆是否仍然赶上全局数据库。在其他示例中,维护活动可以检测对项目的全局数据库的更新,并且作为响应可以检查更新是否已经
复制到全局克隆。当确定项目的全局克隆与全局数据库不一致时,项目的状态可以从克隆_就绪状态430转换回克隆_未决状态。
53.在任何时候,可以将项目转换到禁用状态440。例如,无论项目是处于初始状态、克隆_未决状态还是克隆_就绪状态,都可以手动禁用项目的克隆,诸如通过现场可靠性工程操作员经由工具。可能会禁用克隆以修复硬件、解决错误或故障、定期维护等。
54.图5图示了如何识别项目状态以及存储在地区数据库中的数据的示例。当更新全局数据库时,更新可能会以块的形式复制到地区数据库。例如,图5图示了地区数据库表500,其中,数据块是行。每行具有标识相应数据550的键510。随着项目被更新,可以添加、删除或修改一行或多行。此外,可以添加一行来标识项目的状态。例如,如图所示,键可以包括项目的标识符。该行可以进一步识别项目状态以及项目转换到该项目状态的时间的时间戳。每次项目状态改变时,可以更新该行以反映最新的项目状态和指示转换到该状态发生的时间的时间戳。
55.表500可以包括一个或多个项目的数据。在包括多个项目的情况下,这些项目可能在不同的时间处于不同的状态。因此,每个项目将具有单独的标识符、单独的项目状态和单独的时间戳。例如,虽然项目a可能在时间t1处进入了克隆_未决状态,但项目b可能在时间t2处进入了克隆_就绪状态。随着项目a和项目b中的每一个转换到不同的状态,它们对应的行可以单独被更新以反映最新的状态和时间戳。
56.尽管上面将表描述为位于全局克隆中,但是根据其他示例,它可以存储在地区中的其他地方,诸如地区数据库中。
57.图6图示了时序图,其中,各个项目的状态被记录在地区数据库中。对于项目的全局数据库和全局克隆的更新定时与图3的定时相同。然而,由于读取是基于项目状态来处理的,因此读取请求的处理方式与以上结合图3解释的不同。
58.版本1在时间1之前在全局数据库中被更新,但直到时间2之后才在全局克隆中被复制。在时间ta处,当项目首次在全局克隆中启用时,项目进入无效状态。因此,如果在时间1处处理了客户请求,则业务逻辑将从全局数据库中看到版本1。
59.在时间ta和时间2之后,在全局克隆中启用版本1。然而,此时,版本2已在全局数据库中可用。在时间2处,业务逻辑仍会从全局数据库中看到版本1,因为当项目处于无效状态时它将忽略全局克隆。类似地,在时间3处,当项目仍处于无效状态时,业务逻辑将忽略全局克隆并且从全局数据库中读取版本2。
60.在时间tb处,在全局克隆中检测到项目。因此,项目从无效状态转换到克隆_未决状态。时间戳tb被记录为项目进入克隆_未决状态时的时间。因此,当项目仍处于克隆_未决状态时,在时间4处处理的客户请求将引用全局数据库。然而,请求不是在时间4处,即在全局数据库中已经实施版本3时引用全局数据库,而是在时间t
b.
处,即项目进入克隆_未决状态时被引用到全局数据库。因此,读取请求将从全局数据库产生版本2。
61.在时间tc处,项目进入克隆_就绪状态。例如,控制平面存储可能已经验证了全局克隆与截至时间tb的全局数据库相比是最新的。因此,项目在时间tc处转换到克隆_就绪状态,并且记录时间戳tc。
62.在时间5处处理的读取将从全局克隆产生特征的版本2。到时间6时,该项目的版本3已经在全局克隆中实施。因此,在时间6处的读取将从全局克隆产生版本3。
63.除了上述和在附图中所示的操作之外,现在将描述各种操作。应当理解,以下操作不必按照下面描述的精确顺序执行。相反,可以以不同的顺序或同时地处理各个步骤,也可以添加或省略步骤。
64.图7是图示为设置项目状态的示例方法的流程图。例如,该项目可以是客户、目录、应用或任何其他复制单元。
65.在框710中,为全局数据库中的特定项目启用地区中的全局克隆。例如,可以将项目从全局数据库发送到地区中的全局克隆进行复制。项目可以通过网络以数据块发送。全局数据库与全局克隆之间可能存在很大的物理距离。因此,在全局数据库开始发送数据的时间、首次启用全局克隆的时间、以及在全局克隆中完全实施项目的时间之间可能存在延迟。
66.在框720中,将项目的状态设置为克隆_未决状态,其指示项目已在全局克隆中启用但尚未赶上全局数据库。项目状态可以由例如控制平面服务(诸如地区控制平面存储)的数据层更新。可以与项目的数据一起在地区数据库中指示项目状态。例如,可以将一行附加到项目的数据库表中,其中,该行指示项目状态。
67.在框730中,为更新项目状态的时间记录时间戳。例如,如果项目状态在时间t处被设置为克隆_未决状态,则记录时间t。时间戳可以与项目状态的指示一起被记录,诸如记录在地区数据库中。
68.在框740中,观察处于克隆_未决状态的项目的事务。例如,控制平面存储中的维护活动可以检测项目是否有任何事务,例如读取请求。
69.在框750中,确定项目的全局克隆是否赶上全局数据库。例如,可以确定全局克隆是否已经完全实施了在记录的时间戳处在全局数据库中实施的项目的版本。该确定可以由控制平面存储的维护活动来做出。如果全局克隆没有赶上,项目可能会保持在克隆_未决状态而维护活动可能会等待。例如,维护活动可能会继续观察事务,直到它确定全局克隆已赶上记录的时间戳为止。
70.如果在框750中确定项目的全局克隆已经赶上记录的时间戳,则在框760中项目被转换到克隆_就绪状态,其指示项目的全局克隆已经赶上。例如,可以更新数据库中项目状态的指示以反映新状态。此外,对应于从克隆_未决状态到克隆_就绪状态的转换时间的新时间戳与更新的状态一起被记录。
71.图8是图示基于项目状态来服务读取请求的示例方法的流程图。在框820中设置项目状态,并且在框830中记录设置项目状态时的时间戳。例如,如上面结合图7的框720和730所讨论的,项目状态可以由控制平面存储的维护活动设置并且与时间戳一起记录在地区数据库中。
72.在框840中,例如,在地区堆栈处接收对于读取项目数据的请求。该请求将根据项目的状态被处理。
73.在框850中,确定项目的全局克隆是否处于无效状态。如果是这样,读取请求将由全局数据库提供服务(框855)。
74.在框860中,确定项目的全局克隆是否处于未决状态。如果是这样,则全局克隆未准备好为读取请求提供服务。因此,读取请求在时间戳处被重定向到全局数据库(框865)。例如,全局数据库中的数据会保留一段时间,诸如数小时、数天等,尽管可能已经实施了后
来改变数据的项目的更新版本。读取请求被定向到全局数据库中与记录时间戳的时间相对应的时间,尽管该请求可能已经在稍后的时间被接收并且全局数据库可能已经被进一步更新。
75.在框870中,确定全局克隆是否处于就绪状态,在该状态下它已经用在记录的时间戳处全局数据库中的数据进行了更新。如果全局克隆处于就绪状态,则可以通过从克隆数据库读取数据来服务于读取请求(框875)。
76.如果克隆不处于未决或就绪状态,则可以确定克隆被禁用。因此,在框880中,读取请求被忽略。
77.上述系统和方法的优点在于它们在从全局数据库复制的全局克隆中提供一致的读取。通过仅将一些请求重定向到全局数据库,并且通过全局克隆为其他请求提供服务,减少了全局数据库的负载。此外,诸如如果请求是从与全局克隆相同的地区发出的,由全局克隆服务的请求可能比全局数据库更快地产生数据。另外,由于被重定向到全局数据库的请求被重定向到与全局克隆状态发生变化时对应的较早时间点,因此从全局数据库读取的数据将与全局克隆的数据一致,从而减少意想不到的影响。
78.除非另有说明,前述替代示例不是相互排斥的,而是可以以各种组合实施以实现独特的优势。由于能够在不背离权利要求限定的主题的情况下利用上述特征的这些和其他变化和组合,因此实施例的前述描述应当以说明的方式而非权利要求限定的主题的限制方式来理解。此外,本文所描述的示例的提供以及措辞为“诸如”和“包括”等条款不应被解释为将权利要求的主题限制为特定示例;相反,这些示例旨在仅说明许多可能的实施例之一。此外,不同附图中相同的附图标记可以标识相同或相似的元件。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献