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

存储集群之间的数据分区切换的制作方法

2022-04-14 05:01:50 来源:中国专利 TAG:

存储集群之间的数据分区切换


背景技术:

1.分布式存储系统的客户可以使用存储账户,以将其数据存储在分布式存储系统中。分布式存储系统的特定地理区域可以包括一个或多个数据中心建筑物,并且每个数据中心建筑物可以包括多个存储集群。存储集群是运行公共分布式软件的服务器(节点)的集合(例如,软件服务的集合)。每个存储集群服务多个(例如,几百到几千个)存储账户和相关联事务,该存储账户和相关联事务利用节点中的每个节点上的中央处理单元(cpu)资源。
2.分布式存储系统可能出于各种原因将存储账户从一个存储集群迁移到另一存储集群(诸如,减轻存储集群中的容量压力),以平衡区域内的存储集群当中的cpu和每秒输入/输出操作(iops)和/或将存储集群停止运作。进一步地,如果实时站点正在存储集群上运行,那么分布式存储系统可以将一些受影响的存储账户迁移到另一存储集群。


技术实现要素:

3.提供本发明内容以简化形式介绍概念的选择,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。进一步地,所要求保护的主题不限于解决在本公开的任何部分中所指出的任何或所有缺点的实施方式。
4.公开了涉及分布式计算系统中的数据迁移的示例。一个示例提供了一种在计算系统上制定的、将数据分区从第一存储集群迁移到第二存储集群的方法。每个存储集群可以经由一个或多个服务器计算机而被实现。方法包括确定数据分区满足用于从第一存储集群迁移到第二存储集群的迁移标准;在第一存储集群上,准备要被转移的分区元数据,分区元数据描述数据分区内的一个或多个流和每个流内的一个或多个范围;将分区元数据从第一存储集群转移到第二存储集群;将与数据分区相关联的新事务引导到第二存储集群,包括当一个或多个范围驻留在第一存储集群处时;在第一存储集群上,将数据分区内的一个或多个范围的访问属性更改为只读;以及在第二存储集群上,执行针对数据分区的新进入。
附图说明
5.图1示意性地示出了用于实现分布式存储系统的示例计算环境。
6.图2示意性地示出了在分区切换之前源存储集群和目的地存储集群的状态。
7.图3示意性地示出了分区切换的准备阶段的方面。
8.图4示意性地示出了分区切换的切换阶段的方面。
9.图5示意性地示出了存储集群组当中的资源平衡的方面。
10.图6示意性地示出了并行迁移到多个目的地存储集群的方面。
11.图7示出了图示将数据分区从第一存储集群迁移到第二存储集群的示例方法的流程图。
12.图8示出了图示示例计算系统的框图。
具体实施方式
13.图1示出了包含分布式存储系统102的示例计算环境100。数据被存储在存储标记(“stamp”)104和106中,其中每个存储标记(在本文中也被称为“存储集群”)是n个存储节点机架的集群,并且其中每个机架都被构建为具有冗余网络和电源的单独的故障域。
14.分布式存储系统102实现全局存储命名空间,该全局存储命名空间允许数据以一致方式而被存储。在一些示例中,存储命名空间利用域名系统(dns)108并且可以包括两个部分:账户名称(客户所选择的名称和dns主机名称的部分)和对象名称(标识账户内的个体对象)。因此,如果个体对象正在被访问,那么所有数据都可经由包括账户名称和对象名称的统一资源标识符(uri)来访问。
15.存储地点服务110被配置为,管理所有存储标记,并且负责管理跨所有存储标记的账户命名空间。为了增大存储,更多的存储标记可以被部署在数据中心中并且被添加到存储地点服务110,并且存储地点服务110可以将新账户分配给新的存储标记,同时还加载平衡从旧标记到新标记的现有存储账户。存储地点服务110跨所有地点来跟踪由每个存储标记使用的资源,并且当应用请求用于存储数据的新账户时,存储地点服务110指定针对存储的地点匹配性(“affinity”),并且基于跨所有标记的加载信息来将位置内的存储标记作为针对账户的主标记。存储地点服务110然后将账户元数据信息存储在所选择的存储标记中,指示标记开始接收针对账户的业务。存储地点服务110还更新了dns 108以允许将请求从客户端计算设备112路由到存储标记的虚拟ip(vip),如针对存储标记104和106分别在114和116处所示出的。
16.每个存储标记具有三层,自下而上依次为:(1)在118和120处的流层,其将比特存储在磁盘上并且被配置为跨存储标记内的服务器来分布和复制数据;(2)在122和124处的分区层,其被配置为管理更高等级的数据抽象化(例如,二进制大对象(“blob”)、表、队列),提供可扩展的对象命名空间,将对象数据存储在流层的顶部上,提供针对对象的事务排序和一致性,向其他存储标记和缓存对象数据发送事务,以减少磁盘i/o;以及(3)在126和128处的前端层,其接收传入请求,对请求进行验证和授权,并且将请求路由到分区层中的分区服务器。
17.标记内复制可以被用于流层内,这是同步复制,其跨不同故障域中的不同节点来保持足够的数据副本,以使数据在存储标记内保持持久。标记内复制复制用于构成对象的磁盘存储块。进一步地,标记间复制可以被用于分区层内,标记间复制是跨存储标记来复制数据的异步复制。标记间复制复制对象和被应用于那些对象的事务。标记内复制提供针对硬件故障的持久性,而标记间复制提供针对地理灾难的地理冗余。
18.存储标记104、106的前端层126、128包括无状态服务器,该无状态服务器接收传入请求(例如,从客户端计算设备112)的。在接收请求时,前端服务器查找与请求相关联的账户名称,对请求进行认证和授权,并且将请求路由到分区层122、124中的分区服务器(例如,基于分区名称)。分布式计算系统102维护分区名称范围的分区映射以及哪个分区服务器正在服务哪个分区名称。前端服务器可以缓存分区映射并且使用分区映射以确定向哪个分区服务器转发每个请求。前端服务器还可以直接从流层中流式传输大对象,并且缓存经常访问的数据。
19.流层118、120充当存储标记104、106内的分布式文件系统。流层理解称为“流”的文
件,这些文件是指向范围的指针的有序列。范围是被存储在磁盘上的某个物理地点的数据逻辑块。当范围被连接在一起时,范围表示完整连续地址空间,在该完整连续地址空间中流可以以范围被添加到流的顺序而被读取。新的流可以通过连接来自现有流的范围而被构造。范围是流层中的复制单元。流层中的多个数据存储节点中的每个数据存储节点维护针对范围副本集(例如,针对每个范围的存储标记内的三个副本)的存储。
20.当数据被存储在流层中时,可从分区层122、124来访问数据。分区层122、124维护高度可扩展的表,该表包括对象相关的元数据(对象名称、存储对象的存储账户等)并且形成主键。表(在本文中也被称为分区索引)包括指向磁盘上的对应数据块的指针。以这种方式,分区层跟踪流、范围和对象被存储于其中的范围中的字节偏移。虽然分区层可能只知道每个范围的逻辑位置,但是流层维护每个范围被物理存储的位置的映射。表包括数百万个不能由单个服务器服务的对象,因此表被分解称为“分区”的单元。分区层对存储标记104、106内的所有数据对象进行分区,并且提供用于支持不同云服务的数据结构(例如,二进制大对象、队列、表)。分区服务器(分区层中的守护进程)和流服务器可以共同位于存储标记中的每个存储节点上。
21.分区是多个流的集合,并且每个流是多个范围的容器。分区内的每个流可以服务用于不同的目的。例如,表可以作为范围而被存储在流中的一个流(例如,索引流)中,而数据范围可以被存储在不同的流(例如,数据流)中,并且其他流(例如,元数据流)可以存储其他范围。每个分区层用于从键低(“keylow”)到键高(“keyhigh”)的键范围内的对象集,其中每个对象包括分区名称。对象基于分区名称值而被分解成不相交的范围,并且由分区层的不同分区服务器来服务。因此,分区层管理哪个分区服务器正在服务针对二进制大对象、表和队列的哪些分区名称范围。每个分区构成表本身、对象被存储的键范围和数据块本身(被存储在流中)。表服务器(ts)服务分区。进一步地,分区层基于业务来提供跨分区服务器的分区名称的自动加载平衡。
22.如上所述,分布式存储系统102的用户(例如,企业、个人或其他实体)可以使用存储账户以将数据存储在分布式存储系统102中。存储账户用作容器,客户在其中存储与存储账户相关联的对象集合。客户可以使用任意数目的存储账户,并且每个存储账户可以包括对tps、用于接收/发送数据的带宽等的限制。
23.有时,存储集群上的一个或多个存储账户可能正在执行繁重的工作负载。在这种情况下,分布式计算系统102可以通过将一个或多个选择存储账户迁移到不同的存储集群来执行加载平衡。分布式计算系统可以出于各种原因将存储账户从源存储集群迁移到目的地存储集群,包括但不限于平衡存储集群当中的cpu资源、iops和/或每秒事务数(tps),减轻源存储集群中的容量压力,停止运作存储集群和/或减小在存储集群上运行的实时站点的影响。
24.目前,账户迁移可能涉及将存储账户中的所有对象(二进制大对象、磁盘、表、队列等)和底层数据从源存储集群中深复制到同一地理区域内的另一存储集群。这种深复制涉及循环访问分区中的每个对象(其可以利用并行性),读取对象和底层数据,将数据分派给目的地存储集群,以及验证源存储集群与目的地存储集群之间的对象和底层数据(例如,以确保复制是正确的,复制过程中没有软件错误等)。数据验证可以涉及计算源存储集群和目的地存储集群两者上的散列并且验证所计算的散列匹配。一旦对象和数据被验证了,客户
业务就在目的地存储集群处而不是在源存储集群处被重新开放。
25.存储账户可以包括数百万个对象,包括不同类型的对象(例如,二进制大对象、磁盘、表、队列等)。移动存储账户内的所有对象以及按比例移动提出了各种挑战。例如,循环访问分区中的每个对象是cpu密集型的过程。进一步地,上述账户迁移过程需要每对象的磁盘i/o被迁移,而与对象大小无关。迁移数百万个对象所需的数百万个i/o利用大量cpu资源和带宽。当选择存储集群在cpu和/或带宽使用上正运行过热时,分布式计算系统102可能无法调度足够的对象迁移以稳定存储集群。分布式计算系统102还可能无法以足够快地完成一些关键迁移(诸如,与存储集群上的实时站点相关的迁移)来阻止对存储集群上的其他存储账户的影响。进一步地,这类加载平衡操作中断对正在被迁移的存储账户的服务。
26.除了上述问题以外,当前账户迁移方法对于某些存储账户可能不可行。作为一个示例,当前账户迁移过程对于具有大对象计数(大量二进制大对象、表实体计数、队列消息计数等)的存储账户可能过于及时并且计算资源密集,这是由于移动每个对象所需的磁盘i/o所致的。作为另一示例,当前账户迁移过程涉及在大小为大约1千字节(kb)的层中复制和迁移数据。因此,迁移具有大尺寸(例如,几拍字节(pb))的存储账户可能花费不合理的长时间(诸如,几个月)来迁移。进一步地,针对具有高tps的存储账户,在这种迁移过程期间的数据转移速率可能不足以跟上正在进行的事务。类似地,针对高进入账户,如果账户迁移期间的对象的转移速率低于来自账户用户的传入速率,那么账户迁移可能无法完成。例如,一旦现有数据的深复制完成,分布式存储系统就以“追赶”模式操作,以将源存储集群上最近所接收的数据转移到目的地存储集群,而如果进入太高,这可能是不可能的。作为又一示例,存储账户可能超出二进制大对象快照(对象的时间点副本)的阈值数,或者快照创建频率可能超过账户迁移过程,并且后续迁移验证过程可能落后于用户存储账户进入。进一步地,由于上述任何原因,前述账户迁移过程对于服务不能被中断的优质服务等级账户可能是不可行的。
27.因此,本文公开了涉及分区元数据转移与数据块(范围)本身解耦合中的迁移操作的示例。所公开的迁移操作涉及将分区(键范围内的所有对象)或分区组从源存储集群同时切换到目的地存储集群,而不是在存储账户内执行数据的深复制并且在存储集群之间移动数据。因为所公开的分区切换涉及将范围(分区索引和数据)的所有权从源存储集群转移到目的地存储集群,而范围本身可能仍驻留在源存储集群处,所以切换可能比当前数据复制迁移操作更快。通过转移范围所有权,后续传入的写入请求登陆于目的地存储集群上,这对先前被传入业务占用的源存储集群的资源提供了缓解。这还避免了进入太高而不能促进账户迁移的场景,因为进入点位于目的地存储集群处。进一步地,本文描述的迁移操作可以作为后台过程发生而不中断存储账户服务,从而对存储账户的(多个)用户而言是透明的。
28.简单来说,从源存储集群到目的地存储集群的分区切换包括准备阶段和切换阶段。在准备阶段期间,源存储集群将范围元数据转移到目的地存储集群。由于这种范围元数据转移与进入解耦合,因此高进入不会影响元数据大小。不会影响对存储账户的用户业务的准备阶段有助于加快切换阶段,在切换阶段期间,用户业务可以被调节。
29.在一些示例中,分区切换过程由源存储集群的表主控器(tm)协调。tm管理多个表服务器(ts),确定哪个表服务器托管哪个分区并且更新分区表。在其他示例中,与源存储集群的tm(tm-源)和目的地存储集群的tm(tm-目的地)两者通信的外部驱动器可以协调分区
切换过程。虽然下文所描述的示例涉及tm-源与tm-目的地之间的通信,但在其他示例中,外部代理可以驱动分区切换过程。
30.在分区切换之前,分布式计算系统102将源存储集群与针对正被迁移的账户的目的地存储集群配对。例如将两个存储集群配对可以包括:将防火墙规则进行编程,以允许两个存储集群之间的业务,以及使每个存储集群上的名称解析器能够了解关于每个集群的角色信息。进一步地,将两个存储集群配对可以涉及启用共享前端(fe)资源,使得参与配对的每个存储集群中的每个fe下载并且维护参与配对中的每个存储集群的分区映射。通过启用共享fe,fe能够将用户请求重引导到正确分区,该正确分区服务属于所配对的存储集群的针对任何账户的键范围。应理解,可以可选地执行在分区切换之前将正在被迁移的存储账户虚拟化,使得存储账户的dns指向两个存储集群的vip。
31.图2图示了分区切换之前的示例源存储集群(cl1)202和目的地存储集群(cl2)204。在该示例中,表服务器(ts-48)206服务属于从源存储集群202正被迁移到目的地存储集群204的账户的第一分区(p1)208。源存储集群(csm-源)210的集群服务管理器拥有并且管理第一分区208的流(该流中的一个流在212处被示出)和底层范围(表示为范围e1到en)。更具体地,csm-源210维护针对范围存储的逻辑到物理映射。
32.fe 214、216角色被共享,使得两个存储集群202、204上的fe角色维护针对两个集群内存中的分区表218、220并且刷新分区表(例如,周期性地,或者当一个条目无效时)。当被迁移的存储账户被虚拟化时,针对存储账户的用户请求可以被引导到集群202、204两者上的fe角色并且被重引导到源存储集群202的ts-48 206上的第一分区208。当存储账户未被虚拟化时,用户请求可以被引导到源存储集群202的fe 214。
33.在准备阶段,tm-源222与源存储集群(ts-源)206和tm-目的地224的ts交互,源存储集群(ts-源)206和tm-目的地224各自与其相应csm(csm-源210和csm-目的地226)交互以针对分区切换做准备。tm-源222通知tm-目的地224准备由csm-目的地226管理的流,csm-目的地226将从csm-源210接收范围。如上所述,为了保持切换阶段的轻量级,准备阶段涉及将范围元数据从源存储集群202转移到目的地存储集群204。
34.图3示意性地描绘了分区切换的准备阶段300中涉及的步骤。如箭头(1)所指示,tm-源222隔离分区的键范围,阻止在键范围上的拆分和合并,并且持久化在源分区表228中开始分区的切换的意图。虽然tm-源222阻止在键范围上的拆分和合并,但高优先级卸载是被允许的。tm故障转移可以使新tm读取这个信息并且重新执行准备工作流程。在源分区表228中所持久化的信息可以包括指示开始准备针对源存储集群上的分区的切换的标志。用于当前数据迁移系统的现有分区表可以经历模式升级或以其他方式改造列以适应这类标志。
35.接下来,如箭头(2)所指示,tm-源222执行与tm-目的地224的初始握手,其通知tm-目的地224切换意图。在一些实例中,初始握手经由异步应用程序编程接口(api)请求(例如,针对在tm-目的地上的分区切换做准备的请求)而被执行。初始握手包括发送限定针对分区的键范围的低端和高端以及分区名称的值。在各种示例中,初始握手可以包括发送针对分区的短名称而不是分区名称,这可以帮助简化调试。
36.接下来,如箭头(3)所指示,tm-目的地224隔离键范围。tm-目的地224可以通过拆分目的地存储集群204上的现有分区来阻止新的键范围,使得新的键范围成为现有分区的
键范围的部分。tm-目的地224还在目的地存储集群204上的分区表230中创建了分区条目。在分区条目中,表服务器实例可能未被填充,并且关于正被接收的分区的状态的信息可以被存储为分区表的标志列中的标志。在一个具体示例中,指示分区切换在目的地存储集群上进行的标志可以表示分区的状态,并且还指示在故障转移时,tm-目的地224不将分区加载到任何ts-目的地(图2中的232),因为这个分区尚未处于执行此操作的有效状态。在一些示例中,tm-目的地224可以针对所隔离的键范围来批量更新目的地分区表230(正被切换的分区的左侧分区和右侧分区,以及正被切换的分区本身)。如果tm-目的地224故障转移,那么tm-源222可以继续重试。这个步骤可以被配置为幂等的(“idempotent”),使得tm-目的地224能够在重试尝试中验证/完成未完成的工作。tm-目的地224不需要将命令保存在事务日志中,因为tm-源222轮询/重试异步api以针对分区切换而作准备。
37.如箭头(4)所指示,tm-源222轮询针对tm-目的地224异步api调用的完成。当成功时,tm-源222请求ts-源206针对ts-源206上的分区切换作准备,例如经由异步api调用。
38.如箭头(5)所指示,当ts-源206接收请求时,ts-源206执行各种动作。由于所请求的操作是幂等的操作,因此即使在tm-源222故障转移和/或ts-源206崩溃或重新启动的情况下,api也有期望可靠地完成准备步骤。ts-源206检查指出其存储器表并且将切换状态信息持久化在其元数据流记录中,包括具有切换状态信息的分区标志(例如,指示针对在源存储集群上进行分区切换的准备正在进行中)和源集群名称。如果在这个步骤期间由于任何原因(例如,ts-源崩溃或重新启动、紧急卸载、从针对现场的存储诊断服务强制分区而重新分配等),分区重新加载,那么ts-源206可以重新执行步骤,该步骤涉及在使用元数据流记录来重新加载期间准备针对ts-源分区切换。例如,ts-源206可以作业将提交给惰性工作方(例如,线程池)。ts-源206还阻止对分区流的多修改、删除和流操作,这可以帮助简化csm-源210与csm-目的地226之间的范围切换。在这个阶段,对分区进行较新的写入仍是可以被允许的,范围可以被密封,并且较新的范围可以被创建。此外,在流的端处链接范围(尽管是多修改操作)可以被允许用于复制二进制大对象情况。
39.如箭头(6)所指示,ts-源206还通知csm-源210创建目的地存储集群204上的镜像流234并且为针对每个流212的范围切换而作准备。ts-源可以经由api来通知csm-源210,该api被配置为,使源存储集群202的流212(其范围正在被切换)与目的地存储集群204上的流相关联。作为响应,csm-源210将大量的范围元数据转移到csm-目的地226,以使切换阶段轻量级。由ts-源采取的来阻止主要流修改操作的步骤可以帮助防止在准备阶段之后对范围元数据的任何重大改变。
40.在一个示例中,csm-源210和csm-目的地226在箭头(6.1)处执行以下动作以完成准备阶段。csm-源210在目的地存储集群204上创建分区流,该分区流是空的(例如,还没有任何范围)以准备从源存储集群202接收范围。csm-源210与csm-目的地226一起工作以复制“密封的”范围元数据,其中密封的范围是不可变的。csm-源210执行针对将范围转交给目的地存储集群204的可行性的验证,诸如,针对与csm-目的地226的连接性的确认检查、编解码器兼容性检查和/或目的地存储集群204上的任何数据不可用的确定。在这个阶段,范围仍然由csm-源210管理,并且如果范围节点发生故障并且范围必须被复制/修复,那么csm-源210负责复制/修复。在csm-目的地226上的密封的范围元数据可能稍微陈旧的情况下,这可以在切换阶段期间被解决(例如,使用范围元数据本地管理的表空间等),这将在下面详细
描述。作为这个调用的部分,csm-目的地226还可以通过与服务那些范围的范围节点(en节点)同步来验证转移后范围元数据。如果范围由属于相同分区的一个或多个流所保存,那么范围所有权可以被转移到csm-目的地226。如果范围被链接到由不同分区所拥有的多个流,那么范围所有权可能不会立即被转移到csm-目的地226,而是在所有不同分区都被切换到csm-目的地226后被转移。
41.在准备阶段300中所执行的范围元数据转移与进入解耦合。不管进入有多高,范围元数据大小可以保持相对不变。这允许分布式存储系统几乎不执行“追赶”以将源存储集群上最近所接收的数据转移到目的地存储集群。在一个特定示例中,流的每个范围的大小为三千兆字节(gb),其中30兆字节每秒(mbps)进入流中。在这个示例中,进入可以每一百秒创建一个新范围,并且准备阶段300期间所创建的新范围的数量可以少于十个。在另一具体示例中,对于包括五万个范围(具有纠删码片段)的流,元数据转移在两秒或更短时间内被完成。在这个示例中,每个范围元数据小于五百字节并且被批量转移,因此即使对于高进入账户,对范围元数据转移所需的追赶也几乎可以忽略不计。
42.如上所述,在准备阶段300期间,针对分区切换的一个或多个分区标志和/或分区元数据流记录可以被更新。例如,在由图3中的箭头(1)和(2)所指示的步骤中,tm-源222可以更新源分区表228中的分区标志,以指示开始针对在源存储集群上的分区切换作准备的状态。作为另一示例,在由图3中的箭头(3)和(4)所指示的步骤中,tm-目的地224可以更新目的地分区表230中的分区标志,以指示分区切换正在目的地存储集群204上进行。此时,源分区表228仍可以包括指示开始针对在源存储集群上的分区切换作准备的状态的分区标志。作为又一示例,在由图3中的箭头(5)、(6)和(6.1)所指示的步骤中,tm-源222可以更新针对分区切换的分区元数据流记录,以指示正在准备针对源存储集群上的分区切换。
43.一旦准备阶段300完成,属于从源存储集群202被迁移到目的地存储集群204的账户的第一分区208仍然由源存储集群202的ts-48206服务。目的地存储集群204上的表服务器ts-156(在图3中被示为232)已经针对第一分区208创建了分区流,以保持在切换阶段被切换的范围。第一分区的流和底层范围仍然由csm-源210所拥有和管理。然而,csm-目的地226已经建立了至少一些密封的范围的次级所有权。fe角色行为可以在准备阶段300之后保持不变,使得针对存储账户的用户请求可以被引导到两个集群上的fe角色(例如,经由vip 114、116)并且被正确地重新引导到源存储集群202的ts-48206上的第一分区208。
44.一旦准备阶段300完成,tm-源就可以开始切换阶段。图4图示了示例切换阶段400的方面,其中范围被切换到csm-目的地226。在一些实例中,对于被迁移的存储账户的用户业务在切换阶段400期间受到调节。
45.如箭头(1)所指示,tm-源222通过移除指示针对源上的分区切换准备开始的标志并且设置指示源上的分区切换开始的标志来更新用于正被切换的分区的源分区表228中的分区标志。更新标志可以帮助tm故障转移情况,使得tm-源222在从源分区表228重建其内存中状态时,知道在哪个步骤恢复切换操作。
46.如箭头(2)所指示,tm-源222向ts-源206发出命令,以执行来自ts-源的分区切换,命令在一些示例中可以是异步api请求。作为响应,如箭头(3)所指示,ts-源206执行一系列过程。
47.在箭头(3)处,ts-源206将分区切换状态信息(诸如,具有切换状态信息和源集群
名称的分区标志)持久化在其元数据流记录中。在分区因任何原因(例如,ts-源崩溃或重新启动、紧急卸载、强制分区重新分配等)而重新加载的情况下,ts-源206可以使用元数据流记录在重新加载期间重新执行来自ts-源api的分区切换中所涉及的步骤。例如,ts-源可以通过向惰性工作方提交作业来重新执行。当分区在源存储集群202上被重新加载时,例如ts-源206在切换期间崩溃或重新启动的情况下,加载分区的新ts-源可以检测到该情况并且恢复分区切换。当范围切换成功并且分区在目的存储集群上加载时,记录由目的地存储集群204读取,该记录知道知道分区处于来自源存储集群202的切换状态。
48.ts-源206还阻止相同或单独写入元数据流中的新请求作为分区切换状态信息。这使fe后退并且重试。由于实际的切换阶段可能会失败,因此fe会直接引导到同一个表服务器,直到切换阶段成功。这还可以帮助简化回滚。进一步地,ts-源206经由api向csm-源210发送命令,以完成范围的切换,该范围属于源存储集群202上的第一分区208的一个或多个流到目的地存储集群204。
49.如箭头(4)所指示,csm-源210与csm-目的地226交互以完成范围切换过程。csm-源210 226密封在源存储集群202上未密封的范围并且完成属于第一分区208的每个流的范围的切换。例如,完成每个流的范围的切换可以涉及将针对陈旧范围元数据和新范围的元数据转移到csm-目的地226,并且csm-目的地226承担范围的所有权。csm-源210还可以将范围的访问属性更改为只读,从而使源存储集群处的范围无效。csm-源210还可以执行范围切换的清理和/或验证,以确保范围在目的地存储集群204上是完整的。更具体地,csm-源210确保目的地存储集群202上的对应流234中没有丢失源存储集群流212的范围。如果这些任何步骤失败或截止期限过去,那么ts-源206可以将失败错误代码返回到tm-源222并且恢复服务用户请求。在该示例中,tm-源222负责重试或继续中止切换阶段。进一步地,csm-源210执行释放分区命令以使分区映射内存中的分区条目无效。
50.如箭头(5)所指示,tm-源222通过针对键范围添加指向目的地存储集群204的重引导并且更新指示已完成来自源的分区切换的分区标志来更新自己的分区表228。所更新的分区标志指示源存储集群202的工作完成并且切换阶段在目的地存储集群204上未决。这样,如果tm-源222故障转移,那么tm-源222知道在哪里恢复切换阶段。源分区表228中的重引导条目可以包括含有集群名称的字符串,其代替服务键范围的表服务器。fe维护针对源存储集群和目的地存储集群的分区映射,因此源分区表228中到目的地分区表230的重引导条目可以是ts名称解析期间的内存中查找。每当分区映射条目无效时,fe获取所有分区信息,解析所有ts端点(服务相应键范围的表服务器),并且维护与每个分区条目相关联的所解析的端点对象,使得fe可以容易地服务请求。重引导条目不会增加对用户请求的开销,因为重引导条目用于在用户请求路径之外所执行的名称解析。
51.如箭头(6)所指示,tm-源222例如经由异步api调用通知tm-目的地224承担键范围的所有权。在(6a)处,tm-目的地224选择ts-目的地232来加载分区,并且针对所切换的分区来更新目的地分区表230中的ts-目的地细节,这可以类似于某些示例中的普通的(例如,不是在切换期间)分区表更新。tm-目的地224清除指示到目的地存储集群的分区切换正在进行中的标志,之后分区键范围被tm-目的地224所拥有。
52.在(6b)处,tm-目的地224指示ts-目的地232加载分区。ts-目的地232加载分区,并且在ts-目的地232上成功加载分区后,ts-目的地232可以删除输入到源存储集群202上的
含有分区切换状态的元数据记录(例如指示分区切换正在进行的记录)。一旦分区被加载到目的地存储集群204上,实时业务被重新打开并且针对实时业务的分区状态记录被更新。如果tm-目的地224在步骤(6a)中故障转移,那么tm-源222可以继续重试直到tm-源222接收确认。如果tm-目的地224在步骤(6b)中崩溃或重新启动,那么后续加载尝试可以可靠地检测到这是使用元数据流记录(例如,使用指示分区切换正在进行的记录)切换后的第一次加载。
53.如箭头(7a)所指示,tm-源222轮询/重试完成到tm-目的地224的所有权转移。更具体地,tm-目的地224在清除指示到目的地存储集群的分区切换正在进行的分区标志之后更新目的地分区表230。一旦tm-源222从tm-目的地224接收到确认,tm-源222就更新其分区表228中的分区标志,以指示分区切换已完成,这表示分区键范围的所有权转移到目的地存储集群204,如箭头(7b)所指示。重引导条目可以帮助将对该键范围的fe请求重引导到目的地存储集群204。
54.在重引导之后,csm-目的地226可以将内容从源存储集群202迁移到目的地存储集群204(或目的地无限池中的任何其他存储集群)而没有任何紧迫性。在一些示例中,匹配性策略可以被设置为默认不在所有流上移动数据,并且在某些流上以容量阈值来移动数据。这类匹配性策略可以被改进,或者新的策略被引入,使得某些流的范围被给予比其他流更高的优先权用于数据转移。
55.一旦分区的所有范围都被迁移到目的地存储集群204,tm-源222就可以使用账户迁移引擎上的csm-源api从源存储集群202删除分区流。清除源存储集群202上的流有助于释放源存储集群202上的容量。在一些示例中,tm-源222可以等待直到包括存储账户的所有分区的完整存储账户被转移到目的地存储集群204以删除分区流。迁移工具轮询源存储集群上的流中的每个流上的迁移状态,并且一旦属于流的所有范围都被迁移和验证,那么迁移工具可以继续进行清理。针对所转移的分区的流和分区条目可以大约在同一时间被清理。否则,如果基于流是孤立流的假设而不存在分区条目,那么分区维护可以清理流。
56.如上所述,在切换阶段400期间,针对分区切换的一个或多个分区标志和/或分区元数据流记录可以被更新。在示例准备阶段300结束时,源分区表228可以包括指示开始针对在源存储集群202上的分区切换作准备的状态的标志,目的地分区表230可以包括指示在目的地存储集群204上正在进行分区切换的标志,以及针对分区切换的元数据流记录可以包括指示针对源存储集群上的分区切换的准备正在进行中的记录。在一个具体示例中,在切换阶段400期间,发生了以下分区标志和分区元数据流记录更新。在由图4中的箭头(1)和(2)所指示的过程中,tm-源222可以更新源分区表228中的分区标志,以指示在源存储集群202上开始分区切换的状态。在由图4中的箭头(3)和(4)所指示的过程中,ts-源206可以在阻止到源存储集群202的实时业务(例如,到指示分区切换正在进行中的记录之后)更新分区元数据流记录。在由图4中的箭头(5)所指示的过程中,在范围切换之后,tm-源222可以更新源分区表228中的标志,以指示完成源存储集群202上的分区切换。在由图4中的箭头(6a)所指示的过程中,tm-目的地224可以在承担键范围的所有权之后更新目的地分区表230,例如,以清除目的地分区表230中与分区切换相关的标志。在由图4中的箭头(6b)所指示的过程中,ts-目的地232在分区加载成功后,可以清除针对分区切换的分区元数据流记录。在由图4中的箭头(7b)所指示的过程中,tm-源222在从tm-目的地224接收到关于键所有权转移
的确认之后,可以更新源分区表228中的分区标志以指示完成分区切换。在要被迁移的所有分区都被转移到目的地存储集群204并且lt清理被启动之后,tm-源222可以清除源分区表228中的所有对应分区条目。
57.在切换阶段400之后,目的地存储集群204的ts-156服务第一分区,该第一分区属于从源存储集群202迁移到目的地存储集群204的存储账户。第一分区的流和底层范围由cdm-目的地226拥有和管理。源分区表228包括针对第一分区的重引导条目,其现在指向目的地分区表230。进一步地,所引导到源存储集群202和目的地存储集群204两者上的fe角色的针对存储账户的用户请求被正确地重引导到目的地存储集群204的ts-156 232上的所切换的分区。
58.作为后台过程,流层可以针对正被迁移的范围来执行数据验证。流层还可以在范围数据的迁移期间执行故障处理和重试/警报。在一些示例中,执行所迁移的分区对象和底层数据的验证可以通过循环访问分区中的每个对象并且读取源存储集群和目的地存储集群上的对象、数据和可选的底层数据,以及使用基于地理流水线的验证进行比较。相比之下,对所公开的切换过程(准备阶段300和切换阶段400)的验证可以包括范围元数据验证、范围可到达性、表层索引有效性、范围数据完整性/验证和地理验证。
59.例如,在切换阶段期间,可以通过确定在切换时源流和目的地流中的范围和范围的顺序相同来发生范围元数据验证。csm-源210和csm-目的地226可以执行范围元数据验证。例如,在元数据迁移(准备步骤和终结步骤)期间,验证可以由csm api内联执行。如果范围丢失或顺序不正确,那么最终调用失败并且分区开始服务源存储集群202上的用户业务。
60.在分区被切换到目的地存储集群204之后,分布式计算系统确定是否所有范围都从目的地存储集群204可到达和可读取。当分区从源存储集群202被切换并且加载到目的地存储集群204上时,目的地存储集群204可以启动工作项以确定范围可到达性。针对分区中的每个流,清理器可以获取每个流中的所有范围并且尝试读取每个范围的至少一个字节。清理器还可以执行范围长度检查,以确保范围是可到达的并且对于csm-目的地226是已知的。如果范围不可到达,那么警报被发出。在一个具体示例中,确定包括针对大约200,000个服务的数据流的范围可到达性可以在将分区切换到目的地存储集群204之后的一小时内完成。
61.表层索引有效性清理可以帮助确定文件表是否包括指向范围(不是目的地流的部分的分区索引的范围部分)的悬空(“dangling”)指针。例如,分区内的清理器可以被用于确保范围在目的地存储集群204流上可到达,并且排序与源存储集群202流的排序相同。进一步地,tm-源可以要求垃圾收集(gc)主控器针对切换到(多个)目的地源集群的分区来调度具有零重写的高优先级gc运行。以这种方式,gc运行可能会发现索引中的任何悬空指针或具有范围可到达性的问题。由于这些是没有数据重写的高优先级gc运行,因此它们可以被预期将在正常的长期(lt)清理之前完成(例如,在数据迁移完成后的七天内)。在lt清理期间,源存储集群202上的空白分区被允许接受新业务并且源存储集群202上的所迁移的流经由csm-源api而从源存储集群202中被删除。在lt清理之前,驱动器可以检查最后一次gc运行时间已完成或未完成,并且如果任何gc运行未决,那么使lt清理失败。在一些示例中,强制lt清理还可以被用来跳过该检查。
62.范围数据完整性/验证可以在分区被切换到目的地存储集群204之后而被执行,用
户业务被路由到针对对应键范围的目的地存储集群204,并且范围数据被复制到目的地存储集群204。一旦该验证成功,源存储集群202上的范围就可以被删除。因为所有范围在分区切换之前和期间被密封,所以范围数据是不可变的并且可以在源存储集群和目的地存储集群上被比较。因此,对于正在被迁移的范围的数据验证可以被执行为与用户请求路径分离的后台过程。
63.由于分区可以在同一数据中心内、跨同一区域内的分区数据中心、和/或跨地理上分离的区域而被切换,因此地理验证扫描分区索引并且使用循环冗余校验(crc)来验证存储的数据的完整性。
64.如上所述,在准备阶段和/或切换阶段期间,分区切换可能失败,或者账户迁移可能被无意中止。进一步地,tm-源222、tm-目的地224、ts-源206和ts-目的地232中的一个或多个可以重新启动或失败。在这种实例中,tm主日志可以帮助重新启动/恢复操作。
65.当在tm-目的地224在目的地存储集群204上完成流创建期间或之后,在准备阶段300期间发生故障时,tm-源可以向tm-目的地224发出中止命令。中止命令可以删除流并且移除目的地分区表230中的条目。如果tm-目的地224命令因不可重试错误而失败,那么tm-源222可以发出相同的中止命令以触发清理。在另一示例中,在针对从ts源进行分区切换的准备期间或之后可能发生故障,其中ts源206与csm源210交互,以准备范围元数据切换。如果范围元数据准备已经完成,那么tm-源206可以发出中止命令或清除命令(例如,以重置分区切换)以中止csm-源操作或清除的取消。在该实例中,tm-源222还可以执行api调用来中止或清除tm-目的地224上的针对分区切换的准备。
66.在切换阶段期间也可能发生故障。在从ts-源调用进行分区切换期间或之后发生故障的示例中,tm-源222可以发出命令以中止从ts-源进行切换、清除目的地存储集群204以及恢复接受用户请求。tm-源222还可以发出命令,以中止针对从ts-源进行分区切换的准备,以清理目的地存储集群204上的流。在其他示例中,故障或中止处理可以包括所公开的回滚场景的任何合适的组合。进一步地,在分区切换完成之后的回滚可以跟随用于将分区从目的地存储集群切换到源存储集群的分区切换过程。
67.如上所述,从源存储集群到目的地存储集群的分区转移可以被执行为账户迁移过程的部分。账户调度器基于任意数目的标准来确定是否迁移存储账户以及迁移到哪些目的地集群。一旦存储账户及其(多个)目的地存储集群被选择,并且满足针对分区切换过程的任何准备步骤(例如,将源集群和目的地集群配对),地点服务(例如,全球和/或区域地点服务)例如通过与源存储集群和目的地存储集群的驱动器(例如,账户迁移引擎)交互来开始存储账户的迁移。
68.为了针对账户迁移作准备,迁移调度器评估属于存储账户的所有分区的流和范围的健康状况。例如,迁移调度器可以确定用于加密分区索引的加密键在源存储集群和目的地存储集群上是相同的。迁移调度器还可以确定每个流的范围的总数目、最大范围引用计数等,使得范围切换可以在目标时间量内完成。在一些示例中,每个分区切换可以在两分钟内完成。在更具体的示例中,每个分区切换可以在几秒内完成。
69.例如,执行账户迁移涉及隔离所有表中的账户键范围并且复制账户行。为了隔离账户键范围,目的地存储集群204的驱动器(例如,账户迁移引擎)创建账户行并且从源存储集群202复制所有xls所拥有的属性。对账户行的任何未来更新(诸如,由用户控制平面操作
产生的更新)将由xls显式添加到适当的分区和流。
70.源存储集群202的驱动器(例如,账户迁移引擎)向tm-源222发送包括账户名称和目的地存储集群的账户迁移命令。tm-源同时启动针对一个或多个分区的分区切换过程,其中每个分区被隔离并且加载平衡器(lb)在分区切换进行时被阻止。在一些示例中,分区切换可以在几分钟内完成。次级源存储集群的tm也可以接收与tm-源222相同的命令并且执行与主源存储集群相同的迁移过程。
71.一旦所有分区都被切换到目的地存储集群204,针对源存储集群202上的存储账户(在账户行中)的服务元数据利用针对存储账户的重引导信息而被更新,该重引导信息指向目的地存储集群204。账户表中的重引导条目可以包括目的地存储集群名称,因为源存储集群和目的地存储集群两者都加载这两个集群的账户表。内存中重引导在概念上类似于上述分区表重引导条目。
72.只要源存储集群和目的地存储集群两者被配对,登陆源存储集群202的用户请求将被正确解析到目的地分区表230。一旦存储账户被非虚拟化并且集群配对被移除(例如,作为迁移后终结化的部分,下面将更详细地描述),登陆源存储集群202(例如,由于过时的dns)的用户请求使用重引导条目而被分派给目的地存储集群204。
73.一旦源存储集群202的账户表包括到目的地存储集群204的重引导条目,源存储集群202上的分区表重引导条目就不再被需要了。因此,在账户被切换到目的地存储集群204之后,分布式计算系统可以清除源分区表228中针对所有被切换分区的重引导条目。登陆源存储集群202的fe的用户请求可以使fe查找每个存储集群的账户表以确定针对存储账户的主存储集群,并且查找主存储集群的分区表以确定哪个ts服务键范围。
74.迁移调度器可以在进行迁移后终结化之前监测由流层迁移到目的地集群的范围的进度(例如,使用api)。一旦存储账户的所有分区都被切换到目的地存储集群并且到目的地存储集群的范围迁移被验证,迁移调度器可以取消虚拟化正在被迁移的存储账户,使得针对存储账户的dns记录指向目的地存储集群204。以这种方式,目的地存储集群204可以接收客户请求,包括当客户请求涉及尚未将数据从源存储集群202迁移到目的地存储集群204时。迁移调度器还清除源存储集群202的账户表中的账户行,并且清理源存储集群202上的分区流。可选地,一旦所有存储账户(包括底层数据)已经从源存储集群202迁移到目的地存储集群204,迁移调度器就通过集群资源管理器(crm)来解除源存储集群与目的地存储集群的配对,例如停止运作源存储集群202。
75.如上所述,账户迁移涉及通过crm而将源存储集群与目的地存储集群两者配对。如果存储集群支持跨地理区域的迁移,相应次级存储集群可以由xls而被配对在一起,该xls向源主存储集群和源次级存储集群上的tm发送账户迁移命令。对于源存储集群和目的地存储集群两者,在主存储集群与次级存储集群之间可以不需要协调。
76.本文公开的示例不限于减轻个体存储集群等级下的容量、tps和cpu资源。在一些示例中,所公开的方法可以用于跨一组存储集群平衡cpu、tps和/或容量资源。图5描绘了用于跨存储集群组的账户迁移的两个存储集群组的示例配对500。在这个示例中,第一集群组502已经达到阈值资源限制(例如,cpu使用率、tps和/或容量),并且将第一存储集群组502与第二存储集群组504配对可能不是由于规模和/或性能原因的选择。为了减轻第一存储集群组502的负担,来自第一存储集群组502的存储集群1-1的账户可以被迁移到第二存储集
群组504的存储集群2-3。
77.所公开的示例还支持存储账户迁移到多个目的地集群,如图6所示。在这个示例中,源存储集群602并行执行到目的地存储集群604和606的账户迁移。这可以通过将存储账户并行地迁移到多个目的地存储集群来帮助加速旧硬件存储集群的停止运作。
78.图7图示了用于转移数据分区的示例方法700,该数据分区属于正从第一存储集群(源)被迁移到第二存储集群(目的地)的账户。方法700可以被实现为存储的指令,该指令可由计算系统(诸如,分布式计算系统102)执行。
79.在702处,方法700包括:确定数据分区满足用于从第一存储集群迁移到第二存储集群的迁移标准。如在704处所指示,确定数据分区满足迁移标准可以包括:基于tps、cpu使用率和存储容量中的一个或多个来确定第一存储集群在阈值处或阈值附近操作。如在706处所指示,确定数据分区满足迁移标准还可以包括:基于第一存储集群的停止运作来进行确定。如708处所指示,确定数据分区满足迁移标准还可以包括:确定包括数据分区的数据存储账户满足迁移条件。
80.在710处,方法700包括:在第一存储集群上准备要被转移的分区元数据。分区元数据描述数据分区内的一个或多个流和每个流内的一个或多个范围。如在712处所指示,准备分区元数据可以包括:隔离数据分区的键范围,阻止在键范围上的拆分和合并,以及持久化在分区表中开始数据分区的切换的意图。如在714处所指示,准备分区元数据还可以包括:在第一存储集群上,创建第二存储集群上的镜像流。
81.在716处,方法700包括:将分区元数据从第一存储集群转移到第二存储集群。在一些示例中,转移分区元数据可以经由异步api调用而被执行,如在718处所指示。
82.在720处,方法700包括:将与数据分区相关联的新事务引导到第二存储集群,包括当一个或多个范围区驻留在第一存储集群时。在722处,方法700包括:在第一存储集群上,将数据分区内的一个或多个范围的访问属性更改为只读。在724处,方法700包括:将包括每个范围内的底层数据的一个或多个范围从第一存储集群转移到第二存储集群。在726处,方法700包括:在第二存储集群上执行针对数据分区的新进入。
83.在728中,方法700包括:确定所迁移的数据存储账户是否包括要被转移的另一数据分区。如果所迁移的数据存储账户内存在附加的数据分区,那么方法700包括在730处,针对数据存储账户的每个数据分区重复方法步骤702至步骤726。将理解,在各种示例中,数据存储账户的多个数据分区可以被同时转移。当所迁移的数据存储账户不包括要被转移的附加数据分区时,方法700包括在732处,更新针对数据存储账户的dns服务器信息(例如,以将用户业务引导到第二存储集群)。
84.方法700中所执行的分区切换在分区边界处操作,使得一旦源存储集群将分区切换到目的地存储集群,针对该分区边界的新请求直接登录目的地存储集群上的分区,而无需等待存储账户的所有分区迁移完成。与涉及所有对象的深复制的迁移操作不同,本文所公开的示例允许业务被切换到目的地存储集群,而无需用户事务完全赶上恢复点目标(rpo)。
85.在一些实施例中,本文所描述的方法和过程可以被绑定到一个或多个计算设备的计算系统。特别地,这类方法和过程可以被实现为计算机应用程序或服务、应用编程接口(api)、库和/或其他计算机程序产品。
86.图8示意性地示出了计算系统800的非限制性实施例,其可以实施上述方法和过程中的一个或多个。计算系统800以简化形式示出。计算系统800可以采取一个或多个个人计算机、服务器计算机、平板计算机、家庭娱乐计算机、网络计算设备、游戏设备、移动计算设备、移动通信设备(例如,智能电话)和/或其他计算设备的形式。
87.计算系统800包括逻辑机802和存储机804。计算系统800可以可选地包括显示子系统806、输入子系统808、通信子系统810和/或图8中未示出的其他组件。
88.逻辑机802包括被配置为执行指令的一个或多个物理设备。例如,逻辑机可以被配置为执行作为一个或多个应用、服务、程序、例程、库、对象、组件、数据结构或其他逻辑构造的部分的指令。这类指令可以被实现为执行任务、实现数据类型、转换一个或多个组件的状态、实现技术效果或以其他方式达到所期望的结果。
89.逻辑机802可以包括一个或多个处理器,其被配置为执行软件指令。附加地或备选地,逻辑机可以包括一个或多个硬件或固件逻辑机器,其被配置为执行硬件或固件指令。逻辑机的处理器可以是单核或多核的,并且其上所执行的指令可以被配置用于依顺序、并行和/或分布式处理。逻辑机的个体组件可选地可以被分布在两个或更多个单独的设备当中,该设备可以被远程定位和/或配置用于协调处理。逻辑机的方面可以由远程可访问的联网计算设备虚拟化和执行,该计算设备被配置为云计算配置的。
90.存储机804包括一个或多个物理设备,其被配置为保存由逻辑机器可执行以实现本文所述的方法和过程的指令。当这类方法和过程被实现时,存储机804的状态可以被转换(例如,以保存不同的数据)。
91.存储机804可以包括可移除设备和/或内置设备。存储机804可以包括光存储器(例如,cd、dvd、hd-dvd、蓝光光盘等)、半导体存储器(例如,ram、eprom、eeprom等)和/或磁存储器(例如,硬盘驱动器、软盘驱动器、磁带驱动器、mram等)等。存储机804可以包括易失性设备、非易失性设备、动态设备、静态设备、读/写设备、只读设备、随机访问设备、顺序访问设备、地点可寻址设备、文件可寻址设备和/或内容可寻址设备。
92.将理解,存储机804包括一个或多个物理设备。然而,备选地,本文所述的指令的方面可以由通信介质(例如,电磁信号、光信号等)传播,该通信介质不被物理设备保存有限持续时间。
93.逻辑机802和存储机804的方面可以一起被集成到一个或多个硬件逻辑组件中。例如,这种硬件逻辑组件可以包括现场可编程门阵列(fpga)、程序和应用特定的集成电路(pasic/asic)、程序和应用特定的标准产品(pssp/assp)、片上系统(soc)和复杂可编程逻辑设备(cpld)。
94.术语“程序”可以用于描述被实现以执行特定功能的计算系统800的方面。在一些情况下,程序可以经由逻辑机802而被实例化,该逻辑机802执行由存储机804保存的指令。将理解,不同的程序可以从相同的应用、服务、代码块、对象、库、例程、api、函数等而被实例化。同样,相同的程序可以由不同的应用、服务、代码块、对象、例程、api、函数等实例化。术语“程序”可以涵盖个体或一组可执行文件、数据文件、库、驱动器、脚本、数据库记录等。
95.应理解,如本文所使用,“服务”是跨多个用户会话可执行的应用程序。服务可用于一个或多个系统组件、程序和/或其他服务。在一些实现中,服务可以在一个或多个服务器计算设备上运行。
96.当被包括时,显示子系统806可以被用于呈现由存储机804保存的数据的视觉表示。这种视觉表示可以采取图形用户界面(gui)的形式。由于本文描述的方法和过程改变由存储机保存的数据,并且因此转换存储机的状态,因此显示子系统806的状态同样可以被转换以可视地表示底层数据中的变化。显示子系统806可以包括利用几乎任何类型的技术的一个或多个显示设备。这类显示设备可以与逻辑机802和/或存储机804组合在共享的外壳中,或者这类显示设备可以是外围显示设备。
97.当被包括时,输入子系统808可以包括一个或多个用户输入设备或与其接口,所述设备是诸如键盘、鼠标、触摸屏或游戏控制器。在一些实施例中,输入子系统可以包括所选择的自然用户输入(nui)组件或与其接口。这样的组件可以是集成的或外围的,并且输入动作的转换和/或处理可以在板上或板外被处理。示例nui组件可以包括用于语音和/或声频识别的麦克风;用于机器视觉和/或手势识别的红外、彩色、立体和/或深度相机;用于运动检测和/或意图识别的头部跟踪器、眼球跟踪器、加速度计和/或陀螺仪以及用于评估大脑活动的电场感应组件。
98.当包括时,通信子系统810可以被配置为,将计算系统800与一个或多个其他计算设备通信地耦合。通信子系统810可以包括与一个或多个不同通信协议兼容的有线和/或无线通信设备。作为非限制性示例,通信子系统可以被配置,用于经由无线电话网络或者有线或无线局域网或广域网来通信。在一些实施例中,通信子系统可以允许计算系统800经由例如互联网的网络向其他设备发送消息和/或从其他设备接收消息。
99.另一示例提供在计算系统上指定的、一种将数据分区从第一存储集群迁移到第二存储集群的方法,每个存储集群经由一个或多个服务器计算机而被实现,方法包括:确定数据分区满足用于从第一存储集群迁移到第二存储集群的迁移标准,在第一存储集群上,准备要被转移的分区元数据,分区元数据描述数据分区内的一个或多个流和每个流内的一个或多个范围,将分区元数据从第一存储集群转移到第二存储集群,将与数据分区相关联的新事务引导到第二存储集群,包括当一个或多个范围驻留在第一存储集群处时;在第一存储集群上,将数据分区内的一个或多个范围的访问属性更改为只读,以及在第二存储集群上,执行针对数据分区新进入。在这种示例中,方法可以附加地或备选地包括,在将数据分区内的一个或多个范围的访问属性更改为只读之后,将包括每个范围内的底层数据的一个或多个范围从第一存储集群转移到第二存储集群。在这种示例中,确定数据分区满足迁移标准可以附加地或备选地包括基于每秒事务数(tps)、cpu使用率和存储容量中的一个或多个来确定第一存储集群正在阈值处或阈值附近操作。在这种示例中,确定数据分区满足迁移标准可以附加地或备选地基于第一存储集群的停止运作。在这种示例中,准备要被转移的分区元数据可以附加地或备选地包括:隔离数据分区的键范围,阻止在键范围上的拆分和合并,以及持久化在分区表中开始数据分区的切换的意图。在这种示例中,准备要被转移的分区元数据可以附加地或备选地包括:在第一存储集群上,创建第二存储集群上的镜像流。在这种示例中,将分区元数据从第一存储集群转移到第二存储集群可以附加地或备选地经由异步api调用而被执行。在这种示例中,确定数据分区满足用于从第一存储集群迁移到第二存储集群的迁移标准可以附加地或备选地包括:确定包括数据分区的数据存储账户满足用于从第一存储集群迁移到第二存储集群的迁移标准。在这种示例中,方法可以附加地或备选地包括:更新针对数据存储账户的域名系统(dns)服务器信息。在这种示例中,数
据分区可以附加地或备选地是被确定为满足迁移标准的多个数据分区中的第一数据分区,并且该方法可以附加地或备选地包括:在第一存储集群上准备要被转移的第二分区元数据,第二分区元数据描述第二数据分区内的一个或多个流和第二数据分区的每个流内的一个或多个范围,将第二分区元数据从第一存储集群转移到第二存储集群,将与第二数据分区相关联的新事务引导到第二存储集群,包括当第二数据分区内的一个或多个范围驻留在第一存储集群处时,在第一存储集群上,将第二数据分区内的一个或多个范围的访问属性更改为只读,以及在第二存储集群上,执行针对第二数据分区的新进入。
100.另一示例提供了一种计算系统,包括第一存储集群和第二存储集群,每个存储集群经由一个或多个服务器计算机而被实现,以及存储器保存指令,该指令由逻辑子系统可执行,以确定第一存储集群的数据分区满足用于将数据分区从第一存储集群迁移到第二存储集群的迁移标准,在第一存储集群上,准备分区元数据,该分区元数据描述数据分区中的一个或多个流以及每个流中的一个或多个范围,将分区元数据从第一存储集群转移到第二存储集群,将与数据分区相关联的新事务引导到第二存储集群,包括当一个或多个范围保留在第一存储集群上时,在第一存储集群上,将数据分区内的一个或多个范围的访问属性更改为只读,以及在第二存储集群上,执行针对数据分区的新进入。在这种示例中,指令可以附加地或备选地被可执行,以在将数据分区内的一个或多个范围的访问属性更改为只读之后,将包括每个范围内的底层数据的一个或多个范围从第一存储集群转移到第二存储集群。在这种示例中,指令可以附加地或备选地被可执行以通过基于每秒事务数(tps)、cpu使用率和存储容量中的一个或多个来确定第一存储集群正在阈值处或阈值附近操作而确定数据分区满足迁移标准。在这种示例中,指令可以附加地或备选地被可执行,以基于第一存储集群的停止运作确定数据分区满足迁移标准。在这种示例中,可执行以准备要被转移的分区元数据的指令可以附加地或备选地可执行,以隔离数据分区的键范围,阻止在键范围上的拆分和合并,以及持久化在分区表中开始数据分区的切换的意图。在这种示例中,可执行以准备要被转移的分区元数据的指令可以附加地或备选地可执行以在第一存储集群上,创建第二存储集群上的镜像流。在这种示例中,指令可以附加地或备选地可执行,以经由异步api调用将分区元数据从第一存储集群转移到第二存储集群。在这种示例中,指令可以附加地或备选地可执行,以通过确定包括数据分区的数据存储账户满足用于从第一存储集群迁移到第二存储集群的迁移标准来确定数据分区满足用于从第一存储集群迁移到第二存储集群的迁移标准。在这种示例中,数据分区可以附加地或备选地是被确定为满足迁移标准的多个数据分区中的第一数据分区,并且指令可以附加地或备选地可执行,以在第一存储集群上准备要被转移的第二分区元数据,第二分区元数据描述第二数据分区内的一个或多个流和第二数据分区的每个流内的一个或多个范围,将第二分区元数据从第一存储集群转移到第二存储集群,将与第二数据分区相关联的新事务引导到第二存储集群,包括当第二数据分区内的一个或多个范围驻留在第一存储集群处时,在第一存储集群上,将第二数据分区内的一个或多个范围的访问属性更改为只读,以及在第二存储集群上,执行针对第二数据分区的新进入。
101.另一示例提供了一种在计算系统上制定的、将数据存储账户从第一存储集群迁移到第二存储集群的方法,方法包括:针对数据存储账户内的多个键范围中的每个键范围,将针对键范围的元数据从第一存储集群转移到第二存储集群,一旦针对数据存储账户内的所
有键范围的元数据已经从第一存储集群被转移到第二存储集群,就更新针对数据存储账户的域名系统(dns)服务器信息,以及在第二存储集群处接收客户请求,包括当客户请求涉及尚未从第一存储集群被迁移到第二存储集群的数据时。
102.将理解,本文描述的配置和/或方法本质上是示例性的,并且这些特定实施例或示例不被认为具有限制意义,因为多个变型是可能的。本文描述的特定例程或方法可以代表任何数目的处理策略中的一个或多个处理策略。因此,所图示和/或所描述的各种动作可以所图示和/或描述的顺序、以其他顺序、并行地执行或被省略。同样,上述处理的顺序可以被改变。
103.本公开的主题包括各种过程、系统和配置以及本文公开的其他特征、功能、动作和/或特性的所有新颖和不明显的组合和子组合,以及其任何及所有等同物。
再多了解一些

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

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

相关文献