CN105554044A - 在本地对象存储节点中同步对象的方法及装置 - Google Patents
在本地对象存储节点中同步对象的方法及装置 Download PDFInfo
- Publication number
- CN105554044A CN105554044A CN201410589869.4A CN201410589869A CN105554044A CN 105554044 A CN105554044 A CN 105554044A CN 201410589869 A CN201410589869 A CN 201410589869A CN 105554044 A CN105554044 A CN 105554044A
- Authority
- CN
- China
- Prior art keywords
- memory node
- state recording
- remote
- object memory
- synchronous
- 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.)
- Granted
Links
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种在本地对象存储节点中同步对象的方法和装置,其中本地对象存储节点和远程对象存储节点存储了相同的对象。该方法包括:获取本地对象存储节点中对象的最新的状态记录,作为对象的本地状态记录,其中,所述状态记录包括改变对象的操作的名称、改变对象的操作的时间戳、第一状态标志和第二状态标志,所述第一状态标志指示是否执行了对象从当前对象存储节点到另一个对象存储节点的同步,第二状态标志指示是否执行了对象从另一个对象存储节点到当前对象存储节点的同步;获取远程对象存储节点中对象的最新的状态记录,作为对象的远程状态记录;以及基于本地状态记录和远程状态记录,执行对象的同步。
Description
技术领域
本发明涉及对象存储技术,更具体地,涉及一种在本地对象存储节点中同步对象的方法及装置。
背景技术
当前,对象存储系统越来越普遍。对象存储系统以对象为存储的基本单元,而每个对象是数据和数据属性集的综合。通常,对象被存储在对象存储设备中,而对象存储设备负责管理本地的对象。
在分布式对象存储系统中,多个对象存储设备可同步地存储同一个对象,这样,在多个对象存储设备中有该对象的多个复本。
然而,如果这些对象存储设备中的任何对象存储设备发生故障或者网络发生故障,则可能出现对象的复本只存在于部分对象存储设备而非全部对象存储设备的情形。因此,需要对这种只存在部分复本的不一致进行修复。
在现有技术中提供了一种后台复制方案以发现和修复这种只存在部分复本的不一致。例如,OpenStackSwift对象存储系统使用复制器以执行该服务。在每个复制周期,复制器从存储了特定对象的多个复本的多个对象存储设备中的每一个中检索所有对象的名称和时间戳,通过比较所获取的数据来查找各个对象存储设备中是否存在对象的复本的存在差异,并进而修复所查找到的存在差异。然而,该方案会导致高的输入/输出(I/O)开销,因为它需要扫描(读取)文件系统以获取每个对象的名称和时间戳。此外,如果对象存储设备中对象的数量非常大,则完成所有对象的全部比较将花费大量的时间,从而造成复制器的性能变得难以容忍。
发明内容
本发明的实施例提供了一种在本地对象存储节点中同步对象的方法及装置。
根据本发明的一个方面,提供了一种在本地对象存储节点中同步对象的方法,其中所述本地对象存储节点和远程对象存储节点存储了相同的对象,所述方法包括:获取所述本地对象存储节点中所述对象的最新的状态记录,作为所述对象的本地状态记录,所述状态记录包括改变对象的操作的名称、改变对象的操作的时间戳、第一状态标志和第二状态标志,所述第一状态标志指示是否执行了对象从当前对象存储节点到另一个对象存储节点的同步,所述第二状态标志指示是否执行了该对象从所述另一个对象存储节点到所述当前对象存储节点的同步;从所述远程对象存储节点获取所述对象的最新的状态记录,作为所述对象的远程状态记录;以及基于所述本地状态记录和所述远程状态记录,执行所述对象的同步。
根据本发明的另一个方面,提供了一种在本地对象存储节点中同步对象的装置,其中所述本地对象存储节点和远程对象存储节点存储了相同的对象,所述装置包括:本地状态记录获取模块,其被配置为获取所述本地对象存储节点中所述对象的最新的状态记录,作为所述对象的本地状态记录,所述状态记录包括改变对象的操作的名称、改变对象的操作的时间戳、第一状态标志和第二状态标志,所述第一状态标志指示是否执行了对象从当前对象存储节点到另一个对象存储节点的同步,所述第二状态标志指示是否执行了该对象从所述另一个对象存储节点到所述当前对象存储节点的同步;远程状态记录获取模块,其被配置为从所述远程对象存储节点获取所述对象的最新的状态记录,作为所述对象的远程状态记录;以及同步模块,其被配置为基于所述本地状态记录和所述远程状态记录,执行所述对象的同步。
根据本发明的实施例的方法和装置能够快速地检测在分布式对象存储系统中多个对象存储节点中存储的相同对象的复本之间的不一致,并修复所检测到的不一致,而不产生高的磁盘I/O开销。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
图2是根据本发明的实施例的在本地对象存储节点中同步对象的方法的流程图;
图3是图2所示的实施例中执行对象的同步的过程的示意性流程图;
图4是说明在获取到对象远程状态记录时执行对象的同步的过程的示意性流程图;
图5是说明在未获取到对象的远程状态记录时执行对象的同步的过程的示意性流程图;
图6是根据本发明的实施例的在本地对象存储节点中同步对象的装置的示意性方框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参看附图,对本发明的实施例进行详细说明。
图2示出了根据本发明的实施例的在本地对象存储节点中同步对象的方法的流程图。下面结合附图,对本实施例进行详细描述。
本实施例的基本思想是利用在分布式对象存储系统中的各个对象存储节点的内存中存储的相同对象的状态记录,检查该对象的多个复本之间的差异,并进而修复差异。
在本实施例中,本地对象存储节点可以是分布式对象存储系统中的多个对象存储节点之一,相应地,多个对象存储节点中除了本地对象存储节点以外的其它对象存储节点可被称为远程对象存储节点。此外,本地对象存储节点和至少一个远程对象存储节点可存储有相同的对象。
对象的状态记录是用于记录与改变对象的操作有关的信息的条目,其在每次发生了改变对象的操作时生成,并可存储在存储了该对象的对象存储节点的内存中。改变对象的操作可例如包括创建对象、删除对象等影响对象存储节点的磁盘的操作。对象的状态记录可包括对象的名称、操作的名称、操作的时间戳和对象的同步状态。应当注意,在本实施例中,每一个时间戳仅对应于针对一个对象的一个操作,也就是说,对于同一个对象,在一个时间戳只有一个操作。
对象的同步状态可用于指示是否执行了对象从当前对象存储节点到其它对象存储节点的同步以及对象从其它对象存储节点到当前对象存储节点的同步。在本实施例中,可使用状态标志来表示同步状态。具体地,同步状态可包括第一状态标志和第二状态标志,其中,第一状态标志指示是否执行了对象从当前对象存储节点到其它对象存储节点的同步,第二状态标志指示是否执行了对象从其它对象存储节点到当前对象存储节点的同步。第一状态标志和第二状态标志可使用二值表示,例如“0”(表示未执行同步)和“1”(表示已执行同步)、“真”(表示已执行同步)和“假”(表示未执行同步)等。
在每个对象存储节点中可存储至少一个对象。对于每个对象,都可产生至少一个状态记录。因此,在每个对象存储节点中,可存储至少一个对象的至少一个状态记录。
在当前对象存储节点具有一个对象的情况下,可存在对应的一个或多个其它对象存储节点。在一个其它对象存储节点的情况下,当前对象存储节点的状态记录中的同步状态将包括一个第一状态标志以指示是否执行了对象从当前对象存储节点到该一个其它对象存储节点的同步和一个第二状态标志以指示是否执行了对象从该一个其它对象存储节点到当前对象存储节点的同步。在多个其它对象存储节点的情况下,当前对象存储节点的状态记录中的同步状态将包括多个第一状态标志以分别指示是否执行了对象从当前对象存储节点到多个其它对象存储节点的每一个的同步,并包括多个第二状态标志以分别指示是否执行了对象从多个其它对象存储节点的每一个到当前对象存储节点的同步。
在当前对象存储节点具有多个对象的情况下,针对每一个对象,可存在对应的一个或多个其它对象存储节点。因此,在针对某个对象而存在一个其它对象存储节点的情况下,当前对象存储节点的关于该对象的状态记录中的同步状态将包括一个第一状态标志以指示是否执行了该对象从当前对象存储节点到该一个其它对象存储节点的同步和一个第二状态标志以指示是否执行了该对象从该一个其它对象存储节点到当前对象存储节点的同步。在多个其它对象存储节点的情况下,当前对象存储节点的关于该对象的状态记录中的同步状态将包括多个第一状态标志以分别指示是否执行了该对象从当前对象存储节点到多个其它对象存储节点的每一个的同步,并包括多个第二状态标志以分别指示是否执行了该对象从多个其它对象存储节点的每一个到当前对象存储节点的同步。
在以下的实施例中,为了便于说明,将在本地对象存储节点和一个远程对象存储节点存储了一个相同的对象的情形下对本实施例的方法进行描述。
如图2所示,在步骤S210,获取本地对象存储节点中对象的最新的状态记录,作为该对象的本地状态记录。如前所述,对象的状态记录存储了与改变对象的操作有关的信息。对于本地对象存储节点来说,当前对象存储节点是本地对象存储节点,其它对象存储节点是远程对象存储节点。因此,对象的状态记录中同步状态的第一状态标志指示是否执行了对象从本地对象存储节点到远程对象存储节点的同步(以下简称为“本地到远程同步”),第二状态标志指示是否执行了对象从远程对象存储节点到本地对象存储节点的同步(以下简称为“远程到本地同步”)。当发生了改变该对象的操作时,例如创建对象、删除对象等,将生成与该操作相应的状态记录。在所生成的状态记录中,记录了对象的名称、操作的名称、操作的时间戳,并且同步状态的第一状态标志和第二状态标志都被设置为指示未执行同步。假定第一状态标志被表示为L→R,第二状态标志被表示为R→L,其中,L代表本地对象存储节点,R代表远程对象存储节点,则在本地对象存储节点中,对象的状态记录中的同步状态可被表示为L(L→R,R→L)=(0,0)。
由于对改变对象的每一个操作都生成了状态记录,因此,对象的当前状态可由最新的状态记录反映。这样,为了检查对象的多个复本(在本实施例中是两个)之间是否存在不一致,可以仅考虑对象在本地对象存储节点中的最新的状态记录和在远程对象存储节点中的最新的状态记录。
在该步骤中,可以根据状态记录中的时间戳,确定最新的状态记录。在一个实施例中,响应于启动对象的同步,选择对象的时间戳先于启动时间的至少一个状态记录。对象的同步可以周期性地执行或者由特定的操作触发。因此,启动时间可以容易地确定。然后,在所选择的至少一个状态记录中确定时间戳最大的状态记录,作为最新的状态记录。进一步地,可以将至少一个状态记录中剩余的状态记录从内存中删除。这样,该最新的状态记录成为对象的本地状态记录。
在另一个实施例中,可以响应于启动对象的同步,选择对象的时间戳先于启动时间减去预定时间后的时间的至少一个状态记录。这样,可以避免处理正在被操作的对象。预定时间例如是60秒。然后,确定时间戳最大的状态记录,作为最新的状态记录。然后,可将至少一个状态记录中剩余的状态记录从内存中删除。
通过步骤S210获得的对象的本地状态记录可以反映直到启动对象的同步为止的对象的最新状态。
接着,在步骤S220,获取远程对象存储节点中对象的最新的状态记录,作为对象的远程状态记录。如前所述,在每个存储了相同对象的对象存储节点中都存储了该对象的状态记录。因此,存储了与本地对象存储节点相同的对象的远程对象存储节点也在每次发生与对象有关的操作时,生成该对象的状态记录。在远程对象存储节点中,对象的状态记录中的同步状态可被表示为R(R→L,L→R)。
在该步骤S220中,首先向远程对象存储节点发送请求,该请求包括对象的名称和启动时间。响应于所接收的请求,远程对象存储节点可使用与步骤S210中的获取最新的状态记录类似的方法获取远程对象存储节点中对象的最新的状态记录。具体地,远程对象存储节点可根据对象的名称和启动时间,从所存储的该对象的状态记录中获取时间戳先于启动时间或者启动时间减去预定时间后的时间的至少一个状态记录。然后远程对象存储节点确定其中时间戳最大的状态记录,作为远程对象存储节点中该对象的最新的状态记录,并删除至少一个状态记录中剩余的状态记录。然后,远程对象存储节点将所确定的最新的状态记录作为对象的远程状态记录发送到本地对象存储节点。相应地,本地对象存储节点接收到来自远程对象存储节点的对象的远程状态记录。
虽然以上按照步骤S210、S220的顺序描述了获取对象的本地状态记录和远程状态记录,但本领域技术人员能够知道,步骤S210和步骤S220并没有明显的先后顺序,也可以按照与上述的顺序相反的顺序执行或者同时执行。
然后,在步骤S230,基于在步骤S210中获取的对象的本地状态记录和在步骤S220中获取的对象的远程状态记录,在本地对象存储节点中执行对象的同步。在本实施例中,在本地对象存储节点中只能执行对象的本地到远程同步,而不能执行对象的远程到本地同步。对象的远程到本地同步在远程对象存储节点中执行。在本地对象存储节点中,可以将本地状态记录中针对对象的操作复制到不具有远程状态记录或者远程状态记录比本地状态记录旧的远程对象存储节点。
图3示出了根据实施例的执行对象的同步的过程(步骤S230)的示意性流程图。如图3所示,在步骤S310,检查本地状态记录中的第一状态标志L(L→R)。如果检查为本地状态记录中的第一状态标志指示未执行本地到远程同步,例如,第一状态标志为“0”或“假”,则在步骤S320,执行对象的本地到远程同步。如果检查为本地状态记录中的第一状态标志指示已执行本地到远程同步,例如,第一状态标志为“1”或“真”,则在步骤S330,将本地状态记录中的第二状态标志设置为与远程状态记录中的第一状态标志相同。此时,本地状态记录中的同步状态可被表示为L(L→R,R→L)=(1,R(R→L))。或者,如果通过步骤S220未获取到对象的远程状态记录,则可以在步骤S330,将本地状态记录中的第二状态标志设置为已执行远程到本地同步。在这种情况下,本地状态记录中的同步状态被表示为L(L→R,R→L)=(1,1)。
在本实施例中,对象的本地到远程同步的过程可根据是否获取到对象的远程状态记录而被划分为两个子过程,分别如图4和图5所示。
图4示出了说明在通过步骤S220获取到对象的远程状态记录时执行对象的本地到远程同步的过程(第一子过程)的示意性流程图。如图4所示,在步骤S401,响应于获取到远程状态记录(即,远程对象存储节点生成并存储了对象的状态记录),比较本地状态记录中的时间戳与远程状态记录中的时间戳。如前所述,时间戳表明改变对象的操作的发生时间,因此,通过比较时间戳,可以确定直到启动时间为止在本地对象存储节点和远程对象存储节点中的对象的操作是否一致。接着,响应于比较的结果,执行相应的对象同步过程。
如果比较的结果为本地状态记录中的时间戳晚于远程状态记录中的时间戳,表明本地状态记录比远程状态记录新,则在步骤S405,将本地状态记录中所记录的操作复制到远程对象存储节点,以使得能够在远程对象存储节点中执行该操作。然后,在步骤S410,将本地状态记录中的第一状态标志设置为指示已执行本地到远程同步。第一状态标志可以被表示为L→R=1。在这种情况下,本地状态记录中的第二状态标志可维持不变。
此外,在将操作复制到远程对象存储节点之后,除了设置本地状态记录中的第一状态标志以外,还可以将本地状态记录中的第二状态标志设置为指示已执行远程到本地同步,并向远程对象存储节点通知对象是复制的。此时,本地状态记录中的同步状态可被表示为L(L→R,R→L)=(1,1)。这样,远程对象存储节点能够根据该通知而直接将远程状态记录中的第一状态标志和第二状态标志分别设置为指示已执行远程到本地同步和指示已执行本地到远程同步。
如果比较的结果为本地状态记录中的时间戳与远程状态记录中的时间戳相同,即,本地状态记录与远程状态记录相同,则在步骤S415,将本地状态记录中的第一状态标志设置为指示已执行本地到远程同步,并在步骤S420,将本地状态记录中的第二状态标志设置为与远程状态记录中的第一状态标志相同。此时,本地状态记录中的同步状态可被表示为L(L→R,R→L)=(1,R(R→L))。
如果比较的结果为本地状态记录的时间戳先于远程状态记录中的时间戳,表明本地状态记录比远程状态记录旧,则在步骤S425,删除本地状态记录。
通过上述的同步过程可以看出,本地对象存储节点只能设置或修改自己的本地状态记录的同步状态,而不能设置或修改远程对象存储节点中的状态记录的同步状态。
图5示出了说明在通过步骤S220未获取到对象的远程状态记录时执行对象的同步的过程(第二子过程)的示意性流程图。
如图5所示,在步骤S501,响应于未获取到对象的远程状态记录(即,远程对象存储节点没有生成/存储对象的状态记录),将本地状态记录中所记录的对象的操作从本地对象存储节点复制到远程对象存储节点,以使得能够在远程对象存储节点中执行该操作。然后,在步骤S505,将本地状态记录中的第一状态标志设置为指示已执行本地到远程同步,并在步骤S510,将本地状态记录中的第二状态标志设置为指示已执行远程到本地同步。此时,本地状态记录的同步状态可被表示为L(L→R,R→L)=(1,1)。然后,在步骤S515,向远程对象存储节点通知对象是复制的。远程对象存储节点根据该通知,可直接将远程状态记录中的第一状态标志和第二状态标志分别设置为指示已执行远程到本地同步和指示已执行本地到远程同步。
进一步地,在执行对象的同步的期间,如果本地状态记录中的第一状态标志被设置为指示已执行本地到远程同步且第二状态标志被设置为指示已执行远程到本地同步,即L(L→R,R→L)=(1,1),表明对象的同步已完成,则删除本地状态记录。
此外,在执行对象的同步的期间,还可以检查本地状态记录中的第二状态标志。如果第二状态标志指示已执行远程到本地同步,则表明同步已经完成,不需要进行任何同步操作。相应地,该本地状态记录被删除。
因此,可以看出,已执行了本地到远程同步和远程到本地同步的对象的本地状态记录都将从内存中删除,而在内存中仅仅保留未进行同步处理的对象的状态记录。
以上虽然在本地对象存储节点和一个远程对象存储节点存储了一个相同的对象的情形下对本实施例的方法进行了详细描述,但本实施例的方法也可适用于本地对象存储节点和多个远程对象存储节点存储了一个相同的对象的情形、本地对象存储节点和一个远程对象存储节点存储了多个相同的对象的情形、以及本地对象存储节点和多个远程对象存储节点存储了多个相同的对象的情形。
在本地对象存储节点和多个远程对象存储节点存储了一个相同的对象的情形下,本地状态记录中的同步状态可被表示为L(L→R1,R1→L,L→R2,R2→L,…,L→Rn,Rn→L),每个远程对象存储节点Ri的远程状态记录中的同步状态被表示为Ri(Ri→L,L→Ri,...,Ri→Rm,Rm→Ri,…)。对于每一个远程对象存储节点,在本地对象存储节点中执行本实施例的方法。
在本地对象存储节点和一个远程对象存储节点存储了多个相同的对象的情形下,对于每一个相同的对象,都存在本地状态记录和远程状态记录。每个对象的本地状态记录和远程状态记录中的同步状态可使用与本地对象存储节点和一个远程对象存储节点存储了一个相同的对象的情形相同的表示。对于每一个相同的对象,在本地对象存储节点中执行本实施例的方法。
在本地对象存储节点和多个远程对象存储节点存储了多个相同的对象的情形下,对于每一个相同的对象,本地状态记录中的同步状态被表示为L(L→R1,R1→L,L→R2,R2→L,…,L→Rn,Rn→L),每个远程对象存储节点Ri的远程状态记录中的同步状态被表示为Ri(Ri→L,L→Ri,...,Ri→Rm,Rm→Ri,…)。对于每一个相同的对象,对于每一个远程对象存储节点,在本地对象存储节点中执行本实施例的方法。
在包括多个对象存储节点的分布式对象存储系统中,在进行对象的同步时,需要在每个对象存储节点中使用本实施例的方法。在这种情况下,每个对象存储节点都被看作本地对象存储节点。
通过以上描述可以看出,本实施例的在本地对象存储节点中同步对象的方法利用来自本地对象存储节点的对象的本地状态记录和来自远程对象存储节点的对象的远程状态记录,能够快速地检测对象在不同对象存储节点上的一致性,并且由于无需从对象存储节点的磁盘上读取对象,因此不产生高的磁盘I/O开销。
以下通过一个具体的例子再次说明上述实施例的在本地对象存储节点中同步对象的方法。
假定分布式对象存储系统包括三个对象存储节点A、B、C,这三个对象存储节点都存储有对象名称为Name0的相同对象。为了实现对象存储节点A、B、C中对象Name0的同步,对象存储节点A、B、C分别作为本地对象存储节点,各自执行上述实施例的在本地对象存储节点中同步对象的方法。
在对象存储节点A中,首先获取对象存储节点A中对象Name0的最新的状态记录,作为本地状态记录。在本例中,本地状态记录被表示为(Name0,“创建”,TS0,(A→B,B→A,A→C,C→A)),此时,A→B=0,B→A=0,A→C=0,C→A=0。
接着,获取对象存储节点B中的对象Name0的最新的状态记录,作为远程状态记录。在本例中,来自对象存储节点B的远程状态记录被表示为(Name0,“创建”,TS0,(B→A,A→B,B→C,C→B)),此时,B→A=0,A→B=0,B→C=0,C→B=0。
由于本地状态记录中的第一状态标志A→B=0,因此,将执行对象Name0从对象存储节点A到对象存储节点B的同步。比较本地状态记录中的时间戳和远程状态记录中的时间戳。在本例中,本地状态记录和远程状态记录的时间戳相同,因此,将本地状态记录中的A→B设置为1,并将B→A设置为与远程状态记录中的B→A相同,即等于0。
在对象存储节点A中,还获取对象存储节点C中的对象Name0的最新的状态记录。然而,对象存储节点C没有对象Name0的状态记录,因此,对象存储节点A不能获取到来自对象存储节点C的远程状态记录。在这种情况下,将本地状态记录中所记录的操作“创建”复制到对象存储节点C,并将本地状态记录中的A→C设置为1,将C→A也设置为1。此外,还将向对象存储节点C通知对象Name0是从对象存储节点A复制的。在对象存储节点C中,产生对象Name0的状态记录,其可被表示为(Name0,“创建”,TS0,(C→A,A→C,C→B,B→C)),此时,C→A=1,A→C=1,C→B=0,B→C=0。
通过以上操作,在对象存储节点A中执行了对象Name0从对象存储节点A分别到对象存储节点B和C的同步。此时,在对象存储节点A的本地状态记录中,A→B=1,B→A=0,A→C=1,C→A=1。
在对象存储节点B中,首先获取对象存储节点B中对象Name0的最新的状态记录,作为本地状态记录。此时,在对象存储节点B中的本地状态记录中,B→A=0,A→B=0,B→C=0,C→B=0。
接着,获取对象存储节点A中的对象Name0的最新的状态记录,作为远程状态记录。此时,在来自对象存储节点A的远程状态记录中,A→B=1,B→A=0,A→C=1,C→A=1。
由于本地状态记录中的B→A=0,因此,将执行对象Name0从对象存储节点B到对象存储节点A的同步。比较本地状态记录中的时间戳和远程状态记录中的时间戳。在本例中,本地状态记录和远程状态记录的时间戳相同,因此,将对象存储节点B的本地状态记录中的B→A设置为1,并将A→B设置为与远程状态记录中的A→B相同,即等于1。
在对象存储节点B中,还获取对象存储节点C中的对象Name0的最新的状态记录。此时,在来自对象存储节点C的远程状态记录中,C→A=1,A→C=1,C→B=0,B→C=0。
由于本地状态记录中的B→C=0,因此,将执行对象Name0从对象存储节点B到对象存储节点C的同步。比较本地状态记录中的时间戳和远程状态记录中的时间戳。在本例中,本地状态记录和远程状态记录的时间戳相同,因此,将对象存储节点B的本地状态记录中的B→C设置为1,并将C→B设置为与远程状态记录中的C→B相同,即等于0。
通过以上操作,在对象存储节点B中执行了对象Name0从对象存储节点B分别到对象存储节点A和C的同步。此时,在对象存储节点B的本地状态记录中,B→A=1,A→B=1,B→C=1,C→B=0。
在对象存储节点C中,首先获取对象存储节点C中对象Name0的最新的状态记录,作为本地状态记录。此时,在对象存储节点C中的本地状态记录中,C→A=1,A→C=1,C→B=0,B→C=0。由于C→A=1且A→C=1,即表明已执行对象Name0从对象存储节点C到对象存储节点A的同步和从对象存储节点A到对象存储节点C的同步,因此,可忽略对象存储节点A。
然后,获取对象存储节点B中的对象Name0的最新的状态记录。此时,在来自对象存储节点B的远程状态记录中,B→A=1,A→B=1,B→C=1,C→B=0。
由于本地状态记录中的C→B=0,因此,将执行对象Name0从对象存储节点C到对象存储节点B的同步。比较本地状态记录中的时间戳和远程状态记录中的时间戳。在本例中,本地状态记录和远程状态记录的时间戳相同,因此,将对象存储节点C的本地状态记录中的C→B设置为1,并将B→C设置为与远程状态记录中的B→C相同,即等于1。
通过以上操作,在对象存储节点C中执行了对象Name0从对象存储节点C到对象存储节点B的同步。此时,在对象存储节点C的本地状态记录中,C→A=1,A→C=1,C→B=1,B→C=1。由于对象存储节点C的本地状态记录中同步状态已都被设置为1,因此,删除该状态记录。
当对象存储节点A再次启动对象Name0的同步时,再次获取对象Name0的本地状态记录。此时,在本地状态记录中,A→B=1,B→A=0,A→C=1,C→A=1。由于A→C=1且C→A=1,即已执行对象Name0从对象存储节点A到对象存储节点C的同步和从对象存储节点C到对象存储节点A的同步,因此,无需获取来自对象存储节点C的远程状态记录,不进行任何操作。获取来自对象存储节点B的远程状态记录。在该远程状态记录中,B→A=1,A→B=1,B→C=1,C→B=0。由于本地状态记录中的A→B=1,因此,将其中的B→A设置为与远程状态记录中的B→A相同,即等于1。此时,由于对象存储节点A的本地状态记录中同步状态已都被设置为1,因此,删除该状态记录。
当对象存储节点B再次启动对象Name0的同步时,再次获取对象Name0的本地状态记录。此时,在本地状态记录中,B→A=1,A→B=1,B→C=1,C→B=0。由于B→A=1且A→B=1,即已执行对象Name0从对象存储节点B到对象存储节点A的同步和从对象存储节点A到对象存储节点B的同步,因此,无需获取来自对象存储节点A的远程状态记录,不进行任何操作。获取来自对象存储节点C的远程状态记录。此时,在对象存储节点C中,对象Name0的状态记录已删除。由于B→C=1,即已执行对象Name0从对象存储节点B到对象存储节点C的同步,因此,将本地状态记录中的C→B设置为1。此时,由于对象存储节点B的本地状态记录中同步状态已都被设置为1,因此,删除该状态记录。
这样,通过以上的过程,可以完成对象Name0在对象存储节点A、B、C之间的同步。
在相同的发明构思下,图6是根据本发明的实施例的在本地对象存储节点中同步对象的装置600示意性方框图。下面结合附图,对本实施例进行详细描述,其中对于与前面实施例相同的部分,适当省略其说明。
如图6所示,本实施例的在本地对象存储节点中同步对象的装置600包括:本地状态记录获取模块601,其被配置为获取本地对象存储节点中对象的最新的状态记录,作为对象的本地状态记录;远程状态记录获取模块602,其被配置为获取远程对象存储节点中对象的最新的状态记录,作为对象的远程状态记录;以及同步模块603,其被配置为基于所获取的本地状态记录和远程状态记录,执行对象的同步。
有关对象的状态记录的描述已在前面的实施例中进行了详细描述,此处不再赘述。
进一步地,本实施例的装置600还可包括:状态记录生成模块,其被配置为每当发生改变对象的操作时,生成对象的状态记录;以及状态设置模块,其被配置为将所生成的状态记录中的第一状态标志设置为指示未执行本地到远程同步,以及将所生成的状态记录中的第二状态标志设置为指示未执行远程到本地同步。
根据一个实施例,在本地状态记录获取模块601中,选择单元响应于启动对象的同步,选择对象的时间戳先于启动时间的至少一个状态记录。接着,确定单元在所选择的至少一个状态记录中确定时间戳最大的状态记录,作为最新的状态记录。然后,删除单元删除所选择的至少一个状态记录中剩余的其它状态记录。
进一步地,选择单元可被配置为选择对象的时间戳先于启动时间减去预定时间后的时间的至少一个状态记录。
根据一个实施例,在远程状态记录获取模块602中,请求单元向远程对象存储节点发送包括对象的名称和启动时间的请求,并由接收单元从远程对象存储节点接收对象的最新的状态记录,作为远程状态记录。
根据一个实施例,在同步模块603中,检查子模块检查本地状态记录中的第一状态标志。然后,如果检查子模块检查为本地状态记录中的第一状态标志指示未执行对象的本地到远程同步,则同步子模块执行对象的本地到远程同步。如果检查子模块检查为本地状态记录中的第一状态标志指示已执行对象的本地到远程同步,则状态设置子模块将本地状态记录中的第二状态标志设置为与远程状态记录中的第一状态标志相同,或者在未获取到远程状态记录的情况下设置为指示已执行对象的远程到本地同步。
在同步子模块中,比较单元比较本地状态记录中的时间戳与远程状态记录中的时间戳。如果比较的结果为本地状态记录中的时间戳晚于远程状态记录中的时间戳,则复制单元将本地状态记录所记录的操作复制到远程对象存储节点,并由状态设置子模块在复制单元将操作复制到远程对象存储节点后,将本地状态记录中的第一状态标志设置为指示已执行本地到远程同步。如果比较的结果为本地状态记录中的时间戳与远程状态记录中的时间戳相同,则状态设置子模块将本地状态记录中的第一状态标志设置为指示已执行本地到远程同步,并将本地状态记录中的第二状态标志设置为与远程状态记录中的第一状态标志相同。如果比较的结果为本地状态记录的时间戳先于远程状态记录中的时间戳,则删除单元删除本地状态记录。
进一步地,状态设置子模块还可在复制单元将操作复制到远程对象存储节点之后,将本地状态记录中同步状态的第二状态标志设置为指示已执行远程到本地同步。然后,由同步子模块中的通知单元向远程对象存储节点通知对象是复制的。
如果未获取到远程状态记录,则在同步子模块中,复制单元将本地状态记录所记录的操作从本地对象存储节点复制到远程对象存储节点。然后,状态设置子模块将本地状态记录中的第一状态标志设置为指示已执行本地到远程同步,并将本地状态记录中的第二状态标志设置为指示已执行远程到本地同步。通知单元可向远程对象存储节点通知对象是复制的。
在同步模块603中,如果本地状态记录中同步状态的第一状态标志被设置为指示已执行本地到远程同步且第二状态标志被设置为指示已执行远程到本地同步,则删除子模块可删除该本地状态记录。
本领域技术人员可以知道,同步子模块中的删除单元和同步模块603中的删除子模块也可以被实现为一个部件。
应当注意,本实施例的装置600能够在操作上实现图2至图5所示的实施例的在本地对象存储节点中同步对象的方法。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (22)
1.一种在本地对象存储节点中同步对象的方法,其中所述本地对象存储节点和远程对象存储节点存储了相同的对象,所述方法包括:
获取所述本地对象存储节点中所述对象的最新的状态记录,作为所述对象的本地状态记录,其中,所述状态记录包括改变对象的操作的名称、改变对象的操作的时间戳、第一状态标志和第二状态标志,所述第一状态标志指示是否执行了对象从当前对象存储节点到另一个对象存储节点的同步,所述第二状态标志指示是否执行了该对象从所述另一个对象存储节点到所述当前对象存储节点的同步;
获取所述远程对象存储节点中所述对象的最新的状态记录,作为所述对象的远程状态记录;以及
基于所述本地状态记录和所述远程状态记录,执行所述对象的同步。
2.根据权利要求1所述的方法,还包括:
响应于发生改变所述对象的操作,生成所述对象的状态记录;
将所生成的状态记录中的所述第一状态标志设置为指示未执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步;以及
将所生成的状态记录中的所述第二状态标志设置为指示未执行所述对象从所述远程对象存储节点到所述本地对象存储节点的同步。
3.根据权利要求1或2所述的方法,其中,获取所述本地对象存储节点中所述对象的最新的状态记录包括:
响应于启动所述对象的同步,选择所述对象的时间戳先于启动时间的至少一个状态记录;以及
在所述至少一个状态记录中确定所述时间戳最大的状态记录,作为所述最新的状态记录。
4.根据权利要求3所述的方法,其中,选择所述对象的时间戳先于启动时间的至少一个状态记录包括:
选择所述对象的时间戳先于所述启动时间减去预定时间后的时间的至少一个状态记录。
5.根据权利要求3或4所述的方法,其中,获取所述本地对象存储节点中所述对象的最新的状态记录还包括:
删除所述至少一个状态记录中除了所述最新的状态记录之外的其它状态记录
6.根据权利要求3所述的方法,其中,获取所述远程对象存储节点中所述对象的最新的状态记录,作为所述对象的远程状态记录包括:
向所述远程对象存储节点发送请求,所述请求包括所述对象的名称和所述启动时间;以及
从所述远程对象存储节点接收所述对象的最新的状态记录。
7.根据权利要求1所述的方法,其中,基于所述本地状态记录和所述远程状态记录,执行所述对象的同步包括:
检查所述本地状态记录中的所述第一状态标志;
如果检查为所述本地状态记录中的所述第一状态标志指示未执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步,则执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步;以及
如果检查为所述本地状态记录中的所述第一状态标志指示已执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步,则将所述本地状态记录中的所述第二状态标志设置为与所述远程状态记录中的所述第一状态标志相同或者在未获取到所述远程状态记录的情况下设置为指示已执行所述对象从所述远程对象存储节点到所述本地对象存储节点的同步。
8.根据权利要求7所述的方法,其中,执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步包括:
比较所述本地状态记录中的时间戳与所述远程状态记录中的时间戳;
响应于所述比较的结果为所述本地状态记录中的时间戳晚于所述远程状态记录中的时间戳,将所述操作复制到所述远程对象存储节点,并将所述本地状态记录中的所述第一状态标志设置为指示已执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步;
响应于所述比较的结果为所述本地状态记录中的时间戳与所述远程状态记录中的时间戳相同,将所述本地状态记录中的所述第一状态标志设置为指示已执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步,并将所述本地状态记录中的所述第二状态标志设置为与所述远程状态记录中的所述第一状态标志相同;以及
响应于所述比较的结果为所述本地状态记录的时间戳先于所述远程状态记录中的时间戳,删除所述本地状态记录。
9.根据权利要求8所述的方法,其中,在将所述操作复制到所述远程对象存储节点之后,还将所述本地状态记录中的所述第二状态标志设置为指示已执行所述对象从所述远程对象存储节点到所述本地对象存储节点的同步,并向所述远程对象存储节点通知所述对象是复制的。
10.根据权利要求8所述的方法,其中,执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步还包括:
如果未获取到所述远程状态记录,则将所述操作从所述本地对象存储节点复制到所述远程对象存储节点;
将所述本地状态记录中的所述第一状态标志设置为指示已执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步;
将所述本地状态记录中的所述第二状态标志设置为指示已执行所述对象从所述远程对象存储节点到所述本地对象存储节点的同步;以及
向所述远程对象存储节点通知所述对象是复制的。
11.根据权利要求7至10任意一项所述的方法,其中,基于所述本地状态记录和所述远程状态记录,执行所述对象的同步还包括:
如果所述本地状态记录中的所述第一状态标志被设置为指示已执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步且所述第二状态标志被设置为指示已执行所述对象从所述远程对象存储节点到所述本地对象存储节点的同步,则删除所述本地状态记录。
12.一种在本地对象存储节点中同步对象的装置,其中所述本地对象存储节点和远程对象存储节点存储了相同的对象,所述装置包括:
本地状态记录获取模块,其被配置为获取所述本地对象存储节点中所述对象的最新的状态记录,作为所述对象的本地状态记录,所述状态记录包括改变对象的操作的名称、改变对象的操作的时间戳、第一状态标志和第二状态标志,所述第一状态标志指示是否执行了对象从当前对象存储节点到另一个对象存储节点的同步,所述第二状态标志指示是否执行了对象从所述另一个对象存储节点到所述当前对象存储节点的同步;
远程状态记录获取模块,其被配置为获取所述远程对象存储节点中所述对象的最新的状态记录,作为所述对象的远程状态记录;以及
同步模块,其被配置为基于所述本地状态记录和所述远程状态记录,执行所述对象的同步。
13.根据权利要求12所述的装置,还包括:
状态记录生成模块,其被配置为响应于发生改变所述对象的操作,生成所述对象的状态记录;以及
状态设置模块,其被配置为将所生成的状态记录中的所述第一状态标志设置为指示未执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步,以及将所生成的状态记录中的所述第二状态标志设置为指示未执行所述对象从所述远程对象存储节点到所述本地对象存储节点的同步。
14.根据权利要求12或13所述的装置,其中,所述本地状态记录获取模块包括:
选择单元,其被配置为响应于启动所述对象的同步,选择所述对象的时间戳先于启动时间的至少一个状态记录;以及
确定单元,其被配置为在所述至少一个状态记录中确定所述时间戳最大的状态记录,作为所述最新的状态记录。
15.根据权利要求14所述的装置,其中,所述选择单元进一步被配置为选择所述对象的时间戳先于所述启动时间减去预定时间后的时间的至少一个状态记录。
16.根据权利要求14或15所述的装置,其中,所述本地状态记录获取模块还包括:
删除单元,其被配置为删除所述至少一个状态记录中除了所述最新的状态记录之外的其它状态记录。
17.根据权利要求14所述的装置,其中,所述远程状态记录获取模块包括:
请求单元,其被配置为向所述远程对象存储节点发送请求,所述请求包括所述对象的名称和所述启动时间;以及
接收单元,其被配置为从所述远程对象存储节点接收所述对象的最新的状态记录。
18.根据权利要求12所述的装置,其中,所述同步模块包括:
检查子模块,其被配置为检查所述本地状态记录中的所述第一状态标志;
同步子模块,其被配置为如果检查为所述本地状态记录中的所述第一状态标志指示未执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步,则执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步;以及
状态设置子模块,其被配置为如果检查为所述本地状态记录中的所述第一状态标志指示已执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步,则将所述本地状态记录中的所述第二状态标志设置为与所述远程状态记录中的所述第一状态标志相同或者在未获取到所述远程状态记录的情况下设置为指示已执行所述对象从所述远程对象存储节点到所述本地对象存储节点的同步。
19.根据权利要求18所述的装置,其中,所述同步子模块包括:
比较单元,其被配置为比较所述本地状态记录中的时间戳与所述远程状态记录中的时间戳;
复制单元,其被配置为响应于所述比较的结果为所述本地状态记录中的时间戳晚于所述远程状态记录中的时间戳,将所述操作复制到所述远程对象存储节点;以及
删除单元,其被配置为响应于所述比较的结果为所述本地状态记录的时间戳先于所述远程状态记录中的时间戳,删除所述本地状态记录;
其中,状态设置子模块还被配置为在所述复制单元将所述操作复制到所述远程对象存储节点后,将所述本地状态记录中的所述第一状态标志设置为指示已执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步,并被配置为响应于所述比较的结果为所述本地状态记录中的时间戳与所述远程状态记录中的时间戳相同,将所述本地状态记录中的所述第一状态标志设置为指示已执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步,并将所述本地状态记录中的所述第二状态标志设置为与所述远程状态记录的所述同步状态的所述第一状态标志相同。
20.根据权利要求19所述的装置,其中,所述状态设置子模块还被配置为在所述复制单元将所述操作复制到所述远程对象存储节点之后,将所述本地状态记录中的所述第二状态标志设置为指示已执行所述对象从所述远程对象存储节点到所述本地对象存储节点的同步;
所述同步子模块还包括:通知单元,其被配置为向所述远程对象存储节点通知所述对象是复制的。
21.根据权利要求19所述的装置,其中,在未获取到所述对象的所述远程状态记录的情况下,所述复制单元还被配置为将所述操作从所述本地对象存储节点复制到所述远程对象存储节点,所述状态设置子模块还被配置为将所述本地状态记录中的所述第一状态标志设置为指示已执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步,以及将所述本地状态记录中的所述第二状态标志设置为指示已执行所述对象从所述远程对象存储节点到所述本地对象存储节点的同步;
所述同步子模块还包括:通知单元,其被配置为向所述远程对象存储节点通知所述对象是复制的。
22.根据权利要求18至21任意一项所述的装置,其中,所述同步模块还包括:
删除子模块,其被配置为如果所述本地状态记录中的所述第一状态标志被设置为指示已执行所述对象从所述本地对象存储节点到所述远程对象存储节点的同步且所述第二状态标志被设置为指示已执行所述对象从所述远程对象存储节点到所述本地对象存储节点的同步,则删除所述本地状态记录。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410589869.4A CN105554044B (zh) | 2014-10-28 | 2014-10-28 | 在本地对象存储节点中同步对象的方法及装置 |
US14/869,579 US10437851B2 (en) | 2014-10-28 | 2015-09-29 | Synchronizing object in local object storage node |
US16/579,064 US11188560B2 (en) | 2014-10-28 | 2019-09-23 | Synchronizing object in local object storage node |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410589869.4A CN105554044B (zh) | 2014-10-28 | 2014-10-28 | 在本地对象存储节点中同步对象的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105554044A true CN105554044A (zh) | 2016-05-04 |
CN105554044B CN105554044B (zh) | 2019-01-15 |
Family
ID=55792164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410589869.4A Active CN105554044B (zh) | 2014-10-28 | 2014-10-28 | 在本地对象存储节点中同步对象的方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10437851B2 (zh) |
CN (1) | CN105554044B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111868704A (zh) * | 2018-03-14 | 2020-10-30 | Netapp股份有限公司 | 用于加速存储介质访问的方法及其设备 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105554044B (zh) * | 2014-10-28 | 2019-01-15 | 国际商业机器公司 | 在本地对象存储节点中同步对象的方法及装置 |
US9910697B2 (en) * | 2015-10-13 | 2018-03-06 | Palantir Technologies Inc. | Fault-tolerant and highly-available configuration of distributed services |
US10791109B2 (en) * | 2016-02-10 | 2020-09-29 | Red Hat, Inc. | Certificate based expiration of file system objects |
US20170351447A1 (en) * | 2016-06-03 | 2017-12-07 | Scale Computing, Inc. | Data protection implementation for block storage devices |
CN108694189B (zh) * | 2017-04-07 | 2022-01-21 | 微软技术许可有限责任公司 | 共同所有权的数据库系统的管理 |
CN110287060B (zh) * | 2019-06-06 | 2021-06-22 | 郑州阿帕斯科技有限公司 | 一种数据的处理方法、装置 |
CN116701410B (zh) * | 2023-08-07 | 2023-11-14 | 北京大学 | 数联网数据语用内存状态数据的存储方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1917522A (zh) * | 2005-08-17 | 2007-02-21 | 国际商业机器公司 | 处理对象的方法和系统 |
CN1917449A (zh) * | 2005-08-17 | 2007-02-21 | 国际商业机器公司 | 处理对象的方法和系统 |
WO2010025554A1 (en) * | 2008-09-05 | 2010-03-11 | Alocet Incorporated | A method and system of synchronizing accounting objects between a client and server |
US20120036277A1 (en) * | 2009-03-16 | 2012-02-09 | Nederlandse Organisatie Voor Toegepast-Natuurwetenschappelijk Onderzoek Tno | Modified Stream Synchronization |
US20120239617A1 (en) * | 2011-03-17 | 2012-09-20 | Remote Media LLC | System and method for media file synchronization |
CN103530362A (zh) * | 2013-10-12 | 2014-01-22 | 清华大学 | 一种用于多副本分布式系统的计算机数据读写方法 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699388A (en) * | 1995-06-21 | 1997-12-16 | Motorola, Inc. | System and method for fully distributed synchronization of a radio communication network |
US6192365B1 (en) * | 1995-07-20 | 2001-02-20 | Novell, Inc. | Transaction log management in a disconnectable computer and network |
US6412017B1 (en) | 1996-07-01 | 2002-06-25 | Microsoft Corporation | Urgent replication facility |
US6006274A (en) * | 1997-01-30 | 1999-12-21 | 3Com Corporation | Method and apparatus using a pass through personal computer connected to both a local communication link and a computer network for indentifying and synchronizing a preferred computer with a portable computer |
US6539381B1 (en) * | 1999-04-21 | 2003-03-25 | Novell, Inc. | System and method for synchronizing database information |
US6393434B1 (en) * | 1999-09-14 | 2002-05-21 | International Business Machines Corporation | Method and system for synchronizing data using fine-grained synchronization plans |
US7054887B2 (en) | 2001-01-30 | 2006-05-30 | Ibm Corporation | Method and system for object replication in a content management system |
US6820098B1 (en) | 2002-03-15 | 2004-11-16 | Hewlett-Packard Development Company, L.P. | System and method for efficient and trackable asynchronous file replication |
US20030212681A1 (en) * | 2002-05-08 | 2003-11-13 | Adc Dsl Systems, Inc. | Database access blocking during synchronization |
US7299285B2 (en) * | 2002-05-15 | 2007-11-20 | Adc Dsl Systems, Inc. | Resource sharing with database synchronization |
US8909712B2 (en) * | 2003-11-25 | 2014-12-09 | Sap Ag | System and method for a generic mobile synchronization framework |
US7809898B1 (en) | 2004-05-18 | 2010-10-05 | Symantec Operating Corporation | Detecting and repairing inconsistencies in storage mirrors |
US7363327B2 (en) | 2004-05-28 | 2008-04-22 | International Business Machines Corporation | Change log handler for synchronizing data sources |
US7778984B2 (en) | 2004-11-19 | 2010-08-17 | Microsoft Corporation | System and method for a distributed object store |
US7664788B2 (en) * | 2005-01-10 | 2010-02-16 | Microsoft Corporation | Method and system for synchronizing cached files |
US7778972B1 (en) | 2005-12-29 | 2010-08-17 | Amazon Technologies, Inc. | Dynamic object replication within a distributed storage system |
US8625572B2 (en) * | 2008-12-19 | 2014-01-07 | Nokia Corporation | Synchronization indication in networks |
US9244933B2 (en) * | 2011-04-29 | 2016-01-26 | International Business Machines Corporation | Disk image introspection for storage systems |
US8918362B2 (en) | 2011-05-23 | 2014-12-23 | Microsoft Corporation | Replication processes in a distributed storage environment |
US9122647B2 (en) | 2012-10-16 | 2015-09-01 | Dell Products, L.P. | System and method to backup objects on an object storage platform |
US9495079B2 (en) * | 2013-01-10 | 2016-11-15 | Salesforce.Com, Inc. | Persistent feeder component for displaying feed items received from information feeds of online social networks |
US9607090B2 (en) * | 2013-01-21 | 2017-03-28 | Salesforce.Com, Inc. | Computer implemented methods and apparatus for recommending events |
US9244993B1 (en) * | 2013-06-19 | 2016-01-26 | Amazon Technologies, Inc. | Management of application state data |
WO2015145536A1 (ja) * | 2014-03-24 | 2015-10-01 | 株式会社日立製作所 | データベース管理システム及びデータベース間の同期制御方法 |
CN105554044B (zh) | 2014-10-28 | 2019-01-15 | 国际商业机器公司 | 在本地对象存储节点中同步对象的方法及装置 |
US10452491B2 (en) * | 2016-04-14 | 2019-10-22 | Sap Se | Scalable log partitioning system |
-
2014
- 2014-10-28 CN CN201410589869.4A patent/CN105554044B/zh active Active
-
2015
- 2015-09-29 US US14/869,579 patent/US10437851B2/en not_active Expired - Fee Related
-
2019
- 2019-09-23 US US16/579,064 patent/US11188560B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1917522A (zh) * | 2005-08-17 | 2007-02-21 | 国际商业机器公司 | 处理对象的方法和系统 |
CN1917449A (zh) * | 2005-08-17 | 2007-02-21 | 国际商业机器公司 | 处理对象的方法和系统 |
WO2010025554A1 (en) * | 2008-09-05 | 2010-03-11 | Alocet Incorporated | A method and system of synchronizing accounting objects between a client and server |
US20120036277A1 (en) * | 2009-03-16 | 2012-02-09 | Nederlandse Organisatie Voor Toegepast-Natuurwetenschappelijk Onderzoek Tno | Modified Stream Synchronization |
US20120239617A1 (en) * | 2011-03-17 | 2012-09-20 | Remote Media LLC | System and method for media file synchronization |
CN103530362A (zh) * | 2013-10-12 | 2014-01-22 | 清华大学 | 一种用于多副本分布式系统的计算机数据读写方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111868704A (zh) * | 2018-03-14 | 2020-10-30 | Netapp股份有限公司 | 用于加速存储介质访问的方法及其设备 |
CN111868704B (zh) * | 2018-03-14 | 2022-03-22 | Netapp股份有限公司 | 用于加速存储介质访问的方法及其设备 |
Also Published As
Publication number | Publication date |
---|---|
US10437851B2 (en) | 2019-10-08 |
US20200019559A1 (en) | 2020-01-16 |
US11188560B2 (en) | 2021-11-30 |
CN105554044B (zh) | 2019-01-15 |
US20160117376A1 (en) | 2016-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105554044A (zh) | 在本地对象存储节点中同步对象的方法及装置 | |
CN103268201B (zh) | 一种数据存储方法、存储装置及读取方法 | |
CN112711526B (zh) | Ui测试方法、装置、设备及存储介质 | |
CN107622008B (zh) | 一种应用页面的遍历方法和装置 | |
CN1664810A (zh) | 辅助表格填充 | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
JP2007264768A (ja) | システム開発支援プログラム、システム開発支援装置およびシステム開発支援方法 | |
CN105740303A (zh) | 改进的对象存储的方法及装置 | |
CN109710298A (zh) | 接口管理方法、接口管理装置、接口管理设备及存储介质 | |
CN104079623B (zh) | 多级云存储同步控制方法及系统 | |
CN106605217A (zh) | 使用跨越故障转移集群中的数据存储库的同步复制的应用透明持续可用性 | |
US7386579B2 (en) | System, method, and computer program product for storing test results in a database | |
WO2015087509A1 (ja) | 状態保存復元装置、状態保存復元方法、および、記憶媒体 | |
CN105630688A (zh) | 聚集文件的存储方法和系统以及聚集文件压缩方法和系统 | |
CN105630625A (zh) | 检测数据副本之间的一致性的方法和装置 | |
EP3822763A1 (en) | Data reading method, device, system, and distributed system | |
CN114564854B (zh) | 支持fmea双向关系树的数据节点的操作方法及设备 | |
CN107229650B (zh) | 测试方法及装置 | |
CN111339100B (zh) | 数据核对方法及装置 | |
CN111428453B (zh) | 批注同步过程中的处理方法、装置以及系统 | |
CN113132790B (zh) | 一种视频转储方法及装置 | |
CN105893241A (zh) | 测试数据的更新方法和装置 | |
CN111858158A (zh) | 数据处理方法、装置及电子设备 | |
CN109697167B (zh) | 测试变量的管理方法、系统、电子设备和存储介质 | |
CN105095015B (zh) | 一种磁盘快照的建立方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |