CN112654978B - 分布式异构存储系统中数据一致性实时检查的方法、设备和系统 - Google Patents
分布式异构存储系统中数据一致性实时检查的方法、设备和系统 Download PDFInfo
- Publication number
- CN112654978B CN112654978B CN201980058602.3A CN201980058602A CN112654978B CN 112654978 B CN112654978 B CN 112654978B CN 201980058602 A CN201980058602 A CN 201980058602A CN 112654978 B CN112654978 B CN 112654978B
- Authority
- CN
- China
- Prior art keywords
- data
- metadata
- storage service
- data storage
- stored
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000003860 storage Methods 0.000 title claims description 168
- 238000013500 data storage Methods 0.000 claims abstract description 133
- 230000035772 mutation Effects 0.000 claims abstract description 53
- 230000010076 replication Effects 0.000 claims abstract description 35
- 230000008569 process Effects 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 21
- 230000009471 action Effects 0.000 abstract description 17
- 238000000125 metastable de-excitation spectroscopy Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 14
- 239000000306 component Substances 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 9
- 238000011084 recovery Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 238000005192 partition Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000006641 stabilisation Effects 0.000 description 2
- 238000011105 stabilization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100172132 Mus musculus Eif3a gene Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- 238000005067 remediation Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/182—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/187—Voting techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
Abstract
一种计算机实施的方法可以包括通过第一多个复制状态机执行系列有序协议,以对存储在第一类型的第一数据存储服务中的数据进行突变,并通过第二多个复制状态机执行所述系列有序协议,以对存储在第二类型的第二数据存储服务中的数据进行突变。然后可以接收和存储在第一数据存储服务中存储的突变数据的第一元数据,以及在第二数据存储服务中存储的突变数据的第二元数据。然后,使用接收到的所述第一元数据和所述第二元数据在第一数据存储服务和第二数据存储服务之间进行同步,以确定存储在第一数据存储服务中的与第一元数据相对应的数据和存储在第二数据存储服务中的与第二元数据相对应的数据在根据预定的系列有序协议中的一个进行了突变之后何时均已确立。然后,当已经确定存储在所述第一数据存储服务中的与所述第一元数据相对应的数据和存储在所述第二数据存储服务中的与所述第二元数据相对应的数据已经根据所述系列有序协议中预定的一个确立时,执行所存储的第一元数据和第二元数据的比较。然后根据比较结果执行选定的动作。
Description
相关申请的交叉引用
本申请的主题与共同转让的美国专利申请2017年3月13日提交的15/457,837、2016年9月26日提交的15/276,455和2008年2月13日提交的12/069,986有关,它们中的每一个均通过引用整体并入本文。
背景技术
本文公开的实施例的领域包括分布式系统。摄取内容的大多数存储系统都会公开一些功能来确定摄取数据的内容是本地正确的或是一致的。然而,等效概念在传统上是每个存储系统的本地属性。
附图说明
图1是根据一个实施例的系统的框图。
图2是示出了根据一个实施例的计算机实施的方法的各方面的流程图。
图3是示出了根据一个实施例的计算机实施的方法的各方面的流程图。
图4是示出了根据一个实施例的计算机实施的方法的各方面的流程图。
图5是可以实践本文示出和描述的实施例的计算设备的框图。
具体实施方式
定义
分布式系统:分布式系统包括不同的、计算和/或存储过程和/或设备的集合,其可以在空间上分离,并且可以通过信息或事件的交换彼此通信。
复制状态机:复制状态机方法是一种用于通过复制服务器并协调客户端与服务器副本的交互来实现容错服务的方法。这些状态机是“复制的”,因为状态机的状态在所有学习者中都以有序方式相同地演变。单个服务器的副本在分布式系统的单独处理器上执行,并且协议用于协调客户端与这些副本的交互。复制状态机的一个示例和实现是确定性状态机,它以确定性方式使用其状态。
协议:协议是由提议者生成并交付给学习者的潜在多个提议事件中的选定事件之一。
全局序列协议:根据一个实施例,提议被至少大多数接受者提交并同意,并以全局序列协议交付。然后,接收全局序列协议的服务器节点可以按照全局序列协议指定的顺序执行基础交易,并相应地更新其复制分类账(ledger)的副本,从而确保按相同顺序更新复制分类账的所有副本。
分布式协议/协调引擎(DConE):一个实施例要求协议或协调引擎通过Paxos共识协议的新颖生产级实现来生成商定的交易的有序全局序列。在2008年2月13日提交的共同转让的美国申请号为12/069,986的美国申请中描述了示例性DConE,该申请的全部内容通过引用合并于此。DConE是容错的,连续可用的和确定性的复制状态机。DConE的工作方式是收集提议者产生的事件,在接受者的帮助下将它们组织成有序的全局序列,并将其按顺序传递给学习者。学习者通过处理交付事件的有序顺序来实现其业务逻辑。DConE保证每个提议事件至少按一次达成一致的提议的相同顺序的全局顺序交付给每个学习者节点一次。
无阻塞:这里,术语“无阻塞”是指一组进程在对其进行更改时保持全部或部分可用的能力。
提议者:根据一个实施例,提议者是被配置并被启用以建议提议的过程,其中一些可以配置为使数据突变。
接受者:根据一个实施例,接受者是配置为参与决定提议者提出的提议的顺序的过程。根据一个实施例,仅当大多数接受者确定提议在全局序列协议中占据特定位置时,它才成为协议(例如,商定的提议)。根据一个实施例,可以将接受者配置为仅参与决定协议的顺序,而不理会/关心协议的基本内容(如此处所述,协议的价值对DConE不透明)。接受者可以配置为独立于应用程序的实体。
学习者:根据一个实施例,学习者了解在提议者和接受者之间达成的协议,并通过其输出提议序列以确定性顺序将协议应用于应用。在一个实施例中,提供协议身份,以及持久性存储,对于每个复制状态机,持久性存储允许持久地记录一系列协议。保证每个提议至少被发送给特定成员中的每个学习者一次。
成员资格:成员资格指定一组节点或过程,以及每个角色在指定的节点集中扮演的角色。根据一个实施例,成员资格可以包括作为一组接受者,一组提议者和一组学习者。
分布式协调引擎(DConE)
根据一个实施例,DConE实现了Paxos算法的增强的企业版。在Paxos算法下,复制状态机与分布式系统中的每个节点一起安装(此处,术语“节点”是指可以托管和执行进程的逻辑或物理实体,例如虚拟机或物理机)。然后,复制的状态机充当对等方(peer),以提供一种协作的协议管理方法,以确保每个节点上的协议顺序相同(尽管不必同时)。实现Paxos算法的服务器节点上的复制状态机可以充当以下三个角色之一:(1)提议者;(2)接受者;(3)学习者。Paxos算法分为三个阶段,在达成共识的过程中可以重复执行三个阶段:(1)选举一个节点担任协调器或提议者;(2)将交易提议广播给其对等方,然后由他们承担接受或拒绝该提议的学习者的作用;(3)接受,一旦大多数节点认可了提议者并接受了它的提议,就可以达成共识。承担协调器角色的复制状态机随后广播提交信息,以通知其所有对等方继续进行交易。
为了避免多个节点试图充当同一提议的协调器的情况,Paxos将顺序分配给连续的协调器节点,并限制每个协调器在选择要为提议编号达成一致的值时的选择。为了支持这一点,每个节点都追踪它所看到的最新的议定提议序列号。当节点发出提议时,它会为提议生成一个序列号,该序列号的值要大于它知道的最后一个序列号,并将其广播到其他节点。如果大多数其他节点都答复表示他们没有看到更高的序列号,则允许该节点充当提议的协调器或领导者。在这一点上,其他协调器必须等到对当前提议达成共识后才能进行。尝试同时充当协调器的其他节点不能使用该提议者的序列号,并且所有将来的提议必须使用更高的序列号才能达成对未来交易的共识。
以DConE达成共识
为了理解DConE的分布式交易处理方法,以下详细介绍了每个DConE实例支持其主动-主动复制功能的核心组件:提议管理器,本地定序器,协议管理器和全局定序器。当协议被提交给分布式系统以供客户在任何节点处进行处理时,DConE本地实例的提议管理器组件将生成一个提议,该提议可能包含对数据片段进行突变的命令。然后,DConE实例将本地序列号(LSN)分配给该提议。LSN反映了交易相对于所有其他协议的提交顺序。LSN不必是连续的数字,而只需是唯一的。然后,本地定序器将具有分配的本地序列号的提议保存到其提议日志中。如果在下面描述的协议过程中DConE的本地实例能够将提议提交给其对等方之前发生网络或服务器中断,它将在该提议恢复后重新提交该提议。
接下来,DConE的协议管理器确定一个协议号,该协议号表示本地DConE实例将提交给其他节点的对等方提议的提议全局序列号(GSN)。根据Paxos,协议号只是所有节点接受的最后一个提议的GSN的增量。然后,使用此协议号来获得关于所有节点之间协议顺序的共识,从而保持一拷贝等效。然后将带有协议号的提议写入协议日志。每个DConE实例的协议日志或复制的分类帐至少包含所有已完成的协议,而无论已完成协议源自的服务器节点如何。在网络中断的情况下,协议日志将指示该节点在失去与分布式系统中其他节点的连接之前断开的位置,从而在DConE的自动恢复过程中很有用。下文描述了协议日志和提议日志在恢复过程中扮演的角色。
然后,由本地DConE实例的协议管理器启动协议协议(agreement protocol),并将提议提交给其对等方。一旦DConE实例的对等方的仲裁数达成了该提议的协议,该协议号将用作所有节点上的GSN,因为现已实现了全局交易排序。仲裁概念使DConE可以达成协议,而无需所有节点都可用或同意。仲裁概念是DConE性能及其容错能力的关键要素。仲裁概念也在下面描述。
如果协议被竞争性提议抢占,则协议管理器反复尝试以新的协议号达成协议。每次重新尝试协议时,都会在协议日志中创建一个具有新协议号的条目。一旦仲裁达成协议,本地应用程序节点便以其全局顺序将商定的提议加入队列。此时,本地DConE实例将交易按约定的全局序列号顺序传递到其各自的锁定调度程序进行处理。重要的是要注意,发起提议的DConE实例不会等待其他任何节点完成交易的执行;它仅等待达成协议,让用户体验LAN速度性能。
保留本地序列
因为出于性能原因DConE支持并发协议,所以仲裁可能无法达成协议。即,有可能就在另一个节点上先前提交但尚未达成协议的提议之后提交的提议达成协议。
回想一下DConE从多个服务器节点获取提议,将它们整理为唯一的全局顺序,并使其他每个服务器节点都可以访问它。有时候,对于给定的服务器节点,实施先到先得或先进先出(FIFO)的过程,根据提议的到达时间处理提议,并确保以相同的顺序输出提议。例如,可以通过公平性策略或因果排序约束来强制进行这种排序,根据一个实施例,这是通过捕获并就多个服务器节点发布的所有提议达成共识而满足的两个要求。
以下示出了一个实施例,该实施例使DConE能够确定全局交易的顺序,同时保留提交提议的本地顺序。假设服务器节点将其前两个提议提交给DConE,并且提议管理器将LSN1和LSN 2分配给各个提议。进一步假设,已经商定了GSN 1到25的总共25个提议,其他服务器节点未提交任何中间提议。进一步假设仲裁组在LSN 1达成协议之前就LSN 2达成了协议。如果本地序列对应用程序无关紧要,则LSN 2将具有协议号和GSN 26,而LSN 1将具有协议号和GSN 27。然后将在所有服务器节点上按该顺序编写提议。如果要求是确保无论提议来自何处,都在所有节点上保留本地序列,一个实施例使用LSN,协议号的组合,在这种情况下,协议号可能会也可能不会是GSN,提议者ID,其代表提议起源的DConE实例的全局唯一标识符,以构造保留本地序列顺序的全局序列。实际上,全局序列在提议者ID内以本地序列顺序排序,并传递到每个服务器节点上的锁定调度程序(如下所述)。
锁定调度程序(The
Locking
Scheduler)
DConE将每个服务器节点上的锁定调度程序传递给已同意的提议给在每个服务器节点上运行的应用程序。锁定调度程序的行为类似于数据库调度程序,而不是分布式锁定管理器。术语“锁定调度程序”来自以下事实:其依赖于应用程序指定的并发控制锁定,因此可以并行处理大量不冲突的协议。锁定调度程序与全局顺序无关。锁定调度程序向每个站点上的基础应用程序提交交易的顺序由从该服务器节点上相应DConE实例传递给全局排序事件的本地队列(GSN队列)驱动。这允许在每个服务器节点上完全本地锁定的调度程序在不了解全局状态的情况下实现单副本等效。锁定调度程序与基础应用程序接口,而不是直接与DConE接口。
实现性能和可扩展性
DConE大大扩展了Paxos算法的功能,从而实现了大规模的增强性能。此类扩展功能包括仲裁、并发协议处理、避免退避和冲突、动态组演化、分布式垃圾回收、提议的显著且公平的回合编号和弱保留,以识别出该扩展功能所涵盖的几个领域。
仲裁数
DConE使用的仲裁概念允许根据服务器节点上用户的分布情况来优化性能,并使网络和服务器中断的影响最小化。可用的仲裁配置选项包括多数,单例和一致同意。预计分布式系统将以多数仲裁达成共识的方式运行,尽管单例和一致同意也是可能的。在大多数仲裁条件下,需要大多数服务器节点来响应任何提议。DConE还支持专有节点的概念,当分布式系统中的服务器节点数为偶数时,该节点可以充当决胜局。使用单例仲裁,只有一个节点必须响应提议。在此配置下选择为单例仲裁的服务器节点可以是具有最大数量的客户和交易活动级别的服务器节点。好处是,在协议过程中,在具有最大交易量的服务器节点上不会生成广域网(WAN)流量。协议完全由仲裁节点上的本地DConE实例处理。其他服务器节点提交其提议以从单例仲裁节点获得协议,但是通常会体验到快速的性能,因为它们只需要指定的单例服务器节点同意他们的提议,而不是在将它们交给各自的本地锁定调度程序之前就完成它们的执行。一致的仲裁要求所有服务器节点做出响应,并且本质上是效率最低的配置以及生成最多WAN流量的配置。
DConE还支持基于太阳追踪模型的仲裁数从一个区域到另一区域的旋转。这样,可以在全球分布式系统中每个站点的正常工作时间的基础上优化性能。此外,仲裁方法与DConE的自动恢复功能结合使用,可最大程度地减少网络中断和服务器崩溃对分布式系统的影响。
并发协议
Paxos算法一次仅允许达成一项提议的协议。在高交易量环境中,这会明显降低性能。DConE允许来自多个提议者的多个提议同时进行,而不必等待每个提议的提议中所有或仲裁服务器节点达成协议。
退避和避免碰撞
DConE提供了一种退避机制,用于避免提议者被其对等方重复地抢占。常规的复制状态机允许被抢占的提议者立即发起新的回合,而其协议号要比抢先者的协议号高。这种方法可能导致协议协议长时间崩溃,并严重降低性能。使用DConE时,如果先发一局,发起提议的DConE实例将计算退避延迟的持续时间。然后,提议者在开始下一轮之前等待此持续时间。DConE对非交换式以太网使用类似于载波侦听多路访问/冲突检测(CSMA/CD)协议的方法。
自动备份和恢复
默认情况下,DConE的主动-主动复制功能通过将每个服务器节点变成彼此的镜像来提供连续的热备份。当服务器节点由于网络或服务器故障而落后时,可以利用它来通过WAN或LAN提供自动恢复。无需手动干预。如果分布式系统中的服务器节点失去了与对等节点的联系,但是位于其所在位置的用户仍然可以使用,这些用户仍将具有对分布式系统的读取访问权限,但由于协议过程无法进行,因此可能不被允许发布提议。这样可以防止出现裂脑情况,该裂脑情况将导致服务器节点与其对等节点不同步,从而违反了在所有服务器节点上进行一个副本等效的要求。但是,只要仍然有仲裁,提议仍可以在其余服务器节点上提交。这样可以最大程度地减少网络中断和服务器故障对分布式系统的影响。一旦发生故障的服务器节点重新联机,其DConE实例将在脱机时自动追赶其对等方同意的所有提议。这是通过使用协议日志来完成的。协议日志包含发生中断之前在服务器节点上最后完成的日志。恢复过程开始时,服务器节点的DConE实例会向其对等方请求其协议日志中最后记录的所有协议。此外,一旦追赶(catch-up)完成,本地DConE实例将自动将提议日志中剩余的所有未完成协议过程的提议自动重新提交。这意味着无论在分布式系统中跨服务器节点的任何提议达成一致之前还是之后发生中断,都不会丢失任何数据。
此外,DConE的自动恢复功能消除了对磁盘镜像解决方案的需求,该解决方案只能在LAN(而非WAN)上运行,并且需要管理员干预才能实现恢复。结果,这些解决方案可能会带来因人为错误而导致停机时间延长和数据丢失的风险。最后,DConE的自动恢复功能还可以使服务器脱机以进行维护,而不会中断用户访问,因为用户可以在脱机时重定向到另一个站点上的服务器节点。这样就可以在全球分布式环境中进行全天候的24×7全天候运行。
图1是根据一个实施例的跨WAN的群集和分布式文件系统的组件的框图。如图所示,根据一个实施例的分布式文件和存储系统102,可以包括两个或更多个域;即域1和域2。例如,域1可以包括Amazon AWS存储服务,而域2可以包括例如Microsoft Azure存储服务。域1和2可能在地理位置上彼此远离。例如,域1和域2可能位于单个国家的不同部分,可能分布在不同的大陆,不同的时区,并且可能来自完全独立的电网。域1和2可以经由WAN 108彼此松散地耦接,WAN 108可以包括例如因特网和/或其他私有和/或专有网络。域1和2也可以通过其他专用的高速连接进行耦接。尽管在图1中仅示出了两个这样的存储服务域1和2,但是应当理解,实施例可以包括更多数量的域,并且分布式文件系统102在所有这样的域上扩展。
如图所示,域1可以包括在图1中表示为“MDS”110、112、114以及表示为MDS116、118和120的多个活动(与例如备用或故障转移相反)元数据服务器(其中的Hadoop名称节点(NameNode)只是一种可能的实现)。MDS 110、112、114中的每一个都可以配置为存储域1中名称空间的状态,以及MDS 116、118、120中的每一个都可以配置为在分布式文件系统的域2中存储名称空间的状态。在理想情况下,在任何给定的GSN上,域1中名称空间的状态都将与域2中名称空间的状态相同。MDS之间的协调和名称空间的维护可以由分布式协调引擎(DConE)进程122提供。在图1中,以表明DConE进程122为跨域1,域2和WAN 108的独立逻辑实体的方式示出了DConE进程122。然而,根据一个实施例,上文和下文所述的DConE 122的功能可以由MDS 110、112、114、116、118和120中的每一个释放。即,MDS 110、112、114、116、118和120中的每个MDS都可以配置为执行其其他功能,以执行DConE 122的部分或全部职责。
如所示,域1可以包括多个数据节点(DataNode)124、126、128、130,在图1中被称为“DN”。类似地,域2还可以包括多个数据节点132、134、136、138,也称为“DN”。如图所示,每个数据节点124、126、128、130可以耦接到DCA 102的MDS110、112和114并与之通信。还如图所示,每个数据节点132、134、136、138可以耦接到DCB 106的MDS 116、118和120并与之通信。备选地,DN 124、126、128、130可以从外部被认为是由存储服务(例如,Amazon WebServices或AWS)内部管理的整体存储资源。类似地,DN 132、134、136、138也可以被认为是由存储服务(例如,Azure或某些其他存储服务)内部管理的整体存储资源。根据一个实施例,MDS可以不直接与数据节点通信。实际上,根据一个实施例,数据节点可以配置为向MDS发送请求,随后,MDS响应于所接收的请求而向数据节点发出命令。因此,尽管可以说MDS控制数据节点,但是根据一个实施例,可以将数据节点配置为向MDS发送请求以便从其接收命令。域1中显示了四个数据节点124、126、128、130。类似地,在域2中示出了四个数据节点132、134、136和138。但是,应该理解,域1和2数据各自可以包含比图1所示更多(例如,数千个)的数据节点。
尽管示出了在域1内提供三个MDS 110、112、114,但是可以在域1内提供更多数量的MDS。类似地,尽管三个MDS 116、118、120被示为在域2中提供,但是可以在DCB域2中提供更多的MDS。为了达到仲裁目的,可以将数据中心内的MDS数量选择为奇数。
根据一个实施例,图1显示了运行单个分布式文件系统的群集,该群集跨越了不同的地理区域。分布式文件系统可以例如包含HDFS的各个方面。每个数据节点可以配置为仅通过其自己域内的MDS(通过数据节点到名称节点远程过程调用(RPC)协议)进行通信。相反,数据中心的MDS可以配置为仅控制其自己域内的数据节点。即,根据一个实施例,域1的数据节点仅可以与与域1相关联的MDS通信,并且域2的数据节点可以仅与与域2相关联的MDS通信。
根据一个实施例,DConE进程122可以配置为保证对名称空间的状态的相同确定性更新以相同确定性顺序应用于所有MDS。根据一个实施例,确定性顺序由全局序列号(GSN)定义。因此,根据一个实施例,DConE进程122的重要作用是处理提议以修改或以其他方式更新来自所有MDS的名称空间的状态并将它们转换为全局排序的协议序列。然后,MDS可以从该有序序列中顺序应用协议,作为对其存储状态的更新。根据一个实施例,GSN可以配置为唯一的单调递增的数字。然而,如本领域技术人员可以认识到的,可以以其他方式配置GSN。然后,可以使用GSN来比较不同MDS在更新名称空间状态以及使该名称空间状态在MDS之间保持一致的过程(或通过顺序应用全局排序的协议序列,使存储在每个MDS中的名称空间的状态随着时间的推移变得一致)。例如,如果MDS 110刚刚处理了编号为GSN1的协议,该协议小于MDS 112刚刚处理的GSN2,则MDS 110的命名空间状态要比MDS 112早。只要MDS 110在此期间未处理较高编号的协议,则MDS 110一旦处理GSN2,MDS 110存储的名称空间的状态将与MDS 112存储的名称空间的状态匹配。以这种方式并通过依次执行由DconE进程122生成的有序协议(尽管是GSN机制),理想情况下,存储在每个数据中心的每个MDS中的命名空间的状态应保持一致。
根据一个实施例,对于每个操作,客户端了解在客户端当前连接到的MDS上处理的最新GSN。之后,如果客户端切换到另一个MDS,则根据一个实施例,它应该首先等待(如果需要),直到新的MDS赶上客户端知道的最后一个GSN(即,客户端从先前访问的MDS收到的GSN)之前,才发出包含数据访问命令(例如写入)的RPC。这将避免过时的读取问题。由于MDS从相同状态开始,所以更新的这种有序应用意味着副本的一致性,因为在相同的GSN上处理协议的不同节点上拍摄的快照快照在数据中心之内和之间都是相同的。
当DConE进程122传递协议时,一个实施例即时地协调MDS 110、112、114、116、118、120之间的所有元数据(或几乎如此,考虑到网络固有的带宽和延迟)。同样,所有文件系统数据也将自动跨群集的域复制。一个实施例在(例如但不限于Hadoop)群集中的文件系统之间提供一致的,连续的数据复制。客户端应用程序可以配置为与虚拟文件系统交互,该虚拟文件系统跨多个群集集成了基础存储。当对一个群集中的文件进行更改时,这些更改将一致地复制到其他跨群集中。一个实施例可以包括允许Hadoop部署在(例如,Hadoop)群集之间复制HCFS数据的软件应用,该群集运行不同甚至不兼容的Hadoop版本,例如,例如CDH、HDP、EMC Isilon、Amazon S3/EMRFS和MapR。根据一种实现方式,还可以在不同的供应商发行版和Hadoop版本之间进行复制。
有利地,实施例提供了使用主动-主动复制技术的分布式虚拟文件系统,单个虚拟名称空间和WAN复制,传递了在存储服务域之间复制的单副本一致数据。
实施例可以配置为通过将数据传输到远程云服务来提高云中的处理能力,例如AWS,该平台提供按需计算能力、数据库存储、内容交付和其他功能,可在需要时获得更多处理能力。
等效性和一致性检查
如本文所述和所示,本发明的实施例涉及用于确定分布式系统中数据的等效性的方法和分布式系统(以及由此实现的功能),该分布式系统由可变速度的异步过程组成,并通过应用复制状态机来采用有序动作,其主要目的是跨不同的同构或异构存储系统复制数据。不管底层存储系统如何,本文中的实施例使得能够对数据进行持续监视并进行等效检查。实施例在全文中是可组合的,从而促进了大规模的应用。可以针对某些属性确定等效性,例如,复制数据的校验和是否与其原始副本匹配。例如Apache HDFS之类的分布式存储设施会在数据块上生成校验和,并使用此信息来确定块副本的一致性。亚马逊的简单存储服务(S3)允许用户将元数据和数据块一起包括在内,以便客户可以确认正确的数据接收。微软的Azure存储具有类似的功能。可以由客户端(例如,在S3中)或系统(例如,在ApacheHDFS中)定义可观察到的数据等效方法。
这里示出和描述的实施例包括用于实时(或尽快)确定违反一致性不变式的计算机实施的方法,设备和系统;换言之,检查分布式异构存储系统中数据的一致性。
这里,术语“等效的(equivalent)”或“等效(equivalence)”是指“一个副本等效”属性,因为所有副本都是彼此功能上等效的副本。换言之,如果两个或多个节点以相同的数据副本开始,并且对该数据的所有更改都以相同的顺序应用于每个副本,则在x笔交易数结束时,所有副本将保持彼此相等。本文描述和示出的实施例使得能够在使用否则不兼容的存储系统的环境之间进行一致性检查,其中每个系统能够在不引入不一致的情况下读取和写入相同数据的本地副本。实际上,可以在任一环境中对数据的本地副本进行更改,而不会造成差异。因此,实施例使得能够跨云和本地存储在全局级别上进行一致性检查,以显示跨异构数据存储系统的用户数据的一个副本等效性。
本文提出的实施例将等效性扩展到单个存储系统之外,以引入跨存储系统等效性。这里,基于分布式状态机生成的有序指令,跨不同的同构或异构存储系统发出突变的顺序属性用于确定一个存储系统和复制的不同存储技术所摄取的数据相对于一个或多个存储系统的通用或不可知等效属性是否等效。实施例是可组合的和可扩展的,并且与发布突变的过程完全脱钩。
实际上,在所谓的大数据环境中的大型分布式系统的上下文中,能够一致地确定数据点的每个副本在多个数据存储库站点之间是否相同是有用的。在此,假设对数据的突变(例如,对数据的写入、附加或前置)是有序的。即,复制服务器在所有数据存储站点上以相同顺序对相同数据施加相同的更改。该相同顺序可以通过上述全局序号(GSN)或等效机制控制。一个服务(例如,亚马逊的AWS服务)存储的数据可能不会与另一服务(例如,Microsoft Azure)存储的相同数据的副本同时出现相同的变化,尽管如此,还是以相同的顺序应用了相同的更改,因此数据的副本可能以相同的方式发生突变,尽管可能并非在同一时间。随着时间的流逝,如果不再对数据应用任何突变(与该数据有关的所有协议都已被消耗),则数据将稳定下来(保持不变),并且在AWS站点和Azure站点上都是等效的。
图2示出了根据一个实施例的一种用于检查数据一致性的计算机实施的方法的各方面。如其中所示,B202显示了一个复制状态机,该状态机使用协议,其中一些协议可能会使存储在一个或多个存储服务206中的数据发生突变。每个存储服务206可以包括一些设施(facility),以在B202观察复制的状态机对所存储的数据的突变的影响并发出相应的通知。这样的设施在图2中在事件平面208处表示。例如,在Amazon AWS中,此类功能可能是由AWS Cloudtrail提供的。Cloudtrail是一项AWS服务,可对AWS账户进行管理、合规性以及运营和风险审计。用户、角色或AWS服务执行的操作在CloudTrail中记录为事件。事件包括在AWS管理控制台、AWS命令行界面以及AWS开发工具包和API中采取的操作。当活动在AWS账户中发生时,该活动将记录在CloudTrail事件中。可以在CloudTrail控制台的“事件历史记录”中查看最近的事件。为了在AWS账户中持续记录活动和事件,可以创建追踪。CloudTrail使用户或流程可以查看,搜索,下载,存档,分析和响应整个AWS基础架构中的帐户活动。可以将追踪配置为通过元数据来标识谁或采取了什么行动,采取了什么资源,事件何时发生以及其他细节。通过适当设置追踪设置,可以自定义事件记录。事件发生时,将评估追踪设置以确定事件是否与追踪设置匹配。仅记录与预先存在的追踪设置匹配的事件。
可以将线索配置为记录数据和管理事件。数据事件可洞察在资源上或资源内执行的资源操作。这些也称为数据平面操作。管理事件可洞察对AWS账户中的资源执行的管理操作。这些也称为控制平面操作。数据平面和控制平面操作在图2中都表示为事件平面208。
类似地,Microsoft Azure还提供数据平面日志和控制/管理日志。数据平面日志(例如Azure诊断日志)提供有关作为Azure资源使用一部分引发的事件的信息。此类日志的示例包括虚拟机(VM)中的Windows事件系统,安全性和应用程序日志,以及通过AzureMonitor配置的诊断日志。控制/管理日志提供有关Azure资源管理器的CREATE,UPDATE和DELETE操作的信息。这种记录工具在图2中也表示为事件平面208。Azure中的诊断设置使资源日志可以根据需要进行配置。
无论是源自AWS、Azure还是其他一些存储服务,都可以将事件平面208配置为使用户能够观察存储在服务上的数据以及对该数据进行的更改。例如,存储服务的日志记录功能可以配置为记录其他可能的事件,例如数据的创建、文件的打开或关闭、文件的移动、写操作、删除操作和/或影响正在监视的数据的跨存储服务一致性的任何其他操作。在一个实施例中,每个存储服务的事件平面208可以配置为生成并发送与基础存储有关的所选事件的通知。
在图2中B206处显示了属性获取。根据一个实施例,属性获取B206可以配置为查询底层存储服务的日志记录服务(和/或从底层存储服务的日志记录服务接收通知),以获取关于所存储的数据的所选信息。例如,属性获取块B206可以配置为例如查询存储所选择的元数据的S3存储桶(bucket)。Amazon S3存储桶是一种公共云存储资源,可用于对象存储产品AWS的简单存储服务(S3)中。与文件夹相似,Amazon S3存储桶存储的对象由数据及其描述性元数据组成。这样的元数据可以包括例如数据大小、名称、校验和、用户权限等。注意,根据一个实施例,从S3存储桶或其他元数据存储库中检索的元数据或某个其他数据服务的日志可以配置为与基础存储无关。换言之,由属性获取块B206检索的元数据可能不包括任何特定于存储服务的元数据,从而使存储在一个存储服务(例如,AWS)上的数据的元数据与存储在某些其他存储服务(例如,Azure或任何其他服务)上的数据的元数据轻松、有意义地进行比较。例如,属性获取块B206可以从AWS S3存储桶中检索(或接收有关)选定的元数据,并从Microsoft Azure的Blob(类似于S3的流存储服务)中检索(或接收)相似的元数据。其他类似的存储服务包括,例如Google Cloud,其中Cloud Pub/Sub接收并发送有关对受监视数据对象(包括事件和受事件影响的对象)的更改的通知。在任何情况下,根据一个实施例,属性获取块B206可以配置为从两个或更多个存储服务收集受一个或多个选定事件影响的数据对象的元数据。根据一个实施例,属性获取块B206可以在命名空间之间划分,使得属性获取块B206分布在两个或更多个节点上。因此,属性获取块B206的每个组件可以被委托给数据存储系统的预定或选择的分区。在一个实施例中,分区也可以是动态的,并且属性获取块B206的任何组件可以被动态地委派给基础存储的一个或多个分区。属性获取B206查询基础存储服务或从事件平面208接收通知的频率是可选择的。例如,可以在每次写入和/或每次关闭数据点(对象,块,预定量的数据)时,以规则或预定的时间间隔和/或在满足预定标准时收集元数据以进行一致性检查。根据实施例,因此通知的粒度或基础存储服务的查询的频率可以定义可以执行一致性检查的次数和/或频率。因此,一致性检查可能基本上有规律地间隔开,或者可以在发生预定事件时执行,例如,关闭数据点并在整个存储服务中解决该数据点上的突变。
可以提供协调器块B208,以从事件平面B204接收关于来自几个存储服务的收集的元数据的通知。根据一个实施例,协调器块B208在分布式存储系统或服务的多个实例之间同步,以使得能够在不同云环境中的数据之间进行有意义的比较。在一个实施例中,可以使用全局序列号或GSN或管理分布式系统中数据的有序突变的某种其他排序机制来执行这种同步。在一个实施例中,块B208中的协调器可以配置为确定何时不同的存储系统(AWS,Azure等)已经对预定数据执行了预定突变。在一个实施方案中,预定突变可以由GSN鉴定。换言之,协调器B208可以配置为确定存储特定数据实例的所有存储系统何时完成了所选GSN所要求的突变,并且此后没有再次对该数据进行突变。的确,如果所有存储特定数据副本的存储服务都已对该数据执行了预定的更改,可以有意义地相互比较由属性获取块在B206处收集的与存储服务无关的元数据,以确定基础数据的等效性或不等效性;即,跨存储系统的数据是否相同。在一个实施例中,可以用关联的GSN标记每个突变,从而使协调器块B208能够轻松确定每个存储服务上的数据是否已被GSN关联的操作突变。因此,GSN的记录可能驻留在存储服务上。
例如AWS、Azure、Google Cloud之类的存储服务必然以不同的速度运行。协调器B208,其从属性获取块B206接收与存储服务无关的元数据,可以将其配置为等待,直到存储和更改一条数据的副本的所有存储服务都对同一条数据执行了相同的更改。实际上,由于应用程序领域的原因,必须考虑不同存储服务的不同运行速度。为此,可以使用状态机颁发的突变身份(在一种实现中为GSN)。例如,假设一个存储服务进程已发出一系列写入(x,0),(x,1),其中元组的第一部分是突变的主题,元组的第二部分是状态机发布给突变的身份,并且已经发布了另一个存储服务(x,0)。在这种情况下,可以观察到前者的存储服务比后者的存储服务进步更大(例如,处理协议更快)。在这种情况下,尝试在第一个存储服务已执行(x,0)和(x,1)时比较x的属性或元数据,而第二个存储服务仅执行(x,0)不会产生任何有关等效的有用信息。因此,为了对关联的元数据进行有意义的比较,有意义的是等到x上的突变在整个存储服务之间稳定下来。在这种情况下,当x上不存在任何突变时,可以说存在数据点x的稳定或稳定,从而使活动过程(例如,在一项存储服务中)观察到一系列突变,这些突变序列超过协调器B208确定的一个或多个其他过程(例如,在另一项存储服务中)。在一个实施例中,为了减少误报的数量(例如,当一条特定的数据已经在多个存储服务中短暂稳定下来,但随后被突变时),在触发事件平面208生成并接收属性获取的突变的领域中,关联的元数据可能受到限制。实际上,与其对数据进行细粒度的操作(例如写入和附加),在一个实施例中,协调器可以仅在对每个存储服务处的数据执行关闭操作(由例如GSN的机器发行的身份标记)之后,确定数据已经稳定。这样做可以减少与一致性检查相关的开销,例如,包括等待时间,元数据存储,计算负载和网络流量。
等同于一个副本的目标是,一旦每个存储服务对一条数据执行了相同的一系列突变,每个存储服务中的数据将处于相同状态,在给定确定性系统,相同顺序的突变和相同的初始条件的情况下,一个存储服务中数据的任何一个副本都等同于存储在其他存储服务中的任何其他所有副本。因此,如果协调器在B208从每个存储服务接收与数据的特定状态(例如,由选定的GSN确定)相关的存储服务不可知元数据,可以比较来自每个存储服务的元数据,以确定基础数据副本的等效性。为此,来自每个存储服务的元数据可以存储在协调器B208的元数据容器210中,每个存储服务以给定状态机发出的突变身份(例如,选定的GSN或其他排序机制)存储数据的实例,由B210的属性检查块进行比较。但是请注意,并非所有状态机发出的身份(GSN或其他身份)都与数据点的突变相关联。实际上,有些与数据更改无关,而是与其他不会导致数据点突变的内部管理问题相关。在这种情况下,即使底层名称的存储数据已经以给定的状态机颁发的身份结算,即使一个名称空间可能位于一个GSN,而另一个名称空间可能位于另一个不同的GSN,也可能会收集元数据。
根据一个实施例,属性检查B210可以配置为通过比较存储在元数据容器210中的与存储服务无关的元数据来检查基础数据的等效性。例如,假设将存储在AWS中的文件A写入特定的GSN,并且将存储在另一个存储服务(例如Azure)中的相同文件A也写入相同的特定GSN–但不一定为同时通过与该GSN关联的操作写入存储在AWS中的文件A的实例。一旦协调器B208确定AWS和Azure已通过与上述特定GSN相关的操作完成了文件A的突变,并且在一个实施例中,没有进一步突变文件A超出该特定GSN所要求的,则可以将与文件A相关联的元数据存储在元数据容器210中,因此,存储的元数据可用于确定文件A的不同实例的等效性(在本文正在开发的示例中存储在AWS和Azure中)。属性检查B210的实施例可以配置为比较,例如,块大小、文件名、文件大小、用户名、权限、校验和和/或任何其他元数据,其由存储服务生成的,由属性获取模块B206收集并存储在元数据容器210中的,使它能够以高置信度(例如确定性或接近确定性)确定不同存储服务上数据的关联副本确实相同(即等效)。根据一个实施例,收集并用于比较的元数据可以是可配置的以适合手头的应用。实际上,取决于应用程序域,数据的用户或所有者对等效性的确定可能不如校验和或其他属性或元数据重要或有用。
最后,如在B212处建议的,可以将属性检查的结果(即,等效或不等效)传达给数据的所有者或用户以用于某些下游动作。例如,可以记录等效结果,以提供等效的连续运行检查历史记录。在一个实施例中,只要由属性检查B210执行的比较结果表明是等效的,就不需要做更多的事情,如果需要的话,也许记录一致性检查的结果。但是,如果属性检查显示不相等(比较的元数据以某种有意义的方式不同,表明基础数据可能不同),则下游操作B212可能需要一些补救或其他操作。此类操作可能包括,例如,将存储在一个或多个存储服务中的数据的状态(由GSN或其他排序机制确定)回滚到之前的状态(在该状态下,属性检查指示等效)。这使得与后续GSN相关的操作得以重新执行,大概使之前的异常数据和不相似数据恢复为与存储在其他存储服务上的该数据的其他实例相同。另一可能的动作可以包括例如使数据的一个或多个副本无效并且用被认为是有效的数据替换无效的数据。其他动作是可能的。
例如,在B212处的另一种可能的下游操作是任意或以其他方式选择数据的哪个实例是该数据的“正确”版本。为此,一个实施例要求事先选择存储实例之一作为“事实的来源”。换言之,已被指定为事实来源的存储服务可以被认为具有正确的数据,并且,可以简单地将存储在其他存储服务中的非等效数据实例的实例替换为存储在被指定为事实源的存储服务中的版本。事实源也可以动态确定。根据一个实施例,如果将AWS指定为事实的来源,存储在AWS上的数据可以读写到Azure,以替换其中存储的非等价的对应数据,因此,至少对于与之相关联的元数据进行了比较的特定数据段,带回了跨存储服务的等效性。其他动作是可能的。由于这样的动作在不同的应用上下文中可能是不同的,因此这种补救或下游动作的确切性质超出了所描述的实施例的范围。
可变性/不变性
一些存储服务可以提供不可变的存储服务,而其他存储服务可以提供可变的存储服务。有些可能同时提供两者。受管制的金融服务组织,医疗保健组织,法律组织(仅举几例)可能至少在预定的保留间隔内以不可变的状态保留与业务相关的数据,从而使其不可擦除和不可修改。对于其他组织或目的,可变数据是常态。不可变数据的其他用途包括,例如,用于第三级和离线存储的存储。除其他优点外,不变数据存储系统可使数据回滚到更早的文档状态。顾名思义,可变数据可能是可变的。即随时更改或覆盖。可变数据的示例可以包括在获取新数据点时被重复覆盖的传感器数据和/或不需要在预定时间段内保留数据的任何其他应用程序。例如,AWS和Azure存储Blob都提供可变和不可变的数据存储服务。例如,HDFS是可变的,因为在任何给定时间只有一个版本的数据可用。
当属性检查B210可以比较与存储在单独的存储服务上的数据相关联的元数据时,存储服务的可变/不变属性可能会影响。如果存储服务都是不可变的,可以随时检查与存储在其中的数据点相关联的元数据,以确定当前的等效性(甚至在过去的预定状态下的等效性),前提是所有存储服务均已处理了要进行等效性检查的相同状态机发出的身份(例如GSN)。如果存储服务都是可变的,必须允许比较其元数据要比较的数据,这样,没有一个存储服务可以处理命令来更改与状态机发出的身份相关联的数据的命令,该命令大于它已处理的最后一个状态机发出的身份。在同时包含不可变数据存储和可变数据存储服务的异构分布式系统中,根据一个实施例,在B210处的属性检查的定时中的限制因素可以是可变数据存储服务中的数据是否已经稳定或稳定了足够长的时间以允许属性获取B206至少获取元数据,从而使得协调器B208能够确定同步,并且使得属性检查B210能够有意义地比较所收集和存储的元数据。
因此,根据一个实施例,在从属性获取B206获取元数据以及将获取的元数据放入元数据容器210中之前,对于包含可变存储的异构系统以及仅包含可变存储服务的分布式系统(例如,AWS,HDFS),协调器B208可配置为等待,直到所有可变存储服务上的所有感兴趣的数据都已确立(没有足够的时间更改)。因此,可变存储服务可能是限制B210进行属性检查的频率的限制因素,因为存储在所有可变存储服务中的感兴趣的数据必须在B210的属性检查可以确定跨存储服务的数据的一致性之前确定。
例如经由复制状态机B202,对存储在潜在的异构(例如,可变和不可变的)存储服务处的数据的所有突变进行排序。但是,此排序属性可以跨名称空间分区。事件平面B204按照保留状态机指示的突变顺序的顺序来观察并向正在观察的存储中发布突变,其中分区应用程序是对单个名称空间而不是全局名称空间的排序。在从事件平面B204接收到通知时,属性获取B206从存储器获取相关信息,以有助于通过属性检查B210检查元数据,该元数据被放置在元数据容器210中。根据一个实施例,仅当流程中的所有活动参与者都发布了针对相同突变的元数据时,才会进行后续处理,根据一个实施例,每一个通过区别的、完全有序的、严格增加的单调值(在一个实施例中为GSN)来区分与各个突变相关的状态机。在其他实施例中,状态机发出的身份可以是严格且单调递减的值,并且在其他实施例中,可以不同地配置。当所有活跃参与者都发布了针对特定突变的元数据后,属性检查B210断言所配置的属性对于突变的组合视图为真,将该过程的结果发布给下游消费者。
以这种方式,一个实施例确定并确保由有序速度的异步过程组成的分布式系统中数据的持续等效性,该过程采用有序动作,例如通过应用复制状态机,主要目的是在不同的同构或异构存储系统之间复制数据。因此,实施例使得能够在多云环境中持续监视数据,而与基础存储系统无关,并且能够对该数据进行等效检查。所提出的技术在整个过程中都是可组合的,从而有利于大规模应用。实际上,可以将实施例的组件(例如,至少事件平面和属性获取)委托给基础存储的单独的名称空间和分区。
重要的是,根据一个实施例,可以执行本文所示和所述的一致性检查,而无需数据服务停止甚至减慢其获取,更改和记录数据的过程。实际上,可以在不中断在其处收集与存储服务无关的元数据的每个存储服务处的存储过程的情况下执行本文所示和所述的异步一致性检查。如上所述,协调器B208确保与观察中的数据相关联的元数据已经跨存储服务稳定在特定状态,而无需任何存储服务延迟对其数据副本进行更改。
图3示出了根据一个实施例的,检查跨分布式和潜在异构存储服务的数据的一致性的计算机实施的方法的另一方面。如图所示,B302显示了一个复制状态机,它使用了有序协议(例如,由分布式协调引擎提供给它),其中的某些协议可能包括通过计算机网络304对数据存储的存储服务(在图3中显示为域1和2,在附图标记306和308处进行更改)进行数据更改的操作。例如,域1可以包括AWS存储服务,而域3可以包括Azure存储服务。在这样的实现中,将有序协议应用于以不可变(例如,AWS或HDFS)和不可变(Azure)存储的数据。
如图所示,复制状态机B302可以使用从某个外部源接收到的协议,其中一些协议可以配置为使存储在域1和域3中的数据发生突变。每个存储服务306和208可以包括事件平面B310、B316,事件平面B310、B316配置为在B302观察由复制状态机存储的数据的突变的影响并发出相应的通知。事件平面B310、B316中的每一个可以配置为观察存储在其各自的存储服务上的数据以及对该存储在其各自的存储服务中的数据进行的突变或改变。在一个实施例中,域1的事件平面B310和域2的事件平面B316可以配置为分别生成和发送(或提供)与基础存储有关的所选事件的通知,并将其发送到属性获取B314和B320。如图3所示,本文提出的模块中的至少一些可以是可组合的,以利于大规模部署实施例。实际上,如图3所示,可以将事件平面B310、B316和属性获取块B314、B320分区为单独的名称空间和基础存储的分区。
属性获取组件B314和B320每个可以配置为查询基础存储服务的日志记录服务(和/或从中接收通知),以获取与存储数据有关的选定信息。例如,属性获取块B314可以配置为例如查询或接收来自存储所选元数据的S3存储桶的通知,而属性获取组件B320可以配置为从例如Azure的Blob、Google Cloud的发布/订阅和/或其他服务中查询或接收包含元数据的通知。在任何情况下,根据一个实施例,属性获取块B314和B320中的每一个可以配置为收集存储在受选择的一个或多个数据突变事件影响的不同的并且可能在地理上分开的存储服务上的数据对象的元数据。属性获取组件B314和B320查询或接收来自基础存储服务的通知或接收来自事件平面108的通知的频率可以是预定的或可以完全选择的。例如,可以收集每个域中的元数据,以在每次写入时和/或每次关闭数据点(对象,块,预定量的数据)时,以规则或预定的时间间隔和/或在满足预定标准时进行一致性检查。根据实施例,因此通知的粒度或基础存储服务的查询的频率可以定义可以执行一致性检查的次数和/或频率。因此,一致性检查可以基本上有规律地间隔开,或者可以在发生预定事件时执行,例如,关闭数据点以及跨域对该数据点进行突变设置。
关于从域1和2中的存储服务中收集的元数据的通知可以由属性获取组件B314和B320通过计算机网络314发送,并且可以由协调器块B322接收。根据一个实施例,由于协调器B322必须在域之间进行协调,因此协调器块B322可能是不可组合的。在其他实施例中,协调器B322的各方面可以跨域分布并且可以配置为彼此发信息以确定特定数据是否已经确立(settle),以使得能够在其上进行一致性检查。如图3所示,根据一个实施例,协调器块B322在域1和2中的分布式存储系统或服务的实例之间同步,以使得能够在驻留在这些不同的云环境中的数据之间进行有意义的比较。在一个实施例中,可以使用全局序列号或GSN或管理分布式系统中数据的有序突变的某种其他排序机制来执行这种同步。在一个实施例中,块B322中的协调器可以配置为确定何时存储服务312、318已经执行了预定的突变。在一个实施方案中,预定突变可以由GSN鉴定。换言之,协调器B322可以配置为确定何时存储特定数据的副本的所有存储系统312、318何时已经完成执行由所选GSN或其他机器发出的身份所要求的突变。实际上,如果存储特定数据片段的两个存储服务312、318都对该数据片段执行了预定的更改,可以有意义地相互比较由在B314和B320处的各个属性获取块收集的与存储服务无关的元数据,以确定基础数据的等效性或非等效性;换言之,跨云存储服务312、318的数据是否相同。在一实施例中,每个突变都可以用相关的GSN标记,从而使协调器块B322能够轻松确定每个存储服务上的数据是否已被GSN关联的操作突变。因此,GSN的记录可以驻留在每个存储服务312、318中。
存储服务312、318不太可能以锁步的方式操作,同时处理相同的突变。协调器B322,其从属性获取块B314和B320接收与存储服务无关的元数据,可以将其配置为等待,直到存储和修改一条数据的副本的存储服务312、318对同一条数据都执行了相同的更改。在一个实施方案中,与每个突变相关的GSN可以用于确定何时以及是否稳定或稳定了数据。
根据一个实施例,属性检查B326可以配置为通过比较存储在协调器B322的元数据容器324中的与存储服务无关的元数据来检查基础数据的等效性。属性检查B326的实施例可以配置为比较例如块大小、文件名、文件大小、用户名、许可权、校验和、和/或由存储服务312、318生成,由属性获取模块B314、B320收集并存储在协调器B322的元数据容器324中的任何其他元数据,以使协调器B322能够确定驻留在不同存储服务312、318上的数据的关联副本是否确实相同(即,等效)。还如图3所示,可以将属性检查的结果(即等效或不等效)传达给数据的所有者或用户,以进行某些下游操作,如B328所提议。此类操作可能包括,例如,将存储在一个或多个存储服务中的数据的状态(由GSN或其他排序机制确定)回滚到之前的状态(在该状态下,属性检查指示等效)。这使得与后续GSN相关的操作得以重新执行,大概使先前的异常数据与存储在其他存储服务上的该数据的其他实例恢复等价。另一可能的动作可以包括例如使数据的一个或多个副本无效并且用被认为是有效的数据替换无效的数据。其他动作是可能的。
例如,在B328处的可能的下游操作可以包括任意或以其他方式选择数据的哪个实例是该数据的“正确”版本。例如,“事实源”可以是存储服务312。换言之,存储服务312可能已被指定为事实源,并且可以被认为具有正确的数据,并且,可以简单地用存储在存储服务312中的版本来替换存储在另一存储服务中的实例非等效数据(例如图3中的318所示)。因此,图3显示了两个域,其中使用协调器B322作为何时可以比较与存储在不同存储服务上的数据相关联的元数据的一致性的仲裁器,观察到了具有潜在不同存储系统的两个域的突变。
重要的是,实施例使得能够组合并且因此分区和应用到可观察到的并且相对于编排技术(例如状态机复制)其突变是有序的任何存储系统。实施例的特征在于对大数据部署的可扩展性,大数据部署跨不同的同构或异构存储系统复制产生的数据。
实施例可以基于事件;换言之,在创建,附加和/或关闭请求发生时有选择地触发。这种方法有助于进行大量的精确一致性检查,只有在相关数据已稳定在各自观察到的序列上(以单个数据点的粒度进行分区)时,才能进行这种一致性检查。实施例特别适用于对存储系统内的随机点执行突变的系统,尽管实施例也适用于长期突变,但是以延迟结果为代价,如一致性检查仅在“关闭”事件发生时才是可能的情况。
图4是根据一个实施例的一种计算机实施的方法的流程图。如其中所示,块B402要求通过第一多个复制状态机执行系列有序协议,以对存储在第一类型的第一数据存储服务中的数据进行突变。类似地,块B404要求通过第二多个复制状态机执行系列有序协议,以对存储在第二类型的第二数据存储服务中的数据进行突变。如块B406所示,可以接收和存储在第一数据存储服务中存储的突变数据的第一元数据,以及存储在第二数据存储服务中的突变数据的第二元数据。如块B408所示,可以使用接收到的第一元数据和第二元数据在第一数据存储服务和第二数据存储服务之间进行同步,以确定存储在第一数据存储服务中的与第一元数据相对应的数据和存储在第二数据存储服务中的与第二元数据相对应的数据在根据预定的系列有序协议中的一个进行了突变之后何时均已确立(例如,在选定的时间段内未更改)。然后,如B410所示,当已经确定存储在第一数据存储服务中的与第一元数据相对应的数据和存储在第二数据存储服务中的与第二元数据相对应的数据已经根据系列有序协议中预定的一个确立时,可以执行所存储的第一元数据和第二元数据的比较。如在B412处所示,然后可以根据比较结果来执行所选定的动作。
根据其他实施例,可以使用唯一且严格排序的全局序列号来排序系列有序协议。该计算机实施的方法还可包括:由第一多个状态机和由第二多个状态机接收来自分布式协调引擎或突变顺序标记的其他适当来源的唯一且严格排序的全局序列号。在一个实施例中,第一类型的第一数据存储服务可以是可变的或不可变的,第二类型的第二数据存储可以是可变的。在一个实施例中,第一数据存储服务和第二数据存储服务中的任何一个可以是同构的或异构的。该计算机实施的方法可以进一步包括:将第一数据存储服务指定为事实源,使得其中存储的数据被认为是有效的。的确,当所存储的第一元数据和第二元数据的比较指示与第二元数据相对应的第二数据存储服务中存储的数据与与第一元数据相对应的第一数据存储服务中存储的数据不一致时,所选动作可以包括用与第一元数据对应的在第一数据存储服务中存储的数据替换在第二数据存储服务中与第二元数据对应的数据。同步以确定存储在第一数据存储服务和第二数据存储服务中的数据何时均已确立可以包括等待到已经对该数据执行了关闭操作。在一个实施例中,至少第一数据存储服务和第二数据存储服务和/或计算设备或外部的处理中的至少一些前述步骤或功能可以是那能够组合的。
一个实施例可以包括一种计算设备,该计算设备包括存储器;处理器,以及处理器产生的多个进程,这些进程配置为启用跨存储服务的一致性检查。多个进程可以包括处理逻辑,以通过第一多个复制状态机执行系列有序协议,以对存储在第一类型的第一数据存储服务中的数据进行突变;通过第二多个复制状态机执行系列有序协议,以对存储在第二类型的第二数据存储服务中的数据进行突变;接收并存储第一数据存储服务中存储的突变数据的第一元数据,以及接收和存储第二数据存储服务中存储的突变数据的第二元数据;使用接收到的第一元数据和第二元数据在第一数据存储服务和第二数据存储服务之间进行同步,以确定存储在第一数据存储服务中的与第一元数据相对应的数据和存储在第二数据存储服务中的与第二元数据相对应的数据在根据预定的系列有序协议中的一个进行了突变之后何时均已确立;当已经确定存储在所述第一数据存储服务中的与所述第一元数据相对应的数据和存储在所述第二数据存储服务中的与所述第二元数据相对应的数据已经根据所述系列有序协议中预定的一个确立时,执行所存储的第一元数据和第二元数据的比较;和根据比较结果执行选定的动作。
另一个实施例是一种非暂时性机器可读介质,其上存储有表示指令序列的数据,当由计算设备执行时,通过以下方式使计算设备检查在同构或异构数据存储服务中存储的数据的一致性:通过第一多个复制状态机执行系列有序协议,以对存储在第一类型的第一数据存储服务中的数据进行突变;通过第二多个复制状态机执行所述系列有序协议,以对存储在第二类型的第二数据存储服务中的数据进行突变;接收并存储在所述第一数据存储服务中存储的突变数据的第一元数据,以及接收并存储在所述第二数据存储服务中存储的突变数据的第二元数据;使用接收到的所述第一元数据和所述第二元数据在第一数据存储服务和第二数据存储服务之间进行同步,以确定存储在第一数据存储服务中的与第一元数据相对应的数据和存储在第二数据存储服务中的与第二元数据相对应的数据在根据预定的系列有序协议中的一个进行了突变之后何时均已确立;当已经确定存储在所述第一数据存储服务中的与所述第一元数据相对应的数据和存储在所述第二数据存储服务中的与所述第二元数据相对应的数据已经根据所述系列有序协议中预定的一个确立时,执行所存储的第一元数据和第二元数据的比较;和根据比较结果执行选定的动作。
物理硬件
图5示出了可以用来实现实施例的计算设备的框图。图5的计算设备可以包括总线501或用于传达信息的其他通信机构,以及与总线501耦接以处理信息的一个或多个处理器502。该计算设备可以进一步包括耦接到总线501的随机存取存储器(RAM)或其他动态存储设备504(称为主存储器),用于存储将由处理器502执行的信息和指令。主存储器(有形的和非暂时性的,在本文中,该术语本身并不包括信号和波形)504还可用于在处理器502执行指令期间存储临时变量或其他中间信息。图5的计算设备还可包括耦接到总线501的只读存储器(ROM)和/或其他静态存储设备506,用于存储用于处理器502的静态信息和指令。数据存储设备507,例如磁盘和/或固态数据存储设备之类的存储设备可以耦接至总线501,以存储信息和指令-例如执行图1-4所示和公开的功能所需的信息和指令。计算设备还可以经由总线501耦接到显示设备521,以向计算机用户显示信息。可以将包括字母数字和其他键的字母数字输入设备522耦接到总线501,以将信息和命令选择传达给处理器502。用户输入设备的另一种类型是光标控件523,例如鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传达给处理器502并控制显示器521上的光标移动。图5的计算设备可以经由通信接口(例如,调制解调器、网络接口卡或NIC)508耦接到网络526。
如图所示,存储设备507可以包括直接访问数据存储设备,例如磁盘530,非易失性半导体存储器(EEPROM、闪存等)532,包括磁盘和非易失性半导体存储器的混合数据存储设备,如531所示。附图标记504、506和507是其上存储有表示指令序列的数据的有形、非暂时性计算机可读介质的示例,当指令被一个或多个计算设备执行时,它们实现本文所述和所示的分布式系统和方法的各方面。这些指令中的一些指令可以本地存储在客户端计算设备中,而这些指令中的其他指令可以远程存储(和/或执行),并通过网络526传达给客户端计算设备。在其他实施例中,所有这些指令都可以本地存储在客户端或其他独立计算设备中,而在其他实施例中,所有这些指令都被远程存储和执行(例如,在一台或多台远程服务器中),并将结果传送到客户端计算设备。在又一个实施例中,指令(处理逻辑)可以存储在另一形式的有形的非暂时性计算机可读介质上,例如在528处所示。例如,参考528可以被实现为光盘(或其他存储技术),其可以构成合适的数据载体,以将存储在其上的指令加载到一个或多个计算设备上,从而将计算设备重新配置为本文所述和所示的一个或多个实施例。在其他实施方式中,附图标记528可以体现为加密的固态驱动器。其他实施方式也是可能的。
本发明的实施例涉及使用计算设备来检查存储在不同存储服务处的复制数据的一致性。根据一个实施例,可以由一个或多个计算设备响应于处理器502执行指令序列来体现本文所描述的方法、设备和系统,这些指令序列体现了存储器504中包含的本文所示出和描述的计算机实施的方法的各个方面。这样的指令可以从例如数据存储设备507之类的另一计算机可读介质或例如在528处示出的另一(光、磁等)数据载体被读入存储器504中。存储器504中包含的指令序列的执行使处理器502执行步骤并具有本文所述的功能。在替代实施例中,可以使用硬连线电路代替软件指令或与软件指令结合来实现所描述的实施例。因此,实施例不限于硬件电路和软件的任何特定组合。实际上,本领域技术人员应该理解,任何合适的计算机系统都可以实现本文所述的功能。该计算设备可以包括一个或多个微处理器,微处理器工作以执行期望的功能。在一实施例中,由一个或多个微处理器执行的指令可操作以使一个或多个微处理器执行本文所述的步骤。指令可以存储在任何计算机可读介质中。在一个实施例中,它们可以存储在微处理器外部的非易失性半导体存储器中或与微处理器集成在一起。在另一个实施例中,指令可以被存储在磁盘上并且在被微处理器执行之前被读入易失性半导体存储器中。
上面的详细描述的部分描述了计算设备的操作的过程和符号表示,该计算设备可以包括计算机组件,该计算机组件包括本地处理单元、用于本地处理单元的存储器存储设备、显示设备和输入设备。此外,这样的进程和操作可以在异构分布式计算环境中利用计算机组件,包括例如远程文件服务器、计算机服务器和存储器存储设备。这些分布式计算组件可以通过通信网络被本地处理单元访问。
由计算机实施的进程和操作包括本地处理单元和/或远程服务器对数据位的操纵以及在驻留在本地或远程存储器存储设备中的一个或多个中的数据结构内的这些位的维护。这些数据结构在存储在存储器存储设备内的数据位的集合上强加物理组织,并表现出电磁频谱元素。
例如本文描述和示出的计算机实施的方法的进程通常可以被定义为导致期望结果的一系列计算机实施的步骤。这些步骤通常需要对物理量进行物理操作。通常,尽管不是必须的,这些量可以采取能够被存储、传输、组合、比较或以其他方式操纵的电、磁或光信号的形式。对于本领域技术人员来说,通常将这些信号称为位或字节(当它们具有二进制逻辑电平时)、像素值、作品、值、元素、符号、字符、术语、数字、点、记录、对象、图像、文件、目录、子目录等。但是,应记住,这些和类似术语应与计算机操作的适当物理量相关联,并且这些术语仅仅是作为应用于计算机内部和计算机运行过程中的物理量的常规标签。
还应理解,计算机内的操纵通常以例如添加、比较、移动、定位、放置、照亮、移除、改变等来指代。本文描述的操作是结合人类或人工智能代理操作员或与计算机交互的用户提供的各种输入执行的机器操作。用于执行本文描述的操作的机器包括本地或远程通用数字计算机或其他类似的计算设备。
另外,应注意,程序、进程、方法等本文所描述的描述不相关于或限于任何特定的计算机或设备,也不相关于或限于任何特定的通信网络体系结构。而是,各种类型的通用硬件机器可以与根据本文描述的教导构造的程序模块一起使用。类似地,通过在特定网络体系结构中的专用计算机系统,利用存储在非易失性存储器(例如只读存储器)中的硬连线逻辑或程序,构造专用设备来执行本文所述的方法步骤,可能证明是有利的。
尽管已经描述了某些示例实施例,但是这些实施例仅通过示例的方式呈现,并且无意于限制本文公开的实施例的范围。因此,以上描述中的任何内容都不意味着任何特定的特征、特性、步骤、模块或块是必要的或必不可少的。实际上,本文描述的新颖的方法和系统可以以多种其他形式来体现;此外,在不脱离本文公开的实施例的精神的情况下,可以对本文所述的方法和系统的形式进行各种省略、替换和改变。
Claims (20)
1.一种计算机实施的方法,包括:
通过第一多个复制状态机执行系列有序协议,以对存储在第一类型的第一数据存储服务中的数据进行突变;
通过第二多个复制状态机执行所述系列有序协议,以对存储在第二类型的第二数据存储服务中的数据进行突变;
接收并存储在所述第一数据存储服务中存储的突变数据的第一元数据,以及接收并存储在所述第二数据存储服务中存储的突变数据的第二元数据;
使用接收到的所述第一元数据和所述第二元数据在第一数据存储服务和第二数据存储服务之间进行同步,以确定存储在第一数据存储服务中的与第一元数据相对应的数据和存储在第二数据存储服务中的与第二元数据相对应的数据在根据预定的系列有序协议中的一个进行了突变之后何时均已确立;
当已经确定存储在所述第一数据存储服务中的与所述第一元数据相对应的数据和存储在所述第二数据存储服务中的与所述第二元数据相对应的数据已经根据所述系列有序协议中预定的一个确立时,执行所存储的第一元数据和第二元数据的比较;和
当所存储的第一元数据和第二元数据的比较表明与第二元数据相对应的第二数据存储服务中存储的数据和与第一元数据相对应的第一数据存储服务中存储的数据不一致时,将与第一元数据相对应的存储在第一数据存储服务中的数据和与第二元数据相对应的存储在第二数据存储服务中的数据变为一致。
2.根据权利要求1所述的计算机实施的方法,其中,使用唯一且严格排序的全局序列号来排序所述系列有序协议。
3.根据权利要求1所述的计算机实施的方法,还包括:通过所述第一多个复制状态机和通过所述第二多个复制状态机接收来自分布式协调引擎的唯一且严格排序的全局序列号。
4.根据权利要求1所述的计算机实施的方法,其中,所述第一类型的第一数据存储服务是可变的和不可变的之一。
5.根据权利要求1所述的计算机实施的方法,其中,所述第二类型的第二数据存储服务是可变的和不可变的之一。
6.根据权利要求1所述的计算机实施的方法,其中,所述第一数据存储服务和第二数据存储服务是同构的和异构的之一。
7.根据权利要求1所述的计算机实施的方法,其中,还包括将所述第一数据存储服务指定为事实源,使得其中存储的数据被认为是有效的。
8.根据权利要求6所述的计算机实施的方法,其中,当所存储的第一元数据和第二元数据的比较表明与第二元数据相对应的第二数据存储服务中存储的数据和与第一元数据相对应的第一数据存储服务中存储的数据不一致时,将与第二元数据相对应的存储在第二数据存储服务中的数据替换为与第一元数据相对应的存储在第一数据存储服务中的数据。
9.根据权利要求1所述的计算机实施的方法,其中,进行同步以确定存储在所述第一数据存储服务和所述第二数据存储服务中的数据何时均已确立包括:等待到已经对所述数据执行了关闭操作。
10.根据权利要求1所述的计算机实施的方法,其中,所述步骤中的至少一些步骤能够跨所述第一数据存储服务和所述第二数据存储服务构成。
11.一种计算设备,包括:
存储器;
处理器,以及
处理器产生的多个进程,这些进程配置为启用跨存储服务的一致性检查,所述多个进程包括处理逻辑以:
通过第一多个复制状态机执行系列有序协议,以对存储在第一类型的第一数据存储服务中的数据进行突变;
通过第二多个复制状态机执行系列有序协议,以对存储在第二类型的第二数据存储服务中的数据进行突变;
接收并存储在第一数据存储服务中存储的突变数据的第一元数据,以及接收并存储在第二数据存储服务中存储的突变数据的第二元数据;
使用接收到的第一元数据和第二元数据在第一数据存储服务和第二数据存储服务之间进行同步,以确定存储在第一数据存储服务中的与第一元数据相对应的数据和存储在第二数据存储服务中的与第二元数据相对应的数据在根据预定的系列有序协议中的一个进行了突变之后何时均已确立;
当已经确定存储在所述第一数据存储服务中的与所述第一元数据相对应的数据和存储在所述第二数据存储服务中的与所述第二元数据相对应的数据已经根据所述系列有序协议中预定的一个确立时,执行所存储的第一元数据和第二元数据的比较;和
当所存储的第一元数据和第二元数据的比较表明与第二元数据相对应的第二数据存储服务中存储的数据和与第一元数据相对应的第一数据存储服务中存储的数据不一致时,将与第一元数据相对应的存储在第一数据存储服务中的数据和与第二元数据相对应的存储在第二数据存储服务中的数据变为一致。
12.根据权利要求11所述的计算设备,其中,使用唯一且严格排序的全局序列号来对系列有序协议进行排序。
13.根据权利要求11所述的计算设备,其中,还包括处理逻辑,以通过所述第一多个复制状态机和所述第二多个复制状态机接收来自分布式协调引擎的唯一且严格排序的全局序列号。
14.根据权利要求11所述的计算设备,其中,所述第一类型的第一数据存储服务是可变的和不可变的之一。
15.根据权利要求11所述的计算设备,其中,所述第二类型的第二数据存储服务是可变的和不可变的之一。
16.根据权利要求11所述的计算设备,其中,所述第一数据存储服务和第二数据存储服务是同构的和异构的之一。
17.根据权利要求11所述的计算设备,其进一步包含处理逻辑以将所述第一数据存储服务指定为事实源,使得其中存储的数据被视为有效。
18.根据权利要求17所述的计算设备,其中,当所存储的第一元数据和第二元数据的比较表明与第二元数据相对应的第二数据存储服务中存储的数据和与第一元数据相对应的第一数据存储服务中存储的数据不一致时,将与第二元数据相对应的存储在第二数据存储服务中的数据替换为与第一元数据相对应的存储在第一数据存储服务中的数据。
19.根据权利要求11所述的计算设备,其中处理逻辑以同步以确定何时存储在第一数据存储服务和第二数据存储服务中的数据均已确立进一步包括:处理逻辑,以等待到已经对所述数据执行了关闭操作。
20.一种非暂时性机器可读介质,其上存储的数据表示指令序列,这些指令序列在由计算设备执行时使计算设备通过以下方式检查由同构或异构数据存储服务存储的数据的一致性:
通过第一多个复制状态机执行系列有序协议,以对存储在第一类型的第一数据存储服务中的数据进行突变;
通过第二多个复制状态机执行所述系列有序协议,以对存储在第二类型的第二数据存储服务中的数据进行突变;
接收并存储在所述第一数据存储服务中存储的突变数据的第一元数据,以及接收并存储在所述第二数据存储服务中存储的突变数据的第二元数据;
使用接收到的所述第一元数据和所述第二元数据在第一数据存储服务和第二数据存储服务之间进行同步,以确定存储在第一数据存储服务中的与第一元数据相对应的数据和存储在第二数据存储服务中的与第二元数据相对应的数据在根据预定的系列有序协议中的一个进行了突变之后何时均已确立;
当已经确定存储在所述第一数据存储服务中的与所述第一元数据相对应的数据和存储在所述第二数据存储服务中的与所述第二元数据相对应的数据已经根据所述系列有序协议中预定的一个确立时,执行所存储的第一元数据和第二元数据的比较;和
当所存储的第一元数据和第二元数据的比较表明与第二元数据相对应的第二数据存储服务中存储的数据和与第一元数据相对应的第一数据存储服务中存储的数据不一致时,将与第一元数据相对应的存储在第一数据存储服务中的数据和与第二元数据相对应的存储在第二数据存储服务中的数据变为一致。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/141,335 US11100086B2 (en) | 2018-09-25 | 2018-09-25 | Methods, devices and systems for real-time checking of data consistency in a distributed heterogenous storage system |
US16/141,335 | 2018-09-25 | ||
PCT/US2019/048371 WO2020068334A1 (en) | 2018-09-25 | 2019-08-27 | Methods, devices and systems for real-time checking of data consistency in a distributed heterogenous storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112654978A CN112654978A (zh) | 2021-04-13 |
CN112654978B true CN112654978B (zh) | 2024-03-08 |
Family
ID=69883138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980058602.3A Active CN112654978B (zh) | 2018-09-25 | 2019-08-27 | 分布式异构存储系统中数据一致性实时检查的方法、设备和系统 |
Country Status (7)
Country | Link |
---|---|
US (3) | US11100086B2 (zh) |
EP (1) | EP3811233A4 (zh) |
JP (1) | JP7389793B2 (zh) |
CN (1) | CN112654978B (zh) |
AU (1) | AU2019347897B2 (zh) |
CA (1) | CA3108063A1 (zh) |
WO (1) | WO2020068334A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11200198B2 (en) | 2019-02-01 | 2021-12-14 | EMC IP Holding Company LLC | Excluding directory trees from data service operations |
US11151093B2 (en) * | 2019-03-29 | 2021-10-19 | International Business Machines Corporation | Distributed system control for on-demand data access in complex, heterogenous data storage |
US11108700B2 (en) * | 2019-06-28 | 2021-08-31 | Oracle International Corporation | Method and system to implement messaging for cluster elections |
US11593583B2 (en) | 2019-06-28 | 2023-02-28 | Oracle International Corporation | Method and system to implement cluster failure prediction to facilitate split brain resolution |
US11893064B2 (en) * | 2020-02-05 | 2024-02-06 | EMC IP Holding Company LLC | Reliably maintaining strict consistency in cluster wide state of opened files in a distributed file system cluster exposing a global namespace |
CN112363873A (zh) * | 2020-11-27 | 2021-02-12 | 上海爱数信息技术股份有限公司 | 一种分布式一致性备份恢复系统及其备份方法 |
US11423006B1 (en) * | 2021-02-24 | 2022-08-23 | Sap Se | Blockchain-based analysis of locally configured data |
CN114357252A (zh) * | 2021-12-17 | 2022-04-15 | 杭州涂鸦信息技术有限公司 | 跨源多域分布式数据的储存方法、系统及存储介质 |
CN116112130A (zh) * | 2023-02-06 | 2023-05-12 | 北京滴普科技有限公司 | 数据纠偏补数方法、装置、设备及系统 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1829988A (zh) * | 2003-08-01 | 2006-09-06 | 甲骨文国际公司 | 无共享数据库系统中的单相提交 |
US8645429B1 (en) * | 2011-04-20 | 2014-02-04 | Google Inc. | Resolving conflicting graph mutations |
CN104105195A (zh) * | 2014-06-27 | 2014-10-15 | 山东大学(威海) | 一种基于时钟频率动态检测的大规模无线传感器网络时间同步器 |
CN104247380A (zh) * | 2012-04-20 | 2014-12-24 | 微软公司 | 在分布式协定协议中绑定crud型协议 |
CN104520822A (zh) * | 2012-08-08 | 2015-04-15 | 亚马逊技术股份有限公司 | 数据存储应用编程界面 |
CN104603762A (zh) * | 2012-09-28 | 2015-05-06 | 国际商业机器公司 | 利用并行文件访问协议的自动校准以及元数据管理支持对文件系统的共享存储的协调访问 |
CN105830033A (zh) * | 2013-12-13 | 2016-08-03 | 甲骨文国际公司 | 用于在分布式数据网格中支持持久存储装置版本化和完整性的系统和方法 |
US9489434B1 (en) * | 2012-01-17 | 2016-11-08 | Amazon Technologies, Inc. | System and method for replication log branching avoidance using post-failover rejoin |
CN106462545A (zh) * | 2014-03-31 | 2017-02-22 | 亚马逊科技公司 | 可缩放文件存储服务 |
CN106462639A (zh) * | 2014-06-24 | 2017-02-22 | 谷歌公司 | 处理远程数据库的变化 |
CN106537400A (zh) * | 2014-02-26 | 2017-03-22 | 南托米克斯公司 | 安全的移动基因组浏览设备及用于其的方法 |
CN106603645A (zh) * | 2016-12-02 | 2017-04-26 | 广东电网有限责任公司电力科学研究院 | 一种大规模云存储的副本服务器一致性处理方法及系统 |
CN106971089A (zh) * | 2011-11-18 | 2017-07-21 | 加利福尼亚大学董事会 | 高通量测序数据的平行比较分析 |
CN107544077A (zh) * | 2017-08-31 | 2018-01-05 | 千寻位置网络(浙江)有限公司 | 一种gnss数据质量检测分析系统及其分析方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7320035B2 (en) * | 2002-03-01 | 2008-01-15 | Sun Microsystems, Inc. | Object mutation determination for incremental state saves |
JP2007122643A (ja) * | 2005-10-31 | 2007-05-17 | Toshiba Corp | データ検索システム、メタデータ同期方法およびデータ検索装置 |
US8589574B1 (en) * | 2005-12-29 | 2013-11-19 | Amazon Technologies, Inc. | Dynamic application instance discovery and state management within a distributed system |
US20080147821A1 (en) | 2006-12-19 | 2008-06-19 | Dietrich Bradley W | Managed peer-to-peer content backup service system and method using dynamic content dispersal to plural storage nodes |
JP5339432B2 (ja) * | 2009-02-25 | 2013-11-13 | 日本電気株式会社 | ストレージシステム |
US9483656B2 (en) | 2009-04-20 | 2016-11-01 | International Business Machines Corporation | Efficient and secure data storage utilizing a dispersed data storage system |
US8316396B2 (en) * | 2009-05-13 | 2012-11-20 | Tivo Inc. | Correlation of media metadata gathered from diverse sources |
US8341118B2 (en) | 2010-02-09 | 2012-12-25 | Google Inc. | Method and system for dynamically replicating data within a distributed storage system |
US8799413B2 (en) | 2010-05-03 | 2014-08-05 | Panzura, Inc. | Distributing data for a distributed filesystem across multiple cloud storage systems |
US9852150B2 (en) | 2010-05-03 | 2017-12-26 | Panzura, Inc. | Avoiding client timeouts in a distributed filesystem |
CN102640122B (zh) * | 2010-09-06 | 2015-10-21 | 松下电器产业株式会社 | 内容检索装置、内容检索方法 |
GB2484086A (en) * | 2010-09-28 | 2012-04-04 | Metaswitch Networks Ltd | Reliability and performance modes in a distributed storage system |
US9772784B2 (en) | 2011-08-10 | 2017-09-26 | Nutanix, Inc. | Method and system for maintaining consistency for I/O operations on metadata distributed amongst nodes in a ring structure |
US8533231B2 (en) | 2011-08-12 | 2013-09-10 | Nexenta Systems, Inc. | Cloud storage system with distributed metadata |
US9805054B2 (en) | 2011-11-14 | 2017-10-31 | Panzura, Inc. | Managing a global namespace for a distributed filesystem |
EP2902909A4 (en) * | 2012-09-28 | 2016-06-01 | Nec Corp | DISTRIBUTED MEMORY DEVICE, MEMORY NOTES, DATA PROCESSING PROCEDURES AND PROGRAM |
US8972491B2 (en) | 2012-10-05 | 2015-03-03 | Microsoft Technology Licensing, Llc | Consistency-based service-level agreements in cloud storage environments |
US9785510B1 (en) * | 2014-05-09 | 2017-10-10 | Amazon Technologies, Inc. | Variable data replication for storage implementing data backup |
GB2529246A (en) | 2014-08-15 | 2016-02-17 | Ibm | Method for securing integrity and consistency of a cloud storage service with efficient client operations |
US10630772B2 (en) | 2014-09-10 | 2020-04-21 | Panzura, Inc. | Maintaining global namespace consistency for a distributed filesystem |
US9990372B2 (en) | 2014-09-10 | 2018-06-05 | Panzura, Inc. | Managing the level of consistency for a file in a distributed filesystem |
US20160110406A1 (en) | 2014-10-16 | 2016-04-21 | Microsoft Technology Licensing, Llc | Validation of data across multiple data stores |
US9986033B2 (en) | 2015-03-17 | 2018-05-29 | Panzura, Inc. | Facilitating access to remote cloud services |
US20160352832A1 (en) | 2015-06-01 | 2016-12-01 | Alibaba Group Holding Limited | Enhancing data consistency in cloud storage system by entrance data buffering |
US10395061B2 (en) | 2015-09-29 | 2019-08-27 | International Business Machines Corporation | Efficient auditing of data in object storage |
US10496320B2 (en) | 2015-12-28 | 2019-12-03 | Netapp Inc. | Synchronous replication |
US10176064B2 (en) | 2016-02-26 | 2019-01-08 | Netapp Inc. | Granular consistency group replication |
US20180139103A1 (en) | 2016-11-16 | 2018-05-17 | Lei Guo | Management of multiple clusters of distributed file systems |
US10241677B2 (en) | 2017-02-24 | 2019-03-26 | International Business Machines Corporation | Ensuring consistency between content and metadata with intents |
US11360942B2 (en) * | 2017-03-13 | 2022-06-14 | Wandisco Inc. | Methods, devices and systems for maintaining consistency of metadata and data across data centers |
US10360252B1 (en) * | 2017-12-08 | 2019-07-23 | Palantir Technologies Inc. | Detection and enrichment of missing data or metadata for large data sets |
US20200026427A1 (en) * | 2018-07-23 | 2020-01-23 | Reduxio Systems Ltd. | System and method for handling data storage on storage devices |
-
2018
- 2018-09-25 US US16/141,335 patent/US11100086B2/en active Active
-
2019
- 2019-08-27 WO PCT/US2019/048371 patent/WO2020068334A1/en unknown
- 2019-08-27 EP EP19864865.1A patent/EP3811233A4/en active Pending
- 2019-08-27 CA CA3108063A patent/CA3108063A1/en active Pending
- 2019-08-27 AU AU2019347897A patent/AU2019347897B2/en active Active
- 2019-08-27 JP JP2021510040A patent/JP7389793B2/ja active Active
- 2019-08-27 CN CN201980058602.3A patent/CN112654978B/zh active Active
-
2021
- 2021-07-20 US US17/380,054 patent/US11657035B2/en active Active
-
2023
- 2023-02-06 US US18/106,152 patent/US20230237045A1/en active Pending
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1829988A (zh) * | 2003-08-01 | 2006-09-06 | 甲骨文国际公司 | 无共享数据库系统中的单相提交 |
US8645429B1 (en) * | 2011-04-20 | 2014-02-04 | Google Inc. | Resolving conflicting graph mutations |
CN106971089A (zh) * | 2011-11-18 | 2017-07-21 | 加利福尼亚大学董事会 | 高通量测序数据的平行比较分析 |
US9489434B1 (en) * | 2012-01-17 | 2016-11-08 | Amazon Technologies, Inc. | System and method for replication log branching avoidance using post-failover rejoin |
CN104247380A (zh) * | 2012-04-20 | 2014-12-24 | 微软公司 | 在分布式协定协议中绑定crud型协议 |
CN104520822A (zh) * | 2012-08-08 | 2015-04-15 | 亚马逊技术股份有限公司 | 数据存储应用编程界面 |
CN104603762A (zh) * | 2012-09-28 | 2015-05-06 | 国际商业机器公司 | 利用并行文件访问协议的自动校准以及元数据管理支持对文件系统的共享存储的协调访问 |
CN105830033A (zh) * | 2013-12-13 | 2016-08-03 | 甲骨文国际公司 | 用于在分布式数据网格中支持持久存储装置版本化和完整性的系统和方法 |
CN106537400A (zh) * | 2014-02-26 | 2017-03-22 | 南托米克斯公司 | 安全的移动基因组浏览设备及用于其的方法 |
CN106462545A (zh) * | 2014-03-31 | 2017-02-22 | 亚马逊科技公司 | 可缩放文件存储服务 |
CN106462639A (zh) * | 2014-06-24 | 2017-02-22 | 谷歌公司 | 处理远程数据库的变化 |
CN104105195A (zh) * | 2014-06-27 | 2014-10-15 | 山东大学(威海) | 一种基于时钟频率动态检测的大规模无线传感器网络时间同步器 |
CN106603645A (zh) * | 2016-12-02 | 2017-04-26 | 广东电网有限责任公司电力科学研究院 | 一种大规模云存储的副本服务器一致性处理方法及系统 |
CN107544077A (zh) * | 2017-08-31 | 2018-01-05 | 千寻位置网络(浙江)有限公司 | 一种gnss数据质量检测分析系统及其分析方法 |
Non-Patent Citations (1)
Title |
---|
面向大数据分布式存储的动态负载均衡算法;张栗粽等;《电子科技大学计算机科学与工程学院 》;第178-183页 * |
Also Published As
Publication number | Publication date |
---|---|
AU2019347897B2 (en) | 2023-12-07 |
AU2019347897A1 (en) | 2021-02-18 |
US20220043800A1 (en) | 2022-02-10 |
US20200097354A1 (en) | 2020-03-26 |
JP2022500730A (ja) | 2022-01-04 |
US11100086B2 (en) | 2021-08-24 |
CA3108063A1 (en) | 2020-04-02 |
EP3811233A1 (en) | 2021-04-28 |
JP7389793B2 (ja) | 2023-11-30 |
WO2020068334A1 (en) | 2020-04-02 |
EP3811233A4 (en) | 2022-03-30 |
US11657035B2 (en) | 2023-05-23 |
CN112654978A (zh) | 2021-04-13 |
US20230237045A1 (en) | 2023-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112654978B (zh) | 分布式异构存储系统中数据一致性实时检查的方法、设备和系统 | |
EP3127018B1 (en) | Geographically-distributed file system using coordinated namespace replication | |
US7366742B1 (en) | System and method for distributed discovery and management of frozen images in a storage environment | |
JP2948496B2 (ja) | データ処理システム内で複写データ一貫性を維持するためのシステムおよび方法 | |
CN109643310B (zh) | 用于数据库中数据重分布的系统和方法 | |
US11436089B2 (en) | Identifying database backup copy chaining | |
Chen et al. | Federation in cloud data management: Challenges and opportunities | |
Nawab et al. | Chariots: A scalable shared log for data management in multi-datacenter cloud environments. | |
US11522966B2 (en) | Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment | |
US11966297B2 (en) | Identifying database archive log dependency and backup copy recoverability | |
US11093465B2 (en) | Object storage system with versioned meta objects | |
US11860828B2 (en) | Methods, devices and systems for writer pre-selection in distributed data systems | |
Vasuja et al. | Daemons of Hadoop: An Overview | |
CN115964353B (zh) | 一种分布式文件系统及其访问计量方法 | |
Horttanainen | New Production System for Finnish Meteorological Institute | |
JP2023509903A (ja) | ハイブリッドクラウド非同期データ同期 | |
Carvalho | Generic replication of software transactional memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40040816 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: California, USA Applicant after: Xilata Co.,Ltd. Address before: California, USA Applicant before: Wandisco Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |