CN114868105A - 混合云异步数据同步 - Google Patents
混合云异步数据同步 Download PDFInfo
- Publication number
- CN114868105A CN114868105A CN201980103323.4A CN201980103323A CN114868105A CN 114868105 A CN114868105 A CN 114868105A CN 201980103323 A CN201980103323 A CN 201980103323A CN 114868105 A CN114868105 A CN 114868105A
- Authority
- CN
- China
- Prior art keywords
- network storage
- storage system
- computing device
- data
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 42
- 230000010076 replication Effects 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 30
- 238000004891 communication Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000013523 data management Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013474 audit trail Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在一些示例中,计算设备可以与多个网络存储系统通信,诸如由采用第一存储协议的第一服务提供商提供的第一网络存储系统和由采用与所述第一存储协议不同的第二存储协议的第二服务提供商提供的第二网络存储系统。所述计算设备接收第一对象,并且为所述第一对象确定所述第一网络存储系统处的第一远程桶和所述第二网络存储系统处的第二远程桶。所述计算设备可以将同步事件添加到队列,用于将所述第一对象复制到所述第一远程桶和所述第二远程桶。基于消耗来自队列的所述同步事件,所述计算设备将所述第一对象的数据和元数据复制到所述第一远程桶和所述第二远程桶。
Description
技术领域
本公开涉及数据存储的技术领域。
背景技术
跨混合云系统同步数据是一种例如通过支持跨云中的各种不同存储服务的备份和数据移动向存储用户提供成本管理灵活性的最新概念。例如,在混合云系统中,可以采用各种不同服务提供实体的网络存储产品来存储和同步数据。然而,跨多个异构系统同步数据可能是具有挑战性的,因为在这些系统中的每一个中使用的软件栈可以由不同的实体来配置和控制,并且特定于复制的更改可能不一定如在所有各种不同系统中所期望的那样起作用。
发明内容
一些实现包括能够通过网络与多个网络存储系统通信的计算设备。例如,第一网络存储系统可以由采用第一存储协议的第一服务提供商提供,第二网络存储系统可以由采用不同于所述第一存储协议的第二存储协议的第二服务提供商提供。所述计算设备可以接收第一对象,并且可以为所述第一对象确定所述第一网络存储系统处的第一远程桶和所述第二网络存储系统处的第二远程桶。所述计算设备可以将同步事件添加到队列,用于将所述第一对象复制到所述第一远程桶和所述第二远程桶。基于消耗来自队列的所述同步事件,所述计算设备将所述第一对象的数据和元数据复制到所述第一远程桶和所述第二远程桶。
附图说明
将参照附图进行详细说明。在附图中,附图标记的最左边的数字标识附图标记首先出现的附图。在不同附图中使用相同的附图标记指示相似或相同的术语或特征。
图1示出了根据一些实现的能够将数据和元数据存储到多个非同质存储系统的系统的示例架构。
图2是示出根据一些实现的用于在系统中执行同步的示例逻辑配置的框图。
图3是示出根据一些实现的在系统中执行从同步到同步的示例的框图。
图4是示出根据一些实现的伪代码的示例的图。
图5是示出根据一些实现的伪代码的示例的图。
图6示出了根据一些实现的本地系统对象版本的示例数据结构。
图7示出了根据一些实现的用于网络存储系统对象版本的示例数据结构。
图8示出了根据一些实现的版本化复制的示例。
图9示出了根据一些实现的版本化复制的示例。
图10示出了根据一些实现将过滤器应用于桶复制的示例。
图11示出了根据一些实现将过滤器应用于桶复制的示例。
图12示出了根据一些实现的同步到过程的流程图。
图13示出了根据一些实现的从过程到同步的流程图。
图14示出了可以用于实现本文描述的系统的功能中的至少一些功能的服务计算设备的选择示例组件。
具体实施方式
本文的一些实现涉及用于包括混合云基础设施的分布式计算机系统的技术和结构,该混合云基础设施能够利用多个不同配置的网络存储系统作为同步数据的目标,例如用于备份数据、复制数据、检索数据等。例如,多个异构网络存储系统使得用户能够利用由多个不同云存储提供商提供的更大范围的服务。这里的实现可以使用机制来无缝地同步用户数据并提供同步分组控制以确保数据安全,来支持跨异构的多个存储服务提供商的数据同步目标。因此,本文的实现可以支持跨异构的基于网络的存储系统的用户数据的一对多同步,所述异构的基于网络的存储系统可以包括商用云存储、专有云存储、私有广域网存储、本地存储及其任何组合。
另外,为了实现一对多异构同步,一些示例包括使用一个或更多个开放标准应用编程接口(API),诸如用于复制数据的基于S3的协议API,其可以提供基本复制或数据复制机制。然而,传统的API在复制的效率和准确性方面存在差距。例如,传统API可能无法提供精确的元数据副本,除了用于若干数据管理目的的精确数据副本之外,精确的元数据副本是所期望的。除了使用基本数据复制之外,本文的一些示例还使用数据版本化和特定事件触发器来帮助确保准确的元数据更新,以保持元数据连同相关数据的准确性。另外,这里的实现可以包括用于远程端的桶或其它容器的通知机制。此外,在一些情况下,可以通过利用所有系统上的不同服务来扩展解决方案能力,以提供高效和准确的数据管理解决方案。
本文的一些示例可以支持混合架构,该混合架构包括与多个远程公共云和/或私有云存储系统通信的专有本地存储系统。此外,本文的实现可以提供用于跨运行来自各种不同提供商的各种不同软件栈的混合云系统执行多路复制的新颖方法。
为了实现跨不运行相同软件栈的多个不同提供商系统的同步,这里的一些示例确保使用开放标准API来执行所有通信。另外,信息交换可以遵循开放标准消息传送协议。此外,在一些情况下,由于不是所有类型的网络存储系统都允许针对所有各种类型的系统的身份管理的联合,所以可以单独地认证多个不同的系统。另外,本文中的一些示例可以限制对远程系统的更新的量或频率,并且可以减少用于优化性能的内容传送。
另外,不同的网络存储系统可以以不同的速度操作以接收、存储和/或提供数据,具有可变的响应时间。因此,本文中的一些示例可以提供非常精细的许可级别或角色以控制跨各种网络存储系统的通信,诸如向系统管理员提供访问多个公司网络域的灵活控制。
出于讨论的目的,在与来自不同存储提供商的多个不同网络存储系统通信的一个或更多个服务计算设备的环境中描述了一些示例实现,用于管理数据和元数据的存储。然而,这里的实现不限于所提供的特定示例,并且可以扩展到其它类型的计算系统架构、其它类型的存储环境、其它存储提供商、其它类型的客户端配置、其它类型的数据等等,这对于本领域技术人员根据这里的公开将是显而易见的。
图1示出了根据一些实现的能够将数据和元数据存储到多个非同质存储系统的系统100的示例架构。系统100包括多个服务计算设备102,其能够例如通过一个或更多个网络106与多个网络存储系统通信或以其它方式联接到多个网络存储系统,例如第一提供商网络存储系统104(1)、第二提供商网络存储系统104(2)、第三提供商网络存储系统104(3)、第四提供商网络存储系统104(4)等。如上所述,网络存储系统的每个提供商可以是与其它提供商无关的不同实体。商业网络存储提供商的示例包括亚马逊网络服务、微软AZURE、谷歌云、IBM云和甲骨文云等等。网络存储系统104(1)至104(4)在一些示例中可以被称为“云存储”或“基于云的存储”,并且在一些情况下可以实现比在服务计算设备102处可用的本地存储更低成本的每千兆字节存储解决方案。另外,在一些示例中,存储提供商可以是私有或以其它方式专有的存储提供商,诸如用于仅提供对例如与服务计算设备102相关联的特定用户、实体等的访问。专有系统的示例可以包括日立内容平台的配置。
此外,服务计算设备102能够通过网络106与一个或更多个用户计算设备108和一个或更多个管理员计算设备110通信。用户设备108和管理员设备110可以是各种类型的计算设备中的任何一种,如下面另外讨论的。
在一些示例中,服务计算设备102可以包括可以以任何数量的方式实现的一个或更多个服务器。例如,服务计算设备102的程序、其它功能组件和数据存储的至少一部分可以在至少一个服务器上实现,例如在服务器集群、服务器群、数据中心、云托管计算服务等中,尽管可以附加地或替代地使用其它计算机架构。服务计算设备102的附加细节在下面参照图14进行讨论。
一个或更多个网络106可以包括任何合适的网络,包括诸如互联网之类的广域网;诸如内联网之类的局域网(LAN);诸如蜂窝网络之类的无线网络、诸如Wi-Fi之类的本地无线网络和/或诸如之类的短程无线通信;有线网络,包括光纤通道、光纤、以太网或任何其它此类网络、直接有线连接或其任何组合。因此,一个或更多个网络106可以包括有线和/或无线通信技术两者。用于这种通信的组件可以至少部分地取决于网络的类型、所选择的环境或两者。用于在这样的网络上通信的协议是公知的,并且在此将不详细讨论。因此,服务计算设备102、网络存储系统104、用户设备108和管理设备110能够使用有线或无线连接及其组合在一个或更多个网络106上通信。
另外,服务计算设备102能够通过一个或更多个网络107彼此通信。在一些情况下,一个或更多个网络107可以是LAN、专用网络等,而在其它情况下,一个或更多个网络107可以包括上面讨论的网络106中的任何一个。
服务计算设备102可以被配置为分别经由用户设备110向用户112提供存储和数据管理服务。作为若干非限制性示例,用户112可以包括执行用于企业、企业、组织、政府实体、学术实体等的功能的用户,并且在一些示例中,用户112可以包括存储非常大量的数据。然而,这里的实现不限于系统100和这里描述的其它系统和结构的任何特定用途或应用。
每个用户设备108可以是任何合适类型的计算设备,诸如台式机、膝上型计算机、平板计算设备、移动设备、智能电话、可穿戴设备、终端和/或能够通过网络发送数据的任何其它类型的计算设备。用户112可以例如通过相应的用户帐户、用户登录凭证等与用户设备108相关联。此外,用户设备108能够通过一个或更多个网络106、通过单独的网络、或通过任何其它合适类型的通信连接与服务计算设备102通信。受益于本文公开内容的本领域技术人员将理解许多其它变化。
此外,每个用户设备108可以包括可在用户设备108上执行的用户应用114的相应实例,例如用于与可在服务计算设备102上执行的用户web应用116通信,诸如用于发送用户数据以存储在网络存储系统104上和/或用于通过数据指令118等从网络存储系统104接收所存储的数据。在一些情况下,应用114可以包括浏览器或者可以通过浏览器操作,而在其它情况下,应用114可以包括具有通信功能的任何其它类型的应用,该通信功能使得能够通过一个或更多个网络106与用户web应用116通信。
在系统100的一些示例中,用户112可以将数据存储到其各自的用户设备108与之通信的服务计算设备102以及从服务计算设备102接收数据。因此,服务计算设备102可以为用户112和相应的用户设备108提供存储。在稳态操作期间,可以有用户108周期性地与服务计算设备102通信。
另外,管理员设备110可以是任何合适类型的计算设备,诸如台式机、膝上型计算机、平板计算设备、移动设备、智能电话、可穿戴设备、终端和/或能够通过网络发送数据的任何其它类型的计算设备。管理员120可以例如通过相应的管理员帐户、管理员登录凭证等与管理员设备110相关联。此外,管理员设备110能够通过一个或更多个网络106、107,通过单独的网络,或通过任何其它合适类型的通信连接与服务计算设备102通信。
此外,每个管理员设备110可以包括可以在管理员设备110上执行的管理员应用122的相应实例,诸如用于与可在服务计算设备102上执行的管理web应用124通信,诸如用于发送用于管理系统100的管理指令,以及例如通过管理指令126等发送用于存储在网络存储系统104上的管理数据和/或用于从网络存储系统104接收存储的管理数据。在一些情况下,管理员应用122可以包括浏览器或者可以通过浏览器操作,而在其它情况下,管理员应用122可以包括具有通信功能的任何其它类型的应用,该通信功能使得能够通过一个或更多个网络106与管理web应用124通信。
服务计算设备102可以执行存储程序130,该存储程序130可以向网络存储系统104提供网关,诸如用于发送要存储到网络存储系统104的数据以及用于从网络存储系统104或从本地存储器132检索所请求的数据。另外,存储程序130可以管理系统100存储的数据,诸如用于管理数据保持周期、数据保护级别、数据复制等。
服务计算设备102还可以包括元数据数据库(DB)134,元数据数据库(DB)134可以被划分为多个元数据DB部分,例如分区,并且可以跨多个服务计算设备102分布。例如,元数据DB 134可以用于管理存储在网络存储系统104处的对象数据136和存储在本地存储器132处的本地对象数据137。元数据DB 134可以包括关于对象数据136的许多元数据,诸如关于个体对象的信息、如何访问个体对象、对象的存储保护级别、存储保持时段、对象所有者信息、对象大小、对象类型等。此外,元数据网关程序138可以管理和维护元数据DB 134,诸如用于在存储新对象、删除旧对象、迁移对象等时更新元数据DB 134,以及响应访问数据的请求。
另外,服务计算设备102可以包括策略引擎程序140,策略引擎程序140可被执行以执行与网络存储系统104(1)至104(4)的数据同步。在一些情况下,策略引擎程序140可以是存储程序130的模块,而在其它情况下,策略引擎程序140可以是单独的程序。在一些情况下,策略引擎程序140可以与消息排队程序142合作操作,用于将对象数据136与网络存储系统104同步。可以在本文的一些示例中使用的消息排队程序的示例包括开源多协议消息代理,诸如RABBITMQ和ACTIVEMQ。
此外,策略引擎程序140可以与网络存储系统104异步地来同步对象数据136。例如,存储程序130可以将对象数据作为本地对象数据137存储到本地存储器132,可以将对象的元数据添加到本地元数据数据库132,并且可以用完成消息来回复请求设备等,而不是必须对网络存储系统104执行某些存储操作并在向用户报告之前完成这些操作。存储程序130可以随后将数据发送到队列,以随后经由一个或更多个数据同步操作144将数据与一个或更多个网络存储系统104异步同步。
这里的实现方式可以将同步过程划分为两个部分,包括将数据同步到网络存储系统104的同步到过程和将数据从网络存储系统104同步回的从同步过程。该方法具有若干优点,例如为操作者(例如,用户112和/或管理员120)提供了控制复制级别的大量灵活性,并进一步提供了防止形成循环的能力。例如,系统能够在系统内提供验证,以验证例如在设置时操作者没有创建循环或拓扑,该循环或拓扑形成导致无限复制的循环,该循环随后将需要额外干预以防止系统不稳定性。
在系统100中,采用由策略引擎程序140指导的事件驱动同步,策略引擎程序140被配置为应用诸如速率控制限制和/或服务质量管理的动作,以确保数据同步的速度能够由管理员管理。此外,一些示例可以采用数据的版本化,例如,每个更新可以产生不同的版本,其随后可以帮助在网络存储系统104上提供对象数据136的排序。例如,每个网络存储系统104可以利用不同的版本化方案,因此使用提供商工具来维持对象数据136的排序可能是困难的。然而,经由策略引擎程序140提供版本化能力使得操作者/应用能够通过手动删除某些版本或随后用正确内容更新版本来比较和消除版本冲突。
此外,在一些示例中,数据对象的每个版本的用户元数据可以与对象数据一起同步,这可以使得应用能够添加进一步数据管理所需的任何特定信息。作为一个示例,该特征允许维护生成数据的应用/操作者的审计跟踪。例如,元数据标签可以包括关于发起源或发起应用的信息,以及应用创建数据的时间,上述信息和时间然后可以与数据版本一起使用,以使得能够基于包括在用于该对象的元数据中的时间戳来重新排序版本。
另外,本文中的一些示例允许桶级过滤器的设置,该桶级过滤器可被应用以例如仅实现所存储数据的子集的同步,诸如可由操作者指定的。这里的同步也可以在没有过滤器的情况下起作用,但是过滤器可以提供额外的灵活性水平来限制被复制的数据量。
在一些情况下,服务计算设备102可以例如在站点150处被布置成一个或更多个组、集群、系统等。离去,多个站点150可以在地理上彼此分散,诸如用于提供数据复制、灾难恢复保护等。此外,在一些情况下,在多个不同站点150处的服务计算设备102可以被配置用于彼此安全地通信,诸如用于提供多个站点150的联合。
图2是示出根据一些实现的用于在系统100中执行同步的示例逻辑配置的框图。在一些示例中,系统100可以对应于上文讨论的系统100,或者各种其它可能的计算系统体系结构中的任何一个,这对于受益于本文公开的本领域技术人员将是显而易见的。系统100可以实现分布式对象存储,并且可以包括将web应用用作用户和管理员的前端。在一些情况下,系统100可以在可以由用户和/或管理员创建的桶中存储网络存储系统104上的对象。系统100可以使用跨本地和云系统分布的资源来实现数据的复杂管理和存储。
在这里的实现中,可以使用两个步骤(例如,同步到网络存储系统104和从网络存储系统104同步)来执行同步过程。例如,基于方向将数据同步过程划分为两步骤过程使得本文的实现能够提供多同步和多目标支持,并且还可以提供配置这些步骤的组合的能力。此外,本文的一些实现包括用于到多个网络存储系统104的多目标复制的两级异步事件驱动执行框架。
图2示出了将数据同步到网络存储系统104的示例的元素,并且包括作为同步到方向的一部分的数据复制流的概述。本文的一些示例可以至少部分地基于执行在能够用作独立计算引擎的容器中运行的微服务。例如,每个服务(例如,存储程序130、元数据网关程序138和/或策略引擎程序140)的多个实例或容器可以跨分布式集群(例如,在多个服务计算设备102中)执行。多个微服务实例可以实现跨分布式集群或其它分布式计算架构的策略引擎的缩放,诸如由于不同的应用工作负载而可能需要的。
作为示例,在从应用(例如,经由用户web应用116或管理web应用124)摄取数据时,实时执行两个同步动作。例如,假设用户已经经由用户web应用116保存了对象A 202。首先,如204处所指示,可以为对象A创建对象元数据206,对象元数据206包括诸如由应用输入的对象名称、版本ID、时间戳、对象大小、用户元数据标签、访问控制列表等信息。另外,如208所示,同样同步地,对象A的对象数据210作为本地对象数据137的一部分被存储到本地存储器132,并且存储的对象定位器ID作为对象元数据206的一部分被添加到其它系统元数据。元数据网关程序138可以将对象A元数据206添加到元数据数据库134(图2中未示出)。因为这两个动作是实时执行的,所以存储程序130可以向用户返回指示对象A202的存储已经成功完成的响应。
如212所示,元数据网关程序138随后可以异步地为对象A 202生成同步事件,并且可以将同步事件添加到由上述消息排队程序142提供的消息排队框架216中的一个或更多个队列214。例如,类似于本文的其余微服务,队列214可以独立于其它服务而按比例放大或缩小。例如,如消息排队框架216所提供的,队列214可以是有状态的和持久的。例如,如果一个队列214变得损坏或停止使用,则队列214中的事件的一个或更多个可配置冗余副本可以跨至少一个其它队列214维护,以便在故障时恢复。事件驱动消息队列框架216减少了元数据网关程序138上的流量,元数据网关程序138被执行用于执行元数据存储和检索,使得元数据网关程序138不会被用于执行同步的查询淹没。此外,排队框架还可以帮助将镜像事件与系统中的所有其它同步事件隔离开来。
策略引擎程序140可被执行以提供一组容器化服务,该一组容器化服务在后台操作以针对每个同步目标轮询和消费来自队列214的事件,如220处所指示的。例如,策略引擎程序140可以异步地将同步事件从队列214拉出,并且可以将队列214中的事件同步到相应的网络存储系统104。例如,每个同步事件可以具有基于网络存储系统104中的特定一个的单独目标以及其中的命名桶。因此,基于下面另外讨论的技术,策略引擎程序140可以将对象A(如在222处所指示的,在一些情况下包括对象A的元数据)同步到预期同步目标,在该示例中,预期同步目标可以包括网络存储系统104(1)至104(4),每个网络存储系统可以由具有不同存储配置、协议等的不同服务提供商提供。
在一些实现中,传出的同步事件(即,同步到事件)可被分离成一个或更多个传出队列,并且用于从网络存储系统104检索数据的同步事件(即,从同步事件)可被分离成一个或更多个同步队列。使用单独队列214按方向对通信进行隔离可以帮助确保如果网络存储系统104中的一个发生故障或者如果存在网络连接问题,则与正常运行的网络存储系统104中的其它网络存储系统的通信不受影响。假定网络存储系统104由多个不同的服务提供商提供,则系统100可能不能够容易地区分暂时停机或完全停用的网络存储系统104。而且,依赖特定网络存储系统104来提供错误或故障的准确原因可能是不实际的,该错误或故障是由于例如资源或配额限制、正在进行维护的服务器、或系统中的错误。
另外,本文的一些示例可以包括基于类别来隔离同步事件。例如,排队框架216可以包括用于每个单独远程目标域的单独队列集合214(例如,同步到队列和从同步队列),例如,排队框架216可以包括用于第一提供商网络存储系统104(1)的第一队列集合214、用于第二提供商网络存储系统104(2)的第二队列集合214、用于第三提供商网络存储系统104(3)的第三队列集合214,等等。因此,策略引擎程序140可以执行从服务计算设备102到网络存储系统104的数据的一对多同步。
此外,在一些情况下,策略引擎程序140可以将一个或更多个过滤器应用于队列214中的同步事件。例如,策略引擎程序可以由用户配置为应用用户指定的规则,该规则可以包括基于与对象相关联的对象标签来过滤某些对象。基于这些用户指定的规则,策略引擎程序140可以消耗来自队列214之一的同步事件,比较包括在作为同步事件目标的数据中的任何元数据标签,并且如果元数据标签匹配指定规则,则策略引擎程序140可以丢弃同步事件,而不是正在执行的同步事件。
此外,在一些示例中,当策略引擎程序140消耗来自队列214之一的同步事件时,策略引擎程序可以首先确定哪些网络存储系统104上的哪些桶是同步事件的目标。在确定目标桶和目标网络存储系统104之后,策略引擎程序140可以访问认证凭证,以便对目标网络存储系统104进行访问调用。在认证之后,策略引擎程序140可以例如使用与目标网络存储系统104相对应的提供商专用协议和过程来访问目标网络存储系统104。
图3是示出根据一些实现的在系统100中执行从同步到同步的示例的框图。例如,同步事件可以包括从由各种不同服务提供商托管的网络存储系统104检索数据。配置从同步可以允许将远程存储的数据恢复到系统100,例如恢复到本地存储132和/或恢复到客户端设备,诸如用户设备108或管理员设备110。在系统100中,策略引擎程序140可以充当一组消耗者,其通过从排队框架216拉出事件来处理同步事件。将从同步事件与同步到事件分开处理的一个原因是支持不提供网络存储系统104中的其它网络存储系统104的相同类型的消费服务的网络存储系统104。例如,一些网络存储系统104,例如所示示例中的第二提供商网络存储系统104(2)可以提供发布者机制302,使得当对象被放入第二提供商网络存储系统104(2)中的桶中时,对象可以包括可以提供数据桶的更改通知的产生者集合。
其它网络存储系统104可以提供排队通知系统,其中新的更改被发送到队列并且可以通过队列来查询。此外,其它网络存储系统104可以并入完全不同的方法,并且可以不提供任何通知或事件消耗机制。因此,这里的实现能够从任何类型的网络存储系统104复制回,无论是否存在事件通知,或者是否存在用于不同通知模型的各种不同技术中的任何一种。
在一些示例中,系统可以主动地在网络存储系统104上寻找新数据以执行回镜像操作。因此,网络存储系统104上的数据可以使用此处的从同步功能被复制回本地系统100,诸如通过直接访问由一些网络存储系统提供的队列,或者可替换地,基于可以被添加到由排队框架216提供的本地从同步队列的接收消息。
上文讨论的事件驱动排队和通知消费框架与将同步事件从排队框架216中的队列214拉出的策略引擎程序140一起也可以在该示例中使用。例如,可以使用内部排队框架216来抽象出远程通知差异。在网络存储系统104提供其自身的排队框架的情况下,这里的一些实现方式可以使用由服务提供商直接提供的排队框架来避免引入可能由附加本地排队框架216添加的任何附加等待时间。在远程系统不提供任何通知服务的情况下,本文的一些示例可以使用列出来自数据桶的远程用户数据条目并在产生者队列中创建条目的线程。
在所示示例中,假设第一提供商网络存储系统104(1)是亚马逊网络服务(AWS),并且该提供商包括提供队列306的AWS排队服务304(也称为“简单排队服务”(SQS))。队列306可以是用于在消息在计算机之间传播时存储消息的可缩放托管队列,诸如用于在系统的分布式组件之间移动数据而不丢失消息或要求每个组件总是可用的。另外,在所示的示例中,假设第四提供商网络存储系统104(4)是提供WINDOWS AZURE排队服务(WAQS)308的微软WINDOWS AZURE系统,WAQS 308提供队列310,队列310可以提供应用之间的可靠、持久消息传送等。例如,队列310可用于在应用或服务之间传送消息。
如上所述,在本文的示例中,策略引擎程序140可以直接使用队列306和310来分别从网络存储系统104(1)和104(4)检索数据。例如,如312所示,策略引擎程序140可以直接从队列306和310轮询和消费。另一方面,关于第二提供商网络存储系统104(2),如314所示,当该系统使用发布者机制302时,策略引擎程序140从排队框架216中的队列214轮询和消费,队列214包括从同步事件以使得策略引擎程序142能够消费由发布者机制302发布的发布数据,如316所示。类似地,关于第三提供商网络存储系统104(3),假设该存储系统包括元数据,并且如318处所指示的,策略引擎程序140从排队框架216中的队列214轮询并消费以读取元数据,如320处所指示的。
由策略引擎140接收的数据可以被存储到本地存储器132,如324所示。此外,如326所示,元数据网关程序138可以更新元数据数据库中的元数据。因此,从同步操作可以是一对一或多对一。可以根据这里的实现来检索添加到网络存储系统104之一上的桶的任何对象。
图4是示出根据一些实现的伪代码400的示例的图。在本文的一些示例中,系统100中的管理员能够配置策略引擎程序140中的复制设置和其它同步设置。例如,管理员可以启用或禁用远程复制目标并设置安全措施,诸如通过允许通信流经代理主机,使得在数据离开本地系统100之前,组织可以在代理主机处应用适当的安全措施。
在该示例中,如402处所指示的,管理员还可以限制数据正被复制到的目的地。可以存储诸如提供商类型的信息以能够理解与每个服务提供商可能的通信类型,诸如通知是否可以以该目的地为目标或者特定提供商的网络存储系统104是否允许任何附加元数据请求等。
图5是示出根据一些实现的伪代码500的示例的图。在该示例中,策略引擎程序140的同步规则可以由将数据摄取到系统中的应用用户建立。例如,如502所示,桶和服务提供商的名称可被指定用于从同步。此外,如504处所指示的,桶和服务提供商的名称也可被指定用于同步到。
图6示出了根据一些实现的本地系统对象版本的示例数据结构600。例如,用户可以在定义同步到复制规则或从同步复制规则时启用对象版本化,以帮助管理源目标和目的地目标之间的冲突。对象版本化的其它优点可以包括在内容未更改时启用对数据的单个实例化或限制副本的支持。在该示例中,数据结构600包括本地系统对象版本的信息,包括版本ID 602、内容散列604、对象的大小606、对象的复制状态608和更新时间610。例如,可以使用对每个对象的对象数据和/或元数据的至少一部分的任何合适的低冲突散列函数来确定内容散列604。散列函数的示例包括SHA-1、SHA-256、MD5、FarmHash Fingerprint64等。
作为特定用例的示例,用户可以创建先前摄取的对象的相同副本以存储到相同的桶中。可以这样做以改变网络存储系统104上的对象元数据以指示该对象仍然是热的,使得该对象不会成为用于分层到例如远程系统上的较冷存储的目标。创建相同副本的另一个原因可以是用于支持不同的访问许可,例如,创建对一个对象版本的读/写许可和对对象的另一个版本的只读许可。因此,版本化可以允许系统向用户提供更精细级别的控制。对象版本可以被传播,例如,每个版本可以被复制到一个或更多个网络存储系统104。在一些情况下,如果本文的系统确定相同内容已经被复制到网络存储系统,则如果远程系统允许,可以创建到包括相同内容的原始版本的链接,而不是再次重新传播相同内容。
图7示出了根据一些实现的用于网络存储系统对象版本的示例数据结构700。在该示例中,数据结构包括版本ID 702、元数据标签704、内容大小706、存储大小708和时间戳710。如上所述,远程系统对象版本数据结构700可以用于确定对象的其它版本是否存在于该数据结构所属的远程网络存储系统104上。此外,如下所述,元数据标签704实际上可以对应于特定对象的内容散列。
在一些示例中,因为数据结构600和700上的版本ID 602和702分别由不同系统(即,本地和远程)控制,所以特定对象版本的版本ID 602和702可能不匹配。然而,如果维护相同的版本,则两个系统上的内容散列和大小将是相同的。另外,本文的一些示例可以使用S3协议,其支持为对象版本创建元数据标签。例如,由于并非所有网络存储系统104都可以支持内容散列的检索,因此可以将内容散列作为元数据标签添加到远程存储的对象,当确定是否已经存在特定对象的相同版本时,该元数据标签还可以用于比较。可以维护本地系统上的对象版本的状态以防止重新复制的发生。如果具有匹配内容散列和大小的对象的新版本已经存在于本地存储系统中并且被用户重新摄取,例如,如图6中的612所示,则代替将对象的相同版本复制到网络存储系统不止一次,仅复制到对象的链接,如图7中的712所示,并且不重传该内容。例如,链接可以指向已经存在于网络存储系统上的内容的版本。
图8示出了根据一些实现的版本化复制的示例800。例如,假设第一用户设备108(1)的第一用户112(1)使用用户应用114(1)来生成对象并将对象存储到上述系统100。此外,假设第一用户112(1)配置本地存储132中的本地应用桶802和远程应用桶804,用于接收用户对象在一个或更多个网络存储系统104上的复制。
当策略引擎程序140将对象从本地应用桶802复制到远程应用桶804时,策略引擎程序140可将元数据标签添加到正被复制的对象的元数据。如806所示,元数据标签可以包括先前为本地应用桶802中的对象确定的内容散列。因此,在复制期间,策略引擎程序140可以将包括对象数据和用户元数据的对象的所有内容发送到网络存储设备以存储在远程应用桶804中。如808所示,网络存储系统可以将其自身的版本ID分配给存储在远程应用桶804中的复制对象。
图9示出了根据一些实现的版本化复制的示例900。在该示例中,假设第一用户112(1)将相同对象的副本重新摄取到本地应用桶802。本地系统将分配新版本ID,如902处所指示的,并且更新数据结构600中的对象的时间戳,但是内容散列和大小与图8的先前摄取的对象相同。当复制对象的新版本时,则如904所示,不发送对象内容,而是创建链接以强制网络存储系统上的时间戳更新,并且还复制用户元数据更新。因此,当对象的新版本被添加到远程应用桶804时,如906处所指示的,分配新版本ID,并且如908处所指示的,由于链接,存储大小被指示为零。
图10示出了根据一些实现将过滤器应用于桶复制的示例1000。例如,如上所述,过滤器可由用户在将在策略引擎程序140同步到对象名称、元数据标签期间或基于各种其它元数据应用的桶上实现。
在该示例中,假设操作者(如用户或管理员)将桶复制配置为包括过滤器规则,以允许复制名称以“foo”开头的对象。随后,假设用户应用114(1)摄取名为foo2的对象到本地应用桶802。对象foo2被存储到本地应用桶802。策略引擎程序140然后可以将对象的所有内容复制到远程应用桶804,因为在向远程应用桶804的复制时处于适当位置的过滤器允许fo2。
图11示出了根据一些实现将过滤器应用于桶复制的示例1100。在上面讨论的图10的示例中,假设用户112(1)使用应用114(1)将对象名称为“bar”的对象摄取到本地应用桶802。在将对象复制到远程应用桶804之前,策略引擎将检查过滤器并基于过滤器确定不允许复制条。因此,如1102所示,因为过滤器不允许条,所以对象不被复制到远程应用桶804。
图12和图13是示出根据一些实现的用于路由元数据请求的示例过程的流程图。该过程被示为逻辑流程图中的块的集合,该逻辑流程图表示操作序列,其中的一些或全部可以硬件、软件或其组合来实现。在软件的上下文中,块可以表示存储在一个或更多个计算机可读介质上的计算机可执行指令,当由一个或更多个处理器执行该指令时,该指令对处理器编程以执行所述操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述块的顺序不应被解释为限制。可以以任何顺序和/或并行地组合任何数量的所描述的块以实现过程或替换过程,并且不需要执行所有块。出于讨论的目的,参考本文示例中描述的环境、框架和系统来描述该过程,尽管该过程可以在各种其它环境、框架和系统中实现。
图12示出了根据一些实现的同步到过程1200的流程图。在图12的示例中,过程1200可以至少部分地由执行存储程序130、元数据网关程序138和/或策略引擎程序140的一个或更多个服务计算设备102来执行。
在1202,管理员可以向用户组1提供访问目标系统的许可。例如,目标系统可以是如上所述的网络存储系统104。
在1204,来自用户组1的用户1尝试将桶复制添加到目标1。
在1206,来自用户组2的用户2尝试将桶复制添加到目标1。然而,该努力失败,因为用户2属于用户组2而不是用户组1,因此不能设置到目标1的复制。
在1208,系统确定复制的设置是否成功。如果是,则过程进行到1212。如果不是,则过程进行到1210。
在1210,如果复制的设置不成功,则系统可以向用户发送关于失败的警告。
在1212,如果复制的设置成功,则用户1可以将对象摄取到本地系统中,诸如摄取到本地桶中。
在1214,在对象摄取到本地系统中之后,同步事件被排队以用于对象到目标1的同步。
在1216,系统可以尝试将对象同步到目标1上的远程桶。
在1218,系统可以确定对象同步是否成功。如果是,则过程进行到1222。如果不是,则过程进行到1220。
在1220,如果同步不成功,则系统确定是否已经达到对象同步重试极限。如果是,则系统返回到1214并对对象的另一同步事件进行排队。另一方面,如果还没有达到重试限制,则过程进行到1216,并且系统对目标1进行另一对象同步尝试。
在1222,如果对象同步成功,则对象出现在远程系统上,并且同步事件消息从队列出队。
图13示出了根据一些实现的从同步过程1300的流程图。在图13的示例中,过程1300可以至少部分地由执行存储程序130、元数据网关程序138和/或策略引擎程序140的一个或更多个服务计算设备102来执行。
在1302,管理员可以向用户组1提供访问目标系统的许可。例如,目标系统可以是如上所述的网络存储系统104。
在1304,来自用户组1的用户1尝试将桶复制添加到目标1。
在1306,来自用户组2的用户2尝试将桶复制添加到目标1。然而,该努力失败,因为用户2属于用户组2而不是用户组1,因此不能设置到目标1的复制。
在1308,系统确定复制的设置是否成功。如果是,则过程进行到1312。如果不是,则过程进行到1310。
在1310,如果复制的设置不成功,则系统可以向用户发送关于失败的警告。
在1312,如果复制的设置成功,则随后,可针对对象启动来自消费者的同步。
在1314,可以在对应于目标1的远程队列上接收对象放置消息。
在1316,可以进行对象同步尝试。
在1318,系统可以确定对象同步是否成功。如果是,则过程进行到1322。如果不是,则过程进行到1320。
在1320,如果同步不成功,则系统确定是否已经达到对象同步重试极限。如果是,则系统返回1314并将另一对象放置消息排队到远程队列上。另一方面,如果还没有达到重试限制,则过程进行到1316,并且系统进行另一对象同步尝试。
在1322,如果对象同步成功,则对象出现在本地系统上,并且同步事件消息从远程队列出队。
这里描述的示例过程仅是为了讨论目的而提供的过程的示例。根据本文的公开内容,许多其它变化对于本领域技术人员将是显而易见的。此外,虽然本文的公开阐述了用于执行过程的适当框架、体系结构和环境的几个示例,但是本文的实现不限于示出和讨论的特定示例。此外,如在附图中所描述和示出的,本公开提供了各种示例实现。然而,本公开不限于本文中所描述和示出的实现方式,而是可以扩展到本领域技术人员已知或已知的其它实现方式。
图14示出了可以用于实现本文描述的系统的功能中的至少一些功能的服务计算设备102的选择示例组件。服务计算设备102可以包括一个或更多个服务器或可以以任何数量的方式实现的其它类型的计算设备。例如,在服务器的情况下,程序、其它功能组件和数据可以在单个服务器、服务器集群、服务器群或数据中心、云托管计算服务等上实现,尽管可以附加地或替代地使用其它计算机体系结构。多个服务计算设备102可以定位在一起或分开,并且例如被组织为虚拟服务器、服务器库和/或服务器群。所描述的功能可以由单个实体或企业的服务器提供,或者可以由多个不同实体或企业的服务器和/或服务提供。
在所示示例中,服务计算设备102包括或可以与其相关联的一个或更多个处理器1402、一个或更多个计算机可读介质1404和一个或更多个通信接口1406。每个处理器1402可以是单个处理单元或多个处理单元,并且可以包括单个或多个计算单元或多个处理核。处理器1402可以被实现为一个或更多个中央处理单元、微处理器、微计算机、微控制器、数字信号处理器、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。作为一个示例,处理器1402可以包括一个或更多个硬件处理器和/或任何适当类型的逻辑电路,该硬件处理器和/或逻辑电路被特别编程或配置为执行本文描述的算法和过程。处理器1402可以被配置为获取并执行存储在计算机可读介质1404中的计算机可读指令,其可对处理器1402编程以执行本文所述的功能。
计算机可读介质1404可以包括易失性和非易失性存储器和/或以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何类型的技术实现的可移动和不可移动介质。例如,计算机可读介质1404可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储技术、光存储、固态存储、磁带、磁盘存储、RAID存储系统、存储阵列、网络附连存储、存储区域网络、云存储,或者可以用于存储期望信息并且可以由计算设备访问的任何其它介质。取决于(一个或多个)服务计算设备102的配置,计算机可读介质1404可以是有形的非瞬态介质,其程度在于,当提到时,非瞬态计算机可读介质排除诸如能量、载波信号、电磁波和/或信号本身的介质。在一些情况下,计算机可读介质1404可以位于与服务计算设备102相同的位置,而在其它示例中,计算机可读介质1404可以部分地远离服务计算设备102。例如,在一些情况下,计算机可读介质1404可以包括上文关于图1所讨论的网络存储系统104中的存储的一部分。
计算机可读介质1404可用于存储可由处理器1402执行的任意数量的功能组件。在许多实施方式中,这些功能组件包括可由处理器1402执行的指令或程序,并且当被执行时,这些指令或程序具体地对处理器1402编程以执行本文中归因于服务计算设备102的动作。存储在计算机可读介质1404中的功能组件可以包括用户web应用116、管理web应用124、存储程序130、元数据网关程序138、策略引擎程序140和消息排队程序142,其中的每一个可以包括一个或更多个计算机程序、应用、可执行代码或其部分。此外,虽然在该示例中一起示出了这些程序,但是在使用期间,这些程序中的部分或全部可以在单独的服务计算设备102上执行。
另外,计算机可读介质1404可以存储用于执行本文描述的功能和服务的数据、数据结构和其它信息。例如,计算机可读介质1404可以存储元数据数据库134和本地对象数据144。此外,虽然在该示例中一起示出了这些数据结构,但是在使用期间,这些数据结构中的部分或全部可以存储在单独的服务计算设备102上。服务计算设备102还可以包括或维护其它功能组件和数据,其可以包括程序、驱动程序等,以及由功能组件使用或生成的数据。此外,服务计算设备102可以包括许多其它逻辑、编程和物理组件,上面描述的那些组件仅仅是与这里的讨论相关的示例。
一个或更多个通信接口1406可以包括用于实现例如通过一个或更多个网络106和107与各种其它设备的通信的一个或更多个软件和硬件组件。例如,通信接口1406可以实现通过LAN、互联网、电缆网络、蜂窝网络、无线网络(例如Wi-Fi)和有线网络(例如光纤信道、光纤、以太网)、直接连接以及诸如等近距离通信中的一个或更多个的通信,如本文其它地方另外列举的。
本文中描述的各种指令、方法和技术可在计算机可执行指令(例如存储在计算机可读介质上的计算机程序和应用)的一般上下文中考虑,并由本文中的处理器执行。通常,术语程序和应用可以互换地使用,并且可以包括用于执行特定任务或实现特定数据类型的指令、例程、模块、对象、组件、数据结构、可执行代码等。这些程序、应用等可以作为本地代码来执行,或者可以例如在虚拟机或其它即时编译执行环境中下载和执行。通常,程序和应用的功能可以根据需要在各种实现中组合或分布。这些程序、应用和技术的实现可以存储在计算机存储介质上或通过某种形式的通信介质传输。
虽然已经用针对结构特征和/或方法行为的语言对主题进行了描述,应当理解,所附权利要求中限定的主题不一定限于所描述的具体特征或行为。而是,具体特征和行为以实现权利要求的示例性方式被公开。
Claims (15)
1.一种系统,该系统包括:
第一计算设备,该计算设备能够通过网络与多个网络存储系统通信,其中,第一网络存储系统由采用第一存储协议的第一服务提供商提供,并且第二网络存储系统由采用与所述第一存储协议不同的第二存储协议的第二服务提供商提供,所述第一计算设备由可执行指令配置以执行包括以下各项的操作:
在所述第一计算设备处接收第一对象;
为所述第一对象确定所述第一网络存储系统处的第一远程桶和所述第二网络存储系统处的第二远程桶;
将同步事件添加到第一队列,用于将所述第一对象同步到所述第一远程桶和所述第二远程桶;以及
基于消耗来自所述第一队列的所述同步事件,将所述第一对象的数据和元数据复制到所述第一远程桶和所述第二远程桶。
2.根据权利要求1所述的系统,所述操作还包括:
生成第二队列,所述第二队列维护用于将数据从所述第一网络存储系统和所述第二网络存储系统同步到所述第一计算设备的同步事件;以及
在所述第一队列中,维护用于将数据从所述第一计算设备同步到所述第一网络存储系统和所述第二网络存储系统的同步事件。
3.根据权利要求2所述的系统,所述操作还包括:
在所述第一网络存储系统处,接收用于同步的数据的指示的发布;
基于所述发布,向所述第二队列添加同步事件;以及
基于所述第二队列中的所述同步事件,从所述第一网络存储系统复制所述数据。
4.根据权利要求2所述的系统,其中,所述第二队列从所述第一网络存储系统接收用于复制的数据的指示作为同步事件,所述操作还包括:
将所述数据从所述第一网络存储系统复制到所述第一计算设备处的本地存储器。
5.根据权利要求1所述的系统,其中,所述第一网络存储系统在所述第一网络存储系统处生成队列,所述操作还包括:
在所述第一网络存储系统处,消耗来自所述队列的同步事件;以及
基于所述同步事件,将数据从所述第一网络存储系统复制到所述第一计算设备。
6.根据权利要求1所述的系统,所述操作还包括:
确定与所述第一远程桶或所述第二远程桶中的至少一个相关联的过滤器;以及
基于确定所述过滤器不应用于所述第一对象,来复制所述数据和元数据。
7.根据权利要求6所述的系统,其中,所述过滤器针对对象名称或对象元数据中的至少一个,用于将复制限制到所述第一远程桶或所述第二远程桶中的至少一个。
8.根据权利要求1所述的系统,所述操作还包括:
在所述第一计算设备处接收第二对象;
确定与所述第二对象相关联的大小和内容散列与和所述第一对象相关联的大小和内容散列匹配;以及
将用于所述第二对象的元数据复制到所述第一远程桶和所述第二远程桶,并指示到所述第一对象的链接来代替所述第二对象的内容。
9.根据权利要求1所述的系统,所述操作还包括:基于确定所述第一远程桶和所述第二远程桶,向所述第一网络存储系统提供第一认证凭证,并向所述第二网络存储系统提供第二认证凭证,其中,所述第一认证凭证不同于所述第二认证凭证。
10.根据权利要求1所述的系统,所述操作还包括在所述第一计算设备上执行策略引擎程序,所述策略引擎程序将所述第一计算设备配置为:
消耗来自所述第一队列的同步事件;并且
确定用于将所述第一对象复制到所述第一远程桶的第一存储协议和用于将所述第一对象复制到所述第二远程桶的第二存储协议。
11.根据权利要求1所述的系统,所述操作还包括:
响应于接收到所述第一对象,将所述第一对象的数据实时存储在本地存储器中;
向所述第一对象的源实时发送响应;以及
随后将所述第一对象异步地复制到所述第一网络存储系统和所述第二网络存储系统。
12.一种方法,所述方法包括以下步骤:
通过第一计算设备接收第一对象,所述第一计算设备能够通过网络与多个网络存储系统通信,其中,第一网络存储系统由采用第一存储协议的第一服务提供商提供,并且第二网络存储系统由采用与所述第一存储协议不同的第二存储协议的第二服务提供商提供;
通过所述第一计算设备,为所述第一对象确定所述第一网络存储系统处的第一远程桶和所述第二网络存储系统处的第二远程桶;
通过所述第一计算设备,将同步事件添加到第一队列,用于将所述第一对象复制到所述第一远程桶和所述第二远程桶;以及
基于消耗来自所述第一队列的所述同步事件,通过所述第一计算设备,将所述第一对象的数据和元数据复制到所述第一远程桶和所述第二远程桶。
13.根据权利要求13所述的方法,所述方法进一步包括以下步骤:
生成第二队列,所述第二队列维护用于将数据从所述第一网络存储系统和所述第二网络存储系统同步到所述第一计算设备的同步事件;以及
在所述第一队列中,维护用于将数据从所述第一计算设备同步到所述第一网络存储系统和所述第二网络存储系统的同步事件。
14.一个或更多个非暂时性计算机可读介质,其存储指令,当由第一计算设备的一个或更多个处理器执行时,所述指令将所述第一计算设备配置为执行以下操作:
通过所述第一计算设备接收第一对象,所述第一计算设备能够通过网络与多个网络存储系统通信,其中,第一网络存储系统由采用第一存储协议的第一服务提供商提供,并且第二网络存储系统由采用与所述第一存储协议不同的第二存储协议的第二服务提供商提供;
通过所述第一计算设备,为所述第一对象确定所述第一网络存储系统处的第一远程桶和所述第二网络存储系统处的第二远程桶;
通过所述第一计算设备,将同步事件添加到第一队列,用于将所述第一对象复制到所述第一远程桶和所述第二远程桶;以及
基于消耗来自所述第一队列的所述同步事件,通过所述第一计算设备,将所述第一对象的数据和元数据复制到所述第一远程桶和所述第二远程桶。
15.根据权利要求14所述的一个或更多个非暂时性计算机可读介质,所述操作还包括:
生成第二队列,所述第二队列维护用于将数据从所述第一网络存储系统和所述第二网络存储系统同步到所述第一计算设备的同步事件;以及
在所述第一队列中,维护用于将数据从所述第一计算设备同步到所述第一网络存储系统和所述第二网络存储系统的同步事件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2019/068667 WO2021133406A1 (en) | 2019-12-27 | 2019-12-27 | Hybrid cloud asynchronous data synchronization |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114868105A true CN114868105A (zh) | 2022-08-05 |
Family
ID=76574985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980103323.4A Pending CN114868105A (zh) | 2019-12-27 | 2019-12-27 | 混合云异步数据同步 |
Country Status (5)
Country | Link |
---|---|
US (1) | US12086158B2 (zh) |
EP (1) | EP4081909A4 (zh) |
JP (1) | JP7450726B2 (zh) |
CN (1) | CN114868105A (zh) |
WO (1) | WO2021133406A1 (zh) |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470329B1 (en) * | 2000-07-11 | 2002-10-22 | Sun Microsystems, Inc. | One-way hash functions for distributed data synchronization |
US7636776B2 (en) | 2003-07-31 | 2009-12-22 | Microsoft Corporation | Systems and methods for synchronizing with multiple data stores |
JP4419460B2 (ja) * | 2003-08-04 | 2010-02-24 | 株式会社日立製作所 | リモートコピーシステム |
JP2006085324A (ja) * | 2004-09-15 | 2006-03-30 | Hitachi Ltd | レプリケーションシステム |
JP2008204301A (ja) * | 2007-02-21 | 2008-09-04 | Konica Minolta Business Technologies Inc | データ管理装置、データ管理方法およびデータ管理プログラム |
JP4855516B2 (ja) * | 2007-03-30 | 2012-01-18 | 富士通株式会社 | アクセス制御プログラム、アクセス制御装置およびアクセス制御方法 |
US8019863B2 (en) * | 2008-03-28 | 2011-09-13 | Ianywhere Solutions, Inc. | Synchronizing events between mobile devices and servers |
WO2012042509A1 (en) * | 2010-10-01 | 2012-04-05 | Peter Chacko | A distributed virtual storage cloud architecture and a method thereof |
JP2012098923A (ja) * | 2010-11-02 | 2012-05-24 | Mizuho Information & Research Institute Inc | ファイル転送システム及びファイル転送方法 |
US8914856B1 (en) | 2011-06-17 | 2014-12-16 | Amazon Technologies, Inc. | Synchronization of networked storage systems and third party systems |
US8789157B2 (en) * | 2011-09-06 | 2014-07-22 | Ebay Inc. | Hybrid cloud identity mapping infrastructure |
US8918474B2 (en) * | 2012-03-26 | 2014-12-23 | International Business Machines Corporation | Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth |
JP2017134539A (ja) * | 2016-01-26 | 2017-08-03 | 富士通株式会社 | 中継装置、ルータ、配信システム、中継方法及び中継プログラム |
US10884984B2 (en) * | 2017-01-06 | 2021-01-05 | Oracle International Corporation | Low-latency direct cloud access with file system hierarchies and semantics |
US10503427B2 (en) * | 2017-03-10 | 2019-12-10 | Pure Storage, Inc. | Synchronously replicating datasets and other managed objects to cloud-based storage systems |
US11165634B2 (en) | 2018-04-02 | 2021-11-02 | Oracle International Corporation | Data replication conflict detection and resolution for a multi-tenant identity cloud service |
US11108862B2 (en) * | 2019-10-14 | 2021-08-31 | Journey Mobile, Inc. | Bi-directional data sync between a client device and an application server |
KR20230174483A (ko) * | 2022-06-21 | 2023-12-28 | 한국전자통신연구원 | 이종 다중 네트워크 기반 심리스 네트워크 서비스 제공 장치 및 방법 |
-
2019
- 2019-12-27 US US17/774,500 patent/US12086158B2/en active Active
- 2019-12-27 CN CN201980103323.4A patent/CN114868105A/zh active Pending
- 2019-12-27 JP JP2022539394A patent/JP7450726B2/ja active Active
- 2019-12-27 WO PCT/US2019/068667 patent/WO2021133406A1/en unknown
- 2019-12-27 EP EP19957220.7A patent/EP4081909A4/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023509903A (ja) | 2023-03-10 |
US12086158B2 (en) | 2024-09-10 |
EP4081909A4 (en) | 2023-09-13 |
EP4081909A1 (en) | 2022-11-02 |
US20220391409A1 (en) | 2022-12-08 |
WO2021133406A1 (en) | 2021-07-01 |
JP7450726B2 (ja) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11928029B2 (en) | Backup of partitioned database tables | |
US11036591B2 (en) | Restoring partitioned database tables from backup | |
US10509684B2 (en) | Blockchain integration for scalable distributed computations | |
US11327949B2 (en) | Verification of database table partitions during backup | |
US20240179212A1 (en) | Hosted file sync with stateless sync nodes | |
US11893264B1 (en) | Methods and systems to interface between a multi-site distributed storage system and an external mediator to efficiently process events related to continuity | |
JP5727020B2 (ja) | クラウドコンピューティングシステム及びそのデータ同期化方法 | |
EP2675127B1 (en) | Method and device for automatically migrating system configuration item | |
US11442897B2 (en) | Optimizing content storage through stubbing | |
WO2017167100A1 (zh) | 一种数据迁移方法和装置 | |
WO2014118791A1 (en) | Methods and systems for shared file storage | |
CN110958293B (zh) | 基于云服务器的文件传输方法、系统、服务器及存储介质 | |
US12026177B2 (en) | Dynamic adaptive partition splitting | |
US12086158B2 (en) | Hybrid cloud asynchronous data synchronization | |
US20240176762A1 (en) | Geographically dispersed hybrid cloud cluster | |
US20240160606A1 (en) | Hybrid cloud event notification management | |
US20230283663A1 (en) | Randomization of heartbeat communications among multiple partition groups |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |