CN114764425A - 对象更新方法和装置、存储介质和电子设备 - Google Patents
对象更新方法和装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN114764425A CN114764425A CN202110045726.7A CN202110045726A CN114764425A CN 114764425 A CN114764425 A CN 114764425A CN 202110045726 A CN202110045726 A CN 202110045726A CN 114764425 A CN114764425 A CN 114764425A
- Authority
- CN
- China
- Prior art keywords
- data
- erasure code
- target
- erasure
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
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
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种对象更新方法和装置、存储介质和电子设备,其中,该方法包括:获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了第一服务器以外的至少一个服务器上存储有所述待更新数据的镜像副本;对所述待更新数据进行纠删编码,得到与所述第一目标对象对应的多个第一纠删码数据;将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第一纠删码数据与所述多个第一纠删码副本一一对应。通过本申请,解决了相关技术中采用覆盖写的纠删码存储方式存在的数据块和/或校验块所在的服务器掉电易造成数据丢失的问题。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种对象更新方法和装置、存储介质和电子设备。
背景技术
EC(Erasure Coding,纠删)码是一种冗余方式,有别于传统的多副本冗余,它把数据切成多个数据块(数据条带),对K个数据块(K为切成的数据块的数量)生成M个校验块,使得系统最多容忍M个数据块或校验块丢失。相比多副本冗余,纠删码在K+M编码下成本更低,例如,常见的6+3编码可以在1.5副本下容忍3个数据块或校验块丢失。
纠删码存储中可以实现“更新对象”。相比于“创建对象”,“更新对象”对可靠性和可用性有更高的要求。因为创建对象只需要把成功的对象ID返回,不管经过多少次重试,只要返回成功的对象ID即可,而更新对象是有状态的,并且在系统断电重启、或者硬件损坏的情况下,对对象执行覆盖操作(即,使用新版本内容覆盖旧版本内容)可能出现旧版本内容和新版本内容交织的情况,导致既无法读取旧版本也无法读到新版本。
相关技术中支持覆盖写的系统如果采用覆盖写的纠删码存储方式,如果在覆盖写的过程中发生掉电,只能丢弃掉电的服务器上的数据(掉电的服务器上保存的可能是脏数据)。如果超过一定数量(例如,M个)的数据块和/或校验块所在的服务器同时发生掉电,则会造成数据丢失。
因此,相关技术中采用覆盖写的纠删码存储方式,存在数据块和/或校验块所在的服务器掉电易造成数据丢失的问题。
发明内容
本申请提供了一种对象更新方法和装置、存储介质和电子设备,以至少解决相关技术中采用覆盖写的纠删码存储方式存在的数据块和/或校验块所在的服务器掉电易造成数据丢失的问题。
根据本申请实施例的一个方面,提供了一种对象更新方法,包括:获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了所述第一服务器以外的至少一个服务器上存储有所述待更新数据的镜像副本;对所述待更新数据进行纠删编码,得到与所述第一目标对象对应的多个第一纠删码数据;将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第一纠删码数据与所述多个第一纠删码副本一一对应。
可选地,所述获取第一服务器上存储的第一目标对象的待更新数据包括:在所述第一目标对象包含多个数据对象的情况下,从目标存储块中获取所述多个数据对象的所述待更新数据,其中,所述目标存储块为所述多个数据对象所聚合为的数据块。
可选地,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:在所述多个第一纠删码数据均同步成功的情况下,将所述第一目标对象的目标对象标识记录为目标同步点,其中,所述目标同步点用于指示当前同步已成功的对象标识为所述目标对象标识;按照所述目标同步点删除所述第一服务器上的所述待更新数据和/或位于所述待更新数据之前的对象数据。
可选地,在所述将所述第一目标对象的目标对象标识记录为目标同步点之后,所述方法还包括:向所述至少一个服务器发送携带有所述目标同步点的通知消息,其中,所述通知消息用于通知所述至少一个服务器按照所述目标同步点删除所述待更新数据的镜像副本和/或位于所述待更新数据的镜像副本之前的镜像副本。
可选地,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:在所述多个第一纠删码数据中的目标纠删码数据同步失败的情况下,按照所述第一服务器中记录的当前同步点,重新对所述待更新数据进行纠删编码,得到所述目标纠删码数据,其中,所述当前同步点用于指示当前已同步成功的对象标识;将所述目标纠删码数据同步到所述多个第一纠删码副本中与所述目标纠删码数据对应的目标纠删码副本中,以更新所述目标纠删码副本中存储的纠删码数据。
可选地,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:在由于所述第一服务器发生异常导致所述多个第一纠删码数据同步失败的情况下,从所述至少一个服务器选取出第二服务器,其中,所述第二服务器上存储有所述待更新数据的目标镜像副本;通过所述第二服务器对所述目标镜像副本进行纠删编码,得到与所述第一目标对象对应的多个第二纠删码数据;将所述多个第二纠删码数据同步到所述多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第二纠删码数据与所述多个第一纠删码副本一一对应。
可选地,所述方法还包括:接收目标客户端发送的对象读取请求,其中,所述对象读取请求用于请求读取第二目标对象的对象数据;在所述第一服务器上存储有所述第二目标对象最新版本的对象数据的情况下,将所述第一服务器上存储的、所述第二目标对象最新版本的对象数据发送给所述目标客户端。
可选地,在所述接收目标客户端发送的对象读取请求之后,所述方法还包括:在所述第一服务器上未存储有所述第二目标对象的最新版本的对象数据的情况下,从多个第二纠删码副本中获取多个第二纠删码数据,其中,所述多个第二纠删码数据为与所述第二目标对象最新版本的对象数据所对应的纠删码数据,所述多个第二纠删码副本与所述多个第二纠删码数据一一对应;对所述多个第二纠删码数据进行解码,得到所述第二目标对象最新版本的对象数据;将解码得到的、所述第二目标对象最新版本的对象数据发送给所述目标客户端。
根据本申请实施例的另一个方面,提供了一种对象更新装置,包括:第一获取单元,用于获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了所述第一服务器以外的至少一个服务器上存储有所述待更新数据的镜像副本;第一编码单元,用于对所述待更新数据进行纠删编码,得到与所述第一目标对象对应的多个第一纠删码数据;第一同步单元,用于将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第一纠删码数据与所述多个第一纠删码副本一一对应。
可选地,所述第一获取单元包括:第一获取模块,用于在所述第一目标对象包含多个数据对象的情况下,从目标存储块中获取所述多个数据对象的所述待更新数据,其中,所述目标存储块为所述多个数据对象所聚合为的数据块。
可选地,所述装置还包括:记录单元,用于在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,在所述多个第一纠删码数据均同步成功的情况下,将所述第一目标对象的目标对象标识记录为目标同步点,其中,所述目标同步点用于指示当前同步已成功的对象标识为所述目标对象标识;第一删除单元,用于按照所述目标同步点删除所述第一服务器上的所述待更新数据和/或位于所述待更新数据之前的对象数据。
可选地,所述装置还包括:第一发送单元,用于在所述将所述第一目标对象的目标对象标识记录为目标同步点之后,向所述至少一个服务器发送携带有所述目标同步点的通知消息,其中,所述通知消息用于通知所述至少一个服务器按照所述目标同步点删除所述待更新数据的镜像副本和/或位于所述待更新数据的镜像副本之前的镜像副本。
可选地,所述装置还包括:第二编码单元,用于在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,在所述多个第一纠删码数据中的目标纠删码数据同步失败的情况下,按照所述第一服务器中记录的当前同步点,重新对所述待更新数据进行纠删编码,得到所述目标纠删码数据,其中,所述当前同步点用于指示当前已同步成功的对象标识;第二同步单元,用于将所述目标纠删码数据同步到所述多个第一纠删码副本中与所述目标纠删码数据对应的目标纠删码副本中,以更新所述目标纠删码副本中存储的纠删码数据。
可选地,所述装置还包括:选取单元,用于在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,在由于所述第一服务器发生异常导致所述多个第一纠删码数据同步失败的情况下,从所述至少一个服务器选取出第二服务器,其中,所述第二服务器上存储有所述待更新数据的目标镜像副本;第三编码单元,用于通过所述第二服务器对所述目标镜像副本进行纠删编码,得到与所述第一目标对象对应的多个第二纠删码数据;第三同步单元,用于将所述多个第二纠删码数据同步到所述多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第二纠删码数据与所述多个第一纠删码副本一一对应。
可选地,所述装置还包括:接收单元,用于接收目标客户端发送的对象读取请求,其中,所述对象读取请求用于请求读取第二目标对象的对象数据;第一发送单元,用于在所述第一服务器上存储有所述第二目标对象最新版本的对象数据的情况下,将所述第一服务器上存储的、所述第二目标对象最新版本的对象数据发送给所述目标客户端。
可选地,所述装置还包括:第二获取单元,用于在所述接收目标客户端发送的对象读取请求之后,在所述第一服务器上未存储有所述第二目标对象的最新版本的对象数据的情况下,从多个第二纠删码副本中获取多个第二纠删码数据,其中,所述多个第二纠删码数据为与所述第二目标对象最新版本的对象数据所对应的纠删码数据,所述多个第二纠删码副本与所述多个第二纠删码数据一一对应;解码单元,用于对所述多个第二纠删码数据进行解码,得到所述第二目标对象最新版本的对象数据;第二发送单元,用于将解码得到的、所述第二目标对象最新版本的对象数据发送给所述目标客户端。
根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
在本申请实施例中,采用在多个服务器上存储对象的待更新数据的镜像副本的方式,获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了第一服务器以外的至少一个服务器上存储有待更新数据的镜像副本;对待更新数据进行纠删编码,得到与第一目标对象对应的多个第一纠删码数据;将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中,以更新多个第一纠删码副本中存储的第一目标对象的纠删码数据,其中,多个第一纠删码数据与多个第一纠删码副本一一对应,由于将待更新数据(例如,对象ID和其最新版本的内容)存储在互为镜像的多副本上,可以通过多副本的冗余来保证数据不易损坏或丢失,达到提高数据的安全性和可靠性的技术效果,进而解决了相关技术中采用覆盖写的纠删码存储方式存在的数据块和/或校验块所在的服务器掉电易造成数据丢失的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种可选的对象更新方法的硬件环境的示意图;
图2是根据本申请实施例的一种可选的对象更新方法的流程示意图;
图3是根据本申请实施例的另一种可选的对象更新方法的流程示意图;
图4是根据本申请实施例的又一种可选的对象更新方法的流程示意图;
图5是根据本申请实施例的一种可选的对象更新装置的结构框图;
图6是根据本申请实施例的一种可选的电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种对象更新方法。可选地,在本实施例中,上述对象更新方法可以应用于如图1所示的由终端102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端102进行连接,可用于为终端或终端上安装的客户端(例如,游戏客户端)提供服务(如对象存储服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,还可以用于处理云服务。
上述网络包括但不限于以下至少之一:有线网络,无线网络。有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真)。终端102并不限定于PC(Personal Computer,个人计算机)、手机、平板电脑等。服务器104可以但不限于一个或多个服务器、云服务器的组合,本实施例中对此不作限定。
本申请实施例的对象更新方法可以由服务器104来执行,也可以由终端102来执行,还可以是由服务器104和终端102共同执行。其中,终端102执行本申请实施例的对象更新方法也可以是由安装在其上的客户端(例如,目标游戏的客户端)来执行。
以由服务器104来执行本实施例中的对象更新方法为例,图2是根据本申请实施例的一种可选的对象更新方法的流程示意图,如图2所示,该方法的流程可以包括以下步骤:
步骤S202,获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了第一服务器以外的至少一个服务器上存储有待更新数据的镜像副本。
本实施例中的对象更新方法可以应用于在纠删码存储系统中存储对象的场景。对象可以是纠删码存储系统中数据存储的基本单位,每个对象是数据和数据属性集的综合体,数据属性可以根据应用的需求进行设置。对象可以包含整个数据结构,如文件、数据表项等。每个对象都有一个对象标识,可以通过对象标识访问纠删码存储系统中存储的对象。
纠删码存储系统中可以包含多个设备,可以包括但不限于以下全部或者部分设备:纠删码存储系统的客户端,存储待写入对象的多个数据服务器,存储纠删码副本的多个数据服务器,用于连接纠删码存储系统的客户端与纠删码存储系统中的数据服务器的中间设备(可以是服务器,也可以是其他设备)。
用户(对应于一个对象)的终端设备上可以运行有纠删码存储系统的客户端,该客户端可以与纠删码存储系统的服务器(例如,上述中间设备)进行通信连接。用户可以使用帐号和密码、帐号和动态密码、关联应用(第三方应用)登录等方式登录到其终端设备上运行的客户端,并通过操作客户端进行对象操作,例如,对象存储操作,对象读取操作等。
在纠删码存储系统中,可以通过创建新对象的方式进行存储新上传的资源(例如,数据文件),可以通过覆盖写的方式存储已有对象最新版本的内容。
对于第一目标对象,无论是首次写(新建对象)还是覆盖写(更新对象),可以首先将待更新数据(例如,可以包含对象ID和第一目标对象最新版本的内容)存储在互为镜像的多副本上(镜像多副本,或称为多镜像副本),从而可以通过多副本的冗余来保证数据不会损坏或丢失。
需要说明的是,镜像多副本是待更新数据的多个镜像副本,多个镜像副本可以保存在多个数据服务器上,不同的镜像副本可以存储在相同或者不同的数据服务器上,每个数据服务器上可以存储有一个或多个镜像副本。
在后台(例如,由中间设备执行)可以从镜像多副本中选举出主副本,主副本负责申请并维护对应的纠删码副本,也就是,与第一目标对象对应的纠删码副本。对于第一目标对象,其主副本存储在第一服务器上,主副本为待更新数据,而其他的镜像副本存储在至少一个服务器上。第一服务器可以获取第一服务器上存储的第一目标对象的待更新数据(主镜像副本),其他镜像副本可以不作处理。
步骤S204,对待更新数据进行纠删编码,得到与第一目标对象对应的多个第一纠删码数据。
第一服务器可以对待更新数据进行纠删编码,得到与第一目标对象对应的多个第一纠删码数据。可选地,在本实施例中,第一服务器可以首先将待更新数据切分成多个数据块(数据条带),并使用与第一目标对象对应的编码矩阵对多个数据块进行编码,得到多个第一纠删码数据,可以包含多个数据块和一个或多个校验块(校验条带)。
例如,对于6+3纠删编码,可以将第一目标对象最新版本的内容切分为6个数据块,得到对应的分块数据D{D0,D1,D2,D3,D4,D5},通过编码矩阵GM和分块数据相乘,得到的纠删码数据为:{D0,D1,D2,D3,D4,D5,C0,C1,C2}。
需要说明的是,待更新数据所切分为的数据块的数量和校验块的数量可以根据需要进行配置,本实施例中对此不作限定。
步骤S206,将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中,以更新多个第一纠删码副本中存储的第一目标对象的纠删码数据,其中,多个第一纠删码数据与多个第一纠删码副本一一对应。
在多个数据服务器上可以保存有第一目标对象的纠删码数据,纠删码数据可以是通过纠删码副本的方式进行存储,每个数据服务器上所保存的纠删码副本的数量可以为一个或多个。
第一服务器可以将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中。上述同步的过程可以是串行执行的,也可以是并行执行的。各第一纠删码副本所在的数据服务器在接收到同步来的第一纠删码数据,可以采用覆盖写的方式保存接收到的第一纠删码数据,从而更新各第一纠删码副本中存储的第一目标对象的纠删码数据。
例如,对于6+3纠删编码,第一纠删码副本的数量为9个,可以分别存储在不同的数据服务器上。第一服务器可以分别将9个第一纠删码数据同步到各第一纠删码副本,已更新其存储的第一目标对象的纠删码数据。
通过上述步骤S202至步骤S206,获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了第一服务器以外的至少一个服务器上存储有待更新数据的镜像副本;对待更新数据进行纠删编码,得到与第一目标对象对应的多个第一纠删码数据;将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中,以更新多个第一纠删码副本中存储的第一目标对象的纠删码数据,其中,多个第一纠删码数据与多个第一纠删码副本一一对应,解决了相关技术中采用覆盖写的纠删码存储方式存在的数据块和/或校验块所在的服务器掉电易造成数据丢失的问题,提高了数据的安全性和可靠性。
作为一种可选的实施例,获取第一服务器上存储的第一目标对象的待更新数据包括:
S11,在第一目标对象包含多个数据对象的情况下,从目标存储块中获取多个数据对象的待更新数据,其中,目标存储块为多个数据对象所聚合为的数据块。
数据在镜像多副本的组织形式可以是:每个数据对象不经过聚合,直接以多副本的形式存储为数据文件。
可选地,在本实施例中,数据在镜像多副本的组织形式可以是:多个数据对象聚合为数据block(存储块),每次纠删码同步的流程是针对block内多个连续存储的数据对象执行的。
在第一目标对象包含多个数据对象的情况下,多个数据对象聚合为的block为目标存储块。获取第一服务器上存储的第一目标对象的待更新数据的方式可以是:从第一服务器上的目标存储块中获取连续存储的数据对象,得到多个数据对象的待更新数据。
通过本实施例,由于对象的数量一般比block的数量大几个数量级,把多个较小的对象聚合为较大的block,可以减少整体的元信息规模和开销。
作为一种可选的实施例,在将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中之后,上述方法还包括:
S21,在多个第一纠删码数据均同步成功的情况下,将第一目标对象的目标对象标识记录为目标同步点,其中,目标同步点用于指示当前同步已成功的对象标识为目标对象标识;
S22,按照目标同步点删除第一服务器上的待更新数据和/或位于待更新数据之前的对象数据。
镜像多副本的元信息可以按照写入顺序记录数据服务器上存储的镜像副本所对应的对象ID,并通过纠删码同步点(或者,成为同步点)指示当前已同步到的对象ID。如果纠删码同步成功,可以将最后一个成功的对象ID作为纠删码同步点(同步点),把纠删码同步点写入到镜像多副本的元信息中,下次的纠删码同步可以从记录的同步点以后开始执行。
如果多个第一纠删码数据均已同步成功,表明待更新数据已经更新完成,也就是,多个第一纠删码副本中保存的是与待更新数据对应的纠删码数据,即使有纠删码副本所在的服务器发生掉电,也不会导致数据丢失。此时,第一服务器可以将第一目标对象的目标对象标识记录为目标同步点,该目标同步点用于指示当前同步已成功的对象标识为目标对象标识。
可选地,在本实施例中,为了节省存储空间,减少有效副本数,可以将同步点之前的数据删除。在第一服务器中,可以按照目标同步点(或者说,按照目标同步点所指示的目标对象标识),删除第一服务器上的以下内容中的至少之一:待更新数据,位于待更新数据之前的对象数据。
需要说明的是,在本实施例中,位于待更新数据之前的对象数据是指:同步顺序在待更新数据之前的对象数据,对象数据的同步顺序可以按照元信息进行指示,也可以按照数据标记进行指示,具体的指示方式可以根据需要进行设定,本实施例中对此不作限定。
通过本实施例,通过将最后一个成功的对象ID作为纠删码同步点,并将同步点之前的数据删除,可以保证数据同步的可靠性,同时可以节省存储空间,减少有效副本数量。
作为一种可选的实施例,在将第一目标对象的目标对象标识记录为目标同步点之后,上述方法还包括:
S31,向至少一个服务器发送携带有目标同步点的通知消息,其中,通知消息用于通知至少一个服务器按照目标同步点删除待更新数据的镜像副本和/或位于待更新数据的镜像副本之前的镜像副本。
至少一个服务器上的待更新数据的镜像副本是为了保证待更新数据更新发生异常时可以替代待更新数据进行更新。如果待更新数据已经更新成功,为了节省存储空间,可以同时删除待更新数据的各个镜像副本。
可选地,在本实施例中,在纠删码同步成功后,镜像副本的主副本(与第一服务器对应)可以通知各个镜像副本(与至少一个服务器对应)最新的同步点。对于第一服务器,第一服务器可以向至少一个服务器发送通知消息,该通知消息中携带有目标同步点。
至少一个服务器在接收到通知消息之后,可以从中提取出目标同步点,并按照目标同步点删除以下内容中的至少之一:待更新数据的镜像副本,位于待更新数据的镜像副本之前的镜像副本。
需要说明的是,在本实施例中,位于待更新数据的镜像副本之前的镜像副本是指:同步顺序在待更新数据的镜像副本之前的镜像副本,镜像副本的同步顺序与对象数据的同步顺序一致,可以按照元信息进行指示,也可以按照数据标记进行指示,具体的指示方式可以根据需要进行设定,本实施例中对此不作限定。
通过本实施例,通过通知镜像副本所在的服务器最新的同步点,以指示其删除同步点之前的数据,可以节省存储空间,减少有效副本数量。
作为一种可选的实施例,在将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中之后,上述方法还包括:
S41,在多个第一纠删码数据中的目标纠删码数据同步失败的情况下,按照第一服务器中记录的当前同步点,重新对待更新数据进行纠删编码,得到目标纠删码数据,其中,当前同步点用于指示当前已同步成功的对象标识;
S42,将目标纠删码数据同步到多个第一纠删码副本中与目标纠删码数据对应的目标纠删码副本中,以更新目标纠删码副本中存储的纠删码数据。
如果在同步的过程中发生异常,会导致多个第一纠删码数据同步失败。上述同步失败存在多种情况,不同的同步失败情况,可以采用不同的处理方式。
作为一种可选的实施例,如果由于与多个第一纠删码数据中的目标纠删码数据对应的目标纠删码副本所在的服务器发生掉电等原因导致目标纠删码数据同步失败,如果按照第一服务器中记录的当前同步点,重新对待更新数据进行纠删编码,得到目标纠删码数据。
当前同步点用于指示当前已同步成功的对象标识。按照当前同步点,第一服务器可以确定出待更新数据,并对待更新数据进行纠删编码,纠删编码得到的数据与前述相同,为多个第一纠删码数据。第一服务器可以从中确定出目标纠删码数据,将目标纠删码数据同步到目标纠删码副本中,从而可以更新目标纠删码副本中存储的纠删码数据。
对于多个第一纠删码数据中除了目标纠删码数据以外的其他纠删码数据,可以重新进行同步,即,重新同步的过程可以是针对整个待更新数据执行,也可以不执行同步操作,即,重新同步的过程仅针对目标纠删码数据执行。本实施例中对此不作限定。
可选地,上述将目标纠删码数据同步到目标纠删码副本中的步骤可以是在确定目标纠删码副本所在的服务器恢复正常后执行的,例如,目标纠删码副本所在的服务器向第一服务器发送通知消息,通知第一服务器其处于正常状态。第一服务器接收到上述通知消息之后,确定目标纠删码副本所在的服务器恢复正常,重新进行纠删码数据的同步。
例如,如果纠删码同步过程中任意纠删码副本出现异常,例如,掉电,可以从上一次成功的同步点以后重新执行纠删码同步,从而自然地把纠删码副本中上一次异常留下的脏数据纠正过来。
通过本实施例,在纠删码数据同步失败时按照同步点重新进行纠删编码以及纠删码数据同步,可以保证数据同步的可靠性,避免纠删码副本中保存异常数据。
作为一种可选的实施例,在将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中之后,上述方法还包括:
S51,在由于第一服务器发生异常导致多个第一纠删码数据同步失败的情况下,从至少一个服务器选取出第二服务器,其中,第二服务器上存储有待更新数据的目标镜像副本;
S52,通过第二服务器对目标镜像副本进行纠删编码,得到与第一目标对象对应的多个第二纠删码数据;
S53,将多个第二纠删码数据同步到多个第一纠删码副本中,以更新多个第一纠删码副本中存储的第一目标对象的纠删码数据,其中,多个第二纠删码数据与多个第一纠删码副本一一对应。
如果由于第一服务器发生异常导致多个第一纠删码数据同步失败,为了保证对象数据更新的正确执行,可以从至少一个服务器选取出第二服务器,上述选取过程可以是由中间设备执行的。中间设备可以从至少一个服务器选取出第二服务器,并指示第二服务器由其进行对象数据同步。
第二服务器上存储有待更新数据的目标镜像副本。按照中间设备的指示,其可以对目标镜像副本进行纠删编码,得到与第一目标对象对应的多个第二纠删码数据,多个第二纠删码数据与多个第一纠删码数据可以是相同的。
在得到多个第二纠删码数据之后,第二服务器可以将多个第二纠删码数据同步到多个第一纠删码副本中,以更新多个第一纠删码副本中存储的第一目标对象的纠删码数据,多个第二纠删码数据与多个第一纠删码副本一一对应。上述过程与前述类似,在此不做赘述。
通过本实施例,在主副本所在的服务器发生异常时,从其他副本所在的服务器中选取出进行对象数据同步的服务器,可以保证对象数据同步的可靠性。
作为一种可选的实施例,上述方法还包括:
S61,接收目标客户端发送的对象读取请求,其中,对象读取请求用于请求读取第二目标对象的对象数据;
S62,在第一服务器上存储有第二目标对象最新版本的对象数据的情况下,将第一服务器上存储的、第二目标对象最新版本的对象数据发送给目标客户端。
对于读请求(读取对象的请求),读请求可以首先被路由到镜像多副本之一,然后根据该镜像副本(所在的数据服务器)中是否保存最新版本内容决定请求的响应方式。
目标用户可以使用目标帐号和对应的密码登录到其终端设备上运行的目标客户端,该目标客户端为纠删码存储系统的客户端。目标用户可以通过操作目标客户端的对象操作界面执行上述对象操作,例如,第二目标对象的对象读取操作。
在同步上述待更新数据之前、之后、或者在同步的过程中,目标客户端可以响应检测到的对象读取操作,生成第二目标对象的对象读取请求,对象读取请求用于请求读取第二目标对象(最新版本)的对象数据。
该对象读取请求可以被路由到第一服务器上。第一服务器上可以接收目标客户端发送的对象读取请求,如果第一服务器上保存有第二目标对象最新版本的内容(对象数据),则第一服务器可以直接响应该对象读取请求,将第一服务器上存储的、第二目标对象最新版本的对象数据发送给目标客户端。
目标客户端在接收到第二目标对象最新版本的对象数据之后,可以将其进行保存,还可以将其通过目标客户端的显示界面进行显示,本实施例中对此不作限定。
例如,读请求首先可以被路由到镜像多副本之一,若镜像副本中保存了最新版本内容则可以直接响应该请求,将最新版本内容返回给客户端。
通过本实施例,新写入的数据可以从互为镜像的多副本中读到,相比从纠删码副本中读取数据,不需要纠删解码,节约了计算量并提升访问速度,同时也保证了返回给客户端的是最新版本的内容,提高数据读取的可靠性。
作为一种可选的实施例,在接收目标客户端发送的对象读取请求之后,上述方法还包括:
S71,在第一服务器上未存储有第二目标对象的最新版本的对象数据的情况下,从多个第二纠删码副本中获取多个第二纠删码数据,其中,多个第二纠删码数据为与第二目标对象最新版本的对象数据所对应的纠删码数据,多个第二纠删码副本与多个第二纠删码数据一一对应;
S72,对多个第二纠删码数据进行解码,得到第二目标对象最新版本的对象数据;
S73,将解码得到的、第二目标对象最新版本的对象数据发送给目标客户端。
如果镜像副本中未保存最新版本内容,镜像副本(所在的数据服务器)可以向对应的多个纠删码副本(所在的数据服务器)转发读请求,镜像副本汇聚了多个纠删码副本的响应后,可以进行必要的纠删解码计算得到原始的数据,并返回给客户端。
对于第二目标对象,如果第一服务器上未存储有第二目标对象的最新版本的对象数据,第一服务器可以从多个第二纠删码副本中获取多个第二纠删码数据。多个第二纠删码副本与多个第二纠删码数据一一对应,不同的第二纠删码副本可以存储在相同或者不同的数据服务器中,多个第二纠删码数据为与第二目标对象最新版本的对象数据所对应的纠删码数据。
多个第二纠删码数据是对第二目标对象最新版本的对象数据进行纠删编码得到的纠删码数据。为了得到原始的数据,第一服务器可以对多个第二纠删码数据进行纠删解码,得到第二目标对象最新版本的对象数据,纠删编码和纠删解码的过程可以参考相关技术,本实施例中对此不作限定。
在解码得到的第二目标对象最新版本的对象数据之后,第一服务器可以将解码结果发送给目标客户端。目标客户端在接收到第二目标对象最新版本的对象数据之后,可以将其进行保存,还可以将其通过目标客户端的显示界面进行显示,本实施例中对此不作限定。
通过本实施例,在镜像副本中未保存对象的最新版本内容时,从多个纠删码副本获取纠删码数据,并解码得到原始的数据,可以保证返回给用户的是对象的最新版本内容,提高数据读取的可靠性。
需要说明的是,上述由中间设备执行的步骤也可以由镜像多副本所在的多个服务器中的任意一个服务器所执行的,也就是,该服务器可以兼顾调度功能。
下面结合可选示例对本申请实施例中的对象更新方法进行解释说明。本示例的对象更新方法可以包含两个部分,写入对象数据,服务对象数据,其中,通过副本指代副本所在的服务器。
对于在纠删码存储系统中写入对象数据的过程,为了在纠删码存储中可靠地支持覆盖写,对象数据首先冗余在互为镜像的多个副本中,后续异步同步到纠删码副本中;假如同步被异常终止,可以在镜像多副本中读取到数据,只有同步成功后才从镜像多副本中删除冗余的数据。可选地,如图3所示,上述对象更新方法可以包含以下步骤:
步骤S302,将对象ID和其最新版本的内容存储在互为镜像的多副本上。
不管是首次写(新建对象)还是覆盖写(更新对象),可以首先将对象ID和其最新版本的内容(作用同上述待更新数据)存储在互为镜像的多副本上,多副本的冗余可以保证数据不会轻易损坏或丢失。
镜像副本总是在后台选举出主副本,主副本负责申请并维护对应的纠删码副本。上述将对象ID和其最新版本的内容存储在互为镜像的多副本上可以是由主副本执行的,也可以是由除了镜像多副本以外的其他设备执行的。
步骤S304,镜像多副本的主副本在后台对数据进行纠删编码并同步到对应的纠删码副本上。
镜像多副本的主副本可以在后台对数据(最新版本的内容)异步进行纠删编码并同步到对应的纠删码副本上。
数据在镜像多副本的组织形式可以有多种,例如,每个数据对象不经过聚合,直接以多副本的形式存储为数据文件,可以通过上述异步纠删编码的方式可靠地执行纠删码同步。
可选地,多个数据对象可以聚合为数据block,每次纠删码同步的流程针对block内多个连续存储的数据对象执行。通过数据对象聚合,可以把多个较小的对象聚合为较大的block,从而减少整体的元信息规模和开销。
步骤S306,在纠删码同步成功的情况下,把最后一个成功的对象ID作为同步点,保存在镜像多副本的元信息中。
如果纠删码同步成功,镜像副本的主副本可以通知各个镜像副本最新的同步点,从而可以把纠删码同步点写入到镜像多副本的元信息中(即,把最后一个成功的对象ID作为同步点,保存在镜像多副本的元信息中),下次的纠删码同步从记录的同步点以后开始执行。镜像多副本可以把最新的同步点以前的数据标记删除,并在后台发起垃圾回收,从而降低有效副本数。
步骤S308,在纠删码同步失败的情况下,从上次成功的同步点开始重新执行同步。
如果纠删码同步过程中任意纠删码副本出现异常(例如,掉电),则本次纠删码同步失败,后续可以从上次成功的同步点开始,重新执行同步。重新同步的过程可以自然地把纠删码副本中上一次异常留下的脏数据纠正过来,避免纠删编码过程中遇到异常留下脏数据。
对于在纠删码存储系统中读取对象数据的过程,所有的对象读请求可以首先从镜像多副本读取,如果镜像多副本中保存了对象的最新版本,则可以直接响应该请求;否则镜像多副本向其对应的纠删码副本转发读请求,并进行必要的纠删解码。可选地,如图4所示,上述对象更新方法可以包含以下步骤:
步骤S402,接收客户端发送的读请求。
客户端的读请求可以首先被路由到镜像多副本之一。被路由到的镜像副本可以接收客户端发送的读请求,该读请求中携带有待读取的对象ID,用于请求读取该对象ID的最新版本内容。
步骤S404,在路由到的镜像副本中保存了最新版本内容的情况下,直接响应该请求,返回最新版本内容。
如果路由到的镜像副本中保存了该对象ID的最新版本内容,可以直接响应该请求,将该对象ID的最新版本内容返回给客户端。
步骤S406,在路由到的镜像副本中未保存最新版本内容的情况下,向对应的多个纠删码副本转发读请求。
如果路由到的镜像副本中没有保存该对象ID的最新版本内容,路由到的镜像副本可以向对应的多个纠删码副本转发读请求。多个纠删码副本接收读请求之后,根据对象ID,向路由到的镜像副本返回保存的该对象ID的纠删码数据。
步骤S408,路由到的镜像副本汇聚多个纠删码副本的响应,进行纠删解码,计算得到原始的数据,并返回给客户端。
路由到的镜像副本可以汇聚多个纠删码副本的响应消息,从中提取出所需的纠删码数据;对纠删码数据执行必要的纠删解码,例如,数据校验,数据拼接,数据计算等等,得到原始的数据,即,该对象ID的最新版本内容;并将该对象ID的最新版本内容返回给客户端。
通过本示例,通过镜像多副本冗余,可以在面临系统异常(例如,磁盘故障和掉电)时使得数据的读写不受影响;此外,新写入的数据总是能从互为镜像的多副本中读到,相比从纠删码副本中读取不需要纠删解码,可以节约了计算量并提升访问速度。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,提供了一种用于实施上述对象更新方法的对象更新装置。图5是根据本申请实施例的一种可选的对象更新装置的结构框图,如图5所示,该装置可以包括:
(1)第一获取单元502,用于获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了第一服务器以外的至少一个服务器上存储有待更新数据的镜像副本;
(2)第一编码单元504,与第一获取单元502相连,用于对待更新数据进行纠删编码,得到与第一目标对象对应的多个第一纠删码数据;
(3)第一同步单元506,与第一编码单元504相连,用于将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中,以更新多个第一纠删码副本中存储的第一目标对象的纠删码数据,其中,多个第一纠删码数据与多个第一纠删码副本一一对应。
需要说明的是,该实施例中的第一获取单元502可以用于执行上述步骤S202,该实施例中的第一编码单元504可以用于执行上述步骤S204,该实施例中的第一同步单元506可以用于执行上述步骤S206。
通过上述模块,获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了第一服务器以外的至少一个服务器上存储有待更新数据的镜像副本;对待更新数据进行纠删编码,得到与第一目标对象对应的多个第一纠删码数据;将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中,以更新多个第一纠删码副本中存储的第一目标对象的纠删码数据,其中,多个第一纠删码数据与多个第一纠删码副本一一对应,解决了相关技术中采用覆盖写的纠删码存储方式存在的数据块和/或校验块所在的服务器掉电易造成数据丢失的问题,提高了数据的安全性和可靠性。
作为一种可选的实施例,第一获取单元502包括:
第一获取模块,用于在第一目标对象包含多个数据对象的情况下,从目标存储块中获取多个数据对象的待更新数据,其中,目标存储块为多个数据对象所聚合为的数据块。
作为一种可选的实施例,上述装置还包括:
记录单元,用于在将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中之后,在多个第一纠删码数据均同步成功的情况下,将第一目标对象的目标对象标识记录为目标同步点,其中,目标同步点用于指示当前同步已成功的对象标识为目标对象标识;
第一删除单元,用于按照目标同步点删除第一服务器上的待更新数据和/或位于待更新数据之前的对象数据。
作为一种可选的实施例,上述装置还包括:
第一发送单元,用于在将第一目标对象的目标对象标识记录为目标同步点之后,向至少一个服务器发送携带有目标同步点的通知消息,其中,通知消息用于通知至少一个服务器按照目标同步点删除待更新数据的镜像副本和/或位于待更新数据的镜像副本之前的镜像副本。
作为一种可选的实施例,上述装置还包括:
第二编码单元,用于在将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中之后,在多个第一纠删码数据中的目标纠删码数据同步失败的情况下,按照第一服务器中记录的当前同步点,重新对待更新数据进行纠删编码,得到目标纠删码数据,其中,当前同步点用于指示当前已同步成功的对象标识;
第二同步单元,用于将目标纠删码数据同步到多个第一纠删码副本中与目标纠删码数据对应的目标纠删码副本中,以更新目标纠删码副本中存储的纠删码数据。
作为一种可选的实施例,上述装置还包括:
选取单元,用于在将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中之后,在由于第一服务器发生异常导致多个第一纠删码数据同步失败的情况下,从至少一个服务器选取出第二服务器,其中,第二服务器上存储有待更新数据的目标镜像副本;
第三编码单元,用于通过第二服务器对目标镜像副本进行纠删编码,得到与第一目标对象对应的多个第二纠删码数据;
第三同步单元,用于将多个第二纠删码数据同步到多个第一纠删码副本中,以更新多个第一纠删码副本中存储的第一目标对象的纠删码数据,其中,多个第二纠删码数据与多个第一纠删码副本一一对应。
作为一种可选的实施例,上述装置还包括:
接收单元,用于接收目标客户端发送的对象读取请求,其中,对象读取请求用于请求读取第二目标对象的对象数据;
第一发送单元,用于在第一服务器上存储有第二目标对象最新版本的对象数据的情况下,将第一服务器上存储的、第二目标对象最新版本的对象数据发送给目标客户端。
作为一种可选的实施例,上述装置还包括:
第二获取单元,用于在接收目标客户端发送的对象读取请求之后,在第一服务器上未存储有第二目标对象的最新版本的对象数据的情况下,从多个第二纠删码副本中获取多个第二纠删码数据,其中,多个第二纠删码数据为与第二目标对象最新版本的对象数据所对应的纠删码数据,多个第二纠删码副本与多个第二纠删码数据一一对应;
解码单元,用于对多个第二纠删码数据进行解码,得到第二目标对象最新版本的对象数据;
第二发送单元,用于将解码得到的、第二目标对象最新版本的对象数据发送给目标客户端。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的又一个方面,还提供了一种用于实施上述对象更新方法的电子设备,该电子设备可以是服务器、终端、或其组合。
图6是根据本申请实施例的一种可选的电子设备的结构框图,如图6所示,包括处理器602、通信接口604、存储器606和通信总线608,其中,处理器602、通信接口604和存储器606通过通信总线608完成相互间的通信,其中,
存储器606,用于存储计算机程序;
处理器602,用于执行存储器606上所存放的计算机程序时,实现如下步骤:
S1,获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了第一服务器以外的至少一个服务器上存储有待更新数据的镜像副本;
S2,对待更新数据进行纠删编码,得到与第一目标对象对应的多个第一纠删码数据;
S3,将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中,以更新多个第一纠删码副本中存储的第一目标对象的纠删码数据,其中,多个第一纠删码数据与多个第一纠删码副本一一对应。
可选地,在本实施例中,上述的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
作为一种示例,上述存储器606中可以但不限于包括上述对象更新装置中的第一获取单元502、第一编码单元504以及第一同步单元506。此外,还可以包括但不限于上述对象更新装置中的其他模块,本示例中不再赘述。
上述处理器可以是通用处理器,可以包含但不限于:CPU(Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(DigitalSignal Processing,数字信号处理器)、ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图6所示的结构仅为示意,实施上述对象更新方法的设备可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图6其并不对上述电子装置的结构造成限定。例如,终端设备还可包括比图6中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图6所示的不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。
根据本申请实施例的又一个方面,还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行本申请实施例中上述任一项对象更新方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了第一服务器以外的至少一个服务器上存储有待更新数据的镜像副本;
S2,对待更新数据进行纠删编码,得到与第一目标对象对应的多个第一纠删码数据;
S3,将多个第一纠删码数据同步到与第一目标对象对应的多个第一纠删码副本中,以更新多个第一纠删码副本中存储的第一目标对象的纠删码数据,其中,多个第一纠删码数据与多个第一纠删码副本一一对应。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例中对此不再赘述。
可选地,在本实施例中,存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (11)
1.一种对象更新方法,其特征在于,包括:
获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了所述第一服务器以外的至少一个服务器上存储有所述待更新数据的镜像副本;
对所述待更新数据进行纠删编码,得到与所述第一目标对象对应的多个第一纠删码数据;
将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第一纠删码数据与所述多个第一纠删码副本一一对应。
2.根据权利要求1所述的方法,其特征在于,所述获取第一服务器上存储的第一目标对象的待更新数据包括:
在所述第一目标对象包含多个数据对象的情况下,从目标存储块中获取所述多个数据对象的所述待更新数据,其中,所述目标存储块为所述多个数据对象所聚合为的数据块。
3.根据权利要求1所述的方法,其特征在于,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:
在所述多个第一纠删码数据均同步成功的情况下,将所述第一目标对象的目标对象标识记录为目标同步点,其中,所述目标同步点用于指示当前同步已成功的对象标识为所述目标对象标识;
按照所述目标同步点删除所述第一服务器上的所述待更新数据和/或位于所述待更新数据之前的对象数据。
4.根据权利要求3所述的方法,其特征在于,在所述将所述第一目标对象的目标对象标识记录为目标同步点之后,所述方法还包括:
向所述至少一个服务器发送携带有所述目标同步点的通知消息,其中,所述通知消息用于通知所述至少一个服务器按照所述目标同步点删除所述待更新数据的镜像副本和/或位于所述待更新数据的镜像副本之前的镜像副本。
5.根据权利要求3所述的方法,其特征在于,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:
在所述多个第一纠删码数据中的目标纠删码数据同步失败的情况下,按照所述第一服务器中记录的当前同步点,重新对所述待更新数据进行纠删编码,得到所述目标纠删码数据,其中,所述当前同步点用于指示当前已同步成功的对象标识;
将所述目标纠删码数据同步到所述多个第一纠删码副本中与所述目标纠删码数据对应的目标纠删码副本中,以更新所述目标纠删码副本中存储的纠删码数据。
6.根据权利要求1所述的方法,其特征在于,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:
在由于所述第一服务器发生异常导致所述多个第一纠删码数据同步失败的情况下,从所述至少一个服务器选取出第二服务器,其中,所述第二服务器上存储有所述待更新数据的目标镜像副本;
通过所述第二服务器对所述目标镜像副本进行纠删编码,得到与所述第一目标对象对应的多个第二纠删码数据;
将所述多个第二纠删码数据同步到所述多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第二纠删码数据与所述多个第一纠删码副本一一对应。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
接收目标客户端发送的对象读取请求,其中,所述对象读取请求用于请求读取第二目标对象的对象数据;
在所述第一服务器上存储有所述第二目标对象最新版本的对象数据的情况下,将所述第一服务器上存储的、所述第二目标对象最新版本的对象数据发送给所述目标客户端。
8.根据权利要求7所述的方法,其特征在于,在所述接收目标客户端发送的对象读取请求之后,所述方法还包括:
在所述第一服务器上未存储有所述第二目标对象的最新版本的对象数据的情况下,从多个第二纠删码副本中获取多个第二纠删码数据,其中,所述多个第二纠删码数据为与所述第二目标对象最新版本的对象数据所对应的纠删码数据,所述多个第二纠删码副本与所述多个第二纠删码数据一一对应;
对所述多个第二纠删码数据进行解码,得到所述第二目标对象最新版本的对象数据;
将解码得到的、所述第二目标对象最新版本的对象数据发送给所述目标客户端。
9.一种对象更新装置,其特征在于,包括:
第一获取单元,用于获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了所述第一服务器以外的至少一个服务器上存储有所述待更新数据的镜像副本;
第一编码单元,用于对所述待更新数据进行纠删编码,得到与所述第一目标对象对应的多个第一纠删码数据;
第一同步单元,用于将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第一纠删码数据与所述多个第一纠删码副本一一对应。
10.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,其特征在于,
所述存储器,用于存储计算机程序;
所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行权利要求1至8中任一项所述的方法步骤。
11.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至8中任一项中所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110045726.7A CN114764425A (zh) | 2021-01-13 | 2021-01-13 | 对象更新方法和装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110045726.7A CN114764425A (zh) | 2021-01-13 | 2021-01-13 | 对象更新方法和装置、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114764425A true CN114764425A (zh) | 2022-07-19 |
Family
ID=82363337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110045726.7A Pending CN114764425A (zh) | 2021-01-13 | 2021-01-13 | 对象更新方法和装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114764425A (zh) |
-
2021
- 2021-01-13 CN CN202110045726.7A patent/CN114764425A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10963341B2 (en) | Isolating the introduction of software defects in a dispersed storage network | |
US10282118B2 (en) | Using reason codes to determine how to handle memory device error conditions | |
US10169151B2 (en) | Utilizing request deadlines in a dispersed storage network | |
US10013207B2 (en) | Considering object health of a multi-region object | |
US10042566B2 (en) | Intelligent read strategy within a dispersed storage network (DSN) | |
US20170249086A1 (en) | Monitoring and alerting for improper memory device replacement | |
CN112988683A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN107315659B (zh) | 一种元数据的冗余备份方法及装置 | |
US10552341B2 (en) | Zone storage—quickly returning to a state of consistency following an unexpected event | |
US10282135B2 (en) | Strong consistency write threshold | |
CN115016979A (zh) | 纠删码数据处理方法、装置及系统、存储介质、处理器 | |
CN110889143A (zh) | 文件校验方法及装置 | |
US10404410B2 (en) | Storage unit (SU) report cards | |
US10613798B2 (en) | Slice fanout write request | |
US10067998B2 (en) | Distributed sync list | |
US11474902B2 (en) | Indicating data health in a DSN memory | |
US20220374162A1 (en) | Facilitating Write Requests in a Storage Network | |
CN114764425A (zh) | 对象更新方法和装置、存储介质和电子设备 | |
CN110968255A (zh) | 数据处理方法、装置、存储介质以及处理器 | |
US20170315871A1 (en) | Retrying write operations after failures | |
US10728334B1 (en) | Compare-and-swap rebuilder for a distributed storage network | |
US10095582B2 (en) | Partial rebuilding techniques in a dispersed storage unit | |
US20180107728A1 (en) | Using tombstone objects to synchronize deletes | |
US20220159072A1 (en) | Performance based access in a storage network | |
CN112860488B (zh) | 对象的恢复方法和装置、电子设备和存储介质 |
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 |