对象更新方法和装置、存储介质和电子设备制造方法及图纸

技术编号:34204067 阅读:22 留言:0更新日期:2022-07-20 11:25
本申请提供了一种对象更新方法和装置、存储介质和电子设备,其中,该方法包括:获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了第一服务器以外的至少一个服务器上存储有所述待更新数据的镜像副本;对所述待更新数据进行纠删编码,得到与所述第一目标对象对应的多个第一纠删码数据;将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第一纠删码数据与所述多个第一纠删码副本一一对应。通过本申请,解决了相关技术中采用覆盖写的纠删码存储方式存在的数据块和/或校验块所在的服务器掉电易造成数据丢失的问题。数据丢失的问题。数据丢失的问题。

【技术实现步骤摘要】
对象更新方法和装置、存储介质和电子设备


[0001]本申请涉及数据处理领域,尤其涉及一种对象更新方法和装置、存储介质和电子设备。

技术介绍

[0002]EC(Erasure Coding,纠删)码是一种冗余方式,有别于传统的多副本冗余,它把数据切成多个数据块(数据条带),对K个数据块(K为切成的数据块的数量)生成M个校验块,使得系统最多容忍M个数据块或校验块丢失。相比多副本冗余,纠删码在K+M编码下成本更低,例如,常见的6+3编码可以在1.5副本下容忍3个数据块或校验块丢失。
[0003]纠删码存储中可以实现“更新对象”。相比于“创建对象”,“更新对象”对可靠性和可用性有更高的要求。因为创建对象只需要把成功的对象ID返回,不管经过多少次重试,只要返回成功的对象ID即可,而更新对象是有状态的,并且在系统断电重启、或者硬件损坏的情况下,对对象执行覆盖操作(即,使用新版本内容覆盖旧版本内容)可能出现旧版本内容和新版本内容交织的情况,导致既无法读取旧版本也无法读到新版本。
[0004]相关技术中支持覆盖写的系统如果采用覆盖写的纠删码存储方式,如果在覆盖写的过程中发生掉电,只能丢弃掉电的服务器上的数据(掉电的服务器上保存的可能是脏数据)。如果超过一定数量(例如,M个)的数据块和/或校验块所在的服务器同时发生掉电,则会造成数据丢失。
[0005]因此,相关技术中采用覆盖写的纠删码存储方式,存在数据块和/或校验块所在的服务器掉电易造成数据丢失的问题。

技术实现思路

[0006]本申请提供了一种对象更新方法和装置、存储介质和电子设备,以至少解决相关技术中采用覆盖写的纠删码存储方式存在的数据块和/或校验块所在的服务器掉电易造成数据丢失的问题。
[0007]根据本申请实施例的一个方面,提供了一种对象更新方法,包括:获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了所述第一服务器以外的至少一个服务器上存储有所述待更新数据的镜像副本;对所述待更新数据进行纠删编码,得到与所述第一目标对象对应的多个第一纠删码数据;将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第一纠删码数据与所述多个第一纠删码副本一一对应。
[0008]可选地,所述获取第一服务器上存储的第一目标对象的待更新数据包括:在所述第一目标对象包含多个数据对象的情况下,从目标存储块中获取所述多个数据对象的所述待更新数据,其中,所述目标存储块为所述多个数据对象所聚合为的数据块。
[0009]可选地,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多
个第一纠删码副本中之后,所述方法还包括:在所述多个第一纠删码数据均同步成功的情况下,将所述第一目标对象的目标对象标识记录为目标同步点,其中,所述目标同步点用于指示当前同步已成功的对象标识为所述目标对象标识;按照所述目标同步点删除所述第一服务器上的所述待更新数据和/或位于所述待更新数据之前的对象数据。
[0010]可选地,在所述将所述第一目标对象的目标对象标识记录为目标同步点之后,所述方法还包括:向所述至少一个服务器发送携带有所述目标同步点的通知消息,其中,所述通知消息用于通知所述至少一个服务器按照所述目标同步点删除所述待更新数据的镜像副本和/或位于所述待更新数据的镜像副本之前的镜像副本。
[0011]可选地,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:在所述多个第一纠删码数据中的目标纠删码数据同步失败的情况下,按照所述第一服务器中记录的当前同步点,重新对所述待更新数据进行纠删编码,得到所述目标纠删码数据,其中,所述当前同步点用于指示当前已同步成功的对象标识;将所述目标纠删码数据同步到所述多个第一纠删码副本中与所述目标纠删码数据对应的目标纠删码副本中,以更新所述目标纠删码副本中存储的纠删码数据。
[0012]可选地,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:在由于所述第一服务器发生异常导致所述多个第一纠删码数据同步失败的情况下,从所述至少一个服务器选取出第二服务器,其中,所述第二服务器上存储有所述待更新数据的目标镜像副本;通过所述第二服务器对所述目标镜像副本进行纠删编码,得到与所述第一目标对象对应的多个第二纠删码数据;将所述多个第二纠删码数据同步到所述多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第二纠删码数据与所述多个第一纠删码副本一一对应。
[0013]可选地,所述方法还包括:接收目标客户端发送的对象读取请求,其中,所述对象读取请求用于请求读取第二目标对象的对象数据;在所述第一服务器上存储有所述第二目标对象最新版本的对象数据的情况下,将所述第一服务器上存储的、所述第二目标对象最新版本的对象数据发送给所述目标客户端。
[0014]可选地,在所述接收目标客户端发送的对象读取请求之后,所述方法还包括:在所述第一服务器上未存储有所述第二目标对象的最新版本的对象数据的情况下,从多个第二纠删码副本中获取多个第二纠删码数据,其中,所述多个第二纠删码数据为与所述第二目标对象最新版本的对象数据所对应的纠删码数据,所述多个第二纠删码副本与所述多个第二纠删码数据一一对应;对所述多个第二纠删码数据进行解码,得到所述第二目标对象最新版本的对象数据;将解码得到的、所述第二目标对象最新版本的对象数据发送给所述目标客户端。
[0015]根据本申请实施例的另一个方面,提供了一种对象更新装置,包括:第一获取单元,用于获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了所述第一服务器以外的至少一个服务器上存储有所述待更新数据的镜像副本;第一编码单元,用于对所述待更新数据进行纠删编码,得到与所述第一目标对象对应的多个第一纠删码数据;第一同步单元,用于将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,
其中,所述多个第一纠删码数据与所述多个第一纠删码副本一一对应。
[0016]可选地,所述第一获取单元包括:第一获取模块,用于在所述第一目标对象包含多个数据对象的情况下,从目标存储块中获取所述多个数据对象的所述待更新数据,其中,所述目标存储块为所述多个数据对象所聚合为的数据块。
[0017]可选地,所述装置还包括:记录单元,用于在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,在所述多个第一纠删码数据均同步成功的情况下,将所述第一目标对象的目标对象标识记录为目标同步点,其中,所述目标同步点用于指示当前同步已成功的对象标识为所述目标对象标识;第一删除单元,用于按照所述目标同步点删除所述第一服务器上的所述待更新数据和/或位于所述待更新数据之前的对象本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对象更新方法,其特征在于,包括:获取第一服务器上存储的第一目标对象的待更新数据,其中,在除了所述第一服务器以外的至少一个服务器上存储有所述待更新数据的镜像副本;对所述待更新数据进行纠删编码,得到与所述第一目标对象对应的多个第一纠删码数据;将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中,以更新所述多个第一纠删码副本中存储的所述第一目标对象的纠删码数据,其中,所述多个第一纠删码数据与所述多个第一纠删码副本一一对应。2.根据权利要求1所述的方法,其特征在于,所述获取第一服务器上存储的第一目标对象的待更新数据包括:在所述第一目标对象包含多个数据对象的情况下,从目标存储块中获取所述多个数据对象的所述待更新数据,其中,所述目标存储块为所述多个数据对象所聚合为的数据块。3.根据权利要求1所述的方法,其特征在于,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:在所述多个第一纠删码数据均同步成功的情况下,将所述第一目标对象的目标对象标识记录为目标同步点,其中,所述目标同步点用于指示当前同步已成功的对象标识为所述目标对象标识;按照所述目标同步点删除所述第一服务器上的所述待更新数据和/或位于所述待更新数据之前的对象数据。4.根据权利要求3所述的方法,其特征在于,在所述将所述第一目标对象的目标对象标识记录为目标同步点之后,所述方法还包括:向所述至少一个服务器发送携带有所述目标同步点的通知消息,其中,所述通知消息用于通知所述至少一个服务器按照所述目标同步点删除所述待更新数据的镜像副本和/或位于所述待更新数据的镜像副本之前的镜像副本。5.根据权利要求3所述的方法,其特征在于,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:在所述多个第一纠删码数据中的目标纠删码数据同步失败的情况下,按照所述第一服务器中记录的当前同步点,重新对所述待更新数据进行纠删编码,得到所述目标纠删码数据,其中,所述当前同步点用于指示当前已同步成功的对象标识;将所述目标纠删码数据同步到所述多个第一纠删码副本中与所述目标纠删码数据对应的目标纠删码副本中,以更新所述目标纠删码副本中存储的纠删码数据。6.根据权利要求1所述的方法,其特征在于,在所述将所述多个第一纠删码数据同步到与所述第一目标对象对应的多个第一纠删码副本中之后,所述方法还包括:在由于所述第一服务器发生异常导致所述多个第一纠删码数据同步失败的情况下,从所述至少一个服务...

【专利技术属性】
技术研发人员:忻晨
申请(专利权)人:北京金山云网络技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1