访问先前的存储段服务器状态
文献发布时间:2023-06-19 10:46:31
背景技术
如今各种服务在云计算环境中被提供。“云计算”是一种用于支持对可配置计算资源(例如,网络、服务器、存储装置、应用以及服务)的共享池的普遍存在的、按需的网络访问的模型。云计算模型也可以采用各种应用服务模型的形式,例如,诸如软件即服务(“SaaS”)、平台即服务(“PaaS”)以及基础架构即服务(“IaaS”)。云计算模型也可以使用不同的部署模型而被部署,诸如私有云、社区云、公共云、混合云等。软件即服务(“SaaS”)的一种类型被称为数据库即服务(DBaaS)。
常规的DBaaS通常在包括一个主要计算节点和一个或多个次要计算节点(每个节点经常被提供为虚拟机)的架构内被实现。主要计算节点操作数据库服务器并且具有直接被附接的固态驱动,主要数据库服务器可以从该直接被附接的固态驱动读取或者向其写入。次要计算节点也操作数据库服务器并且也具有固态驱动,相应的次要数据库服务器可以从该固态驱动读取或者向其写入。主计算节点上的数据被与次要计算节点同步。
次要计算节点提供冗余以达到满足服务可用性目标的目的。如果主要计算节点将发生故障,则通过将次要计算节点中的一个次要计算节点提升为主要计算节点并且实例化附加的次要计算节点来维持所需的冗余的级别,数据库的故障转移(failover)可以发生。
为了使主要计算节点处的数据与次要计算节点处的数据同步,要求从主计算节点到次要计算节点的通信。主要计算节点保留在主要计算节点处发生的操作的日志。主计算节点可以向次要计算节点发送日志记录(或者单独地或者作为块)。次要计算节点各自应用由主要计算节点指定的操作,并且将其确认应用回主要计算节点。一旦主要计算节点从大多数(例如,三个次要计算节点中的两个次要计算节点)接收到这样的确认次要次要,则主要计算节点已经将其数据与次要计算节点同步到以下程度:如果主要计算节点出现故障,则存在次要计算系统的大多数都将应用日志记录的保证。因此,在恢复的情况下,即使新提升的主要计算节点尚未应用日志记录,该新提升的主要计算节点也仍然可以通过咨询其他次要计算节点来使用当前数据更新自身。
本文中所要求保护的主题不限于解决任何缺点或者仅在诸如以上所描述的环境中操作的实施例。而是,提供该背景仅是为说明可以在其中实践本文中所描述的一些实施例的一个示例性技术领域。
发明内容
本文中所描述的至少一些实施例涉及在数据跨多个存储段服务器而被散布的上下文中组合在特定时间点的用户数据的状态。此外,尽管存储段服务器不需要协调任何快照的定时,组合都发生。而是,存储段服务器执行其单独存储的数据的部分的快照,而无需与任何其他存储段服务器协调。特定时间点可以是任何任意时间,诸如由用户选择的时间。
针对每个存储段服务器,存储段服务器的附加实例被实例化。使该附加实例假设相应的存储段服务器在该相应的存储段服务器执行的最后的快照处或之前具有的初始状态。初始时间可以在最后的快照时未决的任何事务处或之前。或许初始时间可以在未决的、并且影响由相应的存储段服务器存储的数据的部分的任何事务处或之前。然后,附加实例中的每个实例重新应用开始于该初始状态并且一直持续到特定时间点的被记录的记录,以由此达到在特定时间点该数据的部分的状态。每个部分可以潜在地被组合成用户数据的更大集的所有或子集,以由此获取如在该特定时间点处存在的用户数据。
因此,本文中所描述的原理允许获取如在时间的不同实例处存在的用户数据的状态,这些时间的不同实例由用户可选择、并且不局限于快照的时间。此外,即使数据跨不需要协调快照的时间的多个服务器而被分布,这也是可能的。这允许在每个存储段服务器处被采用的快照逻辑被简化,因为没有要求与其他存储段服务器的通信。此外,快照过程更具弹性,因为一个存储段服务器上的快照不依赖于另一存储段服务器是否正常操作或者甚至是否完全在运行。
本发明内容以简化的形式介绍了一些概念,这些概念将在下面的具体实施方式中被进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在被用于协助确定所要求保护的主题的范围。
附图说明
为了描述可以获得本发明的上述和其他优点和特征的方式,将通过参考在附图中示出的本发明的特定实施例来对以上简要描述的本发明进行更具体的描述。因此,这些附图仅描绘了本发明的示例实施例并且因此不应被认为对本发明的范围是限制性的。考虑到这一点,将参考附图描述和解释本发明的示例实施例,其中:
图1图示了在其中可以采用本文中所描述的原理的环境,该环境包括主要计算系统、一个或多个次要计算系统、数据被存储在其间的存储段服务器、持久性存储、以及用于应用由主要计算系统生成的日志记录的日志服务;
图2图示了用于生成日志记录和执行写操作的方法的流程图。
图3图示了日志记录,该日志记录包括日志序列号、对存储段的增量的改变的描述、以及改变被应用到的存储段标识符;
图4图示了被以多个日志记录填充的块;
图5图示了用于向存储段应用日志记录的方法的流程图;
图6图示了如下环境:在该环境中存在共同存储数据的存储段服务器,并且在其中由每个存储段服务器持有的数据部分独立地被快照;
图7图示了根据本文中所描述的原理用于汇编截至特定时间点的用户数据的状态的方法的流程图;
图8A示出了图6的快照时间线的一部分,在其中,存储段服务器的附加实例的初始状态是处于在针对数据部分中的任何数据部分的最后的快照中的任何快照处活跃的最旧的事务的开始处;
图8B示出了图6的快照时间线的一部分,在其中,针对每个数据部分,存储段服务器的附加实例的初始状态是处于在该数据部分的最后的快照处活跃的最旧的事务的开始处,并且其包括可应用该数据部分的操作。
图9A图示了在针对数据部分的任何部分的特定时间点之前的最后的快照中的任何最后的快照的任何时间处活跃的事务的超集;
图9B图示了在仅针对一个数据部分的特定时间点之前的最后的快照的时间处活跃的事务的集合;
图10图示了在其中可以采用本文中所描述的原理的示例计算机系统。
具体实施方式
本文中所描述的至少一些实施例涉及在数据跨多个存储段服务器而被散布的上下文中汇编截至特定时间点的用户数据的状态。此外,尽管存储段服务器不需要协调任何快照的定时,汇编都发生。而是,存储段服务器执行其单独存储的数据的一部分的快照,而无需与任何其他存储段服务器协调。特定时间点可以是任何任意时间,诸如由用户选择的时间。
针对每个存储段服务器,存储段服务器的附加实例被实例化。使该附加实例假设相应的存储段服务器在该相应的存储段服务器执行的最后的快照处或之前具有的初始状态。初始时间可以在最后的快照时未决的任何事务处或之前。或许初始时间可以在任何未决的、并且影响由相应的存储段服务器存储的数据的部分的事务处或之前。然后,附加实例中的每个实例重新应用开始于该初始状态并且一直持续到特定时间点的被记录日志的记录,以由此达到截至特定时间点该数据的部分的状态。每个部分可以潜在地被汇编成用户数据的更大集合的全部或子集,以由此获取如在该特定时间点处存在的用户数据。
因此,本文中所描述的原理允许获取如在时间的不同实例处存在的用户数据的状态,这些时间的不同实例由用户可选择、并且不局限于快照的时间。此外,即使数据跨不需要协调快照的时间的多个服务器而被分布,这也是可能的。这允许在每个存储段服务器处被采用的快照逻辑被简化,因为不要求与其他存储段服务器的通信。此外,快照过程更具弹性,因为一个存储段服务器上的快照不依赖于另一存储段服务器是否正常操作或者甚至是否根本不运行。
首先,将关于图1至图5来描述包括主要计算系统、(多个)次要计算系统、以及存储段服务器环境的示例环境。然后,将接着关于图6至图9B来描述访问跨存储段服务器分布的用户数据的状态。然后,因为本文描述的组件由计算系统操作,然后将关于图10来描述计算系统。
图1示出了可以在其中采用本文中所描述的原理的环境100。仅作为示例,环境100可以是网络,诸如云计算环境。环境100包括在其上操作应用110A的主要计算系统110。作为示例,应用110A可以是数据库服务器应用。主要计算系统110可以是物理计算系统(诸如云计算环境中的计算节点),在这种情况下,主要计算系统110可以如下关于图10的计算系统1000所述的被构造。备选地或附加地,主要计算系统110可以是模拟计算系统的虚拟机。在主要计算系统110上运行的应用110A对用户数据执行写操作。例如,如果应用110A是数据库服务器,则用户数据会是数据库。
尽管本文中所描述的原理未要求,但是环境100还可选地包括(多个)次要计算系统120。(多个)次要计算系统120中的每个次要计算系统操作一个相应的应用,该应用可以是正在主要计算系统110上被运行的同一应用的实例。例如,如果主要计算系统110上的应用110A是数据库服务器应用,则该数据库服务器应用的实例可以在(多个)次要计算系统120中的每个次要计算系统上运行。(多个)次要计算系统120每个都可以是物理计算系统(诸如云计算环境中的计算节点),在这种情况下,次要计算系统可以如下关于图10的计算系统1000所述的被构造。备选地或附加地,每个次要计算系统120可以是模拟计算系统的虚拟机。
(多个)次要计算系统120可以包括任何数目的次要计算系统。在所图示的实施例中,存在示出的两个次要计算系统121和122,每个次要计算系统分别操作对应的应用121A和122A。省略号123表示本文中所描述的原理不限于(多个)次要计算系统120的数目。例如,可以仅存在一个次要计算系统,或者潜在地存在无数数量的次要计算系统。此外,由于(多个)第二计算系统120,甚至可以存在零个次要计算系统。
如果主要计算系统110发生故障使得可能无法有效地恢复,则(多个)次要计算系统120中的一个次要计算系统(如果存在任何次要计算系统的话)会被提升为新的主要计算系统,从而允许被提升的计算系统能够执行写操作。因此,(多个)次要计算系统120允许环境100内存在内置冗余。如果次要计算系统被提升为主要计算系统,则新的次要计算系统可以被开始,以便替换被提升的计算系统,并且由此保持期望数目的(多个)次要计算系统120。即是说,新的次要计算系统可以独立于主要计算系统110是否存在故障而被开始以及被移除。
当主要计算系统110对用户数据(例如,数据库或数据库内容)执行写操作时,主要计算系统110将这些数据操作记录(如由箭头101A表示的)到持久性日志131中。持久性日志131被保留,以使得环境100可以在故障的情况下恢复。现在将描述主要计算系统110向存储段(例如,用户数据的页面)写入,同时持久地记录该写操作的过程。
特别地,图2图示了用于生成日志记录并且执行写操作的方法200的流程图。作为示例,方法200可以由图1的主要计算系统110执行。主要计算系统首先读取特定的存储段(动作201)。这确保存储段的副本被带入主要计算系统的高速缓存中。该存储段可能先前已经由主要计算系统读取,在这种情况下,该存储段将已经在主计算系统的高速缓存内。否则,主要计算系统从包含要被写入的存储段的相应存储段服务器执行读操作。例如,在图1中,主要计算系统110从存储段服务器142读取(如由箭头102表示的)存储段(例如,页面)。
然后,主要计算系统向该存储段的被读取(例如,被高速缓存的)副本写入(动作202)。并且,为了创建该写操作的日志记录(动作203),作为该写操作的一部分而被做出或者要被做出的增量改变被确定(动作211)。然后,主要计算系统创建包括增量改变的日志记录(动作212)。例如,图3示出了日志记录300,其包括日志序列号301、增量改变302的描述、以及该改变被应用到的存储段标识符303。日志序列号是唯一标识日志记录并且表示该日志记录在日志内的位置的数字。日志序列号通常是单调递增的数字,使得日志序列号越高,日志记录在日志内被放置的时间越近。日志记录被写在持久性日志中(动作204)。例如,在图1中,如由箭头101A表示的,主要计算系统110将日志记录(例如,日志记录300)写入持久性日志131中。
在一个实施例中,日志记录被组织成块。块是可以原子地被写入和被读取的存储单元(即,一次-使得写或读针对整个块或者被完成,或者根本不执行)。典型的块大小在计算系统中将是恒定的,但是示例块大小包括512字节和4096字节。因为日志记录可能比块小得多,所以一个块可以包含多个日志记录。图4示出了被填充有多个日志记录401、402、403和404的块400。作为示例,图3的日志记录300可以是图4的日志记录402。省略号405表示框400可以包括适合给定日志记录的大小和块的大小的任何数目的块。可以说每个日志记录占据块内的一个“槽”。当将日志记录写入持久性日志时(如由图1的箭头101A和图2的动作204表示的),其可以是被写入持久性日志的日志记录的块(诸如块400)。因此,在将日志记录作为块写入持久性日志131之前,主要计算系统110可以等待一些数目的日志记录被生成。
返回到图1,环境100还包括日志服务计算系统132。日志服务计算系统132可以是物理计算系统,诸如以下关于图10所描述的计算系统1000。备选地或附加地,日志服务计算系统132可以是虚拟机,或者可能可以是可执行组件,诸如以下关于图10所描述的可执行组件1006。则日志服务计算系统132帮助由主要计算系统110执行和记录日志的写操作被传播到适当的存储段服务器140以及如果存在任何次要计算系统,还被传播到(多个)次要计算系统120。
环境100还包括多个存储段服务器140。由应用110A在主要计算系统110上操作的数据跨存储段服务器140被散布。因此,每个存储段服务器用于服务(例如,存储)仅与用户数据的一部分对应的存储段。存储段可以例如是数据页面。数据的每页可以包括多个块。
例如,如由箭头161表示的,存储段服务器141仅针对被分配的存储段集合151执行数据操作。此外,箭头162表示存储段服务器142仅针对其被分配的存储段集合152执行数据操作,箭头163表示存储段服务器143仅针对其被分配的存储段集合153执行数据操作,以及箭头164表示存储段服务器144仅针对其被分配的存储段集合154执行数据操作。省略号145和155表示本文中所描述的原理不限于存储段服务器的数目。
然而,如果被分配给任何给定存储段的存储段(例如,页面)在用户数据的地址空间内是连续的,则标识哪个存储段服务器被分配以执行针对给定存储段的数据操作更加简单。此外,由于可以发出单个读操作以潜在地返回许多连续存储段,所以可以更有效地执行对连续存储段的读操作。在一个实施例中,用户数据在位于存储段服务器140之下的存储服务170内被表示。跨存储段服务器140被分布的用户数据可以维持与存储服务170上的用户数据相同的布局和结构。
存储段集合151至存储段集合155共同地被图示为存储段集合150。当存储段服务器140使用由云计算环境提供的存储服务170存储它们相应的数据时,执行数据大小操作的需要被消除。例如,这样的数据大小操作可以是数据的全部的完整备份的性能。常规地,主要计算系统和次要计算系统中的每个次要计算系统会必须通过在网络之上传输数据来分别执行完整备份。因此,本文中所描述的原理允许卓越的能力来向上缩放数据。然而,存储段集合151至存储段集合155的副本也可以被保留在相应的页面服务器141至页面服务器145中的每个页面服务器处的高速缓存中。这允许对存储段的快速访问。但是,如果存储段在页面服务器140的高速缓存中丢失(或者即使存储段服务器中的一个存储段服务器自身停机),则该存储段在云计算环境中的存储服务170中仍然可用。
卷135可以被安装到多个计算系统。例如,单个被安装的卷135可以被包括在被安装到主要计算系统110作为读写卷,同时被安装到(多个)次要计算系统120作为只读卷的驱动内。因为仅有一个计算系统被安装到作为写卷的该卷,所以多个计算系统可以在没有由于竞争的或者不一致的写操作的数据损坏的风险的情况下被安装到卷135。如果在卷135内仅存在日志的固定大小的部分,这可以被实现,因为甚至该卷的管理数据也不会改变。卷135可以在云计算环境内作为云存储服务的部分。例如,存储段服务器140和/或次要计算系统可以直接从持久性日志131读取日志记录,而不是从代理131读取日志记录。
图5图示了根据本文中所描述的原理用于向存储段应用日志记录的方法500的流程图。方法500可以针对被标识为要被应用的多个日志记录中的每个日志记录而被执行。方法500的执行许多次允许日志被应用到适当的存储段。即是说,在日志记录中被指定的写操作被应用到适当的存储段服务器内的存储段。作为示例,方法500可以由图1的日志服务计算系统132执行。方法500可以在图1的环境100内被执行,以便应用图3的日志记录300。从而,现在将关于图1和图3来描述图5。
在确定特定的日志记录要被应用时,方法500被发起(动作501)。例如,该特定的日志记录可以是图3的日志记录300。响应于标识特定的日志记录要被应用(动作501),特定的日志记录被应用(动作510)。这可以关于与存储段对应的存储段服务器而被完成。这也可以关于次要计算系统而被完成。
从而,日志记录的应用(动作510)包括标识被分配给存储段的特定集合的存储段服务器,该存储段的特定集合包括在特定的写操作中要被写入的存储段(动作511)。在存储段的集合在地址空间连续的情况下,可以使存储段的集合到每个存储段服务器的分配与存储段标识符的最高有效位对齐。例如,假定存储段标识符的范围从二进制00000,00000(为帮助读者,每五位添加逗号)到二进制01101,01111。在该情况下,可以存在七个存储段服务器,一个用于具有四个最高有效位为0000的标识符的存储段,另一个用于具有四个最高有效四位为0001的标识符的存储段,如此继续,直到第七个存储段用于具有四个最高有效四位为0110的标识符的存储段为止。因此,确定哪个存储段服务器被分配来存储特定存储段成为有效率的计算。日志服务计算系统132可以因此基于存储段标识符303来确定用于日志记录300的适当的存储段服务器。
然后,使特定的存储段服务器向在特定的日志记录中所指定的存储段执行写操作(动作512)。例如,日志服务计算系统132可以向适当的存储段服务器(例如存储段服务器142)提供(例如,如由箭头103B表示的)日志记录300。这会表示当主要计算系统110从存储段服务器读取(如由箭头102表示的)该存储段时开始的写操作的完成。
在一个示例中,该通知(由箭头103B表示)没有被推送到适当的存储段服务器。而是,由存储段服务器向日志服务计算系统132的查询适当的日志记录。因此,向存储段服务器提供适当的日志记录可以是响应于来自特定存储段服务器的请求。因此,在存储段服务器143询问可应用的日志条目之后(如由箭头103A表示的),可以向被分配给被写入的存储段的存储段服务器143通知写操作。
日志服务计算系统132可以在其上具有代理(broker)组件133,代理组件133处置针对日志记录的传入请求的处理。代理133可以是日志服务计算系统上的可执行组件。例如,代理133可以如以下针对图10的可执行组件1006所描述的而被组织。
代理133可以不是每次提供一个日志记录,而是可能每次提供一个块。例如,如果代理133确定在日志记录的块(例如,块400)内的存在任何日志记录(例如,日志记录401、402、403、404或405中的任何日志记录),代理133可以向特定的存储段服务器发送整个块,该任何日志记录在被分配给特定的存储段服务器的存储段的集合内具有存储段标识符
另外,代理133可以确保日志记录不被传达到任何实体,直到日志服务计算系统132已经被通知日志记录已经被安全地写入到持久性日志131中为止(即,日志记录已经变得公开)。这有助于恢复过程是一致的。在恢复期间,恢复使用持久性日志131来确定哪些操作已经被完成。如果系统中的其他组件(例如,次要计算系统或存储段服务器)已经执行了持久性日志131未意识到的操作,则恢复将无法达成可靠的状态。然后,用户数据变得含糊,并且因此被破坏。
代理133还可以执行其他任务。例如,代理133可以预期主要计算系统110(其是所生成的日志记录的源)是不可靠的。为了对此进行补偿,代理133可以实现不同的策略,用于对已经从主要计算系统110被接收多次的日志记录去重。代理133可以通过跟踪主要计算系统生成并且通过针对所有日志记录仅保持最近的生成来执行该去重。代理133还可以预期日志记录丢失,并且通过填充以下描述的丢失的日志记录来对其进行补偿。
返回到图5的方法500,日志服务计算系统也使次要计算系统对次要计算系统处的存储段的副本执行特定的写操作(动作520)。这也可以通过向每个次要计算系统121和122传送(如由图1中的箭头104B和105B表示的)日志记录(例如,日志记录300)而被执行。虽然日志记录可以被推送给次要计算系统120,但是代理131可以类似地处置来自次要计算系统120的针对日志记录的请求(如由箭头104A和105A表示的)。再次,日志记录可以被提供为块。作为提醒,代理133可以确保日志记录不被传送给次要计算系统120,除非日志记录已经被证实为被写入到持久性日志131。作为一种可能的优化,如果日志记录是用于向还未被高速缓存的存储段写入,则次要计算系统也可以或许忽略日志记录(并且因此会引起从存储段服务器的读取)。在该情况下,如果次要计算系统稍后使用该存储段,则次要计算节点可以从存储段服务器(其已经应用了被跳过的日志的写入)读取该存储段。
图6图示了环境,在其中存在共同存储数据620的存储段服务器610。存储段服务器610被示出为包括四个存储段服务器610A至610D,其分别表示图1的存储段服务器141至144的示例。
存储段服务器610中的每个存储段服务器仅存储数据620的一部分。例如,存储段服务器610A存储数据部分620A,存储段服务器610B存储数据部分620B,存储段610C存储数据部分620C,并且存储段610D存储数据部分620D。在一个实施例中,数据部分620A至620D中的每个数据部分内部地在地址空间的连续地址中存储。因此,数据部分620A内的存储位置越向左,在地址空间内的地址越低。其他数据部分620B、620C以及620D也同样如此。此外,当被放在一起时,数据部分620A至620D在该地址空间中内也是连续的。因此,数据部分620A比数据部分620B具有更低的地址,数据部分620B比数据部分620C具有更低的地址,数据部分620C比数据部分620D具有更低的地址。
存储段服务器中的每个存储段服务器拍摄其相应的数据部分的快照。例如,在图6的示例中,时间由箭头630表示630。日志序列也被示出并且由箭头640表示。日志序列中日志的日志记录的序列号越大,由该日志记录表示的操作被执行得越近。
在该特定的示例中,存储段服务器610A在时间t
在该示例中,存储段服务器中的每个存储段服务器的快照时间独立于其他存储段服务器。尽管不被要求,但是在图6的示例中甚至没有单个的快照发生在相同的时间。快照中的每个快照在其自己的有区别的时间t1至t10被拍摄。更宽泛地说,至少一些存储段服务器中的每个存储段服务器在独立于其他存储段服务器的时间处拍摄快照。这意味着存储段服务器不需要与其他存储段服务器协调快照时间,由此使快照过程更有弹性。
图6还图示了备份组合计算系统650。备份组合计算系统650可以是物理计算系统,诸如以下关于图10所描述的计算系统1000。备选地或附加地,备份组合计算系统650可以是虚拟机,或者或许可以是可执行组件,诸如以下关于图10所描述的可执行组件1006。
图7图示了用于组合在特定时间点的用户数据的状态的方法700的流程图。作为示例,在图6所示的快照的上下文中,方法700可以由图6的备份组合计算系统650执行。从而,现在将仅作为示例关于图7以及关于图6来描述方法700。
方法700可以针对任何任意时间点而被执行。对应地,方法700通过标识期望针对其的用户数据的状态的特定时间点(动作701)而开始。然后有针对存储段服务器中的每个存储段而被执行的动作。那些动作被包含在图7的虚线框710内。例如,框710的内容可以针对存储段服务器610A至610D中的每个存储段服务器关于其相应的数据部分620A至620D而被执行。
具体地,存储段服务器的附加实例被实例化(动作711)。例如,存储段服务器610A的附加实例被实例化,这允许存储段服务器610A在附加实例致力于制定数据部分620A的先前状态时继续操作。附加地,存储段服务器610B、610C以及610D中的每个存储段服务器的附加实例被实例化,这允许相应的存储段服务器610B、610C以及610D在方法700期间继续操作,在此期间附加实例致力于制定相应的数据部分620B、620C以及620D的先前状态。备份组合计算系统650可以引起这些附加实例化。
然后,使存储段服务器的附加实例(例如,以组合汇编计算系统650的指令)采取初始状态(动作712)。该初始状态是存储段服务器的数据部分在最后的快照处或之前具有的状态。然后,使存储段服务器的附加实例以该初始状态开始应用由相应的存储段服务器应用的直到特定时间点的日志记录(动作713)。这使存储段服务器的附加实例达到如相应的数据部分在该特定时间点存在的特定状态。
例如,图8A示出了图6的快照时间线的部分800A。然而,仅有针对数据部分620A和数据部分620B的快照时间线被示出。数据部分620A的快照641A和642A被示出。另外,数据部分620B的快照641B和642B被示出。假定期望针对其的用户数据的特定时间点是点801。在该特定时间点801之前针对数据部分620A的最后的快照是快照641A。在该特定时间点801之前针对数据部分620B的最后的快照是快照641B。在非事务性系统中,存储段服务器610A的附加实例可以简单地在最后的快照641A处开始,并且应用日志(例如,持久性日志131)中所有可应用的日志记录一直至时间点801。类似地,存储段服务器610B的附加示例可以简单地在最后的快照641B处开始,并且应用持久性日志中所有可应用的日志记录一直至时间点801。
然而,在事务性系统中,存在针对在快照的时间处活跃的事务中的所有事务的核算。在图8A中,假定线810表示在针对数据部分中的任何数据部分的(在特定时间点之前的)最后的快照中的任何最后的快照处仍然活跃的最旧的事务的开始时间(即,时间T
假定,针对数据部分620A的快照,(在特定时间点801之前的)在最后的快照641A的时间处,三个事务911、912和913是未决的。快照641A也会标识三个活跃事务911、912和913。现在假定在数据部分620B的(在特定时间点801之前的)最后的快照641B的时间处,存在三个事务912、913和914是未决的。快照641B也会标识这三个活跃事务。(在特定时间点801之前的)最后的快照也会已经记录在相应快照的时间处仍然未决的事务。(针对每个数据部分的最后的快照中的所有快照的)那些活跃事务中的所有活跃事务的超集然后会被采取。例如,图9A图示事务910A的示例超集为包括五个事务911至915。作为示例,该集中最旧事务的开始由线810表示。这可以是由存储段服务器的所有附加示例假设的初始状态的时间,并且实例中的所有实例应用在线810处开始的可应用的日志记录并且进行至特定时间点801。这由针对数据部分620A的箭头811和针对数据部分620B的箭头812表示。
备选地,最旧的事务针对每个数据部分独立地被评估,并附加地考虑影响相应的数据部分的那些事务(例如,包括从数据部分读取或者向其写入的操作)。例如,参考图9B,快照641A可以包括事务910B的记录,事务910B可以仅包括在快照641A的时间处活跃并且影响数据部分620A的事务。参考图8B,这样的事务中的最旧的事务的开始时间T
相似地,针对数据部分620B,在快照641B的时间处活跃并且仅影响数据部分620B的事务的最旧事务在时间T
该过程可以被执行以获取用户数据的相应部分中的所有相应部分(或至少一些相应部分)的特定状态。返回到图7,具有该特定状态的这些数据部分然后可以被聚集(动作720),以由此组合在特定时间点的数据的至少部分的(或完全的)备份。即使在没有各个存储服务器段之间的快照的协调的情况下,这也可以被完成。
因为本文中所描述的原理在计算系统的环境中操作,将参照图10描述计算系统。计算系统现在正越来越多地采用多种形式。例如,计算系统可以是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统,数据中心,或者甚至是常规上还未被认为是计算系统的设备,诸如可穿戴设备(例如,眼镜、手表、带等)。在本说明书和权利要求书中,术语“计算系统”被宽泛地定义为包括如下任何设备或者系统(或者其组合):该设备或者系统包括至少一个物理和有形的处理器、以及能够在其上具有由处理器可执行的计算机可执行指令的物理和有形的存储器。存储器可以采取任何形式,并且可以取决于计算系统的性质和形式。计算系统可以被分布在网络环境之上,并且可以包括多个构成的计算系统。
如图10所图示,在其最基础的配置中,计算系统1000通常包括至少一个硬件处理单元1002以及存储器1004。存储器通常包括至少一个硬件处理单元1002和存储器1004。存储器1004可以是物理系统存储器,其可以是易失性的、非易失性的、或者两者的某种组合。术语“存储器”在本文中也可以被用于指诸如物理存储介质的非易失性大容量存储装置。如果计算系统是分布式的,则该处理、存储器和/或存储能力也可以是分布式的。
计算系统1000在其上具有经常被称为“可执行组件”的多个结构。例如,计算系统1000的存储器1004被图示为包括可执行组件1006。术语“可执行组件”是对计算领域中的普通技术人员中众所周知的结构的名称,该结构是可以是软件、硬件或其组合。例如,当以软件被实现时,本领域普通技术人员将理解,可执行组件的结构可以包括可以在计算系统上被执行的软件对象、例程、方法,无论这样的可执行组件是否存在于计算系统的堆中,或者可执行组件是否存在于计算机可读存储介质上。
在这样的情况下,本领域普通技术人员将认识到,可执行组件的结构存在于计算机可读介质上,使得该可执行组件的结构当由计算系统的一个或多个处理器(例如,由处理器线程)解译时,使计算系统执行功能。这样的结构可以是由处理器直接地计算机可读取的(如,如果可执行组件是二进制的情况)。备选地,该结构可以被组织为可解译的和/或经编译的(无论是在单个阶段中还是在多个阶段中),以便生成这样由处理器直接可解译的二进制。当使用术语“可执行组件”时,对可执行组件的示例结构的这样的理解很好地在计算领域的普通技术人员的理解之内。
术语“可执行组件”也被本领域的普通技术人员很好地理解为包括排他地或几乎排他地以硬件被实现的结构,例如在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或任何其他专用电路内。因此,术语“可执行组件”是用于被计算领域的普通技术人员很好理解的结构的术语,无论其是以软件、硬件还是组合被实现。在本说明书中,术语“组件”或者“顶点”等也可以被使用。如本说明书中所使用的,并且在这种情况下,这些术语(无论是否被修饰子句修饰)也旨在与术语“可执行组件”同义或者是这样的“可执行组件”的特定类型,并且因此也具有被计算领域的普通技术人员很好地理解的结构。
在以下描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这样的动作以软件被实现,则响应于已经执行了构成可执行组件的计算机可执行指令,(执行该动作的相关联的计算系统的)一个或多个处理器引导计算系统的操作。例如,这样的计算机可执行指令可以被体现在形成计算机程序产品的一个或多个计算机可读介质上。这样的操作的示例涉及数据的操纵。
计算机可执行指令(和所操纵的数据)可以被存储在计算系统1000的存储器1004中。计算系统1000还可以包含通信信道1008,该通信信道1008允许计算系统1000通过例如网络1010与其他计算系统通信。
尽管并非所有计算系统都要求用户接口,但是在一些实施例中,计算系统1000包括用于与用户进行对接的用户接口1012。用户接口1012可以包括输出机构1012A以及输入机构1012B。本文中所描述的原理不限于精确的输出机构1012A或者输入机构1012B,因为这将取决于设备的性质。然而,输出机构1012A可以包括例如扬声器、显示器、触觉输出、全息图、虚拟现实等。输入机制1012B的示例可以包括例如麦克风、触摸屏、全息图、虚拟现实、相机、键盘、其他指针输入的鼠标、任何类型的传感器等。
本文中所描述的实施例可包括或者利用包括计算机硬件(诸如,例如一个或多个处理器和系统存储器)的专用或通用计算系统,如以下更详细地所讨论的。本文中所描述的实施例还包括用于携带或者存储计算机可执行指令和/或数据结构的物理的以及其他计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,实施例可以包括至少两种明显不同种类的计算机可读介质:存储介质和传输介质。
计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或者其他磁性存储设备、或者以下任何其他物理和有形的存储介质:该物理和有形的存储介质可以被用于以计算机可执行指令或数据结构的形式来存储所期望的程序代码部件,并且可以由通用或专用计算系统访问。
“网络”被定义为支持在计算系统和/或组件和/或其他电子设备之间运送电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或者硬连线或无线的组合)而被传输或提供给计算系统时,计算系统将该连接适当地视为传输介质。传输介质可以包括网络和/或数据链路,该网络和/或数据链路可以被用于以计算机可执行指令或者数据结构的形式来携带所期望的程序代码并且可以由通用或专用计算系统访问。以上的组合也应被包括在计算机可读介质的范围内。
此外,在实现各种计算系统组件时,计算机可执行指令或者数据结构形式的程序代码部件可以自动地从传输介质被传送到存储介质(反之亦然)。例如,通过网络或数据链路被接收的计算机可执行指令或者数据结构可以被缓冲在网络接口组件(例如,“NIC”)内的RAM中,并且然后最终被传送到计算系统RAM和/或计算系统处易失性较小的存储介质。因此,应理解,可读介质可以被包括在也(或者甚至主要地)利用传输介质的计算系统组件中。
计算机可执行指令包括例如指令和数据,当在处理器处被执行时,该指令和数据使通用计算系统、专用计算系统或者专用处理设备执行某些功能或功能组。替代地或附加地,计算机可执行指令可以将计算系统配置为执行某些功能或功能组。计算机可执行指令可以是,例如二进制或者甚至在由处理器直接执行之前经过某种翻译(例如编译)的指令(诸如中间格式指令(诸如汇编语言)),或者甚至是源代码。
本领域技术人员将认识到,可以在具有许多类型的计算系统配置的网络计算环境中实践本发明,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程的消费者电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机、数据中心、可穿戴设备(例如眼镜或手表)等。还可以在分布式系统环境中实践本发明,在分布式系统环境中,通过网络被链接(或者通过硬连线数据链路、无线数据链路、或者通过硬连线链路和无线数据链路的组合)的本地和远程计算系统两者都执行任务。在分布式系统环境中,程序组件可以位于本地存储器设备和远程存储器存储设备两者中。
本领域技术人员还将理解,可以在由一个或多个数据中心或其部分支持的云计算环境中实践本发明。云计算环境可以是分布式的,尽管这不是必需的。当被分布时,云计算环境可以在组织内国际地被分布和/或具有跨多个组织被拥有的组件。
在本说明书和所附权利要求中,“云计算”被定义为用于支持对可配置计算资源(例如,网络、服务器、存储装置、应用以及服务)的共享池的按需网络访问的模型。“云计算”的定义不限于在适当地被部署时可以从这样的模型中所获取的其他众多优势中的任何优势。
例如,云计算当前在市场中被采用,以便提供对可配置的计算资源的共享池的普遍存在和方便的按需访问。此外,可配置的计算资源的共享池可以通过虚拟化而被快速供应,并以低管理工作量或服务提供方交互而被发布,并且然后相应地被扩展。
云计算模型可以由各种特征组成,诸如按需、自助服务,广泛的网络访问、资源池、快速弹性,经测量的服务等。云计算模型也可以使用各种应用程序服务模型的形式,例如,软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础架构即服务(“IaaS”)。还可以使用诸如私有云、社区云、公共云、混合云等不同的部署模型来部署。在本说明书和权利要求书中,“云计算环境”是在其中采用云计算的环境。
在不脱离本发明的精神或本质特性的情况下,可以以其他特定形式来体现本发明。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求书而不是前文的描述指示。落在权利要求的含义和等同范围内的所有改变均应被包含在其范围之内。
- 访问先前的存储段服务器状态
- 用于通过在游戏云系统上执行的视频记录访问先前所存储游戏情节的方法和系统