分布式存储环境中的异步复制

申请号 CN201280025091.3 申请日 2012-05-18 公开(公告)号 CN103548011A 公开(公告)日 2014-01-29
申请人 微软公司; 发明人 B·G·卡尔德; N·尼拉康特恩; S·斯里瓦斯塔夫; J·吴; A·R·阿巴斯; S·麦纳里; P·C·乌达拉具;
摘要 本 发明 的各 实施例 涉及在分布式计算环境中对数据进行异步复制。为实现异步复制,在主要数据存储处接收到的数据可以用诸如该数据的标识符等信息来注释。经注释的数据随后可被传送至次要数据存储,次要数据存储随后可将该数据及经注释的信息写入一个或多个日志以供在次要数据存储处进行最终重放和提交。主要数据存储可传送对于在主要数据戳处成功提交该数据以及将该数据成功写入次要数据存储的确认附加实施例可以包括响应于接收到通过标识符授权提交该数据的指令,在次要数据存储处提交该数据。
权利要求

1.一种分布式计算环境中的利用处理器和存储器来在该分布式计算环境中对数据进行地理复制的计算机实现方法,所述方法包括:
在主要数据存储处接收来自客户机的数据;
将所述数据写入所述主要数据存储的日志;
用记录来注释被写入日志的所述数据,所述记录促进在次要数据存储处对所述数据的重放;
向所述客户机传送对于在所述主要数据存储处提交所述数据的确认;以及向所述次要数据存储传送用所述记录来注释的所述数据。
2.如权利要求1所述的方法,其特征在于,所述记录是经地理注释的记录。
3.如权利要求1所述的方法,其特征在于,向所述次要数据存储传送用所述记录来注释的所述数据是向所述次要数据存储处的前端传送的,使得所述前端验证所述数据旨在用于所述次要数据存储。
4.如权利要求1所述的方法,其特征在于,还包括从所述次要数据存储接收所述数据已被存储在所述次要数据存储处的确认,其中来自所述次要数据存储的该确认包括标识所述数据的标识符。
5.如权利要求4所述的方法,其特征在于,还包括:
更新提交ID,使得授权在接收到已更新的提交ID后就将所述数据提交至所述次要数据存储;以及
将带有已更新的提交ID的第二消息从所述主要数据存储传送至所述次要数据存储。
6.一种或多种其上包括计算机可执行指令的计算机存储介质,所述计算机可执行指令在由具有处理器和存储器的计算系统执行时,使得所述计算系统执行一种用于在分布式计算环境中对数据进行地理复制的方法,所述方法包括:
在次要数据存储处接收数据,所述数据是从主要数据存储接收的;
将所述数据存储至所述次要数据存储处的日志中;
向所述主要数据存储传送所述数据被存储在所述日志中的确认;
从所述主要数据存储接收具有提交ID的消息;
确定所述提交ID授权在所述次要数据存储处提交所述数据;以及
在所述次要数据存储处提交所述数据。
7.如权利要求6所述的介质,其特征在于,所述方法还包括在所述次要数据存储处接收第二数据,使得所述第二数据用第二消息ID来注释,所述第二消息ID与第一消息的第一消息ID不是顺序的。
8.如权利要求7所述的介质,其特征在于,所述日志是维护所述数据、所述提交ID以及所述第一消息ID的地理消息日志。
9.如权利要求6所述的介质,其特征在于,所述提交ID与注释给所述数据的信息包括相似的时期号。
10.一种用于在分布式计算环境中对数据进行地理复制的系统,所述系统包括:
在地理上位于第一地理位置的主要数据存储,所述主要数据存储包括:
(1)分区;
(2)被配置成存储数据的一个或多个日志;
在地理上位于第二地理位置的次要数据存储,所述次要数据存储包括:
(1)前端应用,其被配置成将非顺序的传入数据路由至所述次要数据存储的适当分区,其中所述传入数据是从所述主要数据存储传送至所述次要数据存储的数据;
(2)所述次要数据存储的分区,其被配置成维护所述传入数据;以及
(3)与第二分区相关联的日志,其被配置成接收通过所述前端应用所路由的所述非顺序的传入数据,所述日志基于从所述主要数据存储传送至所述次要数据存储的提交ID按有序方式提交所述非顺序的传入数据。

说明书全文

分布式存储环境中的异步复制

背景技术

[0001] 分布式存储环境依赖于在地理上分开的组件(这些组件可通过网络被连接)来执行数据存储和操纵。分布式存储环境的用户可能希望将他们帐户中的一个或多个帐户的数据维护在特定地理位置。例如,出于政治原因,某些顾客可能不希望将他们的数据存储在位于特定国家的机构处。类似地,顾客可能希望将他们的数据存储在彼此分开的多个地理位置,以降低围绕自然灾害的潜在可用性问题。结果,顾客可能决定使数据在各个地理位置被维护和/或复制。提供一种在分开的位置处维护数据同时提供对该数据的成功写入的确认的方法在下文中提供。
[0002] 概述
[0003] 本发明的各实施例涉及用于在分布式存储环境中异步复制数据的各系统、方法以及计算机存储介质。为实现异步复制,由应用在主要数据存储处接收到的数据在主要数据存储处被提交,从而允许从主要数据存储向该应用返回成功。主要数据存储可以用诸如特定事务的标识符等信息来注释这一事务。随后可以将经注释的数据传送至次要数据存储,次要数据存储独立于主要数据存储。次要数据存储随后可以将数据及经注释的信息写入一个或多个日志以供在次要数据存储处进行最终重放和提交。次要数据存储随后可以将对于把该数据写入其日志的确认传送回主要数据存储。在接收到次要数据存储至少已将该数据写入日志的确认之后,主要数据存储可以将对于在主要数据存储处成功提交该数据的确认传送回客户机。附加实施例可以包括响应于接收到通过标识符来授权提交数据的指令,在次要数据存储处重放并提交该数据。
[0004] 提供本概述以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图说明
[0005] 以下将参考所附附图详细描述本发明的各说明性实施例,附图通过引用结合于此,并且其中:
[0006] 图1描绘了适于实现本发明各实施例的示例性计算设备;
[0007] 图2描绘了示出根据本发明各实施例的分布式计算环境内的示例性地理区域的框图
[0008] 图3描绘了根据本发明各实施例的示例性存储戳的框图;
[0009] 图4描绘了根据本发明各实施例的对数据进行地理复制的示例性系统的框图;
[0010] 图5描绘了根据本发明各实施例的提交标识(提交ID)的框图;
[0011] 图6描绘了根据本发明各方面的用于确定如何处理与提交ID相关的特定消息的方法;
[0012] 图7描绘了根据本发明各实施例的用于将数据从主要数据存储传递至次要数据存储的示例性系统的框图;
[0013] 图8描绘了示出根据本发明各方面的示例性异步地理复制的时间流程的框图;
[0014] 图9描绘了示出根据本发明各方面的使用最终一致性方法进行示例性同步复制的时间流程的框图;
[0015] 图10描绘了示出根据本发明各方面的使用强一致性方法进行示例性同步复制的时间流程的框图;
[0016] 图11描绘了根据本发明各实施例的从主要数据存储的度来看的异步复制方法;以及
[0017] 图12描绘了根据本发明各实施例的从次要数据存储的角度来看的异步复制方法。
[0018] 详细描述
[0019] 本文中用细节来描述本发明各实施例的主题以满足法定要求。然而,该描述本身并非旨在限制本专利的范围。相反,发明人已设想所要求保护的主题还可结合其它当前或未来技术以其它方式来实施,以包括不同的步骤或类似于本文中所描述的步骤的步骤组合。
[0020] 本发明的各实施例涉及用于在分布式计算环境中异步复制数据的各系统、方法以及计算机存储介质。为实现异步复制,在主要数据存储处接收到的数据可以用诸如标识符等信息来注释。主要数据存储可以将对于在主要数据存储处成功提交该数据的确认传送回客户机。随后可以将经注释的数据传送至与次要数据存储,次要数据存储在地理上不同于主要数据存储。次要数据存储随后可以将数据及经注释的信息写入一个或多个日志以供在次要数据存储处进行最终重放和提交。次要数据存储随后可以将对于把该数据写入日志的确认传送回主要数据存储。附加实施例可以包括响应于接收到通过标识符来授权提交数据的指令,在次要数据存储处提交该数据。
[0021] 相应地,在一个方面中,本发明提供了一种在分布式计算环境中的利用处理器和存储器来在该分布式计算环境中对数据进行地理复制的计算机实现的方法。该方法包括在主要数据存储处接收来自客户机的数据。另外地,该方法可以包括用记录来注释被写入日志的数据。在这一示例中,该记录允许在次要数据存储处重放该数据。该方法进一步叙述了将该数据写入主要数据存储的日志。该方法还包括将对于在主要数据存储处提交该数据的确认传送至客户机。另外地,该方法包括将用该记录所注释的数据传送至次要数据存储。
[0022] 在另一方面,本发明提供了其上具有计算机可执行指令的计算机存储介质,这些计算机可执行指令在由具有处理器和存储器的计算系统执行时,使得该计算系统执行一种在分布式计算环境中对数据进行地理复制的方法。该方法包括在次要数据存储处接收数据。该数据是从主要数据存储接收的。该方法还包括将该数据存储至次要数据存储处的日志中。此外,该方法包括将对于该数据被存储在日志中的确认传送至主要数据存储。另外地,该方法包括从主要数据存储接收具有提交ID的消息。该方法继续叙述了确定该提交ID授权在次要数据存储处提交该数据。该方法还包括在次要数据存储处提交该数据。
[0023] 本发明的第三方面提供一种用于在分布式计算环境中对数据进行地理复制的系统。该系统包括在地理上位于第一地理区域的主要数据存储。主要数据存储包括第一分区以及被配置成存储数据的一个或多个日志。该系统进一步包括在地理上位于第二地理区域的次要数据存储。次要数据存储包括被配置成将非顺序的传入数据路由至次要数据存储的适当分区的前端应用。传入数据是从主要数据存储传送至次要数据存储的。次要数据存储进一步包括次要数据存储的被配置成维护传入数据的分区。另外,次要数据存储包括与该分区相关联的日志,该日志被配置成接收由前端应用所路由的非顺序的传入数据。可以按照数据被接收的次序将数据写入日志,但是数据可以被重放,使得数据是在次要数据存储处基于从主要数据存储传送至次要数据存储的提交ID以顺序方式来提交的。
[0024] 在简要描述了本发明的各实施例的概览后,以下描述适于实现本发明的各实施例的示例性操作环境。
[0025] 大体上参考附图,并且首先具体参考图1,示出了适用于实现本发明的各实施例的示例性操作环境,并将其概括指定为计算设备100。计算设备100只是合适的计算环境的一个示例,并且不旨在对本发明的使用范围或功能提出任何限制。也不应将计算设备100解释为对所示出的任一模/组件或其组合有任何依赖性或要求。
[0026] 各实施例可以在计算机代码或机器可使用指令的一般上下文中描述,包括由计算机或诸如个人数据助理或其他手持式设备等其他机器执行的诸如程序模块等的计算机可执行指令。一般而言,包括例程、程序、对象、模块、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。各实施例可以在各种系统配置中实施,包括手持式设备、消费电子产品、通用计算机、专用计算设备、服务器、路由设备、分布式计算设备等。各实施例还能在其中任务由通过通信网络链接的远程处理设备来执行的分布式计算环境中实现。
[0027] 继续参考图1,计算设备100包括直接或间接耦合以下设备的总线110:存储器112、一个或多个处理器114、一个或多个呈现模块116、输入/输出(I/O)端口118、I/O模块120、和说明性电源122。总线110表示可以是一条或多条总线(诸如地址总线数据总线、或其组合)。尽管为了清楚起见图1的各框用线条示出,但是在实际上各模块的轮廓并不是那样清楚。例如,可以将诸如显示设备等的呈现模块认为是I/O模块。而且,处理器具有存储器。本发明人认识到,这是本领域的特性,并且重申,图1的图示只是例示可结合一个或多个实施例来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”、“服务器”、“数据存储”等分类之间没有区别,因为它们全部都被认为是在图1的范围之内的并且被称为“计算机”或“计算设备”。
[0028] 计算设备100通常包括各种计算机可读介质。作为示例而非限制,计算机可读介质可以包括以下非瞬态计算机存储介质:随机存取存储器(RAM);只读存储器(ROM);电可擦除可编程只读存储器(EEPROM);闪存或其他存储器技术;CDROM、数字多功能盘(DVD)或其他光或全息介质;磁带盒、磁带、磁盘存储或其他磁存储设备;或可用于对所需信息进行编码并且可由计算设备100访问的任何其他介质。在示例性实施例中,计算机可读介质是非瞬态介质。
[0029] 存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移动的,不可移动的,或两者的组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等等。计算设备100包括从诸如存储器112或I/O模块120之类的各种实体读取数据的一个或多个处理器。呈现模块116向用户或其他设备呈现数据指示。示例性呈现模块包括显示设备、扬声器、打印模块、振动模块等等。I/O端口118可允许计算设备100在逻辑上耦合到包括I/O模块120在内的其他设备,其中一些可以是内置的。说明性模块包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪打印机、无线设备等等。可以理解,计算设备100可以用各种形式来表现。例如,计算设备100的一些部分在物理上可以位于第一地理位置,而其他部分在物理上可以位于不同的地理位置。因而,构想了各种设备、服务、应用以及层可以跨各种位置分布,而仍然实现传统上适用于计算设备100的所需结果。
[0030] 参考图2,提供了示出根据本发明一实施例的示例性地理区域(geographical region,“geo region”)200的框图。一般而言,地理区域是通过政治和/或政府边界被分组在一起的地理位置集合。例如,一地理区域可以包括美国,第二地理区域可以包括欧洲,以及第三地理区域可以包括亚太区域。
[0031] 如下文将更详细地讨论的,客户机可能希望在特定地理区域内、但在该地理区域内的不同地理位置处复制数据。例如,客户机可能希望在美国国内维护他们的全部数据(而不是在不同地理区域中复制数据)以服从管控美国的法律。但是由于业务连续性计划(灾难恢复计划),客户机可能要求要在美国国内的不同地理位置(geographical location,“geo location”)(下文中将讨论)中复制数据。结果,数据可以通过地理位置A202来访问,地理位置A202可以位于第一地理位置。随后也可以在第二地理位置B204中复制数据,第二地理位置B204在地理上不同于地理位置A206。
[0032] 地理位置是持有一个或多个存储戳(下文中将讨论)的地理位置。地理位置的示例包括作为第一地理位置的基于美国华盛顿州西雅图的存储戳分组,以及作为第二地理位置的基于美国爱荷华州得梅因的存储戳分组。由于西雅图与得梅因之间的物理距离相当远,要是自然灾害或其他业务干扰活动发生在西雅图,则得梅因可以从该活动的影响中隔离。
[0033] 存储戳(此处也被称为“数据存储”)是可被耦合至一个或多个处理器的物理驱动器或其他计算机可读存储器的集合。例如,存储戳可以包括维护2至20千万亿字节(PB)存储的10-20个存储机架的群集。构想了存储戳具有更大或更小的存储容量。与公共地理位置相关联的各存储戳可以在地理上非常接近(例如,在公共数据中心内)。作为彼此相对非常接近的结果,公共地理位置的各存储戳之间一般存在高级别的连接。然而,由于在公共地理位置中各存储戳一般彼此非常接近,因此导致一个存储戳丢失连接的事故(例如,自然灾害)有可能影响同一地理位置内的另一存储戳。
[0034] 因此,本发明的一个方面是允许在地理上可彼此分开的两个或更多存储戳之间对数据进行复制。因而,构想了将在第一地理位置中的第一存储戳中所维护的数据复制到第二地理位置中的第二存储戳,使得第二地理位置与第一地理位置在地理上分开足够距离(例如,100英里、1,000英里、10,000英里、12,500英里等)。构想了第二存储戳与第一存储戳在同一地理区域内。相反,还构想了第二存储戳与第一存储戳在不同地理位置。
[0035] 返回图2,(在该非限制性示例中)地理位置A202和地理位置B204位于公共地理区域200内。地理位置A202包括存储戳206和存储戳208。类似地,第二地理位置B204包括存储戳C210和存储戳D212。如上所述,构想了地理位置可以具有任何数量的任何大小的存储戳。
[0036] 本发明的各实施例构想了具有主要地理位置和次要地理位置,在那里存储给定帐户的、或帐户的各部分的数据。在示例性实施例中,与帐户相关联的顾客可以选择主要地理位置(例如,地理位置A202)。此外,构想了基于多个准则(或是由顾客提供的,或是基于可靠性、冗余性、和/或可用性度量)为顾客选择次要地理位置(例如,地理位置B204)。然而,还构想了或是由顾客选择或是为顾客选择主要地理位置和/或次要地理位置。
[0037] 转向图3,图3示出根据本发明各实施例的示例性存储戳300的框图。在示例性实施例中,存储戳300可以位于先前所讨论的图2中的地理位置A202内。存储戳可以包括多个分区。分区是给定存储戳的存储容量子集。因此,被存储至存储戳的数据可以至少部分地基于存储该数据的分区的分区标识符来标识。在示例性实施例中,各分区可被用来利用存储戳管理一个或多个帐户。然而,构想了帐户可利用一个或多个分区(如下文将讨论的)。
[0038] 存储戳300被描绘成具有分区A302、分区B304以及分区C306。在这一示例中,分区A302维护与帐户A306及帐户B308相关联的数据。分区B304维护与帐户C310相关联的数据。分区C305还包括帐户A306。在示例性实施例中,帐户A306跨多个分区,诸如分区A302和分区C305分布。可以理解,在以上示例中可以提供任何数量的帐户及任何数量的分区,并且该说明是出于解释目的而提供的。
[0039] 对数据的地理复制被构想成发生在分布式计算环境内的多个不同层级处。例如,构想了将存储在给定存储戳上的数据地理复制到另一存储戳。类似地,构想了对与特定帐户相关联的数据进行地理复制。此外,构想了对特定分区中所维护的数据进行地理复制。因此,地理复制被构想成能够以任何粒度级在系统内被执行。
[0040] 在示例性实施例中,构想了地理复制发生在帐户层级,使得帐户将具有分配给该帐户的主要地理位置以及一个或多个次要地理位置。对于允许针对想要从一个地理位置迁移至另一地理位置的特定存储帐户的地理故障转移而言,在帐户层级处进行地理复制可能是重要的。另外地,在帐户层级处进行地理复制可允许顾客打开或关闭对特定帐户的地理复制以节省资源(例如,空间、金钱)。此外,构想了可以针对与帐户相关联的数据的一部分打开或关闭复制(例如,地理复制)。
[0041] 转向图4,图4示出根据本发明各实施例的对数据进行地理复制的示例性系统400的框图。系统400包括主要数据存储402和次要数据存储404。主要存储戳包括多个分区,诸如分区服务器A408和分区服务器B410。在这一示例中,分区服务器A408包括存储器表412和日志414。
[0042] 在示例性实施例中,分区服务器可以包括多个存储器表和/或多个日志。例如,分区可以包括更新日志、块日志、页日志、和/或地理消息日志。在示例性实施例中,日志位于分布式计算环境的流层内,使得该日志是仅被附加的离散数据流。
[0043] 可以依赖于日志流来在存储戳的一部分(例如,存储节点)出故障之后重新建立存储戳的数据。例如,可以将数据提交至特定分区处的存储戳,但在该分区出故障之后,至少部分地通过重放与该分区相关联的一个或多个日志来重新创建该分区的状态。可以直到数据被重放(例如,写入特定存储戳的一个或多个日志)时才将该数据“提交”至该存储戳。在示例性实施例中,仅被存储至或写入数据戳的数据与被提交至该数据戳的数据之间存在区别。例如,数据可被写入存储戳的日志,但直到数据被提交至存储戳时客户机才能访问该数据。在示例性实施例中,提交来自日志的数据可以通过按次序(可以不是严格顺序的,而是仅按次序)播放(或重放)来自日志的数据而发生。
[0044] 如下文将更详细地讨论的,可以按非顺序方式接收数据。然而,可能希望按顺序方式提交数据。在示例性实施例中,可能希望在日志中维护非顺序地接收到的数据,直到可按顺序方式将该数据的一部分提交至存储戳。
[0045] 返回图4,系统400包括网络406。系统400的各个组件可以经由网络406彼此通信,网络406可包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。这样的联网环境常见于办公室、企业范围计算机网络、内联网和因特网中。例如,在分布式计算环境中,允许不同的组件通过网络进行通信是常见的。由此,此处不对网络406进行更详细的讨论。
[0046] 次要数据存储404包括XFE424(也被称为前端)、分区服务器C420、以及分区服务器D422。在这一示例中,分区服务器C420包括GML428(也被称为地理消息日志)、存储器表432、以及日志434。如先前参考分区服务器A408所讨论的,构想了在给定分区中可利用一个或多个存储器表和/或一个或多个日志。
[0047] XFE424是给定戳的前端服务。除XFE被配置成处理的其他功能之外,XFE处理传入地理消息(即,出于地理复制目的从一个存储戳传递至另一存储戳的消息)以确保XFE接收到的数据旨在被提交至相关联的存储戳。XFE还可检查地理消息中存在的各事务以便在存储戳内标识特定分区,数据将被提交至该特定分区。XFE还可以负责将地理消息转发至适当分区和/或日志,接收对存储/提交数据的确认,和/或向数据的一个或多个发送者提供关于数据状态的确认。
[0048] GML428是地理消息日志。在示例性实施例中,在次要数据戳处接收到地理消息后,该地理消息就几乎立即被写入GML。对地理消息进行这种接近立即的写入可以允许次要数据存储将关于该数据在次要数据存储处已被持久写入(但可能尚未被提交)的确认提供回给作出供应的主要数据存储。在这一示例中,主要数据存储并不需要等待在次要数据存储上重新执行地理事务中的一些(例如,地理消息中的部分)以供返回成功。因而,地理消息被写入GML,并且然后在稍后时间被重放。
[0049] 这一利用GML的过程可以将主要数据存储与次要数据存储解耦,因为如果在次要数据存储上重放地理消息时有延迟,则主要数据存储将不会使发送其地理消息被阻塞。在示例性实施例中,这可能是重要的,因为如果主要数据存储被阻塞,则它可能开始备份。然而,当次要数据存储正在跟上主要数据存储时,地理消息可直接从存储器中重放,而无需使用GML或至少无需从GML中读回。
[0050] 构想了在示例性实施例中GML可被完全绕过。作为替代,可将传入地理消息直接写入分区的直接支持将数据提交至该分区(或检查点过程)的一个或多个日志。
[0051] 图4示出要被地理复制的数据的示例性流程。例如,在主要数据存储402处接收数据416。在这一示例中,数据416可以来自客户机(例如,应用、服务、程序等)。取决于数据416是否与帐户相关联,即在这一示例中,取决于该数据需要异步、用最终一致性方法进行同步、还是用强一致性方法进行同步,该流程可被更改。然而,出于一般讨论的目的,图4示出异步方法。可以理解,可以针对其他类型或配置的地理复制来更改数据的流程。
[0052] 帐户控制单元(“ACU”)可被配置成标识旨在对什么帐户和帐户内的什么信息进行地理复制以及旨在如何进行地理复制。例如,ACU可以在主要数据存储402处检查数据416,以确定数据416与(例如)希望异步地理复制的帐户相关联。每一数据戳可具有用于在该戳处控制各帐户的ACU。例如,主要数据存储402具有ACU P409,而次要数据存储具有ACU S421。
[0053] 在示例性实施例中,ACU是每一戳处运行的服务。ACU可以负责在每一存储戳处执行一系列操作以执行各复制过程。例如,ACU可以负责为相关联的存储戳处的帐户打开和关闭复制。如下文将讨论的,位置服务403可以与ACU进行通信以发出对各个复制过程的高级指示。例如,ACU可以与表主机进行通信以执行各种操作,诸如分区的拆分、合并以及复制。ACU还可以从位置服务接收其他命令,诸如迁移初始化命令、引导命令、或其他面向复制的命令。ACU还可以跟踪对帐户所执行的每一命令的进度。位置服务随后可以从ACU检索或接收与根据它们的命令各个戳正如何进展有关的更新。
[0054] 如上所述,位置服务403可以负责控制复制的高级功能。例如,位置服务可以维护复制和迁移分配(例如,对于给定帐户,什么戳是主要的而什么戳是次要的)。位置服务还可以用作控制帐户复制的最高权威。位置服务(可以是计算设备或计算环境中运行的一组进程)可以负责为各个戳之间正进行复制/迁移的存储帐户添加复制和迁移状态。
[0055] 在示例性实施例中,位置服务403为作为给定帐户的主要和/或次要数据存储的全部存储戳执行全部的存储帐户创建、删除以及更新事务。在该示例中,位置服务403能够跨存储帐户的不同戳来维护存储帐户的信息一致性,这可包括创建/删除帐户、改变帐户许可、以及更新帐户密钥以改变帐户的域名。此外,位置服务可以与一戳处的前端(例如,XFE424)和/或ACU(例如,ACU S421)进行通信以控制和监视该戳处的针对复制过程的操作。因此,位置服务403可以负责管理复制的总体过程,而每一戳处的ACU可以负责与位置服务进行通信并且监视所需操作在特定戳处的性能。
[0056] 如下文将讨论的,数据416可以用一个或多个记录来注释以促进在次要数据戳处重放该数据(见稍后对经地理消息注释的记录的讨论)。在该示例中,经注释的数据是数据418,数据418通过网络406从主要数据存储402被传送至次要数据存储404。次要数据存储404的XFE424接收数据418,数据418可以是地理消息形式。XFE424随后可以标识应被写入分区服务器C420中的GML428的事务(例如,数据418内的一部分)。例如,可以将与数据418相关联的帐户提交至分区服务器C420。
[0057] 数据中从XFE424传送至GML428的部分是数据426数据426随后可以被(例如持久地)写入GML428以供稍后向分区服务器C420提交。在该示例性异步地理复制模型中,从GML处重放的、要提交至分区服务器C420的数据是数据430。数据430可以是数据426的一部分,或者它可以是多个先前接收到的数据的组合,这些先前接收到的数据按有序(例如,顺序)方式被重放以供通过数据430在存储器表432和/或日志434中的条目来提交至分区服务器C420。此外,构想了当被无序重放的各事务(例如,数据)不依赖于彼此时,可以无序重放这些事务。该无序重放允许以较快速率进行重放。然而,还构想了在示例性实施例中批量事务需要重放整批事务或者不重放该批的任何事务。
[0058] 返回GML428。可以将确认436从GML428(或者由服务或控制单元代表GML428)传送至XFE424,从而指示数据426已被写至GML428。结果,XFE424(或者由服务或控制单元代表XFE424)将对该数据416(或数据418、或数据430)的持久性的确认438传送至次要数据存储404。如下文将讨论的,作为接收到确认438的结果,可以从主要数据戳中更新、生成、和/或传送提交ID。
[0059] 在示例性实施例中,从主要数据存储402传送至次要数据存储404的数据是批处理的地理消息形式。批处理的地理消息包括目的地可以是不同分区的多个事务。在该示例中,XFE424可以在批处理的地理消息内标识各个事务,并且将适当事务转发至适当分区。继续该示例,一旦XFE424从来自地理消息的事务被发往的所有分区接收到成功,XFE424就可以向主要数据存储402(或作为地理消息的源的特定主要数据存储)发送确认438。在该示例中的此时,次要数据存储404处的数据可能尚未从GML428重放到一个或多个其他日志(例如,更新日志、团块(blob)日志),这可在稍后异步地发生。主要数据存储402(或主要数据存储402的源分区)可以维护对于一组时期号和/或序列号(下文将讨论)的确认已被收回。基于那些接收到的确认,主要数据存储402确定提交ID是否能前移以供与将来的地理消息包含在一起。
[0060] 提供上述示例来引出下文中将更详细地讨论的概念。
[0061] 应当理解,图4中示出的安排以及本文描述的其他安排仅作为示例来阐明。除了所示的安排和元素之外,或作为其替代,可使用其他安排和元素(例如,机器、接口、功能、次序、以及功能组等),并且可完全省略某些元素。此外,此处所描述的许多元素是可以实现为分立或分布式组件或结合其他组件的、以及以任何合适的组合和在任何合适的位置的功能实体。此处被描述为由一个或多个实体执行的各种功能可由硬件、固件和/或软件来执行。例如,各种功能可由执行存储在存储器中的指令的处理器来执行。
[0062] 图4中所示的组件中的每一个都可以是任何类型的计算设备,诸如例如参考图1描述的计算设备100。应理解,可在本发明范围内的系统400内采用任何数量的数据存储、分区服务器、前端、日志、网络、和/或存储器表。另外,在系统400内还可包括其他未示出的组件。
[0063] 因此,可以采用任何数量的组件来实现本发明的各实施例的范围内的所需功能。尽管为了清楚起见图4的各个组件用线条示出,但是在实际上各个组件的轮廓并不是那样清楚。此外,虽然图4的某些组件被描述成各单独的框,但是该描绘在性质上和数量上是示例性的,且不应该解释为限制。
[0064] 转向图5,图5示出根据本发明各实施例的提交标识(“提交ID”)500的框图。提交ID是用于确保在复制期间顺序提交数据的标识。由于本发明各实施例不需要顺序传送数据(或顺序接收数据),因此提交ID用于确保顺序提交存储戳中的该数据。提交ID可以指定目的地分区能将该存储戳和/或分区范围的地理消息/事务(数据)提交得多远(例如,提交ID可跨不同分区而不同)。提交ID可以包括(如图5中所示)戳ID502、分区号(#)503、分区范围504、时期号(#)506、和/或序列号(#)508。应当理解,提交ID可以包含信息的更多或更少部分。然而,在示例性实施例中,提交ID包含至少一个时期号和序列号。
[0065] 戳ID502是源戳的标识符。例如,戳ID可以唯一地标识向次要数据戳供应数据的主要存储戳。在示例性实施例中,分区范围504表示要应用提交前移的源键范围(例如,在次要数据存储上可提交的项目范围)。然而,如果分区正在父区域中提交事务而从其区域中发送事务,则分区范围可与源分区的键范围不同或者与消息ID中的分区范围不同。
[0066] 时期号和序列号是增加的顺序值,但它们之间可能存在间隙(例如,有效顺序次序可包括1、2、3、6、7…)。时期号在概念上可被认为是章节号,而序列号可被认为是在每一新章节重新开始的章节的页码。结果,可以利用时期号和序列号来标识特定事务或特定分区。时期号506表示该提交所来自的(或与其相关联的)分区的实例。分区号503表示正在服务的分区的当前实况实例。分区每次被加载时,该号就增加。
[0067] 序列号508(序列#)表示要提交的最后顺序的事务。这告诉次要存储戳多达该时期号和序列号的所有事务可在次要存储戳上被提交。每次存在对该分区的拆分或合并时,该时期号变化。为允许无序及平行地将地理消息(例如,数据)发送至相同的次要数据戳,当从次要数据戳接收到对带有给定事务(事务X)的地理消息的确认并且从次要数据戳接收到对带有先于事务X的各事务的所有其他地理消息的确认之后,该给定事务(事务X)的提交ID将从主要数据戳被发送至次要数据戳。
[0068] 类似地与提交ID相关,地理消息可以包括戳ID、分区号以及分区键范围。这些与总体地理消息相关联。此外,地理消息还可以包括一个或多个事务。在该示例中,每一事务具有一个时期号和序列号。在该示例中,该时期号和序列号在事务层级是唯一的,而戳ID和分区号在地理消息层级。
[0069] 提交ID可伴有从主要数据戳发送至次要数据戳的数据。例如,从主要(数据戳/存储)发送至次要(数据戳/存储)的每一地理消息可以包括来自主要(数据戳/存储)的提交ID。因此,主要(数据戳/存储)可在给定通信上承载一标识符,该标识符授权在次要(数据戳/存储)处要提交上至给定提交ID的顺序数据。在示例性实施例中,提交ID指示在次要(数据戳/存储)处已写入GML的最大连续事务,主要(数据戳/存储)已接收回关于把这些事务写入GML的确认。由于已从次要(数据戳/存储)接收到确认,因此主要(数据戳/存储)能够确保至少上至该提交ID的数据被持久保存到至少次要(数据戳/存储)的GML(如果尚未在次要(数据戳/存储)处被提交的话)。
[0070] 然而,还构想了以定义的间隔或在定义的提交ID通信中的不活动时间段传送提交ID,以允许次要(数据戳/存储)在提交数据中有进展。这确保对于主要(数据戳/存储)的源分区的最后一个提交ID被发送至给定次要(数据戳/存储)上的所有分区,这些分区可包括一部分该源分区的数据。因而,目的地的各分区可在提交等待要从GML重放的待决事务中有进展。
[0071] 次要(数据戳/存储)可如何利用提交ID来顺序提交数据的示例在图6的示例性框图中示出,图6表示根据本发明各方面的确定要如何处理与提交ID相关的特定事务的方法600。在该示例中,假定地理消息被写入次要(数据戳/存储)的GML并且提交ID被接收,该提交ID随后被评估以确定哪些地理消息要从GML提交至次要(数据戳/存储)。
[0072] 在框602,确定地理消息的分区号是否超过当前提交ID。例如,地理消息可以包括消息ID,该消息ID包含标识地理消息的源的分区号。类似地,地理消息内的事务可具有与其相关联的时期号和序列号。如果地理消息的分区号超过提交ID的分区号,则如框604处指示的,地理消息可被忽略。如此处使用的,“忽略”地理消息可能仅仅意味着地理消息不在要被提交的状态(缺少先前顺序的地理消息)。在示例性实施例中,分区号在分区被重新加载时用于允许次要数据存储忽略用于重放的重复事务。当分区被重新加载到主要数据存储上时,该分区使其分区号递增,并且该分区再次开始从最后的提交ID起发送消息。在该示例中,每一地理消息具有与其一起发送的分区号。提交ID也具有分区号,该分区号是发送该提交ID时的当前分区号。
[0073] 在示例性实施例中,提交ID告诉次要重放引擎,即与次要数据存储相关联的重放数据的引擎,至少做以下事项:(1)对于具有较低分区号的任何地理消息,仅重放直到该提交ID的时期号和序列号的事务,(2)如果自该较低分区号的所有其他事务具有较高时期号/序列号,则忽略它们,因为那些事务是副本并且将从主要分区被重发。
[0074] 然而,如果框602中的确定导致地理消息的分区号不大于当前提交ID,则分析移至框606。在框606处,确定地理消息中每一事务的时期号是否大于当前提交ID。如果该事务的时期号大于当前提交ID,则如框608处指示的,那些事务可被忽略。
[0075] 然而,如果在框606确定该事务的时期号没有大于提交ID,则在框610执行对该事务的时期号是否等于提交ID的确定。由于时期号可随分区的拆分或合并而改变,因此较低时期号指示较大时期号之前的所有地理消息事务被持久存储在次要数据存储的日志(例如,GML)中。因而,如框614处指示的,被持久存储在次要数据存储处的其时期号早于提交ID的时期号的任何地理消息事务被提交至次要数据存储。
[0076] 然而,如果地理消息的时期号等于提交ID的时期号,则如框612处指示的,执行对每一事务的序列号是否大于当前提交ID的序列号的确定。如果序列号大于提交ID,则地理消息可被忽略。但是,如果地理消息中事务的序列号没有大于当前提交ID,则同样如框612处指示的,事务可被提交。如框614处指示的,直到提交ID当前时期号的最大序列号的所有事务被提交至次要数据存储。
[0077] 如上文讨论的,消息ID和提交ID可包括时期号和序列号。源分区(诸如来自主要数据存储的分区)可以与时期号值和序列号值具有以下交互。在示例性实施例中,分区每次被加载、拆分或合并时,用于该所得分区的时期号被设置成大于父分区的在先时期号。然而,构想了分区的时期号在该分区仍被加载时将不会改变。在该示例中,每当时期号被改变(例如,增加)时,序列号就被重置成初始值(例如,0)。此外,在示例性实施例中,被写入主要数据存储的更新日志、块日志、和/或团块日志的每一事务将包含时期号和序列号。这些与事务相关联的相同的号随后在目的地分区处用于允许按次序进行重放。主要数据存储只需跟踪被传送至次要数据存储的最后一个提交ID;这可在元数据流/日志中或在更新/提交日志中被维护。通过只需维护所传送的最后一个提交ID以及被传送至次要数据存储的经注释的数据,该过程避免必须向次要数据存储发送第二提交消息。另外,如果主要数据存储发生故障,则主要数据存储可通过发送自最后一个提交ID起的地理事务来开始,该最后一个提交ID被维护在主要数据存储处。分区号允许次要数据存储忽略重复的事务,因为同一提交ID可与新分区号一起发送,该新分区号指示次要数据存储要提交直到该提交ID的所有东西,除了带有较大时期号的事务以及带有相等时期号但具有较大序列号的事务。在该示例中,这些事务可被忽略,因为它们将被重发。
[0078] 尽管上述讨论聚焦于主要数据存储如何处理时期号和序列号,但以下聚焦于示例性次要数据存储可如何处理时期号和序列号。
[0079] 在示例性实施例中,每一次要分区维护表示目的地分区范围内每一戳ID的各提交ID的桶列表(例如,被维护在更新日志、块日志、页日志、和/或元数据流中)。在该示例中,这组桶表示对于每一主要戳ID,所提交的分区范围的最新近列表、最新近的提交ID的时期号和序列号。因此,这些桶允许每一分区维护该分区的时期号和序列号,因为每一目的地分区可以接收来自多个源分区的请求(如下文将参考图7讨论的)。可与地理消息一起传递的分区号可用于忽略地理消息中(例如,由于源分区发生故障)可能已从源分区重发的部分(或整个地理消息)。次要数据存储对分区号、时期号和序列号的附加使用将在下文中参考图8来讨论。
[0080] 转向图7,图7示出根据本发明的各实施例的用于将数据从主要数据存储702传递至次要数据存储704的示例性系统700的框图。如图7中所描绘的,次要数据存储704的分区可接收来自单个分区或来自多个分区的数据。
[0081] 主要数据存储702包括分区1706和分区2708。分区1706包括跨越从键范围A至M的数据。分区2708包括跨越键范围N至Z的数据。然而,次要数据存储704包括旨在维护键范围A至Z的数据的三个分区;因此,在该示例中主要数据存储702与次要数据存储704之间将产生不平行关系。次要数据存储包括分区3710、分区4712以及分区5714。
[0082] 分区3710旨在维护来自键范围A至C的数据。分区4712旨在维护键范围D至P中的数据。分区5714旨在维护键范围Q至Z中的数据。为完成提交来自多个源的数据的任务,桶范围可被维护。换言之,次要数据存储可维护范围桶(range bucket),这些范围桶跟踪来自不同源分区的不同提交ID。这些范围桶随后可由次要数据存储在从次要数据存储的日志(例如,GML)重放数据时用于顺序地提交该数据。
[0083] 对范围装桶(range bucketing)的利用可被用作对降低一个帐户所利用的分区数量的优化。例如,如果帐户正利用主要数据存储上的五个分区,但该数据可被提交至两个分区,则次要数据存储可在复制期间将该帐户的数据提交到次要数据存储处的两个分区中。此外,范围装桶的概念可在次要数据存储处的GML无法跟上源的情形中实现。在该情形中,次要数据存储处的目的地分区可改为拆分两个或更多分区之间的数据,从而依赖于范围装桶来促进稍后在每一次要数据存储处的重放。在该示例中,所使用的次要分区中的每一个可具有它自己的GML,这降低了单个GML上的负担。
[0084] 例如,如果次要数据存储具有太多的负载,则可以作出拆分该分区的确定。该确定可以利用从主要数据存储接收到的范围作为关于适当拆分位置的指示符。
[0085] 转向图8,图8描绘根据本发明各方面的异步地理复制的过程流800的框图。在该示例中,过程流800在客户机802、主要数据戳(“主要”)804以及次要数据戳(“次要”)806之间发生。可以理解,可将附加实体、机器、组件、应用、服务等并入一过程流以实现异步地理复制。
[0086] 客户机802将数据808传送至主要数据戳804。如先前讨论的,客户机802可与一帐户相关联,该帐户已被分配或已选择利用主要数据戳804作为用于提交数据的主要地理位置。主要数据戳804可依赖于XFE来验证数据808旨在用于主要数据戳804。在接收到数据808后,主要数据戳810可将数据808写入日志(或流)。另选地(或另外地),主要数据戳804可将数据808提交至主要数据戳804。对数据808的提交可包括将数据808持久存储至主要数据戳804的存储器表810和日志812(按任何次序)。
[0087] 在示例性实施例中,一旦数据已被写入主要数据戳804的日志或其他数据流,就可向客户机802返回对成功的确认814。在附加示例性实施例中,一旦数据808被提交至主要数据戳804,就向客户机802提供确认814。
[0088] 通过在将数据实际提交至次要地理位置之前向客户机802提供成功确认,可以减少传送来自客户机的数据与接收成功确认之间经过的时间。然而,如下文将更详细地讨论的,也可实现同步地理复制方法,一旦数据至少已被写入(相对于完全提交)到主要和次要数据戳两者,该同步地理复制方法就将成功确认提供回给客户机。同步地理复制可能在传送来自客户机的数据与从主要数据戳(或次要数据戳)接收成功确认之间需要更多的等待时间。
[0089] 返回图8,在提供成功确认814之后,主要数据戳804将地理消息816传送至次要数据戳806。在示例性实施例中,地理消息是已经用记录(诸如经地理注释的记录(“GAR”))注释的数据808。在另一示例性实施例中,地理消息是事务集(所传送的数据分组集),这些事务已被批处理以形成特定地理位置、戳和/或分区的地理消息。地理消息可以包括唯一地标识地理消息的消息ID(例如,时期号和序列号)。此外,地理消息还可进一步被注释以包括来自主要数据戳804的提交ID。
[0090] 在示例性实施例中,GAR是与事务日志一起存储的、将用于在次要戳的分区上重放/执行该日志的附加信息。可以有为每一事务存储的一个GAR。可以有许多日志条目构成一事务,以及针对该事务的最后提交日志条目。在该情况下,该事务的GAR可与最后提交日志条目一起存储。该信息可指示(a)原始事务是什么(例如,放置块、放置块列表等),它用于确定如何正确地重放该事务以及如何在目的地处将东西勾连起来;以及(b)包括用于在目的地处重新执行该事务的附加信息(例如,最后修改时间,对于放置块列表,指示这些块是来自已提交列表还是未提交列表的最后块列表)。以其最基本的形式,GAR可包括要在主要数据戳上执行的完整传入事务,但应当有足够信息被包括以便完全且确定性地在次要数据戳上重放该事务,这取决于事务类型而导致为GAR存储更多信息。例如,这可包括在事务执行期间所计算的结果,诸如时间戳和ETag。另外,GAR可包含事务键记录,该事务键记录被写入主要日志并与每一地理事务一起被发送至次要数据戳。该记录可包括事务的键和地理事务id(例如,来自主要数据戳的时期号和序列号)。
[0091] 分区服务器上所执行的各事务具有被写入三个示例日志流(例如,更新日志、块日志、以及页日志)之一的一个或多个记录。如果分区由于负载平衡或节点故障而被重新加载到另一节点(例如,数据存储)上,则日志可用于重放这些事务以重新生成存储器表。结果,地理复制可能在分区处不需要附加日志流来允许该分区成为地理复制的源。这部分是因为地理事务可从更新/块/页日志中被封装起来以供实况地理复制(以及从文件表中被封装起来以供引导地理复制)。
[0092] 使用地理复制,可将GAR添加到现有日志流中的事务中。该GAR连同已被写入日志的东西可包含为地理复制而在次要存储戳上重新执行/重放该事务所需的附加信息。然而,GAR对于重放主要存储戳处的日志可能没有意义。相反,GAR在那里使得这些GAR可被传递至次要存储戳以指定如何在次要戳处重新执行/重放该事务。另外,GAR的一部分还可从日志中已有的信息中动态地生成,而不是将其存储到日志中。在该情况下,GAR随必要条件和特殊值生成,并且在将其发送到次要存储戳之前GAR被添加至地理消息。
[0093] 在示例性实施例中,地理消息可包括1)消息格式版本;2)字段,用于表明该消息是经压缩的还是未经压缩的;3)消息帐户部分——这可以是地理消息表示的存储帐户名的列表。这些帐户名可由XFE来验证,以确保那些帐户在该消息到达的戳处被标记成次要。地理消息还可包括:4)表名称;5)表版本——该表的模式版本;6)日志记录版本——消息中事务日志记录的版本号;7)字段,表明该消息是否旨在扇出,其中扇出意味着将该消息发送到对源分区所表示的分区范围而言的次要存储戳上的所有目标分区。如果扇出未被指定,则将地理消息仅发送到次要存储戳上的目标分区而存储帐户在地理消息中被指定是可接受的。
[0094] 地理消息还可包括8)消息ID——这表示从该分区去往给定存储戳的地理事务群组。消息ID可包括a)戳ID——源戳;b)分区号——这用于标识从分区的给定运行实例所发出的所有消息。这尤其用于处理分区重新加载的问题以及以下事实:最近的地理事务可被不同地重新封装并且被重发至次要分区,以及分区号用于在次要存储戳处确定这可能何时发生。消息ID还可包括c)分区范围——对于消息中这些事务的分区键范围。
[0095] 地理消息还可包括9)提交ID——如先前所讨论的,这可包括以下信息,该信息表示对于在次要存储戳处的提交可考虑从源分区直到什么时期号和序列号。
[0096] 地理消息还可包括10)每一不同分区键的各批。这可表示作为该地理消息的一部分的一批事务集。如果地理事务集需要在一起被执行,则它们可在同一批中。如果不是所有的批(基于范围)都需要被发送至地理消息的目的地表服务器中的每一者,则XFE在批层级处可跨多个不同的表服务器来拆分地理消息。每一批可包含a)各分区键;b)该分区键的记录缓冲区中的记录偏移和大小;以及c)用于重放该事务以及用于指示它们何时可在次要存储戳上被提交的地理事务ID及其键信息的列表:1.分区范围——对于该批的分区范围;2.时期号——该批中所有地理事务必需具有同一时期号;3.序列号——对于该批中每一地理事务存在一个序列号。此外,地理消息还可包括11)该消息中这些事务的数据日志记录。
[0097] 返回图8,将地理消息816传送至次要数据戳806。次要数据戳806的目的地分区可以看到地理消息按无序序列(非顺序地)传入。然而,当地理事务在次要数据戳806的GML以外被重放时,在目的地分区处可以实施有序提交。消息ID中为地理事务提供的时期号和序列号用于提供有序提交。另外地,目的地分区可接收带有空洞的序列号并且需要知道何时提交。这些空洞可在源分区可将各事务发送至N个不同目的地分区时发生,因此不是每一目的地分区都接收到来自给定源的所有事务。与提交ID包括在一起的戳ID/分区范围/时期号/序列号指示对于次要数据戳和分区范围而言目的地分区可将地理消息/事务提交得多远。
[0098] 次要数据戳806随后可将地理消息816的数据写入日志818。在示例性实施例中,该日志是次要存储戳806的一分区的GML。所有传入到一分区的地理消息被存储至该分区的地理消息日志。在该示例中,一旦新的地理消息到达次要数据戳806,就将该地理消息存储至GML并且向次要数据戳806的XFE返回成功。该地理消息可包含指示对地理事务的提交是否可前进的提交ID。可以提交其序列号比提交ID中的序列号更早的地理消息,并且可以使用先前讨论的注释信息来在次要数据戳806上重放那些消息。在该示例中,在次要数据戳806上重放期间,可以用需被更新的任何值将对应的日志记录存储至更新日志、块日志和/或页日志中的任一者。
[0099] 继续该示例,当从GML中重放事务时,该事务被重放至对应的更新/块/页日志,而字段被正确地更新(例如,TBL和CBL指针)。以单独的GML开始(相对于使用现有日志)的优势是所有地理消息信息都被严格地包含在GML中。随后,在目的地分区处执行对数据的地理重放之后,使该事务存在的所有东西都在更新/块/页日志和存储器表中,并且无需修改逻辑来处理那些日志或对该信息的重放。这使得对来自GML的地理消息的重放与来自其日志的分区重放日志逻辑保持分开,尤其是因为分区重放日志可保持很小以便在次要位置上重新加载分区时具有快速分区加载时间。
[0100] 在该示例中,在更新被生成以使GML的“已消耗”记录前移之前,从GML重放至更新/块/页日志和存储器表会将数据提交到分区的实况状态。结果,当在次要数据戳806上重新加载该分区时(例如,在发生故障的情况下),应确定开始从GML重放的点。通过将“已消耗ID”与存储在更新/块/页日志中的地理事务存储在一起来确定该点。该已消耗ID可包括从GML重放的最后一个地理事务的戳/分区键范围/时期号/序列号。然而,构想了可以不存储分区键范围,因为事务记录可标识适当的键。另外,可针对分区键范围的给定部分维护最大的已消耗ID,该最大的已消耗ID在每次检查点被执行时可能存储在GML中。指向检查点记录的指针可存储在元数据流中。从GML中最后一点进行的重新生成可以通过从存储在检查点中的那些以及当从更新/块/页日志中重放时找出的那些中取得最大的已消耗ID来实现。
[0101] 返回图8,在将数据写入日志818之后,次要数据戳806可以(例如,通过XFE)向主要数据戳804传送该数据已被写入(或提交)的确认820。确认820可包括与地理消息816相关联的消息ID以标识什么时期号和序列号已被写入次要数据戳806。主要数据戳随后可更新提交ID822。最终,作为后续地理消息的一部分或者作为扇出型消息的结果,可将已更新的提交ID822传送至次要数据戳806,以允许GML中所维护的更大量的数据在次要数据戳806处被提交。
[0102] 转向图9,图9解说示出根据本发明各方面的使用最终一致性方法进行同步复制的时间流程的框图900。类似于参考图8所讨论的那些组件,框图900包括客户机902、主要数据戳904以及次要数据戳906。
[0103] 与参考图8所描述的示例性异步方法形成对比,一旦数据至少已被写入次要数据戳906和主要数据戳,同步地理复制就仅将确认提供回给客户机904。这将进一步与在图10的示例性方法中将讨论的用强一致性进行的同步复制形成对比,图10的示例性方法在数据已被提交至次要数据戳之后向客户机提供确认。
[0104] 客户机902将数据908传送至主要数据戳904。在接收到数据908后,主要数据戳904可将数据写入一个或多个日志供稍后提交(未示出)。另外,如先前讨论的,主要数据戳
904可以用一个或多个记录、信息和/或标识符来注释数据908。例如,数据908可包括消息ID、提交ID、GAR、和/或可用于地理复制过程(例如,在次要数据戳906处重放)的附加信息。
[0105] 主要数据戳904将地理消息910传送至次要数据戳906。地理消息可包括数据908。地理消息还可包括数据的一个或多个附加部分,诸如离散事务。另外,构想了地理消息910还包括与地理消息910相关联的消息ID、标识时期号和序列号的提交ID,通过该提交ID允许次要数据戳906进行提交。
[0106] 在接收到地理消息910之后,次要数据戳906将地理消息910的关联数据写入适当的日志912。例如,次要数据戳906的XFE可在次要数据戳906内标识地理消息的数据要被写入的特定分区。在确定次要数据戳906的特定分区后,地理消息的数据相关部分随后可被写入次要数据戳906中该标识出的分区的GML。
[0107] 另外,次要数据戳906可检查(未示出)与地理消息910一起接收到的提交ID。在该示例中,提交ID将不包括专用于地理消息910的时期号和序列号,因为主要数据戳尚未接收到地理消息910已被写入次要数据戳906处的日志的确认。因此,可与地理消息910一起接收的提交ID会具有小于同地理消息910相关联的相应值的时期号和/或序列号。
[0108] 返回示出的示例性方法,次要数据戳906将关于对地理消息910的数据进行成功写入的确认914传送至次要数据戳906的一个或多个日志。在示例性实施例中,次要数据戳906的GML向XFE提供对数据的成功写入的指示。次要数据戳906的XFE随后负责向主要数据戳904提供确认(类似于先前参考图4所讨论的示例性方法)。
[0109] 作为接收到确认914的结果,主要数据戳904在主要数据戳处提交916数据。如先前讨论的,提交数据可包括将数据写入主要数据戳904的日志,以及允许用相关条目填充存储器表,这允许发出请求的客户机访问数据。在示例性实施例中,与发出请求的客户机可直接访问的已被提交的数据不同,被写入日志的数据不可由发出请求的客户机直接访问。
[0110] 在确认数据在主要数据戳904处已被提交之后,主要数据戳904将对成功的确认918传送回客户机902。在该示例中,确认918指示数据908已被提交至主要数据戳904,并且最起码数据908已被写入次要数据戳906的日志。确认918可显式地或隐式地指示这样的信息。
[0111] 主要数据戳可在传送确认918的同时、之前或之后将提交ID920传送至次要数据戳906。提交ID920可以是作为从次要数据戳接收到确认914而被更新的已更新的提交ID。如先前讨论的,可结合地理消息将提交ID(诸如提交ID920)传送至次要数据戳,或者提交ID可以作为扇出型消息的结果(例如,预定义的持续时间期满)。
[0112] 次要数据戳906提交日志(诸如GML)中所维护的数据,这些数据具有上至该提交ID的连续消息ID。如先前讨论的,次要数据戳可基于相关联的消息ID按顺序提交数据。因此,如果日志中所维护的上至该提交ID的各消息ID之间存在间隙,则仅提交那些与连续消息ID中直到该间隙的各消息ID相关联的数据。
[0113] 转向图10,图10示出根据本发明各方面的使用强一致性方法进行示例性同步复制的框图1000。同样,框图1000包括客户机1002、主要数据戳1004以及次要数据戳1006。
[0114] 客户机1002将数据1008传送至主要数据戳1004。主要数据戳1004分析数据以确定与数据相关联的被维护在主要数据戳1004内的对象。在确定哪一或哪些对象与数据1008相关联之后,主要数据戳1004在主要数据戳1004内定相关联的对象1010。锁定对象1010可包括阻止客户机访问该对象,阻止写入该对象(除了稍后数据1008要被写入以外),阻止读取该对象等等。另选地,锁定一对象仅仅标识了事务随对象待决。
[0115] 在锁定对象1010之后,主要数据戳1004将地理消息1012传送至次要数据戳1006。地理消息1012可包括数据1008以及其他信息。如先前讨论的,地理消息1012可包括数据1008、消息ID、提交ID、GAR以及促进地理复制的其他信息。
[0116] 次要数据戳1006阻塞对与数据1008相关联的对象进行的读取和写入。次要数据戳可独立地标识哪一或哪些对象与数据1008相关联(类似于主要数据戳1004所实现的过程),或者次要数据戳可从主要数据戳1004接收作为地理消息1012的一部分的关于哪一或哪些对象与数据1008相关联的指示。在阻塞对该对象1014的读取/写入之后,次要数据戳1006将确认1016传送至主要数据戳1004。确认1016可包括对成功将数据1008写入日志、成功阻塞对该对象1014的读取/写入的指示,和/或地理消息1012的消息ID。
[0117] 如下文将讨论的,在该示例性方法中,在次要数据戳提交数据的类似部分之前,主要数据戳提交数据的给定部分。然而,可以理解,次要数据戳可在主要数据戳之前提交数据,这可降低或至少更改主要数据戳与次要数据戳之间所传送的一个或多个确认。在示例性实施例中,由于主要数据戳是应客户机请求的第一数据源,因此在次要数据戳处提交数据之前在主要数据戳处提交数据是有利的,因而当关联对象可被锁定(或被阻塞)时,使得数据首先在主要数据戳处被提交可确保最新近的信息及时地在主要数据戳处可用。本文构想了附加基本原理。
[0118] 返回图10,在接收到确认1016之后,主要数据戳阻塞1018对与数据1008相关联的对象的读取。在阻塞对该对象的读取之后,主要数据戳1004将数据1008提交1020至主要数据戳1004。在提交1020数据1008之后,主要数据戳1004传送对次要数据戳1006提交与地理消息1012相关联的数据的指令1022。指令1022可包括先前与地理消息1012相关联的消息ID。在该示例性方法中,由于数据是以强一致性来提交的,因此提交ID可不被利用,这意味着直到接收到先前事务成功才执行对一对象的后续更新。
[0119] 在接收到提交数据的指令1022之后,次要数据戳1006提交1024数据。次要数据戳1006随后移除该阻塞,并且允许1026发出请求的客户机读取对象。一旦对象已被解除阻塞,次要数据戳1006就向主要数据戳1004传送指示对象为可读(并且因而对象已被提交)的确认1028。在接收到确认1028后,主要数据戳1004还对该对象解除阻塞,从而将对象置于允许1030发出请求的客户机读取该对象的状态。一旦主要数据戳1004和次要数据戳1006允许与数据1008相关联的对象被读取,主要数据戳1004就向客户机1002传送指示数据1008已经(以强一致性)被提交并被地理复制的确认1032。
[0120] 既然已经介绍了用于异步复制和同步复制的示例性实施例的概览,提供以下讨论。在示例性实施例中,异步复制认为数据一旦被修改就在主要数据存储处“被提交”,这允许向客户机发送确认。随后可在背景中将主要数据存储处所修改的这一数据懒惰地复制到存储帐户的次要地理位置。在该示例中,复制发生在主要写入的关键路径以外,以降低环境内的等待时间。然而,如果发生灾难并且主要数据存储丢失,则在主要数据存储处对存储帐户的最新近的更新也可能丢失。为提供更高级的置信度,同步复制确保在向客户机提供确认之前数据被写入主要和次要数据存储。因此,即使灾难影响主要数据存储,数据仍是可访问的,只是作为同步复制的成本具有更多的等待时间。
[0121] 转向图11,图11描绘了根据本发明各实施例的从主要数据存储的角度来看的异步复制方法1100。在框1102,主要数据存储(例如,存储戳)从客户机接收数据。在该示例性实施例中,数据可用于更新客户机所利用的对象以提供一个或多个服务。
[0122] 在框1104,将接收到的数据写入主要数据存储的日志。例如,XFE可检查传入数据以确定主要数据存储是用于维护传入数据的适当数据存储。在该示例中,XFE还可标识用于维护数据的适当分区。适当分区可包括当前维护与接收到的数据相关联的对象的分区。此外,构想了将接收到的数据写入特定分区的日志。换言之,构想了根据分布式计算系统的进程,将数据写入主要数据存储的一个或多个日志(例如,更新、块、和/或页)以供提交数据。
[0123] 在框1106,用记录来注释接收到的数据。在示例性实施例中,记录是GAR(先前讨论的)。还构想了记录是消息ID、提交ID等等。例如,被注释给数据的记录可允许在次要数据存储处重放数据以供在次要数据存储处进行提交。构想了在将数据写入主要数据存储处的日志之前用记录来注释数据。这可允许未来从该日志中进行更高效的复制。结果,图11并不暗示特定次序。
[0124] 在框1108,主要数据存储向客户机传送对提交接收到的数据的确认。尽管在方法1100中未描绘,但主要数据存储可通过从数据被写入的日志中重放接收到的数据来提交接收到的数据。另外,构想了在框1104数据被写入的日志通过对存储器表和/或一个或多个附加日志进行后续填充来实现提交数据。无论实现提交接收到的数据的过程如何,数据都在主要数据存储处被提交以允许客户机接收对提交数据的确认。
[0125] 在框1110,主要数据存储向次要数据存储传送经注释的数据。在本发明的示例性实施例中,ACU标识哪一次要数据存储应接收经注释的数据。如先前讨论的,经注释的数据可包括消息ID,该消息ID包括用于唯一地标识数据的数据存储源的时期号和序列号。此外,构想了经注释的数据还可包括提交ID,该提交ID允许次要数据存储提交上至该提交ID标识出的值的连续数据。
[0126] 可将经注释的数据传送至与数据相关联的特定数据存储,或者可将其传送至各自可对经注释的数据的一部分有兴趣的多个数据存储(例如,地理消息可包括跨越若干数据存储的多个事务)。次要数据存储的前端(例如,XFE)可接收经注释的数据。前端可确定经注释的数据中的至少一部分是否与关联分区相关。前端还可标识数据要被写入的分区的适当日志(例如,GML)。
[0127] 在框1112,主要数据存储接收数据已被写入次要数据存储的确认。该确认可由次要数据存储处的前端服务来传送,该前端服务与将数据写入日志的特定分区相关联。此外,构想了该确认是仅包括已被写入(或仅存储于)次要数据存储的数据的标识符的电子消息。例如,该确认可包括与已被写入日志的数据相关联的消息ID。
[0128] 在框1114,主要数据存储更新提交ID。在该示例中,作为接收到确认次要数据存储把接收到的数据写入日志的结果,该提交ID被更新。然而,可以理解,作为从次要数据存储接收确认的结果,该提交ID可不被更新。例如,如果先前所发送的地理消息无法被写入次要数据存储(且因此无法提供回确认),则通过其可更新该提交ID以反映这种情况的连续的消息ID序列可能不可用。此外,在框1110处传送的经注释的数据可以是被写入次要数据存储的表示连续消息ID中的先前间隙的数据;因此,框1114中已更新的提交ID可扩展到该消息ID以外,该消息ID是在来自次要数据存储对该数据的确认中接收到的。
[0129] 在框1116,主要数据存储向次要数据存储传送提交ID。在示例性实施例中,构想了与发往次要数据存储的数据的后续部分一起传送提交ID,(或用发往次要数据存储的数据的后续部分来注释提交ID)。例如,后续地理消息可包括已更新的提交ID。另选地,构想了将带有已更新的提交ID的专用电子消息从主要数据存储传送至次要数据存储。提交ID可作为已排定向次要数据存储进行传送的结果或作为扇出型消息的结果而被传送。在示例性实施例中,无论如何,已更新的提交ID从主要数据存储传送至次要数据存储。
[0130] 尽管在图11中未描绘,构想了次要数据存储提交从主要数据存储传送至次要数据存储的数据。提交数据可以是该提交ID或后续提交ID从主要数据存储传送至次要数据存储的结果。次要数据存储可授权一旦包含与要提交的数据相关联的唯一标识符的已更新提交ID被接收就在次要数据存储处提交数据。
[0131] 转向图12,图12描绘了根据本发明各实施例的从次要数据存储的角度来看的异步复制方法1200。在框1202,次要数据存储从主要数据存储接收数据。接收到的数据可以是地理消息。此外,接收到的数据可以用诸如记录、消息ID、提交ID和/或类似的信息来注释。如先前讨论的,构想了前端服务(诸如XFE)接收传入数据,验证该数据适合于次要数据存储(或特定分区)。
[0132] 在框1204,将数据存储至次要数据存储的日志。例如,可将数据写入GML或其他基于流的日志,数据最终可从GML或其他基于流的日志中被重放以供提交。在示例性实施例中,可将该数据(可包括消息ID和提交ID)写入GML。
[0133] 在框1206,将确认从次要数据存储传送至主要数据存储。该确认可包括消息ID或在框1204被写入日志的数据的另一标识符。在示例性实施例中,该确认由次要数据存储的前端服务传送。
[0134] 在框1208,从主要数据存储接收具有提交ID的消息。该提交ID可以是已更新的提交ID,该已更新的提交ID来自先前在框1202与该数据一起接收到的提交ID。例如,接收到框1206的确认后,主要数据存储可更新该提交ID以反映框1204处所存储的数据能够在次要数据存储处被提交。如先前讨论的,在框1208接收到的消息可以作为附加数据从主要数据存储传送至次要数据存储的结果。另选地,构想了在框1208接收到的消息作为自先前消息从主要数据存储传送至次要数据存储以来时间流逝的结果。
[0135] 在框1210,确定在框1208接收到的提交ID授权在次要数据存储处提交数据。在示例性实施例中,提交ID授权要在次要数据存储处提交附加数据,即先前未提交的数据。要提交的数据可包括在框1202接收到的数据。如先前讨论的,提交ID可包括时期号和序列号,该时期号和序列号等于或大于同在框1202接收到的数据相关联的时期号和序列号。
在该示例性实施例中,接收提交ID指示在先前某一时间点处,次要数据存储提供了对于上至该提交ID的每一连续时期号和序列号的确认。该提交ID可包括与那些注释给先前接收到的数据相类似的信息。例如,该提交ID可包括与先前注释给该数据的消息ID的信息相类似的信息。
[0136] 在框1212,将在框1202接收到的数据提交至次要数据存储。在示例性实施例中,在框1208中接收到的提交ID授权提交数据。
[0137] 在不背离本发明的精神和范围的情况下,所描绘的各组件的许多不同安排以及未示出的组件都是可能的。已带着说明性而非限制性的意图描述了本发明的各实施例。不背离其范围的各替换实施例对本领域的技术人员将是显而易见的。技术人员可以开发实现上述改进的各替换手段而不背离本发明的范围。尽管某些方法已按特定顺序来描述,但构想了那些活动可按各种次序和顺序来执行。
[0138] 可以理解,特定的特征和子组合是有用的,并且可以使用而无需参考其他特征和子组合并且被认为是在权利要求书的范围之内的。并非需要以所描述的特定次序来执行在各附图中所列出的所有步骤。
[0139] 在不背离本发明的精神和范围的情况下,所描绘的各组件的许多不同安排以及未示出的组件都是可能的。已带着说明性而非限制性的意图描述了本发明的各实施例。不背离其范围的各替换实施例对本领域的技术人员将是显而易见的。技术人员可以开发实现上述改进的各替换手段而不背离本发明的范围。尽管某些方法已按特定顺序来描述,但构想了那些活动可按各种次序和顺序来执行。
[0140] 可以理解,特定的特征和子组合是有用的,并且可以使用而无需参考其他特征和子组合并且被认为是在权利要求书的范围之内的。并非需要以所描述的特定次序来执行在各附图中所列出的所有步骤。
QQ群二维码
意见反馈