CN108701071B - 高吞吐量、高可靠性的数据处理系统 - Google Patents
高吞吐量、高可靠性的数据处理系统 Download PDFInfo
- Publication number
- CN108701071B CN108701071B CN201680081932.0A CN201680081932A CN108701071B CN 108701071 B CN108701071 B CN 108701071B CN 201680081932 A CN201680081932 A CN 201680081932A CN 108701071 B CN108701071 B CN 108701071B
- Authority
- CN
- China
- Prior art keywords
- computing device
- data
- copy
- data entity
- volatile memory
- 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
Images
Classifications
-
- 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/2056—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 by mirroring
-
- 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
- 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/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
- G06F11/1662—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
-
- 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/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- 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/2056—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 by mirroring
- G06F11/2071—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 by mirroring using a plurality of controllers
- G06F11/2079—Bidirectional 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/2056—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 by mirroring
- G06F11/2082—Data synchronisation
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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
-
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/855—Details of asynchronous mirroring using a journal to transfer not-yet-mirrored changes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据处理系统,其被配置为将多个数据实体存储在不同的数个计算装置的易失性存储器中。所述数据处理系统包括:第一计算装置,其具有被配置为存储第一数据实体的第一易失性存储器;以及第二计算装置,其具有被配置为存储所述第一数据实体的副本的第二易失性存储器。所述第一计算装置被配置为进行以下操作:接收用以更新所述第一数据实体的指示;在接收到所述指示之后,在所述第一易失性存储器中更新所述第一数据实体,并且将用以更新所述第一数据实体的副本的指示提供至所述第二计算装置;以及在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的副本的信息之后,提供所述第一数据实体已更新的指示。
Description
相关申请的交叉引用
本申请要求2015年12月16日提交的标题为“高吞吐量、高可靠性的数据处理系统(HIGH THROUGHPUT HIGH RELIABILITY DATA PROCESSING SYSTEM)”的美国临时专利申请序列号62/268,090的优先权,其全部内容通过引用而被包含于此。
背景技术
数据处理系统可以使用多个装置来存储数据。可以将数据处理系统中的一个装置上所存储的数据的副本存储在该数据处理系统的一个或多个其它装置上,使得如果一个装置例如由于电力中断或网络问题而变得不可用,则仍可以经由至少一个其它装置访问数据。因此,数据处理系统可以跨多个装置复制数据实体并保持所复制的数据实体同步,使得任一装置上所存储的数据实体的备份副本在其它装置上均可用。如果数据处理系统中的任一装置变得不可用,则这种复制防止了数据的不可访问或丢失。
数据处理系统可以通过确保如果更新一个装置上所存储的数据实体、那么更新其它装置上所存储的该数据实体的任何副本,来保持数据实体的多个副本同步。一些数据处理系统使用所谓的“延迟传播(lazy propagation)”技术来同步数据,由此对数据实体及其副本进行改变,使得在更新了数据实体本身之后更新数据实体的副本。延迟传播技术的一个示例是所谓的“日志登载(journaling)”技术,其中在该技术中,将对数据实体的改变记录在日志中,并且在需要访问数据实体的副本时,使用日志中的信息来更新数据实体的副本。例如,可以将对服务器A上所存储的特定数据实体的多个改变记录到日志,而不更新服务器B上所存储的数据实体的副本。稍后,在服务器A变得不可访问时,可以基于日志中的信息来更新服务器B上的数据实体的副本,使得可以经由服务器B访问数据实体的最新版本。
延迟传播技术使得能够快速更新数据实体,因为该更新无需等待更新数据实体的所有副本。另一方面,延迟传播技术导致失效转移(failover)缓慢,因为在存储有一组数据实体的服务器变得不可访问时,必须首先(例如,基于日志中的信息)更新这些数据实体的副本,然后可以经由另一服务器提供对这些副本的访问。
一些数据处理系统使用所谓的“同步复制(eager replication)”技术来同步数据。不同于仅在更新了数据实体之后才对数据实体的副本进行改变的延迟传播,同步复制涉及在更新数据实体本身之前更新数据实体的副本。例如,在对服务器A(例如,被指定为用于数据实体的“主”服务器的服务器,使得用以访问和/或更新数据实体的所有请求都被提供至该主服务器)上所存储的数据实体进行改变之前,首先更新数据实体的副本,随后对服务器A上所存储的数据实体进行改变。
使用传统的同步复制来更新数据实体与使用延迟传播时相比通常需要更多的时间,因为同步复制涉及在更新数据实体本身之前更新数据实体的副本。另一方面,由于使数据实体的所有副本都保持同步,因此同步传播与使用延迟传播时相比通常允许更快的失效转移。
发明内容
一些实施例提供一种数据处理系统,其被配置为将多个数据实体存储在数个计算装置的易失性存储器中。所述数据处理系统包括:第一计算装置,其具有被配置为存储第一数据实体的第一易失性存储器,所述第一数据实体与第一标识符相关联;以及第二计算装置,其不同于所述第一计算装置并且通信地连接至所述第一计算装置,所述第二计算装置具有被配置为存储所述第一数据实体的与第二标识符相关联的副本的第二易失性存储器,其中,所述第一计算装置被配置为进行以下操作:接收用以更新所述第一数据实体的指示;在接收到所述指示之后,在所述第一易失性存储器中更新所述第一数据实体,以及将用以更新所述第一数据实体的所述副本的指示提供至所述第二计算装置;以及在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的所述副本的信息之后,提供所述第一数据实体已更新的指示。
一些实施例提供一种由第一计算装置进行的方法,所述第一计算装置具有被配置为存储与第一标识符相关联的第一数据实体的第一易失性存储器,所述第一计算装置通信地连接至第二计算装置,所述第二计算装置具有被配置为存储所述第一数据实体的与第二标识符相关联的副本的第二易失性存储器,所述第二计算装置不同于所述第一计算装置。所述方法包括:接收用以更新所述第一数据实体的指示;在接收到所述指示之后,在所述第一易失性存储器中更新所述第一数据实体,以及将用以更新所述第一数据实体的所述副本的指示提供至所述第二计算装置;以及在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的所述副本的信息之后,提供所述第一数据实体已更新的指示。
一些实施例提供一种非暂时性计算机可读存储介质,其存储处理器可执行指令,所述处理器可执行指令在由具有被配置为存储与第一标识符相关联的第一数据实体的第一易失性存储器的第一计算装置执行时,使所述第一计算装置进行方法,所述第一计算装置通信地连接至第二计算装置,所述第二计算装置具有被配置为存储所述第一数据实体的与第二标识符相关联的副本的第二易失性存储器,所述第一计算装置不同于所述第二计算装置。所述方法包括:接收用以更新所述第一数据实体的指示;在接收到所述指示之后,在所述第一易失性存储器中更新所述第一数据实体,以及将用以更新所述第一数据实体的所述副本的指示提供至所述第二计算装置;以及在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的所述副本的信息之后,提供所述第一数据实体已更新的指示。
一些实施例提供一种非暂时性计算机可读存储介质,其存储处理器可执行指令,所述处理器可执行指令由第一计算装置执行,所述第一计算装置具有被配置为存储与第一标识符相关联的第一数据实体的第一易失性存储器,所述第一计算装置通信地连接至第二计算装置,所述第二计算装置具有被配置为存储所述第一数据实体的与第二标识符相关联的副本的第二易失性存储器,所述处理器可执行指令包括:用于接收用以更新所述第一数据实体的指示的部件;用于在接收到所述指示之后、在所述第一易失性存储器中更新所述第一数据实体并将用以更新所述第一数据实体的所述副本的指示提供至所述第二计算装置的部件;以及用于在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的所述副本的信息之后、提供所述第一数据实体已更新的指示的部件。
一些实施例提供一种数据处理系统,其被配置为将数据实体存储在数个计算装置的易失性存储器中,所述数据处理系统包括:第一计算装置,其具有被配置为存储多个数据实体的第一易失性存储器,所述多个数据实体与相应的第一标识符相关联;以及第二计算装置,其不同于所述第一计算装置并且通信地连接至所述第一计算装置,所述第二计算装置具有被配置为存储所述多个数据实体中的数据实体的副本的第二易失性存储器,所述副本与相应的第二标识符相关联,其中,所述第一计算装置被配置为进行以下操作:接收用以进行重新同步的指示;将包括所述多个数据实体中的各数据实体的标识符和版本号的信息提供至所述第二计算装置;从所述第二计算装置接收标识所述第一易失性存储器中所存储的如下的至少一个数据实体的信息,其中所述至少一个数据实体与所述第二易失性存储器中的相应的至少一个副本不同步;以及响应于接收到所述信息,将所述第一易失性存储器中所存储的所述至少一个数据实体提供至所述第二计算装置。
一些实施例提供一种由第一计算装置进行的方法,所述第一计算装置具有被配置为存储与相应的第一标识符相关联的多个数据实体的第一易失性存储器,所述第一计算装置不同于第二计算装置并且通信地连接至所述第二计算装置,所述第二计算装置具有被配置为存储所述多个数据实体中的数据实体的副本的第二易失性存储器,所述副本与相应的第二标识符相关联,所述方法包括:接收用以进行重新同步的指示;将包括所述多个数据实体中的各数据实体的标识符和版本号的信息提供至所述第二计算装置;从所述第二计算装置接收标识所述第一易失性存储器中所存储的如下的至少一个数据实体的信息,其中所述至少一个数据实体与所述第二易失性存储器中的相应的至少一个副本不同步;以及响应于接收到所述信息,将所述第一易失性存储器中所存储的所述至少一个数据实体提供至所述第二计算装置。
一些实施例提供一种非暂时性计算机可读存储介质,其存储处理器可执行指令,所述处理器可执行指令在由具有被配置为存储与相应的第一标识符相关联的多个数据实体的第一易失性存储器的第一计算装置执行时,使所述第一计算装置进行方法,所述第一计算装置不同于第二计算装置并且通信地连接至所述第二计算装置,所述第二计算装置具有被配置为存储所述多个数据实体中的数据实体的副本的第二易失性存储器,所述副本与相应的第二标识符相关联,所述方法包括:接收用以进行重新同步的指示;将包括所述多个数据实体中的各数据实体的标识符和版本号的信息提供至所述第二计算装置;从所述第二计算装置接收标识所述第一易失性存储器中所存储的如下的至少一个数据实体的信息,其中所述至少一个数据实体与所述第二易失性存储器中的相应的至少一个副本不同步;以及响应于接收到所述信息,将所述第一易失性存储器中所存储的所述至少一个数据实体提供至所述第二计算装置。
一些实施例提供一种数据处理系统,其被配置为将数据实体存储在不同的数个计算装置的易失性存储器中。所述数据处理系统包括:第一计算装置,其具有被配置为存储与相应的第一标识符相关联的多个数据实体的第一易失性存储器;以及第二计算装置,其不同于所述第一计算装置并且通信地连接至所述第一计算装置,所述第二计算装置具有被配置为存储所述第一易失性存储器中所存储的所述多个数据实体中的数据实体的副本的第二易失性存储器,所述副本与相应的第二标识符相关联,其中所述第二计算装置被配置为进行以下操作:将用以进行重新同步的指示提供至所述第一计算装置;从所述第一计算装置接收包括所述多个数据实体中的各数据实体的标识符和版本号的信息;将标识所述第一易失性存储器中所存储的如下的至少一个数据实体的信息提供至所述第一计算装置,其中所述至少一个数据实体与所述第二易失性存储器中的相应的至少一个副本不同步;以及从所述第一计算装置接收所述第一易失性存储器中所存储的所述至少一个数据实体。
一些实施例提供一种由第二计算装置进行的方法,所述第二计算装置具有被配置为存储多个数据实体中的数据实体的副本的第二易失性存储器,所述多个数据实体存储在不同于所述第二计算装置并且通信地连接至所述第二计算装置的第一计算装置的第一易失性存储器中。所述方法包括:将用以进行重新同步的指示提供至所述第一计算装置;从所述第一计算装置接收包括所述多个数据实体中的各数据实体的标识符和版本号的信息;将标识所述第一易失性存储器中所存储的如下的至少一个数据实体的信息提供至所述第一计算装置,其中所述至少一个数据实体与所述第二易失性存储器内的相应的至少一个副本不同步;以及从所述第一计算装置接收所述第一易失性存储器中所存储的所述至少一个数据实体。
一些实施例提供一种非暂时性计算机可读存储介质,其存储处理器可执行指令,所述处理器可执行指令在由第二计算装置执行的情况下,使所述第二计算装置进行方法,所述第二计算装置具有被配置为存储多个数据实体中的数据实体的副本的第二易失性存储器,所述多个数据实体存储在不同于所述第二计算装置并且通信地连接至所述第二计算装置的第一计算装置的第一易失性存储器中。所述方法包括:将用以进行重新同步的指示提供至所述第一计算装置;从所述第一计算装置接收包括所述多个数据实体中的各数据实体的标识符和版本号的信息;将标识所述第一易失性存储器中所存储的如下的至少一个数据实体的信息提供至所述第一计算装置,其中所述至少一个数据实体与所述第二易失性存储器内的相应的至少一个副本不同步;以及从所述第一计算装置接收所述第一易失性存储器中所存储的所述至少一个数据实体。
以上是本发明的由所附权利要求书限定的非限制性发明内容。
附图说明
将参考以下的附图来说明各方面和实施例。应当理解,这些附图不必按比例绘制。在多个附图中出现的项在这些项出现的所有附图中均利用相同或相似的附图标记来表示。
图1A是本文所述的技术的一些实施例可以工作的例示性数据处理系统的框图。
图1B示出根据本文所述的技术的一些实施例的、图1A的数据处理系统可以如何跨多个装置管理数据实体及其相应的副本的一个示例。
图1C示出根据本文所述的技术的一些实施例的、图1A的数据处理系统可以如何跨多个装置管理数据实体及其相应的副本的示例。
图1D示出根据本文所述的技术的一些实施例的、数据处理系统中的装置所存储的信息的示例。
图2是根据本文所述的技术的一些实施例的、用于更新装置上所存储的数据实体以及一个或多个其它装置上所存储的该数据实体的一个或多个副本的例示性过程的流程图。
图3A、3B和3C示出根据本文所述的技术的一些实施例的基于清单的重新同步。
图4A、4B、4C、4D、4E和4F示出根据本文所述的技术的一些实施例的基于清单的重新同步的例示性示例。
图5是根据本文所述的技术的一些实施例的、作为用于一组数据实体的主装置工作的计算装置所进行的用于对该组数据实体进行基于清单的重新同步的例示性过程的流程图。
图6是根据本文所述的技术的一些实施例的、作为用于一组数据实体的备份装置工作的计算装置所进行的用于对该组数据实体进行基于清单的重新同步的例示性过程的流程图。
图7是在实现本文所述的技术的一些实施例时可以使用的例示性计算系统环境的框图。
具体实施方式
发明人已经认识到并理解,数据处理系统的包括速度和网络带宽使用的工作特性可以通过改进的数据复制过程来改进。这种复制过程可以在高效地使用数据处理系统的处理和网络资源的同时,在数据处理系统中实现快速数据访问、快速数据更新和快速数据恢复。相比之下,传统的数据复制技术不同时支持快速数据访问、更新和恢复。例如,尽管由于直到更新了数据实体的主副本之后才更新数据实体的备份副本、因此传统的延迟传播技术允许快速数据更新,但由于使用日志登载因而数据恢复缓慢。结果,在诸如在数据的备份副本可用并且可被快速访问的“高可靠性”设置中等、需要快速失效转移的情况下,传统的延迟传播技术是不合适的。作为另一示例,尽管传统的同步复制技术使得能够进行快速数据恢复,但由于数据实体的备份副本在这些数据实体的相应主副本之前更新,因此数据更新缓慢,这导致延迟。结果,传统的同步复制技术是不切实际的,并且不用在可以在短时间段内更新大量数据实体(例如,数百万或数十亿的银行交易)的“高吞吐量”设置中。
因此,一些实施例提供允许通过使用用以存储数据的易失性存储器来进行数据的快速更新、访问和恢复的改进的数据复制过程。尽管通过使用易失性存储而产生的对数据完整性的风险更大,但发明人所开发的复制过程确保了数据处理系统跨多个装置的易失性存储器可靠地维持数据、并且使数据在这些装置之间同步。复制过程至少部分通过使用用于重新同步例如由于网络或电力中断而已变得不同步的任何数据的低带宽技术,来高效地使用系统的网络资源。
因此,一些实施例提供被配置为管理系统的多个装置的易失性存储器内的数据的内存(in-memory)数据处理系统。管理数据包括诸如以下等的功能:例如存储数据、删除所存储的数据、接收新数据(例如,以供存储)、处理数据、将对数据的电子访问提供至已存储的数据、以及/或者(例如,通过改变所存储的数据中的一个或多个值)更新所存储的数据。内存数据处理系统所管理的数据可以包括使用发明人所开发的复制技术跨多个易失性存储器所复制的多个数据实体。数据实体可以包括诸如记录和变量等的一个或多个数据项。易失性存储器可以是使用电力来维持内部所存储的信息的任何计算机存储器(例如,随机存取存储器(RAM));易失性存储器在通电时保留内部所存储的数据,但在断电时丢失所存储的数据。内存数据处理系统不需要向例如硬盘等的非易失性存储器的耗时的读和写来更新数据实体的副本,这样减少了为了更新数据实体的副本所使用的时间量,并且使得同步复制技术更快达到这些同步复制技术的使用在高可靠性和高吞吐量的设置中变得实际可行的程度。
在一些实施例中,对内存数据处理系统所管理的数据实体进行分组,并且各组数据实体与可以访问和/或更新该组中的数据实体的相应的主装置(例如,主服务器)相关联。组中的数据实体还与用于存储数据实体的副本的相应的一个或多个备份装置(例如,一个或多个备份服务器)相关联。主装置的易失性存储器内所存储的数据实体在本文中被称为数据实体的主副本,并且其副本在本文中被称为备份副本。
在一些实施例中,数据处理系统中的装置可以将该装置用作主装置所针对的任何数据实体存储在其易失性存储器的堆内部分中。该装置可以将该装置用作备份装置所针对的任何数据实体存储在其易失性存储器的堆外部分中。可以使用存储器的连续块而无需使用自动垃圾收集来管理堆外易失性存储器中的内存,从而进一步提高了管理内部所存储的任何数据的效率。在许多实例中,由于例如在各数据实体被复制了两次以上的情况下、内存数据处理系统可能正在管理比数据实体的主副本多的备份,因此提高使用堆外存储器来管理备份副本的效率用于进一步改进发明人所开发的复制技术的性能。
在一些实施例中,用于一组数据实体的主装置(例如,由于电力中断或网络中断)可能变得不可访问,并且备份装置可以开始作为用于该组中的一个或多个数据实体的主装置工作。在这种情形下,尽管备份装置现在是用于该组中的一个或多个数据实体的主装置,但备份装置也可以继续将这些数据实体存储在堆外存储器中,直到请求了对数据实体的访问为止,此时,使数据实体移动到备份装置的堆内存储器。这样,可以非常快速地进行失效转移,而不要求在需要对数据实体的所有备份副本的访问之前主动地使这些备份副本从备份装置的堆外易失性存储器移动到堆内易失性存储器。
在一些实例中,数据处理系统所管理的数据实体的副本可能由于诸如网络中断和电力中断等的事件而变得不同步。例如,网络中断和/或电力中断可能使存储有数据实体的装置不可访问,其中在该不可访问时间段内可以在一个或多个其它装置上更新这些数据实体。由于装置中的电力丧失导致仅存储在该装置的易失性存储器中的所有数据都丢失,因此电力中断在易失性存储器的背景下造成特有的风险。由于数据处理系统可能管理大量数据(例如,诸如银行或信用卡交易等的数百万或数十亿的数据实体),因此需要用于重新同步的低带宽技术来实现能够可以可靠地处理每单位时间的大量交易(例如,每秒的数百万的交易)的高吞吐量的数据处理系统。
因此,发明人开发了用以高效地重新同步内存数据处理系统中的装置所存储的数据实体的低带宽重新同步技术。低带宽技术是用于至少部分基于与数据处理系统所管理的数据实体相关联的版本号来同步这些数据实体的基于清单的重新同步技术。
在一些实施例中,数据处理系统的各装置可以针对该装置的易失性存储器内所存储的各数据实体维持相应的本地版本号。响应于用以进行重新同步的指示,用于一组数据实体的主装置可以将包含该组中的各个数据实体的版本号的清单提供至用于存储该组中的数据实体的相应备份副本的一个或多个备份装置。各备份装置可以将清单中的版本号与其易失性存储器内所存储的数据实体的备份副本的本地版本号进行比较,并且基于比较的结果来识别非同步(“不同步”)的数据实体并从主装置请求这些数据实体。因此,响应于发送出清单,主装置可以从一个或多个备份装置接收到对数据实体的请求,并且可以将所请求的数据实体提供至请求的备份装置。
本文所述的技术的一些实施例解决了上述的传统数据复制技术的缺陷中的一些缺陷。然而,并非每个实施例均解决这些缺陷中的每一个缺陷,并且一些实施例可能没有解决这些缺陷中的任何缺陷。如此,应当理解,本文所述的技术的各方面不限于解决以上论述的传统数据复制技术的缺陷的所有或任何缺陷。
应当理解,本文所述的实施例可以以任何多个方式来实现。以下提供具体实现的示例仅用于例示性目的。应当理解,这些实施例和所提供的特征/能力可以单独使用,一起使用,或者采用两个以上的任何组合使用,因为本文所述的技术的各方面在这方面不受限制。
图1A是被配置为管理多个计算装置的易失性存储器中的数据实体的例示性数据处理系统100的框图。如图所示,例示性数据处理系统100被配置为管理计算装置108、110和112的易失性存储器中的数据实体106。在该非限制性示例中,数据实体106包括十五个数据实体。尽管数据处理系统100被示为管理三个计算装置的易失性存储器中的十五个数据实体,但这仅仅是为了呈现清楚而并非限制性的。数据处理系统可以将任何合适数量的数据实体(例如,数千、数百万、数十亿或数万亿的数据实体)存储在任何合适数量(例如,至少10个、至少10个、至少1000个、至少10000个、10~10000个等)的计算装置的易失性存储器中,因为本文所述的技术的各方面在这方面不受限制。
在一些实施例中,数据实体可以包括一个或多个数据项,诸如一个或多个记录以及/或者一个或多个变量等。数据项的示例包括但不限于信用卡交易记录、电话呼叫记录、银行交易记录。数据实体可以包括任何合适量的数据。例如,数据实体可以包括一个或多个字节的数据、至少一千字节的数据、至少十千字节的数据、至少一兆字节的数据等。
数据处理系统100可被配置为使得一个或多个计算机程序能够将新数据实体提供至该系统、删除该系统所管理的数据实体、访问该系统所管理的数据实体、以及/或者更新该系统所管理的数据实体中的信息。这种计算机程序可以是数据处理系统100的一部分或在数据处理系统100的外部。一个或多个用户(例如,用户102)可以经由至少部分在计算装置部分(例如,计算装置104)上执行和/或被配置为与数据处理系统100进行通信的一个或多个计算机程序来访问数据处理系统100所存储的一个或多个数据实体。
在一些实施例中,可以将数据处理系统100所管理的数据实体划分成多组数据实体。一组数据实体可以与多个计算装置相关联,其中这些计算装置包括:(1)主计算装置(例如,主服务器),其被配置为存储该组中的数据实体的主副本;以及(2)一个或多个备份计算装置(例如,一个或多个备份服务器),其各自被配置为存储该组中的一个或多个数据实体的备份副本。可以经由(并且在一些实施例中,仅经由)与某个组相关联的主计算装置来访问和/或更新该组中的数据实体。
如图1A所示,例如,将数据实体106划分成数据实体D1~D5、数据实体D6~D10和数据实体D11~D15这三组实体。计算装置108是用于一组数据实体D1~D5的主计算装置,并且可以用作用于一个或多个其它组的数据实体的备份计算装置。因而,计算装置108存储数据实体D1~D5的主副本,并且可以存储一个或多个数据实体D6~D15的备份副本。计算装置110是用于一组数据实体D6~D10的主计算装置,并且可以用用于作一个或多个其它组的数据实体的备份计算装置。因而,计算装置110存储数据实体D6~D10的主副本,并且可以存储数据实体D1~D5和D11~D15中的一个或多个数据实体的备份副本。计算装置112是用于一组数据实体D11~D15的主计算装置,并且可以用作用于一个或多个其它组的数据实体的备份计算装置。因而,计算装置112存储数据实体D11~D15的主副本,并且可以存储数据实体D1~D10中的一个或多个数据实体的备份副本。
应当理解,可以明确地或隐含地将数据实体划分成多个组。在一些实施例中,可以明确地将数据实体划分成多个组,并且如此得到的各组可以与相应的主计算装置相关联。例如,可以明确地将数据实体106划分成三个组(例如,包含实体D1~D5的第一组、包含实体D6~D10的第二组和包含D11~D15的第三组),并且这些组中的各组可以与相应的主计算装置(例如,计算装置108、110和112)相关联。
在一些实施例中,数据处理系统所管理的各个数据实体可以与主计算装置相关联,其中该关联暗示着数据实体的分组(与同一主计算装置相关联的所有数据实体可被视为一组)。例如,各个数据实体D1~D5可被分配至作为用于这些数据实体的主计算装置的计算装置108,并且由于这些数据实体与同一计算装置的共同关联因而可被视为构成一组数据实体。数据实体可以以任何合适的方式与主计算装置相关联,并且例如可以经由确定性映射与主计算装置相关联,其中该确定性映射(例如,基于数据实体中的数据、数据实体的标识符和/或与数据实体相关联的任何其它信息)将数据实体映射到特定主计算装置。
应当理解,可以以任何合适的方式将数据处理系统所管理的数据实体划分成任何合适的数量的组。例如,如图1A所示,可以将数据实体划分成具有相同或相似数量的数据实体的组,但这不是对本文所述的技术的限制,并且在一些实施例中,可以将数据实体划分成具有不同数量的数据实体的组。此外,在图1A的例示示例中,尽管数据实体基于这些数据实体的数字标识符而被顺次分组,但这也不是对本文所述的技术的限制,并且仅为了说明清楚而进行的。
计算装置104、108、110和112各自可以是固定或便携的任何合适类型的计算装置,因为本文所述的技术的各方面在这方面不受限制。另外,计算装置104、108、110和112无需是相同类型的计算装置。计算装置104、108、110和112被配置为经由网络114以及连接116a、116b、116c和116d彼此通信。网络114可以是任何合适类型的网络,诸如因特网、内联网、广域网、局域网和/或任何其它合适类型的网络等。连接116a、116b、116c和116d各自可以是有线的、无线的和/或任何其它合适类型的连接。
作为数据处理系统100的一部分的计算装置包括用于存储数据处理系统100所管理的数据实体的存储器。被配置为存储数据实体的数据处理系统100中的计算装置包括易失性存储器(例如,随机存取存储器、CPU高速缓冲存储器等),并且可选地包括非易失性存储器(例如,只读存储器(ROM)、闪速存储器、固态存储器、磁盘存储器等)。易失性存储器可以包括堆内部分和堆外部分。
例如,如图1B所示,计算装置108具有包括堆内存储器108a和堆外易失性存储器108b的易失性存储器、以及包括磁盘存储器108c的非易失性存储器。计算装置110具有包括堆内存储器110a和堆外易失性存储器110b的易失性存储器、以及包括磁盘存储器110c的非易失性存储器。计算装置112具有包括堆内存储器112a和堆外易失性存储器112b的易失性存储器、以及包括磁盘存储器112c的非易失性存储器。尽管作为数据处理系统100的一部分的各个计算装置包括易失性存储器和非易失性存储器这两者,但作为数据处理系统100的一部分的一个或多个计算装置可以仅具有易失性存储器,因为本文所述的技术的各方面在这方面不受限制。
在一些实施例中,数据处理系统100中的装置可以将该装置是主装置所针对的数据实体存储在该装置的易失性存储器的堆内部分中。例如,如图1B所示,计算装置108是用于数据实体D1~D5的主计算装置,并且将作为数据实体D1~D5的主副本的数据实体120a存储在堆内易失性存储器108a中。计算装置110是用于数据实体D6~D10的主计算装置,并且将作为数据实体D6~D10的主副本的数据实体122a存储在堆内易失性存储器110a中。计算装置112是用于数据实体D11~D15的主计算装置,并且将作为数据实体D11~D15的主副本的数据实体124a存储在堆内易失性存储器112a中。
另外,在一些实施例中,数据处理系统100中的装置可以将该装置是备份装置所针对的数据实体存储在该装置的易失性存储器的堆外部分中。例如,如图1B所示,计算装置108是用于数据项D6~D15的备份计算装置,并且将分别作为数据实体D6~D10和D11~D15的备份副本的数据实体122b和124b存储在堆外易失性存储器108b中。计算装置110是用于数据项D1~D5和D11~D15的备份计算装置,并且将分别作为数据实体D6~D10和D11~D15的备份副本的数据实体120b和124c存储在堆外易失性存储器110b中。计算装置112是用于数据项D1~D10的备份计算装置,并且将分别作为数据实体D1~D5和D6~D10的备份副本的数据实体120c和122c存储在堆外易失性存储器112b中。
在一些实施例中,数据处理系统中的装置可以存储数据实体以及与所存储的数据实体相关联的信息。例如,装置可以存储该装置的易失性存储器内所存储的数据实体的至少子集中的每一个数据实体的版本号。附加地或可选地,装置可以存储数据实体的至少子集中的每一个数据实体的标识符。如以下所述,可以使用这些标识符和版本号来进行跨数据处理系统的多个装置的数据实体的重新同步。例如,如图1D所示,堆内存储器108a存储数据实体D1~D5的内容、这些数据实体D1~D5中的各数据实体的标识符、以及这些数据实体中的各数据实体的版本号。尽管该信息被示出为表的一部分,但由于数据实体以及与这些数据实体相关联的任何信息(例如,版本号和/或标识符)可以使用任何合适的数据结构以任何合适的格式来存储,因此这仅用于例示性目的,因为本文所述的技术的各方面在这方面不受限制。
在一些实施例中,不同的装置可以使用相同的标识符来指代相同数据实体的主副本和备份副本。例如,用于一组数据实体的主装置和用于该组数据实体的备份装置可以针对这些数据实体及其副本存储相同的标识符。然而,在其它实施例中,不同的装置可以使用不同的标识符来指代相同数据实体的主副本和备份副本。例如,用于一组数据实体的主装置可以将一个集合的标识符用于该组数据实体,并且备份装置可以将不同集合的标识符用于该组数据实体。在这种实施例中,主装置和/或备份装置可被编程为将不同集合的标识符集映射到彼此。
在数据处理系统100的工作期间,数据实体的主副本与数据实体的备份副本相比可能更频繁地被访问。因此,在使用堆内易失性存储器来存储数据实体的主副本并且使用堆外易失性存储器来存储数据实体的备份副本的实施例中,数据处理系统100可被配置为以不同的方式管理堆内易失性存储器内所存储的数据和堆外易失性存储器内所存储的数据,以提高系统的整体响应性。例如,数据处理系统100可以在无需使用自动垃圾收集的情况下管理堆外易失性存储器中的数据,并且可以通过使用自动垃圾收集来管理堆内易失性存储器中的数据。作为另一示例,数据处理系统100可以通过在存储器的大的连续块中访问和/或写入数据来管理堆外易失性存储器中的数据,但不要求在堆内存储器中使用这种连续块。这样,数据处理系统100能够更快速地处理对该数据处理系统100管理的数据实体的主副本的访问请求,这在高吞吐量的应用中是重要的。
在图1B所示的数据处理系统100如何跨多个装置来管理数据实体及其相应副本的例示性示例中,计算装置108、110和112各自存储数据处理系统所管理的各数据实体的主副本或备份副本。例如,数据实体D1~D5的主副本存储在计算装置108的堆内存储器中,并且这些数据实体的辅助副本存储在计算装置110和112这两者的堆外存储器中。然而,数据处理系统无需将各数据实体的副本存储在数据处理系统中的各计算装置上,因为本文所述的技术的各方面在这方面不受限制。
如图1C的例示性示例所示,例如,数据处理系统100可以仅将一些数据实体的备份副本存储在数据处理系统中的被配置为作为备份装置工作(即,被配置为存储数据实体的备份副本)的一些计算装置上。例如,数据处理系统100可被配置为将数据实体D1~D5的主副本作为数据实体130a存储在计算装置108的堆内存储器108a中,并且将这些数据实体的备份副本作为数据实体130b存储在计算装置110的堆外存储器中。在该结构中,计算装置112c不存储数据实体D1~D5的任何备份副本。其它数据实体可以作为主副本或备份副本存储在所有的计算装置上。例如,如图1C所示,数据实体D11~D15的主副本可以作为数据实体134a存储在计算装置112上,并且这些数据实体的备份副本134b和134c可以分别存储在计算装置108和110上。
在一些实施例中,数据处理系统100可被配置为判断使用哪些装置来存储数据实体的备份副本。这可以以任何合适的方式进行。例如,数据处理系统100可被配置为针对个数据实体判断使用哪些装置来存储该数据实体的备份副本。在数据实体级别进行这种判断可以得到如下的数据实体,其中这些数据实体的主副本存储在同一计算装置上,但这些数据实体的备份副本存储在不同的装置上。例如,如图1C所示,数据实体D6~D10的主副本作为数据实体132a存储在计算装置110的堆内存储器110a中,数据实体D6~D8的备份副本作为数据实体132b存储在计算装置108的堆外存储器108b中,并且数据实体D9~D10的备份副本作为数据实体132c存储在计算装置112的堆外存储器112c中。在该示例中,计算装置108不存储数据实体D9~D10的备份副本,并且计算装置112不存储数据实体D6~D8的备份副本。作为另一示例,数据处理系统可被配置为针对共用主装置的各组数据实体,判断使用哪些装置来存储该组中的所有实体的备份副本。在该结构中,用于存储组中的任何数据实体的备份副本的各备份装置还将存储该组中的所有其它数据实体的备份副本。
在一些实施例中,可以更新数据处理系统100所维持的数据实体。例如,可以将一个或多个新数据实体添加到该系统所管理的一组数据实体中。作为另一示例,可以删除数据处理系统正管理的一个或多个数据实体。作为又一示例,可以改变数据处理系统所管理的一个或多个数据实体的内容。作为又一示例,可以替换数据处理系统所管理的一个或多个数据实体的内容。在一些实施例中,数据处理系统100可以使用以下参考图2所述的发明人所开发的复制过程来更新该数据处理系统100管理的一个或多个数据实体。
图2是根据本文所述的技术的一些实施例的用于更新装置上所存储的数据实体以及一个或多个其它装置上所存储的该数据实体的一个或多个副本的例示性过程200的流程图。过程200可以由任何合适的数据处理系统进行,并且例如可以由上述的数据处理系统100进行。
过程200从动作202开始,其中在该动作202中,数据处理系统中的计算装置接收用以更新数据实体的指示。该指示可以是用以将新数据实体添加到数据处理系统所管理的数据实体的指示、用以删除数据处理系统所管理的数据实体的指示、或者用以改变数据处理系统所管理的数据实体中的数据的指示。作为非限制性示例,参考数据处理系统100所管理的数据实体106,该指示可以是用以将新数据实体D16添加到数据实体106、从数据实体106删除数据实体D9、或者改变数据实体106的数据实体D3中的数据的值的指示。该指示可以是从(包括例如数据处理系统外部的装置的)任何合适的源、从数据处理系统的另一装置部分接收到的,或者可以是通过在接收到指示的计算装置上执行软件(自动地或响应于用户输入)而生成的。在一些实例中,该指示可以是响应于数据处理系统的用户提供要更新数据实体的指示而接收到的。
在一些实施例中,在动作202中接收到的指示可以包括用以标识要更新的数据实体的信息。在该指示是要改变数据实体中的数据值的指示的情况下,该指示可以包括新数据值。在该指示是要添加新数据实体的指示的情况下,该指示可以包括要成为新数据实体的一部分的至少一些(例如,所有)数据。该指示可以采用任何合适的格式,因为该技术的各方面在这方面不受限制。
接着,过程200进入判定块204,其中在该判定块204中,判断接收到用以更新数据实体的指示的计算装置是否是用于该数据实体的主装置。也就是说,在判定块204中判断计算装置是否存储(或者在正在添加新数据实体的情况下存储)要更新的数据实体的主副本。该判断可以以任何合适的方式进行。例如,在一些实施例中,用以更新数据实体的指示可以包括用以标识数据实体的信息,并且可以使用该信息来(例如,经由查找表、映射或以任何其它合适的方式)识别用于数据实体的主装置并判断接收到该指示的计算装置是否是所识别出的主装置。
在判定块204中判断为接收到用以更新数据实体的指示的计算装置不是用于该数据实体的主装置的情况下,过程200进入动作206,其中在该动作206中,将该指示转发至用于数据实体的主装置。例如,如果计算装置108接收到用以更新数据实体D6的指示(其中,数据实体D6的主副本存储在计算装置110的易失性存储器中),则计算装置108在判定块204中可以判断为计算装置110是用于数据实体D6的主装置,并且在动作206中可以将该指示转发至计算装置110。
另一方面,在判定块204中判断为接收到用以更新数据实体的指示的计算装置是用于数据实体的主装置的情况下,过程200进入动作208,其中在该动作208中,在主装置上更新数据实体的主副本。
在主装置上更新数据实体的主副本之后,过程200进入动作210,其中在该动作210中,识别用以存储数据实体的备份副本的装置。可以使用用以标识数据实体的信息来例如经由查找表、映射或以任何其它适当的方式确定用于数据实体的备份装置。例如,如果计算装置108接收到用以更新数据实体D3的指示,则在动作210中,数据处理系统可以确定为计算装置110和112各自存储数据实体D3的副本。
在识别出备份装置之后,在动作212中,主装置将用以更新数据实体的指示提供至在动作210中识别出的备份装置。
接着,过程200进入判定块214,其中在该判定块214中,判断在动作210中识别出的备份装置上是否更新了数据实体。该判断可以以任何合适的方式进行。例如,在主装置从动作210中识别出的备份装置各自接收到表示更新了数据实体的相应副本的确认的情况下,可以判断为在这些备份装置上更新了数据实体。作为另一示例,在(例如,由于网络连接或电力问题)仅可访问动作210中识别出的备份装置的子集的实例中,在主装置从可访问的各备份装置接收到表示更新了数据实体的相应副本的确认的情况下,可以判断为在动作210中识别出的备份装置上更新了数据实体。在这种实例下,数据处理系统可以(例如,在主装置上)存储在不可访问的备份装置可进行访问的稍后时间更新这些装置上的数据实体的副本所需的任何信息。
在判定块214中判断为在动作210中识别出的备份装置上更新了数据实体之前,过程200等待,直到该更新完成为止。另一方面,在判定块214中判断为在备份装置上更新了数据实体的副本的情况下,过程200进入动作216,其中在该动作216中,提供数据实体已更新的指示。该指示可以是提供给用户或请求了对数据实体的更新的计算机程序的指示。附加地或可选地,提供该指示可以包括(例如,在日志中)存储表示数据实体已更新的信息。在动作216之后,过程200完成。
应当理解,过程200是例示性的,并且过程200的变形也是可以的。例如,在一些实施例中,可以改变过程200中的一个或多个动作的顺序。作为具体示例,可以按任何合适的顺序进行动作208、210和212。作为另一具体示例,在一些实施例中,仅在判定块214中判断为数据实体的副本已更新之后,才可以更新数据实体的主副本。
如上所述,内存数据处理系统所管理的数据实体的副本可能由于诸如网络中断和/或电力中断等的事件而变得不同步。发明人已开发了基于低带宽清单的重新同步技术,以至少部分基于与数据处理系统所管理的数据实体相关联的版本号来高效地同步这些数据实体。如以下更详细地所述,该技术涉及:维持数据处理系统所管理的数据实体的各副本的版本号,并且使用这些版本号来识别不同步的数据实体并高效地重新同步这些数据实体。
图3A、3B和3C示出根据本文所述的技术的一些实施例的数据处理系统300中的基于清单的重新同步。数据处理系统300包括各自可以是任何合适类型的计算装置的计算装置302、304a、304b和304c。计算装置302是用于一组数据实体的主装置,并且将这些数据实体的主副本存储在其易失性存储器中。将该组中的数据实体的备份副本存储在计算装置304a、304b和304c的易失性存储器中。计算装置302、304a、304b和304c各自将各数据实体的相应本地版本号存储在其易失性存储器中。
如图3A所示,响应于用以进行重新同步的指示,计算装置302进行以下操作:(1)生成清单304,其中清单304包括标识计算装置302是主装置所针对的数据实体及其相应的版本号的信息;以及(2)将所生成的清单提供至用于存储计算装置302是主装置所针对的任何数据实体的备份副本的任何计算装置。在图3A的例示性示例中,计算装置304a、304b和304c各自存储主副本存储在计算装置302上的数据实体的一个或多个备份副本。因此,计算装置302将清单304提供至计算装置304a、304b和304c。
接着,计算装置304a、304b和304c各自可以将清单304中的版本号与这些计算装置各自的易失性存储器内所存储的数据实体的备份副本的本地版本号进行比较。基于这些比较的结果,计算装置304a、304b和304c各自可以识别与数据实体的主副本不同步的数据实体。例如,在如在清单304中指示的数据实体的版本号不同于(例如,高于)用于该特定数据实体的计算装置304a所维持的本地版本号的情况下,计算装置304a可以判断为计算装置304a上所存储的数据实体的备份副本与计算装置302上所存储的该数据实体的主副本不同步。如图3B所示,在识别出不同步的数据实体之后,计算装置304a、304b和304c各自将对这些不同步的数据实体的更新后的副本的相应请求308a、308b和308c发送至计算装置302。响应于这些请求,计算装置302将所请求的数据实体发送至计算装置304a、304b和304c各自。如图3C所示,例如,计算装置302向计算装置304a发送该计算装置304a在请求308a中请求的数据实体310a。同样,计算装置302向计算装置304b发送该计算装置304b在请求308b中请求的数据实体310b,并且向计算装置304c发送该计算装置304c在请求308c中请求的数据实体310c。
如图3A、3B和3C所示,发明人所开发的基于清单的重新同步技术不需要将计算装置302上所存储的所有数据实体的内容都发送至计算装置304a、304b和304c。作为代替,仅发送标识数据实体及其版本的信息。由于标识数据实体的信息可以构成与数据实体本身相比显著更小的数据量(例如,1/10的数据、1/100的数据、1/1000的数据、1/10000的数据、1/1000000的数据等),因此代替数据实体本身而是发送这种标识信息减轻了重新同步施加于数据处理系统的网络的通信负担,这样提高了整体工作效率。此外,仅发送不同步的数据实体进一步减少了通信负荷。
图4A、4B、4C、4D、4E和4F示出根据本文所述的技术的一些实施例的数据处理系统400中的基于清单的重新同步的更详细的例示性示例。如图4A所示,数据处理系统400包括计算装置402、404和406。计算装置402、404和406各自可以是诸如固定装置或便携式装置等的任何合适类型的计算装置。例如,计算装置402、404和406各自可以是服务器。计算装置402、404和406经由在本文中(例如,参考图1A所示的网络114)提供了示例的可以是任何合适类型的网络的网络408通信地连接。
计算装置402包括堆内易失性存储器402a、堆外易失性存储器402b和非易失性存储器402c。计算装置402将数据实体D1~D5的主副本410a存储在堆内易失性存储器402a中,将数据实体D6~D10的备份副本412b存储在堆外易失性存储器402b中,并且将数据实体D11~D15的备份副本414c存储在堆外易失性存储器402b中。计算装置402存储数据实体D1~D5的各个主副本的本地版本号。数据实体D1、D2、D3、D4和D5的版本号分别为10、3、1、1和4。尽管在图4A中没有明确示出,但计算装置402还存储数据实体D6~D15的各个备份副本412b和414c的本地版本号。
计算装置404包括堆内易失性存储器404a、堆外易失性存储器404b和非易失性存储器404c。计算装置404将数据实体D6~D10的主副本412a存储在堆内易失性存储器404a中,将数据实体D1~D5的备份副本410b存储在堆外易失性存储器404b中,并且将数据实体D11~D15的备份副本414b存储在堆外易失性存储器404b中。计算装置404存储数据实体D1~D5的各个备份副本的本地版本号。数据实体D1、D2、D3、D4和D5的备份副本的版本号分别为10、3、1、1和4。尽管在图4A中没有明确示出,但计算装置404还存储数据实体D6~D10的各个主副本412a的本地版本号和数据实体D11~D15的各个备份副本414b的本地版本号。
计算装置406包括堆内易失性存储器406a、堆外易失性存储器406b和非易失性存储器406c。计算装置406将数据实体D11~D15的主副本414a存储在堆内易失性存储器406a中,将数据实体D1~D5的备份副本410c存储在堆外易失性存储器406b中,并且将数据实体D6~D10的备份副本412c存储在堆外易失性存储器406b中。计算装置406存储数据实体D1~D5的各个备份副本的本地版本号。数据实体D1、D2、D3、D4和D5的备份副本的版本号分别为10、3、1、1和4。尽管在图4A中没有明确示出,但计算装置406还存储数据实体D11~D15的各个主副本414a的本地版本号和数据实体D6~D10的各个备份副本412c的本地版本号。
如通过比较图4A所示的数据实体D1~D5的本地版本号可以看出,数据实体D1~D5跨计算装置402、404和406同步。相比之下,图4B示出数据实体D1~D5的各副本不再跨这些计算装置同步的情形。如图4B所示,数据实体D2的主副本420a已更新,并且其版本号420b已从3增加为4。另外,如在条目422a和422b中看出,数据实体D5的主副本已被删除。这些变化(即,数据实体D2的更新和数据实体D5的删除)已传播到计算装置404,其中计算装置404所存储的数据实体D2的备份副本420c的版本号420d(即,4)与数据实体D2的主副本420a的版本号相同。另外,如在条目422c和422d中看出,数据实体D5的备份副本已从计算装置404中删除。然而,对数据实体D2和D5的改变没有传播到计算装置406(例如,因为在更新正在发生时计算装置406可能已不可访问)。如图4B所示,计算装置406存储版本号420f为3(而不是如主副本那样为4)的数据实体D2的备份副本420e。另外,如在条目422e和422f中看出,数据条目D5的备份副本没有从计算装置406中删除。
图4C~4F示出可以如何使用发明人所开发的基于清单的重新同步技术来跨计算装置402、404和406重新同步数据实体D1~D5。首先,如图4C所示,计算装置402将清单440和442分别发送至计算装置404和406。清单440和442各自包括标识计算装置402存储主副本所针对的数据实体及其相应版本号的信息。由于计算装置402不再存储数据实体D5的主副本(因为该主副本已被删除),因此清单440和442不包括标识数据实体D5的任何信息。
接着,计算装置404和406将清单440和442中的版本号分别与这些装置所存储的本地版本号进行比较。如图4D所示,由于数据实体D1~D4的本地版本号与清单440中的相应对应物一致,因此计算装置404判断为这些数据实体的所有副本都与这些数据实体的主副本同步。另一方面,由于数据实体D2的版本号420f(即,3)与清单442中的相应对应物(即,4)不一致,因此计算装置406判断为该数据实体D2的备份副本420e与实体D2的主副本不同步。因此,计算装置406向计算装置402发送请求444以获得数据实体D2的更新版本。
如图4E所示,响应于接收到请求444,计算装置402在消息446中发送数据实体D2的最新版本。反过来,如图4F所示,计算装置406更新数据实体D2的副本,并且存储具有与数据实体D2的主副本420a的版本号420b一致的版本号420h(即,4)的该数据实体的备份副本420g。另外,如从条目422g和422h可以看出,由于清单442不包含与数据实体D5有关的任何信息,因此计算装置406删除数据实体D5的本地副本,从而提供数据实体D5的主副本从计算装置402中删除的指示。
因此,在基于清单的重新同步技术完成时,如图4F所示,数据实体D1~D5的副本再次跨计算装置402、404和406同步。
图5是根据本文所述的技术的一些实施例的、作为用于数据处理系统所管理的一组数据实体的主装置工作的计算装置所进行的用于对该组数据实体进行基于表单的重新同步的例示性过程500的流程图。过程500可以由任何合适的计算装置进行,并且例如,可以由计算装置108针对数据实体D1~D5进行,由计算装置110针对数据实体D6~D10进行,并由计算装置112针对数据实体D11~D15进行。
过程500从动作502开始,其中在该动作502中,进行过程500的主装置接收用以进行重新同步的指示。该指示可以是从任何合适的源接收到的。例如,数据处理系统可以响应于从用户接收到指示要进行重新同步的输入而将该指示提供至主装置。作为另一示例,数据处理系统可以在无需用户输入的情况下自动判断为要进行重新同步。在一些实施例中,这种判断可以由数据处理系统响应于检测到网络中断、电力中断和/或可能导致数据处理系统所管理的数据实体变得不同步的任何其它事件而自动进行。在其它实施例中,数据处理系统可以根据预定调度而不是以事件驱动的方式使该数据处理系统所管理的数据实体重新同步。
响应于接收到用以进行重新同步的指示,在动作504中,执行过程500的主装置生成清单,其中该清单具有标识主装置存储了主副本的数据实体以及主装置所维持的相应版本号的信息。然后,在动作506中,主装置将所生成的清单发送至用于存储主副本存储在主装置上的一个或多个数据实体的备份副本的任何备份装置。
接着,在动作508中,主装置从在动作506中清单提供至的一个或多个备份装置接收对一个或多个数据实体的更新版本的请求。响应于接收到这些请求,在动作510中,主装置将更新的数据实体提供至请求的备份装置,并且过程500完成。
尽管参考数据处理系统的单个计算装置部分说明了过程500,但该过程可以由数据处理系统中的多个装置来进行。例如,在一些实施例中,过程500可以由用作用于数据处理系统所管理的任何数据实体的主装置的多个(例如,所有)计算装置来进行。
图6是根据本文所述的技术的一些实施例的、作为用于一组数据实体的备份装置工作的计算装置所进行的用于对该组数据实体进行基于清单的重新同步的例示性过程600的流程图。过程600可以由任何合适的计算装置来进行,并且例如,可以由计算装置108针对数据实体D6~D11进行,由计算装置110针对数据实体D1~D5和D11~D15进行,并且由计算装置112针对数据实体D1~D10进行。
过程600从动作602开始,其中在该动作602中,执行过程600的备份装置从用于存储一个或多个数据实体的主副本的主装置接收清单。该清单包括标识主副本存储在主装置上的各个数据实体及其相应的版本号的信息。
接着,在动作604中,执行过程600的备份装置识别备份装置上所存储的数据实体,其中这些数据实体与主装置上所存储的相应的主副本不同步。这可以以任何合适的方式(例如,通过将如备份装置所维持的数据实体的本地版本号与主装置所提供的清单中的版本号进行比较)进行。
接着,在动作606中,备份装置从主装置请求动作604中识别出的任何不同步的数据实体。在动作608中,备份装置从主装置接收所请求的数据实体。最后,在动作610中,备份装置可以移除任何“孤立的”数据实体,其中这些数据实体是主副本从主装置中删除并且在动作602中主装置所提供的清单中没有识别出的数据实体。在动作610中移除孤立数据之后,过程600完成。
图7示出可以实现本文所述的技术的合适的计算系统环境700的示例。计算系统环境700仅是合适的计算环境的一个示例,并且不旨在暗示关于本文所述的技术的使用范围或功能的任何限制。该计算环境700也不应被解释为具有与典型操作环境700中所示的组件中的任一组件或组合有关的任何依赖性或需求。
本文所述的技术与许多其它通用或专用的计算系统环境或配置一起操作。可适于与本文所述的技术一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持或膝上型装置、多处理器系统、基于微处理器的系统、机顶盒、可编程消费类电子产品、网络PC、小型计算机、大型计算机、包括上述系统或装置中的任意系统或装置的分布式计算环境等。
计算环境可以执行诸如程序模块等的计算机可执行指令。一般而言,程序模块包括进行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本文所述的技术也可以在分布式计算环境中实践,其中利用经由通信网络而链接的远程处理装置来进行任务。在分布式计算环境中,程序模块可以位于包括存储器存储装置的本地计算机存储介质和远程计算机存储介质这两者中。
参考图7,用于实现本文所述的技术的典型系统包括采用计算机710的形式的通用计算装置。计算机710中的组件可以包括但不限于处理单元720、系统存储器730、以及用于将包括系统存储器的各种系统组件连接至处理单元720的系统总线721。系统总线721可以是多种类型的总线结构中的任一种,其中多种类型的总线结构包括存储器总线或存储器控制器、外围总线以及使用多种总线架构中的任一种的局部总线。通过示例而非限制的方式,这种架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及也被称为夹层总线(Mezzanine bus)的外围组件互连(PCI)总线。
计算机710通常包括多种计算机可读介质。计算机可读介质可以是计算机710可以访问的任何可用介质,并且包括易失性和非易失性介质的可移除和不可移除介质这两者。通过示例而非限制的方式,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等的信息的任何方法或技术实现的易失性和非易失性的可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字通用盘(DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁存储装置、或者可用于存储期望信息并可由计算机710访问的任何其它介质。通信介质通常在诸如载波或其它传输机制等的调制数据信号中包含计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。术语“调制数据信号”是指以将信息编码在信号中这一方式设置或改变其一个或多个特性的信号。通过示例而非限制的方式,通信介质包括诸如有线网络或直接有线连接等的有线介质、以及诸如声学介质、RF介质、红外介质和其它无线介质等的无线介质。以上介质中的任意介质的组合也应包含在计算机可读介质的范围内。
系统存储器730包括采用诸如只读存储器(ROM)731和随机存取存储器(RAM)732等的易失性和/或非易失性存储器的形式的计算机存储介质。包含有助于在计算机710内的元件之间(诸如在启动期间)传送信息的基本例程的基本输入/输出系统733(BIOS)通常存储在ROM 731中。RAM 732通常包含处理单元720可立即访问和/或当前正操作的数据和/或程序模块。通过示例而非限制的方式,图7示出操作系统734、应用程序735、其它程序模块736、以及程序数据737。
计算机710还可以包括其它可移除/不可移除的、易失性/非易失性的计算机存储介质。仅通过示例的方式,图7示出用于相对于不可移除的非易失性磁介质进行读取或写入的硬盘驱动器741、用于相对于诸如闪速存储器等的可移除的非易失性存储器752进行读取或写入的闪存驱动器751、以及用于相对于诸如CD ROM或其它光学介质等的可移除的非易失性光盘756进行读取或写入的光盘驱动器755。典型操作环境中可以使用的其它可移除/不可移除的易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字通用盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器741通常通过诸如接口740等的不可移除存储器接口而连接至系统总线721,并且闪存驱动器751和光盘驱动器755通常通过诸如接口750等的可移除存储器接口而连接至系统总线721。
以上所讨论且在图7示出的驱动器及其关联的计算机存储介质提供对计算机710的计算机可读指令、数据结构、程序模块和其它数据的存储。在图7中,例如,硬盘驱动器741被示出为存储操作系统744、应用程序745、其它程序模块746以及程序数据747。注意,这些组件可以与操作系统734、应用程序735、其它程序模块736以及程序数据737相同或不同。操作系统744、应用程序745、其它程序模块746和程序数据747在这里被赋予不同的数字以说明在最低限度上它们是不同的复制品。用户可以通过诸如键盘762和指示装置761(通常称为鼠标、追踪球或触摸板)等的输入装置将命令和信息输入到计算机710中。其它输入装置(未示出)可以包括麦克风、操纵杆、游戏板、圆盘式卫星天线或扫描仪等。这些和其它输入装置通常通过连接至系统总线的用户输入接口760而连接至处理单元720,但是也可以通过其它接口和总线结构(诸如并行端口、游戏端口或通用串行总线(USB)等)而连接。监视器791或其它类型的显示装置也经由诸如视频接口790等的接口而连接至系统总线721。除了监视器之外,计算机还可以包括诸如扬声器797和打印机796等的其它外围输出装置,其中这些外围输出装置可以通过输出外围接口795而连接。
计算机710可以使用到诸如远程计算机780等的一个或多个远程计算机的逻辑连接,来在网络化环境中操作。远程计算机780可以是个人计算机、服务器、路由器、网络PC、对等装置或其它公共网络节点,并且通常包括以上针对计算机710所述的许多或全部元件,但是在图7中仅示出存储器存储装置781。图7中所描绘的逻辑连接包括局域网(LAN)771和广域网(WAN)773,但是还可以包括其它网络。这种网络化环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
在LAN网络化环境中使用时,计算机710通过网络接口或适配器770而连接至LAN771。在WAN网络化环境中使用时,计算机710通常包括用于通过WAN 773(诸如因特网等)来建立通信的调制解调器772或其它部件。调制解调器772(其可以是内部的或外部的)可以经由用户输入接口760或其它适当的机构而连接至系统总线721。在网络化环境中,与计算机710相关地描绘的程序模块或其部分可以存储在远程存储器存储装置中。通过示例而非限制的方式,图7将远程应用程序785示出为驻留在存储器装置781上。应当理解,所示的网络连接是典型的,并且可以使用用于在计算机之间建立通信链路的其它手段。
在如此描述了本发明的至少一个实施例的多个方面的情况下,应当理解,本领域技术人员将容易想到各种改变、修改和改进。
这样的改变、修改和改进旨在成为本发明的一部分,并且旨在在本发明的精神和范围内。此外,尽管指出了本发明的优点,但应当理解,不是本文所述的技术的每个实施例都将包括每个描述的优点。一些实施例可以不实现在本文中被描述为有利的任何特征,并且在一些情况下,可以实现所描述的特征中的一个或多个特征以获得其它实施例。因此,前面的描述和附图仅通过示例的方式。
本文所述的技术的上述实施例可以以多种方式中的任一种来实现。例如,实施例可以使用硬件、软件或其组合来实现。在以软件实现的情况下,软件代码可以在任何合适的处理器或处理器集合上执行,而无论该软件代码是在单个计算机中提供的、还是分布在多个计算机中。这样的处理器可以被实现为集成电路,并且在集成电路组件中具有一个或多个处理器,其中该集成电路组件包括按名称在本领域已知的商用集成电路组件,诸如CPU芯片、GPU芯片、微处理器、微控制器或协处理器。可选地,处理器可以以定制电路(诸如ASIC、或由配置可编程逻辑装置而产生的半定制电路)实现。作为又一个替代方案,处理器可以是更大的电路或半导体器件的一部分,而无论该电路或半导体器件是商业可用的、是半定制的、还是定制的。作为特定示例,一些商用的微处理器具有多个核,使得这些核中的一个核或子集可以构成处理器。但是,处理器可以使用电路以任何合适形式来实现。
此外,应当理解,计算机可以以诸如机架式计算机、台式计算机、膝上型计算机或平板计算机等的多种形式中的任一种来体现。另外,计算机可以嵌入在一般不被视为计算机、但具有合适处理能力的装置中,其中这样的装置包括个人数字助理(PDA)、智能手机或任何其它合适的便携式电子装置或固定电子装置。
此外,计算机可以具有一个或多个输入和输出装置。这些装置可以用于呈现用户界面等。可用于提供用户界面的输出装置的示例包括用于在视觉上呈现输出的打印机或显示屏、以及扬声器或者用于在听觉上呈现输出的其它声音生成装置。可以用于用户接口的输入装置的示例包括键盘和指示装置(诸如鼠标、触摸板和数字化平板电脑)。作为另一示例,计算机可以通过语音识别或其它可听格式来接收输入信息。
这样的计算机可以通过一个或多个网络以任何合适的形式互连,包括局域网或广域网,诸如企业网络或因特网。这样的网络可以基于任何合适的技术,可以根据任何合适的协议来操作,并且可以包括无线网络、有线网络或光纤网络。
此外,这里概述的各种方法或处理可以被编码为可在采用各种操作系统或平台中的任一种的一个或多个处理器上执行的软件。另外,这样的软件可以使用多种合适的编程语言和/或编程或脚本工具中的任一种来编写,并且还可以被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。
在这方面,本发明可以被体现为利用一个或多个程序进行编码的计算机可读存储介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、致密盘(CD)、光盘、数字视频盘(DVD)、磁带、闪存、现场可编程门阵列或其它半导体器件中的电路配置、或其它有形的计算机存储介质),其中这些程序在一个或多个计算机或其它处理器上执行时进行用于实现以上所讨论的本发明的各个实施例的方法。根据前面的示例,明显地,计算机可读存储介质可以将信息保留足够的时间以便以非暂时性形式提供计算机可执行指令。这样的计算机可读存储介质可以是可传输的,使得存储在该介质上的一个或多个程序可以被加载到一个或多个不同的计算机或其它处理器上以实现如以上所讨论的本发明的各个方面。如这里所使用的,术语“计算机可读存储介质”仅涵盖可被认为是制造品(即,制品)或机器的非暂时性计算机可读介质。可选地或附加地,除计算机可读存储介质以外,本发明还可被体现为诸如传播的信号等的计算机可读介质。
在通用意义上,这里使用的术语“程序”或“软件”是指可被采用以对计算机或其它处理器进行编程、从而实现这里所讨论的本发明的各个方面的任何类型的计算机代码或计算机可执行指令。另外,应当理解,根据本发明的一个方面,在被执行时进行本发明的方法的一个或多个计算机程序不需要驻留在单个计算机或处理器上,并且可以以模块化方式分布在多个不同的计算机或处理器之间,以实现本发明的各个方面。
计算机可执行指令可以采用许多形式,诸如由一个或多个计算机或其它装置执行的程序模块。一般而言,程序模块包括用于执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可以根据需要被组合或分布在各个实施例中。
此外,数据结构可以以任何合适的形式存储在计算机可读介质中。为了简化说明,数据结构可被示出为具有通过数据结构中的位置相关的字段。这样的关系同样可以通过在用于传送字段之间的关系的计算机可读介质中为字段的存储指派位置来实现。然而,可以使用任何合适的机制(包括通过使用指针、标签或用于建立数据元素之间的关系的其它机制)来建立数据结构的字段中的信息之间的关系。
本发明的各个方面可以单独地、组合地、或者以前面描述的实施例中未具体讨论的各种布置使用,因此在应用方面不限于前面的描述中所阐述或者附图中所示的组件的详情和布置。例如,一个实施例中所描述的方面可以以任何方式与其它实施例中所描述的方面相结合。
此外,本发明可以被体现为提供了示例的方法。作为该方法的一部分所进行的动作可以以任何合适的方式定序。因此,可以构造按照与所示不同的顺序进行动作的实施例,其中该顺序可以包括同时进行一些动作,即使这些动作在例示性实施例中被示出为依次的动作。
此外,一些动作被描述为被“用户”所采取。应当理解,“用户”无需是单个个体,并且在一些实施例中,归因于“用户”的动作可以由一组个体以及/或者由个体结合计算机辅助工具或其它机构来进行。
权利要求中的用以修改权利要求要素的诸如“第一”、“第二”和“第三”等的序数词的使用本身不意味着一个权利要求要素相对于另一个权利要求要素的任何优先权、优先序或顺序、或者进行方法的动作的时间顺序,而是仅用作用以将具有特定名称的一个权利要求要素与具有相同名称(但针对序数词的使用)的另一要素区分开以区分这些权利要求要素的标签。
此外,这里使用的措辞和术语是为了描述的目的,而不应被认为是限制性的。本文中“包括”、“包含”或“具有”、“含有”、“涉及”及其变型的使用意在涵盖之后列出的项及其等同项以及附加项。
Claims (32)
1.一种数据处理系统,其被配置为将多个数据实体的第一副本和第二副本存储在数个计算装置的易失性存储器中,所述数据处理系统包括:
第一计算装置,其具有被配置为存储第一数据实体的第一副本的第一易失性存储器,所述第一数据实体的所述第一副本与第一标识符相关联;以及
第二计算装置,其不同于所述第一计算装置并且通信地连接至所述第一计算装置,所述第二计算装置具有被配置为存储所述第一数据实体的与第二标识符相关联的第二副本的第二易失性存储器,
其中,所述第一计算装置被配置为进行以下操作:
接收用以更新所述第一数据实体的指示;
在接收到所述指示之后,
在所述第一易失性存储器中更新所述第一数据实体的所述第一副本,以及
将用以更新所述第一数据实体的所述第二副本的指示提供至所述第二计算装置;以及
在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的所述第二副本的信息之后,提供所述第一数据实体已更新的指示。
2.根据权利要求1所述的数据处理系统,其中,所述第一易失性存储器包括第一堆内存储器和第一堆外存储器,以及所述第一计算装置被配置为将所述第一数据实体的所述第一副本存储在所述第一堆内存储器中。
3.根据权利要求2所述的数据处理系统,其中,所述第二易失性存储器包括第二堆内存储器和第二堆外存储器,以及所述第二计算装置被配置为将所述第一数据实体的所述第二副本存储在所述第二堆外存储器中。
4.根据权利要求3所述的数据处理系统,其中,所述第一计算装置通信地连接至具有第三易失性存储器的第三计算装置,所述第三易失性存储器包括被配置为存储所述第一数据实体的另一第二副本的第三堆外存储器,其中所述第一计算装置还被配置为进行以下操作:
响应于所述接收,将用以更新所述第一数据实体的所述另一第二副本的指示提供至所述第三计算装置;以及
仅在从所述第三计算装置接收到表示在所述第三易失性存储器中更新了所述第一数据实体的所述另一第二副本的信息之后,提供所述第一数据实体已更新的指示。
5.根据权利要求1所述的数据处理系统,其中,所述第一计算装置通信地连接至具有被配置为在内部存储所述第一数据实体的所述第二副本的相应易失性存储器的数个计算装置,所述数个计算装置包括所述第二计算装置,其中所述第一计算装置还被配置为进行以下操作:
响应于所述接收,将用以更新所述第一数据实体的相应第二副本的指示提供至所述数个计算装置;以及
仅在从所述数个计算装置中的各计算装置接收到表示更新了所述第一数据实体的相应第二副本的信息之后,提供所述第一数据实体已更新的指示。
6.根据权利要求5所述的数据处理系统,还包括多个计算装置,所述多个计算装置包括被配置为在内部存储所述第一数据实体的所述第二副本的所述数个计算装置,其中所述第一计算装置还被配置为进行以下操作:
基于所述第一数据实体来从所述多个计算装置中识别所述数个计算装置。
7.根据权利要求1所述的数据处理系统,其中,在将用以更新所述第一数据实体的所述第二副本的指示提供至所述第二计算装置之前,在所述第一易失性存储器中更新所述第一数据实体的所述第一副本。
8.根据权利要求1所述的数据处理系统,其中,所述第一易失性存储器被配置为存储包括所述第一数据实体的多个数据实体的第一副本,所述第二计算装置被配置为存储所述多个数据实体中的数据实体的第二副本,以及所述第一计算装置还被配置为进行以下操作:
接收用以进行重新同步的指示;
响应于接收到所述用以进行重新同步的指示,将包括所述多个数据实体中的各数据实体的第一副本的标识符和版本号的信息提供至所述第二计算装置;
从所述第二计算装置接收标识所述第一易失性存储器中的如下的至少一个数据实体的第一副本的信息,其中所述至少一个数据实体的第一副本与所述第二易失性存储器中的相应的至少一个第二副本不同步;以及
响应于接收到标识所述至少一个数据实体的第一副本的信息,将所述第一易失性存储器中所存储的所述至少一个数据实体的第一副本提供至所述第二计算装置。
9.根据权利要求8所述的数据处理系统,其中,标识所述至少一个数据实体的第一副本的信息包括第一量的信息,以及所述至少一个数据实体包括比所述第一量的信息大至少10000倍的第二量的信息。
10.根据权利要求1所述的数据处理系统,其中,
所述数据处理系统被配置为管理一组至少10000000个数据实体,各数据实体包括至少一千字节的数据,以及
所述多个数据实体包括所述一组至少10000000个数据实体。
11.根据权利要求1所述的数据处理系统,其中,所述第一标识符和所述第二标识符是相同的标识符。
12.一种由第一计算装置进行的方法,所述第一计算装置具有被配置为存储与第一标识符相关联的第一数据实体的第一副本的第一易失性存储器,所述第一计算装置通信地连接至第二计算装置,所述第二计算装置具有被配置为存储所述第一数据实体的与第二标识符相关联的第二副本的第二易失性存储器,所述第二计算装置不同于所述第一计算装置,所述方法包括:
接收用以更新所述第一数据实体的指示;
在接收到所述指示之后,
在所述第一易失性存储器中更新所述第一数据实体的所述第一副本,以及
将用以更新所述第一数据实体的所述第二副本的指示提供至所述第二计算装置;以及
在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的所述第二副本的信息之后,提供所述第一数据实体已更新的指示。
13.根据权利要求12所述的方法,其中,所述第一计算装置通信地连接至具有被配置为在内部存储所述第一数据实体的所述第二副本的相应易失性存储器的数个计算装置,所述数个计算装置包括所述第二计算装置,所述方法还包括:
响应于所述接收,将用以更新所述第一数据实体的相应第二副本的指示提供至所述数个计算装置;以及
仅在从所述数个计算装置中的各计算装置接收到表示更新了所述第一数据实体的相应第二副本的信息之后,提供所述第一数据实体已更新的指示。
14.根据权利要求13所述的方法,还包括:
基于所述第一数据实体来从多个计算装置中识别所述数个计算装置。
15.根据权利要求12所述的方法,其中,在将用以更新所述第一数据实体的所述第二副本的指示提供至所述第二计算装置之前,在所述第一易失性存储器中更新所述第一数据实体的所述第一副本。
16.根据权利要求12所述的方法,其中,所述第一易失性存储器被配置为存储包括所述第一数据实体的多个数据实体的第一副本,所述第二计算装置被配置为存储所述多个数据实体中的数据实体的第二副本,所述方法还包括:
接收用以进行重新同步的指示;
响应于接收到所述用以进行重新同步的指示,将包括所述多个数据实体中的各数据实体的第一副本的标识符和版本号的信息提供至所述第二计算装置;
从所述第二计算装置接收标识所述第一易失性存储器中的如下的至少一个数据实体的第一副本的信息,其中所述至少一个数据实体的第一副本与所述第二易失性存储器中的相应的至少一个第二副本不同步;以及
响应于接收到标识所述至少一个数据实体的第一副本的信息,将所述第一易失性存储器中所存储的所述至少一个数据实体的第一副本提供至所述第二计算装置。
17.一种非暂时性计算机可读存储介质,其存储处理器可执行指令,所述处理器可执行指令在由具有被配置为存储与第一标识符相关联的第一数据实体的第一副本的第一易失性存储器的第一计算装置执行时,使所述第一计算装置进行方法,所述第一计算装置通信地连接至第二计算装置,所述第二计算装置具有被配置为存储所述第一数据实体的与第二标识符相关联的第二副本的第二易失性存储器,所述第一计算装置不同于所述第二计算装置,所述方法包括:
接收用以更新所述第一数据实体的指示;
在接收到所述指示之后,
在所述第一易失性存储器中更新所述第一数据实体的所述第一副本,以及
将用以更新所述第一数据实体的所述第二副本的指示提供至所述第二计算装置;以及
在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的所述第二副本的信息之后,提供所述第一数据实体已更新的指示。
18.一种非暂时性计算机可读存储介质,其存储处理器可执行指令,所述处理器可执行指令由第一计算装置执行,所述第一计算装置具有被配置为存储与第一标识符相关联的第一数据实体的第一副本的第一易失性存储器,所述第一计算装置通信地连接至第二计算装置,所述第二计算装置具有被配置为存储所述第一数据实体的与第二标识符相关联的第二副本的第二易失性存储器,所述处理器可执行指令包括:
用于接收用以更新所述第一数据实体的指示的部件;
用于在接收到所述指示之后、在所述第一易失性存储器中更新所述第一数据实体的所述第一副本并将用以更新所述第一数据实体的所述第二副本的指示提供至所述第二计算装置的部件;以及
用于在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的所述第二副本的信息之后、提供所述第一数据实体已更新的指示的部件。
19.一种数据处理系统,其被配置为将数据实体的第一副本和第二副本存储在数个计算装置的易失性存储器中,所述数据处理系统包括:
第一计算装置,其具有被配置为存储多个数据实体的第一副本的第一易失性存储器,所述多个数据实体的所述第一副本与相应的第一标识符相关联;以及
第二计算装置,其不同于所述第一计算装置并且通信地连接至所述第一计算装置,所述第二计算装置具有被配置为存储所述多个数据实体中的数据实体的第二副本的第二易失性存储器,所述第二副本与相应的第二标识符相关联,
其中,所述第一计算装置被配置为进行以下操作:
接收用以进行重新同步的指示;
将包括所述多个数据实体中的各数据实体的第一副本的标识符和版本号的信息提供至所述第二计算装置;
从所述第二计算装置接收标识所述第一易失性存储器中所存储的如下的至少一个数据实体的第一副本的信息,其中所述至少一个数据实体的第一副本与所述第二易失性存储器中的相应的至少一个第二副本不同步;以及
响应于接收到所述信息,将所述第一易失性存储器中所存储的所述至少一个数据实体的第一副本提供至所述第二计算装置。
20.根据权利要求19所述的数据处理系统,其中,所述第一易失性存储器包括第一堆内存储器和第一堆外存储器,以及所述第一计算装置被配置为将所述多个数据实体的第一副本存储在所述第一堆内存储器中。
21.根据权利要求19所述的数据处理系统,其中,所述第二易失性存储器包括第二堆内存储器和第二堆外存储器,以及所述第二计算装置被配置为将所述多个数据实体中的数据实体的第二副本存储在所述第二堆外存储器中。
22.根据权利要求19所述的数据处理系统,其中,所述第二易失性存储器存储所述多个数据实体中的数据实体的第二副本的本地版本号,以及所述第二计算装置被配置为进行以下操作:
接收包括所述多个数据实体中的各数据实体的第一副本的标识符和版本号的信息;
至少部分基于所接收到的信息中的版本号和所述本地版本号,来识别所述第一易失性存储器中所存储的至少一个数据实体的第一副本,其中所述至少一个数据实体的第一副本与所述第二易失性存储器中的相应的至少一个第二副本不同步;以及
将标识所述至少一个数据实体的第一副本的信息提供至所述第一计算装置。
23.根据权利要求19所述的数据处理系统,其中,所述第一易失性存储器被配置为存储多个数据实体中的各数据实体的第一副本的版本号,所述版本号包括所述多个数据实体中的第一数据实体的第一副本的第一版本号,以及所述第一计算装置被配置为:
响应于更新所述第一数据实体,使所述第一版本号递增。
24.根据权利要求19所述的数据处理系统,其中,所述第二易失性存储器被配置为存储所述多个数据实体中的第一数据实体的一个第二副本,以及所述第一计算装置被配置为进行以下操作:
接收用以更新所述第一数据实体的指示;
响应于接收到所述指示,
在所述第一易失性存储器中更新所述第一数据实体的所述第一副本,以及
将用以更新所述第一数据实体的存储在所述第二易失性存储器中的所述一个第二副本的指示提供至所述第二计算装置;以及
在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的所述一个第二副本的信息之后,提供所述第一数据实体已更新的指示。
25.根据权利要求19所述的数据处理系统,其中,相应的所述第一标识符和相应的所述第二标识符是相同的。
26.一种由第一计算装置进行的方法,所述第一计算装置具有被配置为存储与相应的第一标识符相关联的多个数据实体的第一副本的第一易失性存储器,所述第一计算装置不同于第二计算装置并且通信地连接至所述第二计算装置,所述第二计算装置具有被配置为存储所述多个数据实体中的数据实体的第二副本的第二易失性存储器,所述第二副本与相应的第二标识符相关联,所述方法包括:
接收用以进行重新同步的指示;
将包括所述多个数据实体中的各数据实体的第一副本的标识符和版本号的信息提供至所述第二计算装置;
从所述第二计算装置接收标识所述第一易失性存储器中所存储的如下的至少一个数据实体的第一副本的信息,其中所述至少一个数据实体的第一副本与所述第二易失性存储器中的相应的至少一个第二副本不同步;以及
响应于接收到所述信息,将所述第一易失性存储器中所存储的所述至少一个数据实体的第一副本提供至所述第二计算装置。
27.根据权利要求26所述的方法,其中,所述第一易失性存储器被配置为存储多个数据实体中的各数据实体的第一副本的版本号,所述版本号包括所述多个数据实体中的第一数据实体的第一副本的第一版本号,以及所述第一计算装置被配置为:
响应于更新所述第一数据实体,使所述第一版本号递增。
28.根据权利要求26所述的方法,其中,所述第二易失性存储器被配置为存储所述多个数据实体中的第一数据实体的一个第二副本,以及所述第一计算装置被配置为进行以下操作:
接收用以更新所述第一数据实体的指示;
响应于接收到所述指示,
在所述第一易失性存储器中更新所述第一数据实体的第一副本,以及
将用以更新所述第一数据实体的存储在所述第二易失性存储器中的所述一个第二副本的指示提供至所述第二计算装置;以及
在从所述第二计算装置接收到表示在所述第二易失性存储器中更新了所述第一数据实体的所述一个第二副本的信息之后,提供所述第一数据实体已更新的指示。
29.根据权利要求26所述的方法,其中,相应的所述第一标识符和相应的所述第二标识符是相同的。
30.一种非暂时性计算机可读存储介质,其存储处理器可执行指令,所述处理器可执行指令在由具有被配置为存储与相应的第一标识符相关联的多个数据实体的第一副本的第一易失性存储器的第一计算装置执行时,使所述第一计算装置进行方法,所述第一计算装置不同于第二计算装置并且通信地连接至所述第二计算装置,所述第二计算装置具有被配置为存储所述多个数据实体中的数据实体的第二副本的第二易失性存储器,所述第二副本与相应的第二标识符相关联,所述方法包括:
接收用以进行重新同步的指示;
将包括所述多个数据实体中的各数据实体的第一副本的标识符和版本号的信息提供至所述第二计算装置;
从所述第二计算装置接收标识所述第一易失性存储器中所存储的如下的至少一个数据实体的第一副本的信息,其中所述至少一个数据实体的第一副本与所述第二易失性存储器中的相应的至少一个第二副本不同步;以及
响应于接收到所述信息,将所述第一易失性存储器中所存储的所述至少一个数据实体的所述第一副本提供至所述第二计算装置。
31.一种计算装置,其被配置成用作权利要求1至11中任一项中的第一计算装置。
32.一种计算装置,其被配置成用作权利要求19至25中任一项中的第一计算装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562268090P | 2015-12-16 | 2015-12-16 | |
US62/268,090 | 2015-12-16 | ||
PCT/US2016/017108 WO2017105529A1 (en) | 2015-12-16 | 2016-02-09 | High throughput, high reliability data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108701071A CN108701071A (zh) | 2018-10-23 |
CN108701071B true CN108701071B (zh) | 2021-11-16 |
Family
ID=63556031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680081932.0A Active CN108701071B (zh) | 2015-12-16 | 2016-02-09 | 高吞吐量、高可靠性的数据处理系统 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP3391223B1 (zh) |
CN (1) | CN108701071B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012162175A1 (en) * | 2011-05-20 | 2012-11-29 | Howard University | Emetine derivatives, prodrugs containing same, and methods of treating conditions using same |
CN104615511A (zh) * | 2015-02-05 | 2015-05-13 | 中国工商银行股份有限公司 | 一种基于双中心的主机批量恢复处理方法及装置 |
CN105122241A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6917951B2 (en) * | 2001-07-26 | 2005-07-12 | Microsoft Corporation | System and method for replicating data in resource sets |
US8423737B2 (en) * | 2009-12-17 | 2013-04-16 | International Business Machines Corporation | Systems and methods for virtualizing storage systems and managing data independently |
US9286162B2 (en) * | 2012-02-02 | 2016-03-15 | Netapp, Inc. | System and method for guaranteeing consistent data synchronization from a volatile data source |
US9135164B2 (en) * | 2013-03-15 | 2015-09-15 | Virident Systems Inc. | Synchronous mirroring in non-volatile memory systems |
-
2016
- 2016-02-09 CN CN201680081932.0A patent/CN108701071B/zh active Active
- 2016-02-09 EP EP16708254.4A patent/EP3391223B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012162175A1 (en) * | 2011-05-20 | 2012-11-29 | Howard University | Emetine derivatives, prodrugs containing same, and methods of treating conditions using same |
CN105122241A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库系统 |
CN104615511A (zh) * | 2015-02-05 | 2015-05-13 | 中国工商银行股份有限公司 | 一种基于双中心的主机批量恢复处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3391223A1 (en) | 2018-10-24 |
EP3391223B1 (en) | 2020-01-29 |
CN108701071A (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW409215B (en) | Parallel file system and method for multiple node file access | |
US20220239602A1 (en) | Scalable leadership election in a multi-processing computing environment | |
US11487787B2 (en) | System and method for near-synchronous replication for object store | |
US10599533B2 (en) | Cloud storage using merkle trees | |
CN106663047B (zh) | 用于优化的签名比较和数据复制的系统和方法 | |
WO2019154394A1 (zh) | 分布式数据库集群系统、数据同步方法及存储介质 | |
US10185632B2 (en) | Data synchronization with minimal table lock duration in asynchronous table replication | |
TWI291111B (en) | Method, system, and computer readable medium with related instructions recorded there on for data synchronization | |
US7293145B1 (en) | System and method for data transfer using a recoverable data pipe | |
US8078582B2 (en) | Data change ordering in multi-log based replication | |
Fritchie | Chain replication in theory and in practice | |
US20150213100A1 (en) | Data synchronization method and system | |
US20100023564A1 (en) | Synchronous replication for fault tolerance | |
JP2005242403A (ja) | 計算機システム | |
JP5686034B2 (ja) | クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム | |
US11748215B2 (en) | Log management method, server, and database system | |
WO2022048358A1 (zh) | 数据处理方法、装置及存储介质 | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
US7117329B2 (en) | Method of managing generation of backup data and storage control device used therefor | |
AU2016373662B2 (en) | High throughput, high reliability data processing system | |
CN108701071B (zh) | 高吞吐量、高可靠性的数据处理系统 | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN113505134B (zh) | 多线程数据处理方法、多线程底库数据入库方法及装置 | |
WO2024022329A1 (zh) | 一种基于键值存储系统的数据管理方法及其相关设备 | |
US20240004575A1 (en) | Storage system and data management method of storage system |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1262032 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |