掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本公开涉及数据存储的技术领域。

背景技术

数据可以跨多个地理位置散布,以向访问和存储数据的用户提供有效的访问。另外,随着公共云存储的出现,可以通过将一些数据存储到公共云存储同时在私有云或本地存储中维持其他数据来降低维持多个数据中心的成本。此外,存储用户期望无缝访问可能跨他们自己的地理上分散的存储位置以及跨公共云存储位置散布的数据。例如,计算装置的集群通常可以用于向用户提供高效且无缝的存储服务。一些集群系统可以依赖于在集群的成员之间传递的周期性心跳通信信号,诸如用于监测集群的其他成员和其他集群资源。然而,使用周期性心跳通信用于监测集群系统内的资源并且用于对心跳的丢失做出反应的基本技术通常不会扩展到诸如互联网的广域网(WAN)。

发明内容

一些实施方式包括第一地理位置处的多个计算装置中的将数据划分为多个分区的计算装置。例如,第一地理位置处的至少两个计算装置可以维持多个分区中的第一分区的数据的副本,并且可以交换与第一分区相关的周期性心跳通信。第一地理位置处的计算装置可以确定第二地理位置处的计算装置具有比维持第一分区的第一位置处的计算装置更低的访问负载的频率。计算装置可以将第一分区的数据迁移到第二地理位置处的计算装置,以使第二位置处的至少两个计算装置维持第一分区的数据并且交换与第一分区相关的周期性心跳通信。

附图说明

参考附图阐述了详细的描述。在附图中,附图标记的(一个或多个)最左侧数字标识该附图标记首次出现在的附图。相同附图标记在不同附图中的使用指示类似或相同的项目或特征。

图1图示了根据一些实施方式的能够存储和管理元数据的系统的示例逻辑布置。

图2图示了根据一些实施方式的能够将数据和元数据存储到非同构存储系统的地理上分散的系统的示例架构。

图3是图示根据一些实施方式的分区组的示例逻辑配置的框图。

图4是图示根据一些实施方式的系统中的分区协调的示例的框图。

图5是图示根据一些实施方式的分区拆分的示例的示意图。

图6图示了根据一些实施方式的复合分区映射的示例数据结构。

图7图示了根据一些实施方式执行分区拆分的示例。

图8图示了根据一些实施方式的在分区拆分之后的迁移的示例。

图9图示了根据一些实施方式的在完成分区拆分和迁移之后的当前状态的示例。

图10图示了根据一些实施方式的用于负载平衡的示例伪代码。

图11是图示根据一些实施方式的用于分区拆分和负载平衡的示例过程的流程图。

图12图示了可以用于实施本文描述的系统的至少一些功能的(一个或多个)服务计算装置的选定示例部件。

具体实施方式

本文中的一些示例涉及用于分布式计算机系统的技术和布置,所述分布式计算机系统包括能够部署具有跨越多个云系统、多个站点和多个地理位置的多个节点的集群的混合云结构。此外,一些实施方式可以包括用于维持跨WAN的跨越多个地理位置的大型集群内的可用性的高效解决方案。例如,本文中的系统可以跨混合云系统同步数据,以向存储用户提供成本管理灵活性,诸如通过实现跨一个或多个网络位置处的各种不同存储服务的备份和数据移动。例如,在本文公开的混合云系统中,该系统可以采用可从各种不同的服务提供实体获得的网络存储来存储和同步数据。

一些示例提供资源的分开和系统的管理,诸如通过分开用于集群管理服务和数据管理服务的计算、网络和存储。类似地,本文中的一些示例包括数据和元数据管理服务的分开。因此,数据可以存储在与存储与数据相关的元数据的存储位置完全不同的存储位置处。这使得元数据能够完全存储在一个位置,或替代地,跨许多位置散布,而不管对应的数据存储在何处。

本文中的实施方式包括通过将与数据相关联的元数据分成跨地理位置分散的分区来操作的元数据管理层。例如,每个分区可以作为分区组操作,例如,可以存在跨系统存储在不同计算装置(也称为“节点”)上的元数据的相同分区的至少三个或更多个副本以用于提供数据保护和高可用性。在一些情况下,相同分区组的成员周期性地向彼此发送心跳通信,以用于监测彼此的可用性并且用于基于心跳响应或其缺乏来采取动作。然而,跨WAN(例如,互联网)发送心跳通信可能是有问题的,诸如由于间歇性延迟、延迟的响应时间或可能引起延迟或以其他方式干扰心跳通信的其他网络问题。

因此,为了避免这些问题,本文中的一些示例可以包括用于元数据分区组的配置准则,即使集群本身(例如,其可以包括整个元数据数据库)可以跨多个分布式地理位置延伸,该配置准则也可以将心跳通信的使用限制到相同地理位置内的节点。

本文中的一些示例可以包括分开元数据存储和数据存储,诸如通过为每一个提供单独的监测和管理。例如,本文中的系统可以包括用于与监测和管理元数据节点分开地监测数据节点的集群监测。此外,在一些示例中,元数据可以被划分为更小的可易于管理的独立区段,在本文中称为分区。例如,可以通过创建包含在每个分区中的元数据的至少三个副本并且通过确保相同分区的每个副本跨不同的节点分布来使得分区高度可用且冗余。如上所述,节点可以是计算装置,诸如管理一个或多个分区的物理或虚拟机计算装置。此外,本文中的节点可以使用管理相同分区的相同组(例如,其可以被称为“分区组”)中的相应节点之间的心跳通信来彼此监测。

当本文中的分区增长到超过某一大小(诸如,增长到管理分区的相应节点的性能可能劣化的程度)或可能大于阈值大小等时,可以将分区拆分成两个或更多个分区。一旦分区被拆分,在一些示例中,所得到的分区中的一个或多个可以被移动到不同的位置,诸如以避免热点。例如,由拆分产生的分区可以被本地协调服务标记为要移动的可能候选。分区标识符(ID)可以诸如基于用于选择用于拆分的原始父分区的准则存储在优先级队列中。本地协调服务可以至少部分地基于参与集群的系统中的相应节点上的当前负载来确定要将分区移动到的位置。

作为一个示例,协调服务可以参考由从跨地理位置分散的所有系统接收的多个分区映射组装的复合分区映射,以确定被最轻地负载的位置。如果所有位置被相等地负载,则可以随机挑选特定位置。例如,每个地理位置处的每个协调服务分别可以维持特定于其位置(例如,相对于每一端处的网关数量)的负载信息。当在特定位置处达到阈值负载量时,该位置处的协调服务可以向所有协调服务发出请求以找到竞争者以从该位置卸载一个或多个分区。

从其他协调服务接收的用于迁移分区的请求可以基于到达顺序来排队和服务。当特定协调服务接受作为用于接收特定分区的卸载的目的地时,接受迁移的对应位置可以被锁定,并且可以被配置为不接受来自其他协调服务的附加负载平衡请求。锁定状态可以包括当前将分区转移到特定协调服务的远程协调服务和/或节点的ID。此外,当分区被移动到不同的地理位置时,本文中的实施方式可以确保该分区的所有副本都被移动到相同的地理位置,使得心跳继续被包含在相同的本地系统内(例如,局域网(LAN)),而不是必须通过WAN发送。在正在迁移的分区的所有副本已经完全迁移之后,可以从相应的协调服务中移除接收分区迁移的特定地理位置处的特定协调服务的锁定状态。

在本文中的一些示例中,每个地理位置处的每个系统可以提供元数据网关服务,并且可以通过网络与一个或多个网络存储系统通信。例如,第一网络存储系统可以由采用第一存储协议和/或软件栈的第一服务提供商提供,第二网络存储系统可以由采用不同于第一存储协议/栈的第二存储协议和/或软件栈的第二服务提供商提供,等等。该系统可以接收对象,并且可以确定对象的存储位置,诸如在第一网络存储系统、第二网络存储系统等处。该系统可以基于接收和存储对象来更新元数据数据库。

跨多个异构系统存储和同步数据和元数据可能是具有挑战性的。例如,在这些异构系统中使用的软件栈可以由不同的实体配置和控制。此外,特定于复制的改变可能不一定在所有各种不同的系统中都按需要起作用。然而,本文中的一些示例可扩展为在混合云拓扑上存储数万亿对象,该混合云拓扑可以包括跨多个不同地理位置分布的多个公共和私有云计算装置。

出于讨论目的,在用于管理元数据存储的多个地理上分散的系统的环境中描述了一些示例实施方式。然而,本文中的实施方式不限于所提供的特定示例,并且可以扩展到其他类型的计算系统架构、其他类型的存储环境、其他存储提供商、其他类型的客户端配置、其他类型的数据等,如本领域技术人员鉴于本文中的公开内容将显而易见的。

图1图示了根据一些实施方式的能够存储和管理元数据的系统100的示例逻辑布置。如上所述,在本文中的一些示例中,对象数据可以存储在与对应于对象数据的元数据完全不同的存储位置处。此外,在一些情况下,元数据可以存储在跨多个分散的地理位置散布的元数据数据库中,所述多个分散的地理位置一起可以用作集群。

在所图示的示例中,第一系统102(1)位于地理位置A处,并且包括多个元数据源104(1)、104(2)和104(3),诸如元数据源104(1)、104(2)和104(3)网关等。此外,第一系统102(1)可以能够通过一个或多个网络106与位于地理位置B的第二系统102(2)进行通信,地理位置B可以是与地理位置A不同的地理位置。第二系统102可以包括多个元数据源104(4)、104(5)和104(6)。此外,虽然在该示例中示出了两个系统102,但是本文中的实施方式不限于任何特定数量的系统102或地理位置,因为本文中的实施方式可扩展到能够存储数万亿数据对象的非常大的系统。此外,虽然在每个系统102处图示了三个元数据源104,但是在其他示例中,可以存在与每个系统相关联的更大数量的元数据源104。

另外,系统102(1)、102(2)、...、能够通过一个或多个网络与用户装置108通信。例如,每个用户装置108可以是任何合适类型的计算装置,诸如台式计算机、膝上型计算机、平板计算装置、移动装置、智能电话、可穿戴装置、终端和/或能够通过网络发送数据的任何其他类型的计算装置。用户112可以诸如通过相应的用户账户、用户登录凭证等与用户装置108相关联。此外,用户装置108可以能够通过一个或多个网络106、通过单独的网络或通过任何其他合适类型的通信连接与系统102通信。

在一些示例中,可以存在诸如基于与第一系统102(1)的地理接近度来访问第一系统102(1)的用户112的第一组114,并且基于与第二系统102(2)的地理接近度来访问第二系统102(2)的用户112的第二组116,等等。如上所述,在一些情况下,与访问在地理上更远离相应用户的地理位置的系统102相比,使得用户112能够访问物理上更靠近相应用户112的元数据网关可以减少延迟时间。

每个元数据源104可以包括一个或多个物理或虚拟计算装置(也称为“节点”),其可以被配置为存储和提供对应于所存储的数据的元数据。例如,用户112可以将数据(诸如对象数据)存储到系统102,并且在一些示例中,可以访问、检索、改变、更新、删除或迁移所存储的数据。在一些情况下,由用户112存储的数据可以存储在一个或多个数据存储位置118处。例如,数据存储位置118可以包括公共网络存储(例如,公共云存储)、私有网络存储(例如,私有云存储)、本地存储(例如,本地提供给相应系统102的存储)和/或其他私有或公共存储选项中的一个或多个。

一个或多个网络106可以包括任何合适的网络,包括广域网(诸如互联网);局域网(LAN)(诸如内联网);无线网络(诸如蜂窝网络)、本地无线网络(诸如Wi-Fi)、和/或短程无线通信(诸如

在所图示的示例中,由元数据源104存储的元数据可以被分割成多个分区(图1中未示出)。每个分区可以作为组操作,例如,可以存在被分发到相同系统内的不同节点的相同分区的至少三个或更多个副本,以用于提供冗余保护和高可用性。在当前设计中,相同分区组的成员可以周期性地向彼此发送心跳通信120,以用于监测彼此的可用性并基于心跳响应采取一个或多个动作。例如,心跳通信120可以是空消息、具有心跳指示符的消息等,其可以由领导者节点周期性地(诸如每200ms、每500ms、每秒、每2秒等)发送到其跟随者节点。在一些情况下,当一个或多个跟随者节点在阈值时间段内没有接收到心跳消息120时,跟随者节点可以发起选举新领导者节点的过程,诸如通过基于RAFT算法等建立共识。如上所述,由于跨WAN维持心跳通信可能是禁止的,因此本文中的示例可以包括使用包括大小和位置的若干形成准则形成的元数据分区组,使得即使多个系统102可以以其他方式形成用于跨多个不同地理位置分发数据的集群配置,心跳通信也限于相同的地理位置(例如,相同的LAN)。

图2图示了根据一些实施方式的能够将数据和元数据存储到非同构存储系统的地理上分散的系统200的示例架构。在一些示例中,系统200可以对应于上面关于图1讨论的系统100。该示例中的系统200包括在地理上彼此分散的第一系统102(1)、第二系统102(2)、第三系统102(3)、...、等。另外,虽然在该示例中描述了第一系统102(1)的配置的细节,但是第二系统102(2)、第三系统102(3)等的配置可以是类似的。

第一系统102(1)包括多个服务计算装置202(1)、202(2)、202(3)、...、等,并且其中的至少一些能够通过一个或多个网络106与多个网络存储系统(诸如第一提供商网络存储系统204(1)、第二提供商网络存储系统204(2)、...、等)通信。如上所述,在一些情况下,网络存储系统204的每个提供商可以是与其他提供商无关的不同实体。仅举几例,商业网络存储提供商的示例包括AMAZON WEB SERVICES(亚马逊WEB服务)、MICROSOFT(微软)AZURE、GOOGLE CLOUD(谷歌云)、IBM CLOUD(IBM云)和ORACLE CLOUD(甲骨文云)。在一些示例中,网络存储系统204可以被称为“云存储”或“基于云的存储”,并且在一些情况下,可以实现比在服务计算装置202处可用的本地存储更低成本的每千兆字节存储解决方案。另外地或替代地,在一些示例中,存储提供商可以是私有的或以其他方式专有的存储提供商,诸如以便仅向例如与服务计算装置202、系统102等相关联的特定用户、实体等提供访问。专有系统的示例可以包括HITACHI CONTENT PLATFORM的配置。

服务计算装置202能够通过(一个或多个)网络106与一个或多个用户计算装置108和一个或多个管理员计算装置110进行通信。在一些示例中,服务计算装置202可以包括可以以任何数量的方式体现的一个或多个服务器。例如,服务计算装置202的程序、其他功能部件、以及数据存储的至少一部分可以在至少一个服务器上(诸如在服务器集群、服务器群、数据中心、云托管的计算服务等中)实施,但是可以另外地或替代地使用其他计算机架构。下面关于图12讨论服务计算装置202的附加细节。另外,服务计算装置202可以能够通过一个或多个网络207彼此通信。在一些情况下,一个或多个网络207可以是LAN、本地内联网、直接连接、本地无线网络等。

服务计算装置202可以被配置为分别经由用户装置108向用户112提供存储和数据管理服务。作为若干非限制性示例,用户112可以包括执行商业、企业、组织、政府实体、学术实体等的功能的用户,并且在一些示例中,其可以包括存储非常大量的数据。然而,本文中的实施方式不限于系统200以及本文描述的其他系统和布置的任何特定用途或应用。

每个用户装置108可以包括可以在用户装置108上执行的用户应用214的相应实例,诸如用于与在一个或多个服务计算装置202上可执行的用户web应用216通信,诸如用于发送用户数据以存储在网络存储系统204上和/或用于通过数据指令218等从网络存储系统204接收存储的数据。在一些情况下,应用214可以包括浏览器或可以通过浏览器进行操作,而在其他情况下,应用214可以包括具有使得能够通过一个或多个网络106与用户web应用216进行通信的通信功能的任何其他类型的应用。

在系统200的一些示例中,用户112可以将数据存储到其相应的用户装置108与之通信的(一个或多个)服务计算装置202,并从其接收数据。因此,服务计算装置202可以为用户112和相应的用户装置108提供存储。在稳态操作期间,可能存在周期性地与服务计算装置202通信的用户108。

另外,管理员装置210可以是任何合适类型的计算装置,诸如台式计算机、膝上型计算机、平板计算装置、移动装置、智能电话、可穿戴装置、终端和/或能够通过网络发送数据的任何其他类型的计算装置。管理员220可以与管理员装置210相关联,诸如通过相应的管理员帐户、管理员登录凭证等。此外,管理员装置210可以能够通过一个或多个网络106、207、通过单独的网络或通过任何其他合适类型的通信连接与(一个或多个)服务计算装置202通信。

每个管理员装置210可以包括管理员应用222的相应实例,管理员应用222可以在管理员装置210上执行,诸如用于与在一个或多个服务计算装置202上可执行的管理web应用224通信,诸如用于发送用于管理系统200的管理指令、以及用于发送用于存储在(一个或多个)网络存储系统204上的管理数据和/或用于从(一个或多个)网络存储系统204接收所存储的管理数据,诸如通过管理指令226等。在一些情况下,管理员应用222可以包括浏览器或可以通过浏览器进行操作,而在其他情况下,管理员应用222可以包括具有使得能够通过一个或多个网络106与管理web应用224进行通信的通信功能的任何其他类型的应用。

服务计算装置202可以执行存储程序230,该存储程序230可以向网络存储系统204提供访问,诸如用于使用数据同步操作232向网络存储系统204发送要存储的数据以及用于从网络存储系统204或从本地存储检索所请求的数据。另外,存储程序230可以管理由系统200存储的数据,诸如用于管理数据保留期、数据保护级别、数据复制等。

服务计算装置202还可以包括元数据数据库(DB)234,该元数据数据库(DB)234可以被划分为多个元数据DB部分(称为分区240),并且该元数据数据库(DB)234可以跨多个服务计算装置202分布。例如,包括在元数据DB 234中的元数据可以用于管理存储在网络存储系统204处的对象数据236和本地存储在系统102处的本地对象数据237。元数据DB 234可以包括关于对象数据236的许多元数据,诸如关于个体对象的信息、如何访问个体对象、对象的存储保护级别、存储保留期、对象所有者信息、对象大小、对象类型等。此外,元数据网关程序238可以管理和维持元数据DB 234,诸如用于在存储新对象、删除旧对象、迁移对象等时更新元数据DB 234、以及对访问数据的请求作出响应、创建新分区240、在不同地理位置处的系统102之间提供协调服务等。

图3是图示根据一些实施方式的分区组300的示例逻辑配置的框图。分区组300可以包括第一服务计算装置202(1)(第一节点)、第二服务计算装置202(2)(第二节点)和第三服务计算装置202(3)(第三节点)。在该示例中,分区组300用于包括元数据数据库部分304的第一分区302。如上所述,系统中可以存在多个分区,每个分区可以包括上面讨论的元数据数据库134的不同部分。随着元数据数据库134增长,变得太大的分区可以被拆分成多个新分区。此外,心跳通信306可以在第一分区302的分区组300的成员之间交换。

分区组300可以包括在上面参考图2讨论的系统200中。整个元数据数据库134可以类似于包括可使用相应密钥定位的元数据项的大逻辑空间。在一些示例中,密钥可以是到相应元数据项的数据路径的密码散列、或由用户提供的任何其他相关输入。元数据密钥空间范围可以部分地取决于所采用的密钥的宽度。合适的示例可以包括SHA-256密钥,其包括256个比特并且因此提供0-2256的范围。

作为一个示例,可以通过将(0-2256)的元数据空间划分为更小的可管理范围(例如0-228、228-256等)来管理元数据。范围大小可以是可配置的,并且可以动态地改变为更小或更大的大小。如上所述,每个分区可以被复制到跨构成该分区的分区组的一组可用节点散布的一定数量的冗余副本。三个副本通常足以形成高度可用的活动组,其中来自分区组中的三个节点中的一个节点被选举或以其他方式指定为领导者,而分区组中的其余两个节点被指定为跟随者。例如,可以通过相应分区组的领导者节点来执行给定分区中的数据的所有读取和写入。领导者节点可以被配置为保持跟随者节点中的每一个被更新并且确保对跟随者节点中的每一个执行复制以维持分区组内的数据一致性和冗余。在一些示例中,本文中的系统可以采用共识协议以进行领导者选举。合适的一致性算法的示例可以包括RAFT算法。每个分区的领导者节点和跟随者节点可以独立地操作,并且不需要知道系统内的其他分区。因此,整个分区的故障不会影响系统内的其他分区。

如上所述,分区组中的领导者和跟随者可以通过周期性心跳306彼此通信和监测。此外,系统中的节点可以包括多于一个分区,并且可以形成具有用于不同分区的不同节点集合的分区组。

另外,元数据数据库134中的元数据可以被组织为一组用户定义的模式(图3中未示出)。每个模式可以使用其自己的密钥空间来划分,以基于相应的模式适应不同的增长模式。例如,系统中的对象的数量可以与用户的数量或文件夹的数量(在一些示例中也称为桶)非常不同地增长。

图4是图示根据一些实施方式的系统200中的分区协调的示例的框图。例如,分区协调服务402可以在地理上分散的系统102中的每一个内执行。例如,第一系统102(1)可以包括第一协调服务402(1),第二系统102(2)可以包括第二协调服务402(2),第三系统102(3)可以包括第三协调服务402(3)等。作为一个示例,每个相应的协调服务402可以通过在相应系统102中包括的服务计算装置202中的一个上执行元数据网关程序238来提供。

协调服务402可以管理创建分区、拆分分区、移除分区和平衡跨执行它的相应系统102的分区,如在404处所指示的。协调服务402可以构建执行它的相应系统102中的所有分区的全局视图,以及通过从地理上分散的系统102中的其他系统接收分区信息。

例如,在所图示的示例中,第一协调服务402(1)可以通过在地理位置A处通过整个第一系统102(1)从所有领导者节点收集信息来构建第一分区映射406。在该示例中,存在四个服务计算装置202(1)-202(4),每个服务计算装置分别管理三个分区。特别地,第一服务计算装置202(1)包括第一分区408、第二分区410和第四分区412。第二服务计算装置202(2)包括第一分区408、第三分区414和第四分区412。第三服务计算装置202包括第一分区408、第二分区410和第三分区414。第四服务计算装置202包括第二分区410、第三分区414和第四分区412。

服务计算装置202(1)-202(4)可以提供元数据网关服务416,诸如通过每个服务计算装置执行用于将元数据存储到相应的分区并且用于从由相应服务计算装置202管理的相应分区检索元数据的元数据网关程序238的实例。此外,每个分区的相应分区组的领导者和跟随者可以通过相应分区的周期性心跳来彼此通信和监测。心跳通信的若干示例被图示,并且包括:第一服务计算装置202(1)与第二服务计算装置202(2)之间的针对第一分区408和第四分区412的心跳通信420;第二服务计算装置202(2)和第四服务计算装置202(4)之间的针对第三分区414和第四分区412的心跳通信422;第四服务计算装置202(4)和第三服务计算装置202(3)之间的针对第二分区410和第三分区414的心跳通信424;以及第三服务计算装置202(3)与第一服务计算装置202(1)之间的针对第一分区408和第二分区410的心跳通信426。

此外,为了图示清楚起见,未示出服务计算装置202(1)-202(4)之间的其他心跳通信。因此,在该示例中,第一系统102(1)中的每个节点可以包括多于一个分区,并且可以形成具有用于不同分区408-414的不同节点集合的分区组。

如上所述,第一协调服务402(1)可以从服务计算装置202(1)-202(4)获得分区信息以构建第一分区映射406。下面关于图6讨论示例分区映射。另外,第一协调服务402(1)可以与远程协调服务(诸如第二系统102(2)处的第二协调服务402(2)和第三系统102(3)处的第三协调服务402(3))交互,以构建整个地理上分散的系统200的复合分区映射430,以从其他地理位置处的所有系统102(2)、102(3)、...接收相应的分区映射。例如,第一协调服务402可以从第二协调服务402(2)接收第二分区映射432,并且从第三协调服务402(3)接收第三分区映射434。作为回报,第一协调服务402(1)可以将第一分区映射406发送给第二协调服务402和第三协调服务402。类似地,第二协调服务402(2)和第三协调服务402(3)可以分别交换分区映射432和434。因此,每个地理上分散的系统102可以构建其自己的复合分区映射430。

可以执行相应的元数据协调服务402(1)、402(2)、402(3)、...以确定何时分别在本地系统102(1)、102(2)、102(3)、...处拆分分区。例如,协调服务402可以不断地监测相应系统102处的分区的大小,并且可以使用大小阈值来确定何时拆分分区。另外,在分区被拆分之后,协调服务402可以采用复合分区映射430来在跨各种不同地理位置处的系统102重新平衡分区以优化性能。为了实现跨WAN在不同地理位置之间的信息的高效交换,每个系统102可以在本地执行协调服务402的实例。在每个地理位置处执行的协调服务402与通过在服务计算装置202上执行元数据网关程序238的单独实例而提供的本地元数据网关服务进行通信,并且在适当的时间发送命令以拆分和发起分区移动以便进行负载平衡。每个协调服务402可以采用轻量级消息传递协议来周期性地将该位置的分区映射交换给地理中的其他分区映射。

另外,因为分区可以跨地理位置散布,所以在一些示例中,可以确保到所有地理位置的连接性是充分可用的以满足到达所述地理位置中的一个地理位置的请求。作为示例,假设对于例如存储在地理位置B处的第二系统102(2)处的分区,请求到达地理位置A处的第一系统102(1)。例如,假设该请求由元数据网关服务416接收。元数据网关服务416可以首先尝试查看请求是否映射到存在于当前位置处的密钥空间范围(即,分区)。当不可用时,元数据网关服务416可以咨询第一协调服务402(1)以确定请求所属于的分区的地理位置。一旦被识别,元数据网关服务416就可以临时高速缓存目标分区的分区信息,以使得能够高效地查找可能被接收的任何后续请求。例如,元数据网关服务416可以随后通过直接向远程元数据网关服务440或442查询该分区密钥空间范围来查找条目,并且可以在查找成功完成时对最终用户做出响应。

图5是图示根据一些实施方式的分区拆分的示例500的示意图。一些示例可以采用动态分区拆分以用于弹性且可扩展的增长。例如,并非所有数据都可能在部署时被摄取。因此,系统可以以一小组分区(例如,至少一个分区,诸如第一分区502(1))开始。随着摄取数据量增长,分区可以被拆分,并且分区的数量可以随着数据量扩展而增加。

在所图示的示例中,如在504处所指示的,假定最初在第一分区502(1)中存在N个对象的元数据(MD)。随着对象(和所得到的元数据)的数量保持增加,协调服务可以确定拆分第一分区502(1),如在506处所指示的。因此,第一分区502(1)中的元数据可以被划分为第二分区502(2)和第三分区502(3)。例如,如在508处所指示的,假设现在存在2N个对象的元数据(MD)。另外,随着对象的数量和对应的元数据随时间继续增加,至少第二分区502(2)可以被拆分,如在510处所指示的,以生成第四分区502(4)和第五分区502(5)。如在512处所指示的,假设现在存在约4N个对象的元数据(MD)。另外,随着对象和元数据的数量随时间继续增加,至少第三分区502(3)可以被拆分,如在510处所指示的,以生成第六分区502(6)和第七分区502(7),并且元数据的量现在可以等于约6N个对象的元数据,如在516处所指示的。因此,随着系统中的数据量和资源量增加,分区可以继续被拆分和扩展。

图6图示了根据一些实施方式的复合分区映射430的示例数据结构。在该示例中,复合分区映射430包括分区ID 602、密钥空间名称604、密钥空间范围606、节点映射608、分区大小610、位置ID 612和访问负载的频率614。分区ID 602可以标识个体分区。密钥空间名称604可以标识个体密钥空间。密钥空间范围606可以标识每个分区的每个密钥空间范围的开始散列值和结束散列值。节点映射608可以标识每个分区的相应分区组中所包括的服务计算装置202中的每一个,并且还可以标识服务计算装置202中的哪一个是分区组的领导者。在该示例中,计算装置的IP地址用于标识相应的节点,但是在其他示例中可以使用任何其他系统唯一标识符。分区大小610可以诸如以兆字节为单位指示每个分区的当前大小。位置ID 612可以标识所标识的分区中的每一个的地理位置。

访问负载614的频率也可以被称为分区上的负载,并且可以指示在最近的时间单位(例如每小时、每6小时、每12小时、每天、每几天、每周等)内接收的数据访问请求的数量。作为一个示例,可以收集在每个客户端调用期间对每个分区进行的内部调用的数量作为确定每个分区上的访问负载的频率的度量。该访问频率度量可以用作附加属性,以考虑跨系统平衡分区以及位置和分区大小。例如,如上所述,分区通常是密钥空间内的范围。如果特定的密钥空间范围形成热路径,则下面另外讨论的平衡算法可以使系统拆分该密钥空间范围的分区并将新分区中的至少一个移动到不同的物理节点(其可以基于如本文另外讨论的其他平衡准则来确定)以平衡物理节点上的负载。

例如,复合分区映射430可以根据分区ID 602和位置ID来标识每个分区,并且可以包括上面讨论的系统200中的来自包含分区的地理上分散的系统102(1)、102(2)、102(3)、...中的每一个的所有分区。此外,上面关于图4讨论的个体系统分区映射406、432、434等可以具有类似于复合分区映射430的数据结构,但是可以仅包括分区ID 602和用于包括在相应本地系统102中的分区的对应信息604-612。

如上所述,关于图4,协调服务402的个体实例可以分别依赖于分区映射430或该系统102(1)、102(2)、102(3)的相应本地分区映射406、432、434,以用于确定何时拆分在相应本地系统102处维持的分区。作为一个示例,协调服务402可以将所述分区的大小确定为主要准则。因此,如果分区的大小超过阈值大小,则协调服务可以确定该分区应当被拆分成两个分区。另外,如果分区密钥空间的访问速率在指定的时间段内超过阈值,则协调服务402还可以拆分分区。例如,如果特定分区或由服务计算装置202中的特定服务计算装置托管的多个分区的访问负载614的频率在指定时间段内超过阈值量,则(一个或多个)服务计算装置202可能过载,并且因此,一个或多个分区可以被拆分并迁移到其他计算装置。拆分和迁移分区的决定还可基于服务计算装置202中的相应服务计算装置上可用的剩余存储空间的量。

用于拆分所选分区的拆分操作最初仅导致对相应本地分区映射的更新。取决于系统200中的可用资源,与拆分分区相对应的元数据随后可被迁移到在相同地理位置处或在不同地理位置处的不同服务计算装置202。更新的本地分区映射可以与用于对地理上分散的系统进行负载平衡的数据迁移请求一起被发送到系统200上的其他地理位置处的其他协调服务。可以执行下面关于图10和图11另外讨论的分区平衡算法,以确定拆分分区将被迁移到的系统102和地理位置。

图7图示了根据一些实施方式执行分区拆分的示例700。图7图示了分区的初始拆分,而图8和图9图示了为了完成跨多个位置的数据的迁移和重新平衡而执行的后续附加操作。图7的示例图示了两个地理上分开的系统,即,地理位置A处的第一系统102(1)和地理位置B处的第二系统102(2)。图7的示例还图示了在执行拆分之前的第一系统102(1)的第一本地分区映射部分702和在执行拆分之后的第一本地分区映射部分702(1)。图7还包括在执行拆分之前并且在任何数据被迁移到第二系统102(2)之前的第二系统102(2)的本地分区映射部分704。

在该示例中,本地分区映射部分包括列706以指示在相应的本地分区映射部分702、702(1)、704中列出的任何分区是否已经达到拆分阈值。如在708处所指示的,已经达到分区ID“1”的拆分阈值。用于确定是否已经达到拆分阈值的准则的示例已经在上面关于图6讨论,并且在下面关于图10和图11进一步讨论。例如,本地协调服务402(1)可能已经确定已经达到分区1的拆分阈值,并且基于该确定,协调服务402可以将分区1划分为两个新分区,即分区3和分区4。此外,协调服务402(1)可以向领导者节点(即,在该示例中,“节点1”)发送拆分通知,以向领导者节点通知拆分。在领导者节点已经确认拆分之后,协调服务402(1)可以更新分区映射702以执行拆分,从而导致新的分区3和4被添加到分区映射702(1),并且分区1被从分区映射702(1)移除。此外,协调服务402(1)可以确定将分区4迁移到位置B处的第二系统102(2),并且可以向地理位置B处的第二系统102(2)处的协调服务402(2)发送迁移请求710。例如,迁移请求可以包括更新的映射部分702(1)。

图8图示了根据一些实施方式的在分区拆分之后的迁移的示例800。例如,图8图示了在分区拆分之后进行平衡的下一步骤,在该示例中,该下一步骤是将分区4迁移到第二系统102(2)。例如,协调服务402可以被配置为确保系统200中的分区跨系统200中的所有地理位置是平衡的,同时考虑所有地理位置处的可用资源。

如上面参考图7所提到的,第一协调服务402(1)可以向第二协调服务402(2)发送迁移请求。作为响应,第二迁移服务402(2)可以发送迁移应答802,其通常可以包括对迁移请求的接受。例如,迁移请求的接受可以包括识别分区4要迁移到的第二系统102(2)处的目的地节点。例如,所标识的目的地节点将是地理位置B处的第二系统102(2)处的新分区组的领导者节点(在该示例中,节点10)。

一旦地理位置A处的第一协调服务402(1)接收到来自地理位置B处的第二协调服务402(2)的迁移请求的接受以及目的地节点的标识,地理位置A处的第一协调服务402(1)就可以请求地理位置A处的分区4的领导者节点(即,本示例中的节点1)发起到由第二协调服务402(2)指定的目的地节点(节点10)的迁移。地理位置A处的领导者节点然后可以将分区4的快照804迁移到目的地节点。当拍摄和迁移快照时,可以阻止分区4接收改变。在一些示例中,快照804的迁移可以仅在领导者节点之间发生。随后,在接收到在快照804中,目的地领导者节点(节点10)可以在第二系统102(2)内创建副本,以将分区4的副本提供给将属于分区组的其他节点,例如,在该示例中的节点9和11。分区映射部分704(1)图示了迁移之后的第二系统102(2)的分区映射信息。

图9图示了根据一些实施方式的在完成分区拆分和迁移之后的当前状态的示例900。在该示例中,示出了在跨地理位置A和B平衡分区之后的当前状态。例如,在目的地领导者节点(节点10)确认已经在地理位置B处创建了分区4的副本之后,地理位置A处的第一协调服务402(1)移除锁定并更新分区映射部分702(2),以反映改变并指示在拆分和迁移之后位置A处的分区的当前状态。另外,分区映射部分704(3)指示在完成从地理位置A的拆分和迁移之后地理位置B处的分区4的当前状态。

每个地理位置处的协调服务402负责确保该地理位置中的每个分区的副本数量总是满足特定的副本数量。该数量的减少将使系统处于如果发生故障则可能损害数据可用性的状态。为此,协调服务402可以周期性地监测并从领导者节点收集每个分区组的所有成员的最后接收到的心跳时间。如果存储分区的副本的特定节点看起来已经不活动超过阈值时间段,则协调服务可以触发分区修复序列。例如,分区修复序列可以包括从其所属的分区组中移除不活动节点,并且触发将分区的快照从相应领导者复制到相同地理位置内的可用活动节点。在相同地理位置内没有活动节点可用的情况下,协调服务402可以尝试将该分区的所有副本迁移到包括具有足够容量的足够数量的健康节点以接收该分区的不同地理位置。

图10图示了根据一些实施方式的用于负载平衡的示例伪代码1000。例如,如上所述,系统102可以执行负载平衡算法以识别要将分区迁移到的位置,诸如在分区拆分之后。例如,负载平衡算法1000可以被包括在元数据网关程序238中,并且作为在元数据网关程序238的执行期间提供的协调服务402的一部分来执行。

一旦分区被拆分,系统可以尝试将至少一个新分区移动到不同地理位置处的不同计算装置,以避免热点。分区可以由本地协调服务402标记为要移动的可能候选。分区ID可以基于拆分准则存储在优先级队列中。本地协调服务402可以诸如基于确定每个地理位置处的访问负载的最近频率来确定要将分区移动到的地理位置。例如,如在1002处所指示的,协调服务访问根据从系统200中的所有地理位置接收的分区映射组装的复合分区映射430,以确定被最轻地负载(例如,具有指示一段时间内最少的数据访问请求的最低访问负载的频率)的地理位置。替代地,在所有地理位置被相等地负载的情况下,则可以通过轮询调度或使用任何其他合适的技术随机地选择特定地理位置。

在一些情况下,每个本地协调服务402可以维持特定于其位置的负载信息,例如,相对于处理元数据分区的计算节点的数量。当在特定地理位置处达到访问频率负载阈值时,本地协调服务402可以向其他地理位置处的所有其他协调服务402发出请求,以找到要向其卸载至少一个分区的竞争者。(一个或多个)请求可以在每个接收位置处排队,并且基于到达的顺序被服务。

当目标目的地地理位置的本地协调服务402接受卸载特定分区的目的地时,该目的地位置可以由本地协调服务402锁定,并且将不接受来自其他协调服务402的附加负载平衡请求。锁定状态可以引用将从其接收迁移的远程协调服务的ID。如在1004处所指示的,P分区的副本被迁移到所选目的地节点。然后,目的地节点可以将分区复制到两个附加的本地节点,使得心跳继续包含在本地系统102内。在完成迁移和复制之后,可以从本地协调服务中移除位置锁状态,并且源位置可以从源节点删除分区的副本。

图11是图示根据一些实施方式的用于分区拆分和负载平衡的示例过程1100的流程图。该过程被图示为逻辑流程图中的框的集合,其表示操作序列,其中的一些或全部可以用硬件、软件或其组合来实施。在软件的上下文中,框可以表示存储在一个或多个计算机可读介质上的计算机可执行指令,当由一个或多个处理器执行时,所述计算机可执行指令对处理器进行编程以执行所述操作。通常,计算机可执行指令包括执行特定功能或实施特定数据类型的例程、程序、对象、组件、数据结构等。描述框的顺序不应被解释为限制。可以以任何顺序和/或并行地组合任何数量的所描述的框以实施该过程或替代过程,并且不需要执行所有框。为了讨论的目的,参考本文中的示例中描述的环境、框架和系统来描述过程,但是过程可以在各种其他环境、框架和系统中实施。在图11的示例中,过程1100可以至少部分地由执行元数据网关程序238(包括执行上面关于图10讨论的负载平衡算法)的一个或多个服务计算装置202来执行。

在1102处,系统可以执行本地协调服务。例如,每个不同地理位置处的每个系统可以在本地执行协调服务的实例,该协调服务的实例能够与在其他地理位置处执行的协调服务的其他实例通信。

在1104处,系统可以确定是否拆分分区。例如,如上所述,系统可以基于一个或多个考虑来确定是否拆分分区,所述一个或多个考虑诸如为分区是否已经超过阈值分区大小;基于访问负载的阈值频率,维持分区的节点组中的节点是否过载;和/或可用于维持分区的节点组中的节点的剩余存储容量是否已经降至阈值最小值以下。如果分区准备好被拆分,则该过程转到1106。如果不是,则该过程转到1108。

在1106处,系统可以拆分在1104处识别的分区。例如,协调服务可以通过在本地分区映射中的两个新分区之间划分分配给所识别的分区的密钥值来更新本地分区映射。

在1108处,系统可以确定跨地理上分散的系统的最过载节点和最欠载节点。作为一个示例,系统可以参考复合分区映射来确定系统中的哪些节点是最欠载节点以及哪些是最过载节点。

在1110处,如果存在比当前维持分区的节点更欠载的其他节点,则系统可以选择要迁移的分区。

在1112处,系统可以向具有最欠负载节点的地理位置处的协调服务发送迁移请求。例如,迁移请求可以请求将所选分区迁移到具有最欠载节点的地理位置处的系统。

在1114处,系统可以确定迁移请求是否被接受。例如,如果迁移请求被接受,则接受消息可以包括将用作用于接收分区迁移的领导者节点的目的地节点的标识符。如果是,则该过程转到1118。如果不是,则该过程转到1116。

在1116处,如果迁移请求被拒绝,则系统可以将另一个迁移请求发送到具有欠载节点的另一个地理位置。例如,系统可以选择具有最欠负载节点的下一个地理位置用于接收下一个迁移请求。

在1118处,当迁移请求已经被接受时,系统可以锁定所选分区并向源领导者节点发送将所选分区迁移到目的地领导者节点的指令。例如,当迁移正在发生时,分区可以保持被阻止数据写入,并且任何接收到的写入、删除等可以随后被传送到目的地节点以在迁移完成之后更新分区。

在1120处,系统可以从目的地协调服务接收迁移和复制的确认。例如,目的地节点可以将接收到的分区复制到将与目的地节点组成分区组的至少两个附加节点。在完成该复制之后,目的地协调服务可以向源系统发送迁移完成通知。

在1122处,系统可以向源领导者节点和分区组中的其他节点发送删除所选分区的指令。因此,可以从源系统处的节点移除所选分区。

本文描述的示例过程仅是为讨论目的而提供的过程的示例。鉴于本文中的公开内容,许多其他改变对于本领域技术人员而言是显而易见的。此外,虽然本文中的公开内容阐述了用于执行过程的合适框架、架构和环境的若干示例,但是本文中的实施方式不限于所示出和讨论的特定示例。此外,本公开提供了各种示例实施方式,如所描述的并且如附图中所示。然而,本公开不限于本文描述和示出的实施方式,而是可以扩展到其他实施方式,如本领域技术人员将会知晓或本领域技术人员将会变得知晓。

图12图示了可以用于实施本文描述的系统的至少一些功能的(一个或多个)服务计算装置202的选定示例部件。(一个或多个)服务计算装置202可以包括可以以任何数量的方式体现的一个或多个服务器或其他类型的计算装置。例如,在服务器的情况下,程序、其他功能部件和数据可以在单个服务器、服务器集群、服务器群或数据中心、云托管的计算服务等上实施,但是可以另外地或替代地使用其他计算机架构。多个服务计算装置202可以一起或分开地定位,并且例如被组织为虚拟服务器、服务器库、和/或服务器群。所描述的功能可以由单个实体或企业的服务器提供,或可以由多个不同实体或企业的服务器和/或服务提供。

在所图示的示例中,(一个或多个)服务计算装置202包括一个或多个处理器1202、一个或多个计算机可读介质1204和一个或多个通信接口1206,或可以与一个或多个处理器1202、一个或多个计算机可读介质1204和一个或多个通信接口1206相关联。每个处理器1202可以是单个处理单元或多个处理单元,并且可以包括单个或多个计算单元或多个处理核。(一个或多个)处理器1202可以被实施为一个或多个中央处理单元、微处理器、微计算机、微控制器、数字信号处理器、状态机、逻辑电路和/或基于操作指令操纵信号的任何装置。作为一个示例,(一个或多个)处理器1202可以包括被专门编程或配置为执行本文描述的算法和过程的任何合适类型的一个或多个硬件处理器和/或逻辑电路。(一个或多个)处理器1202可以被配置为获取和执行存储在计算机可读介质1204中的计算机可读指令,其可以对(一个或多个)处理器1202进行编程以执行本文描述的功能。

计算机可读介质1204可以包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何类型的技术实施的易失性和非易失性存储器和/或可移动和不可移动介质。例如,计算机可读介质1204可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、光学存储、固态存储、磁带、磁盘存储、存储阵列、网络附接存储、存储区域网络、云存储或可以用于存储期望的信息并且可以由计算装置访问的任何其他介质。取决于(一个或多个)服务计算装置202的配置,计算机可读介质1204可以是有形非瞬态介质,只要非瞬态计算机可读介质在被提及时排除诸如能量、载波信号、电磁波、和/或信号本身之类的介质。在一些情况下,计算机可读介质1204可以与服务计算装置202处于相同的位置,而在其他示例中,计算机可读介质1204可以部分地远离服务计算装置202。例如,在一些情况下,计算机可读介质1204可以包括上面关于图2讨论的(一个或多个)网络存储系统204中的存储的一部分。

计算机可读介质1204可以用于存储可由(一个或多个)处理器1202执行的任何数量的功能部件。在许多实施方式中,这些功能部件包括可由(一个或多个)处理器1202执行并且在被执行时具体地对(一个或多个)处理器1202进行编程以执行在本文中归属于服务计算装置202的动作的指令或程序。存储在计算机可读介质1204中的功能部件可以包括用户web应用216、管理web应用224、存储程序230和元数据网关程序238,其中的每一个可以包括一个或多个计算机程序、应用、可执行代码或其部分。此外,虽然在该示例中一起图示了这些程序,但是在使用期间,这些程序中的一些或全部可以在单独的服务计算装置202上执行。

另外,计算机可读介质1204可以存储用于执行本文描述的功能和服务的数据、数据结构和其他信息。例如,计算机可读介质1204可以存储可以包括(一个或多个)分区240的元数据数据库234。另外,计算机可读介质可以存储本地对象数据237。此外,虽然在该示例中一起图示了这些数据结构,但是在使用期间,这些数据结构中的一些或全部可以由单独的服务计算装置202存储。(一个或多个)服务计算装置202还可以包括或维持其他功能部件和数据,所述其他功能部件和数据可以包括程序、驱动程序等、以及由这些功能部件使用或生成的数据。此外,(一个或多个)服务计算装置202可以包括许多其他逻辑、编程和物理部件,其中以上描述的那些部件仅仅是与本文中的讨论相关的示例。

一个或多个通信接口1206可以包括用于诸如通过一个或多个网络106和207实现与各种其他装置的通信的一个或多个软件和硬件部件。例如,(一个或多个)通信接口1206可以实现通过LAN、互联网、电缆网络、蜂窝网络、无线网络(例如,Wi-Fi)和有线网络(例如,光纤信道、光纤、以太网)、直接连接中的一个或多个的通信、以及诸如

本文描述的各种指令、方法和技术可以在计算机可执行指令(诸如存储在计算机可读介质上并由本文中的(一个或多个)处理器执行的计算机程序和应用)的一般背景下考虑。通常,术语程序和应用可以互换使用,并且可以包括用于执行特定任务或实施特定数据类型的指令、例程、模块、对象、部件、数据结构、可执行代码等。这些程序、应用等可以作为本机代码执行,或可以下载并执行,诸如在虚拟机或其他即时编译执行环境中。通常,程序和应用的功能可以在各种实施方式中根据需要组合或分布。这些程序、应用和技术的实施方式可以存储在计算机存储介质上或通过某种形式的通信介质传输。

尽管以结构特征和/或方法动作特定的语言描述了本主题,但应理解,所附权利要求书中定义的主题不必限于所描述的具体特征或动作。而是,公开了具体特征和动作作为实施权利要求的示例形式。

相关技术
  • 混合云环境下服务器集群信息发布系统
  • 混合云环境下服务器集群信息发布系统
技术分类

06120116483074