CN113282243B - 存储对象文件的方法及装置 - Google Patents
存储对象文件的方法及装置 Download PDFInfo
- Publication number
- CN113282243B CN113282243B CN202110644631.7A CN202110644631A CN113282243B CN 113282243 B CN113282243 B CN 113282243B CN 202110644631 A CN202110644631 A CN 202110644631A CN 113282243 B CN113282243 B CN 113282243B
- Authority
- CN
- China
- Prior art keywords
- storage node
- object file
- hash value
- file
- bitmap
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请是关于一种存储对象文件的方法及装置,属于存储领域。所述方法包括:第一存储节点接收第一上传请求,第一上传请求包括第一对象文件,第一存储节点包括第一位图,第一位图中的多个比特位与多个哈希值一一对应,对于第一位图包括的比特位以及该比特位对应的哈希值,该比特位用于指示第一存储节点中是否保存该哈希值对应的对象文件。基于第一位图和第一哈希值,确定第一存储节点是否保存第二对象文件,第一哈希值是基于第一对象文件的文件标识得到的,第二对象文件的文件标识和第二对象文件的文件标识相同。在保存第二对象文件时,将第二对象文件替换为第一对象文件,在没有保存第二对象文件时,保存第一对象文件。本申请能够节省存储空间。
Description
技术领域
本申请涉及存储领域,特别涉及一种存储对象文件的方法及装置。
背景技术
云分布式对象存储系统包括多个存储节点、服务器和集中数据库。对于任一个客户端,该客户端可以向云分布式对象存储系统存储对象文件。例如,假设该客户端包括第一对象文件,该客户端按如下方式存储第一对象文件。
客户端向服务器发送第一对象文件和第一对象文件的版本信息。服务器将第一对象文件保存到一个存储节点,获取第一对象文件的存储位置,在集中数据库中保存第一元数据,第一元数据包括第一对象文件的文件标识、版本信息和存储位置。
当客户端对第一对象文件进行修改得到第二对象文件时,客户端向服务器发送第二对象文件和第二对象文件的版本信息。服务器将第二对象文件保存到一个存储节点,获取第二对象文件的存储位置,在集中数据库中保存第二元数据,第二元数据包括第二对象文件的文件标识、版本信息和存储位置。其中,第二对象文件的文件标识与第一对象文件的文件标识相同,第二对象文件的版本信息高于第一对象文件的版本信息。
当客户端需要下载该文件标识对应的对象文件时,客户端向服务器发送包括该文件标识的下载请求。服务器从集中数据库中检索出包括该文件标识的第一元数据和第二元数据。由于第二元数据包括的版本信息高于第一元数据包括的版本信息,所以服务器根据第二元数据包括的最新版本的第二对象文件的存储位置,获取第二对象文件,向客户端发送第二对象文件。同时,服务器根据第一元数据包括的第一对象文件的存储位置,删除第一对象文件。
发明人在实现本申请的过程中,发现上述方式至少存在如下缺陷:
从上述过程来看,在云分布式对象存储系统中可能存储同一个文件标识对应的多个不同版本的对象文件,而且只能在下载该文件标识对应的对象文件时,才能发现存储有不同版本的对象文件。所以对于该文件标识对应的老版本对象文件,不能及时释放这些老版本对象文件占用存储空间,造成存储空间的浪费。
发明内容
为了节省存储空间,本申请实施例提供了一种存储对象文件的方法及装置。所述技术方案如下:
一方面,本申请提供了一种存储对象文件的方法,所述方法包括:
第一存储节点接收第一上传请求,所述第一上传请求包括第一对象文件,所述第一存储节点包括第一位图,所述第一位图中的多个比特位与多个哈希值一一对应,对于所述第一位图包括的比特位以及所述比特位对应的哈希值,所述比特位用于指示所述第一存储节点中是否保存所述哈希值对应的对象文件;
所述第一存储节点基于第一位图和第一哈希值,确定所述第一存储节点是否保存第二对象文件,所述第一哈希值是基于所述第一对象文件的文件标识得到的,所述第二对象文件的文件标识和所述第二对象文件的文件标识相同;
所述第一存储节点在保存所述第二对象文件时,将所述第二对象文件替换为所述第一对象文件,在没有保存所述第二对象文件时,保存所述第一对象文件。
可选的,所述第一存储节点保存所述第一对象文件之后,还包括:
所述第一存储设备设置目标比特位用于指示所述第一存储节点保存所述第一对象文件,所述目标比特位是所述第一位图中的与所述第一哈希值相对应的比特位。
可选的,所述第一存储节点基于第一位图和第一哈希值,确定所述第一存储节点是否保存第二对象文件,包括:
所述第一存储节点基于所述第一哈希值和第一个数,确定用于保存所述第一对象文件的第二存储节点,所述第一个数为在线状态的存储节点个数;
在所述第一存储节点和所述第二存储节点是同一存储节点时,所述第一存储节点基于第一位图和第一哈希值,确定所述第一存储节点是否保存第二对象文件。
可选的,所述方法还包括:
在所述第一存储节点和所述第二存储节点是不同存储节点时,所述第一存储节点向所述第二存储节点发送所述第一上传请求,所述第一上传请求用于触发所述第二存储节点保存所述第一对象文件。
可选的,所述方法还包括:
所述第一存储节点接收下载请求,所述下载请求包括所述第一对象文件的文件标识;
所述第一存储节点基于所述文件标识获取所述第一对象文件;
所述第一存储节点发送所述第一对象文件。
可选的,所述第一存储节点基于所述文件标识获取所述第一对象文件,包括:
所述第一存储节点基于所述第一哈希值和第一个数,确定用于保存所述第一对象文件的第二存储节点,所述第一个数为在保存所述第一对象文件时在线状态的存储节点个数,所述第一哈希值是基于所述文件标识得到的;
在所述第一存储节点和所述第二存储节点是不同存储节点时,所述第一存储节点向所述第二存储节点发送所述下载请求,所述下载请求用于触发所述第二存储节点获取所述第一对象文件;
所述第一存储节点接收所述第二存储节点发送的所述第一对象文件。
可选的,所述方法还包括:
所述第一存储节点向管理设备发送所述第一位图,以使所述管理设备基于第二位图和所述第一位图确定第一哈希值集合和第二哈希值集合,所述第二位图是第三存储节点中的位图,所述第一存储节点和所述第二存储节点互相备份,所述第一哈希值集合包括的每个哈希值对应的对象文件保存在第一存储节点且未保存在第二存储节点中,所述第二哈希值集合包括的每个哈希值对应的对象文件保存在所述第二存储节点且未保存在所述第一存储节点中;
所述第一存储节点向所述第三存储节点发送所述第一哈希值集合中的每个哈希值对应的对象文件,以使所述第三存储节点保存所述第一哈希值集合中的每个哈希值对应的对象文件。
可选的,所述方法还包括:
所述第一存储节点接收所述第二存储节点发送的所述第二哈希值集合中的每个哈希值对应的对象文件;
所述第一存储节点保存所述第二哈希值集合中的每个哈希值对应的对象文件。
另一方面,本申请提供了一种存储对象文件的装置,所述装置包括:
接收模块,用于接收第一上传请求,所述第一上传请求包括第一对象文件,所述装置包括第一位图,所述第一位图中的多个比特位与多个哈希值一一对应,对于所述第一位图包括的比特位以及所述比特位对应的哈希值,所述比特位用于指示所述装置中是否保存所述哈希值对应的对象文件;
确定模块,用于基于第一位图和第一哈希值,确定所述装置是否保存第二对象文件,所述第一哈希值是基于所述第一对象文件的文件标识得到的,所述第二对象文件的文件标识和所述第二对象文件的文件标识相同;
保存模块,用于在保存所述第二对象文件时,将所述第二对象文件替换为所述第一对象文件,在没有保存所述第二对象文件时,保存所述第一对象文件。
可选的,所述装置还包括:
设置模块,用于设置目标比特位用于指示所述装置保存所述第一对象文件,所述目标比特位是所述第一位图中的与所述第一哈希值相对应的比特位。
可选的,所述确定模块,用于:
基于所述第一哈希值和第一个数,确定用于保存所述第一对象文件的第二存储节点,所述第一个数为在线状态的存储节点个数;
在所述装置和所述第二存储节点是同一存储节点时,基于第一位图和第一哈希值,确定所述装置是否保存第二对象文件。
可选的,所述装置还包括:
第一发送模块,用于在所述装置和所述第二存储节点是不同存储节点时,向所述第二存储节点发送所述第一上传请求,所述第一上传请求用于触发所述第二存储节点保存所述第一对象文件。
可选的,所述装置还包括:获取模块和第二发送模块;
所述接收模块,还用于接收下载请求,所述下载请求包括所述第一对象文件的文件标识;
所述获取模块,用于基于所述文件标识获取所述第一对象文件;
所述第二发送模块,用于发送所述第一对象文件。
可选的,所述获取模块,用于基于所述第一哈希值和第一个数,确定用于保存所述第一对象文件的第二存储节点,所述第一个数为在保存所述第一对象文件时在线状态的存储节点个数,所述第一哈希值是基于所述文件标识得到的;
所述第二发送模块,还用于在所述装置和所述第二存储节点是不同存储节点时,向所述第二存储节点发送所述下载请求,所述下载请求用于触发所述第二存储节点获取所述第一对象文件;
所述接收模块,还用于接收所述第二存储节点发送的所述第一对象文件。
可选的,所述装置还包括:
第三发送模块,用于向管理设备发送所述第一位图,以使所述管理设备基于第二位图和所述第一位图确定第一哈希值集合和第二哈希值集合,所述第二位图是第三存储节点中的位图,所述装置和所述第二存储节点互相备份,所述第一哈希值集合包括的每个哈希值对应的对象文件保存在装置且未保存在第二存储节点中,所述第二哈希值集合包括的每个哈希值对应的对象文件保存在所述第二存储节点且未保存在所述装置中;
所述第三发送模块,还用于向所述第三存储节点发送所述第一哈希值集合中的每个哈希值对应的对象文件,以使所述第三存储节点保存所述第一哈希值集合中的每个哈希值对应的对象文件。
可选的,所述接收模块,还用于接收所述第二存储节点发送的所述第二哈希值集合中的每个哈希值对应的对象文件;
所述保存模块,用于保存所述第二哈希值集合中的每个哈希值对应的对象文件。
另一方面,本申请提供了一种电子设备,包括:处理器和存储器。其中,所述处理器以及所述存储器之间可以通过总线系统相连。所述存储器用于存储程序、指令或代码,所述处理器用于执行所述存储器中的程序、指令或代码,完成上述存储对象文件的方法。
另一方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括在计算机可读存储介质中存储的计算机程序,并且所述计算程序通过处理器进行加载来实现上述存储对象文件的方法。
另一方面,本申请提供了一种非易失性计算机可读存储介质,用于存储计算机程序,所述计算机程序通过处理器进行加载来执行上述存储对象文件的方法。
本申请实施例提供的技术方案可以包括以下有益效果:
第一存储节点接收第一上传请求,第一上传请求包括第一对象文件,第一存储节点包括第一位图,对于第一位图包括的比特位以及该比特位对应的哈希值,该比特位用于指示第一存储节点中是否保存该哈希值对应的对象文件。由于第一存储节点基于第一位图和第一哈希值,确定第一存储节点是否保存第二对象文件,第一哈希值是基于第一对象文件的文件标识得到的,第二对象文件的文件标识和第二对象文件的文件标识相同。第一存储节点在保存第二对象文件时,将第二对象文件替换为第一对象文件,在没有保存第二对象文件时,保存第一对象文件。其中,第一对象文件和第二对象文件是该文件标识对应的两个不同版本的文件,第二对象文件是该文件标识对应的老版本文件。由于第一存储节点可以基于第一位图和第一哈希值确定第一存储节点是否保存第二对象文件,从而在上传文件时,能够及时发现是否保存该文件标识对应的第二对象文件,在保存该文件标识对应的第二对象文件时,将第二对象文件替换为第一对象文件,从而避免保存该文件标识对应的不同版本的对象文件,节省了存储空间。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请实施例提供的一种云分布式对象存储系统的示意图;
图2是本申请实施例提供的一种存储对象文件的方法流程图;
图3是本申请实施例提供的一种互相备份对象文件的方法流程图;
图4是本申请实施例提供的一种下载对象文件的方法流程图;
图5是本申请实施例提供的一种删除对象文件的方法流程图;
图6是本申请实施例提供的一种存储对象文件的装置结构示意图;
图7是本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
参见图1,本申请实施例提供了一种云分布式对象存储系统,包括
M组存储节点和管理设备,每组存储节点包括互相备份的两个存储节点,M为大于1的整数。对于该M组存储节点中的每组存储节点,该组存储节点中的两个存储节点均与管理设备通信,每个存储节点还与至少一个客户端通信。
客户端,用于向云分布式对象存储系统上传对象文件,以使云分布式对象存储系统保存该对象文件;和/或,从云分布式对象存储系统中下载对象文件。
对于上述任一个存储节点,该存储节点,用于存储客户端上传的对象文件,和/或,向客户端返回需要下载的对象文件。
管理设备,用于对云分布式对象存储系统中的存储节点进行管理。
上述存储节点可以为存储服务器等,上述管理设备可以为管理服务器或控制器等,上述客户端包括终端和/或安装在终端上的应用程序等。
参见图2,本申请实施例提供了一种存储对象文件的方法,所述方法应用于图1所示的云分布式对象存储系统,包括:
步骤201:第一存储节点接收客户端发送的第一上传请求,第一上传请求包括第一对象文件,该客户端是与第一存储节点通信的客户端。
可选的,第一存储节点与客户端之间建立有通信连接,客户端通过该通信连接向第一存储节点发送第一上传请求。
步骤202:第一存储节点基于第一哈希值和云分布式对象存储系统当前的哈希环信息,确定用于存储第一对象文件的第二存储节点。
其中,第一哈希值用于标识第一对象存储文件,第一哈希值是基于第一对象文件的文件标识得到的,第一对象文件的文件标识是一个字符串。该字符串包括多个字符,该多个字符包括字母、数字、符号和/或文字等。
云分布式对象存储系统当前的哈希环信息包括该哈希环信息的版本信息,云分布式对象存储系统当前在线的每个存储节点对应的节点标识和序号。
可选的,该哈希环信息还包括第一个数,第一个数为该云分布式对象存储系统当前在线的存储节点个数。存储节点的节点标识包括存储节点的节点地址等。
可选的,管理设备用于管理云分布式对象存储系统中的各存储节点。所以当云分布式对象存储系统中的在线状态存储节点发生变化时,管理设备能够获取到云分布式对象存储系统中每个在线状态的存储节点,基于在线状态的存储节点个数为每个在线状态的存储节点分配序号。分配哈希环信息的版本信息,从而得到云分布式对象存储系统的哈希环信息,该哈希环信息包括每个在线状态的存储节点的序号和节点标识,以及分配的版本信息。管理设备向在线状态的每个存储节点发送该哈希环信息。
例如,假设云分布式对象存储系统包括五组在线状态的存储节点,即在线状态的存储节点个数为10,分别为存储节点1、存储节点2、……、存储节点10。管理设备获取存储节点1的节点标识ID1、存储节点2的节点标识ID2、……、存储节点10的节点标识ID10。以及,管理设备为在线状态的每个存储节点分配序号,存储节点1、存储节点2、……、存储节点10的序号分别为0、1、2、……、9。如此,得到云分布式对象存储系统当前的哈希环信息包括版本信息V1.1,存储节点1的节点标识ID1和序号0、存储节点2的节点标识ID2和序号2、……、存储节点10的节点标识ID10和序号9。管理设备分别向存储节点1、存储节点2、……、存储节点10发送该哈希环信息。
在步骤202中,第一存储节点对第一对象文件的文件标识进行哈希运算,得到第一哈希值,对第一哈希值和第一个数进行求余运算得到一个序号,将该序号对应的存储节点作为用于存储第一对象文件的第二存储节点。
例如,假设第一存储节点对第一对象文件的文件标识进行哈希运算,得到第一哈希值为18。对第一哈希值18和第一个数10进行求余运算,即18mod10=8,得到用于存储第一对象文件的第二存储节点的序号为8,mod为求余运算。将序号8对应的存储节点9作为用于存储第一对象文件的第二存储节点。
第一存储节点还将该哈希环信息的版本信息和第一对象文件的文件标识对应保存在版本信息与文件标识的对应关系中。
步骤203:在第一存储节点与第二存储节点相同时,第一存储节点基于位图和第一哈希值,确定是否保存该文件标识对应的第二对象文件。
该客户端在上传第一对象文件之前,还可能已上传该文件标识对应的第二对象文件。第一对象文件可能是该客户端重新上传的第二对象文件,即第一对象文件和第二对象文件相同。或者,客户端对第二对象文件进行修改,得到第一对象文件,第一对象文件和第二对象文件是该文件标识对应的两个不同版本文件。或者,
该客户端在上传第一对象文件之前,没有上传该文件标识对应的其他对象文件。也就说是,第一对象文件是该客户端首次上传的该文件标识对应的对象文件。
第一存储节点中的位图包括多个比特位,该多个比特位与多个哈希值一一对应,对于该位图中的任一个比特位,以及对于该比特位对应的哈希值,该比特位用于指示第一存储节点中是否保存该哈希值对应的对象文件。例如,当该比特位的取值为1时,该比特位用于指示第一存储节点中保存该哈希值对应的对象文件;当该比特位的取值为0时,该比特位用于指示第一存储节点中没有保存该哈希值对应的对象文件。或者,当该比特位的取值为0时,该比特位用于指示第一存储节点中保存该哈希值对应的对象文件;当该比特位的取值为1时,该比特位用于指示第一存储节点中没有保存该哈希值对应的对象文件。
在步骤203中,第一存储节点基于第一哈希值,从第一存储节点保存的位图中获取与第一哈希值相对应的第一比特位,基于第一比特位确定第一存储节点中是否保存该文件标识对应的第二对象文件。
步骤204:第一存储节点在没有保存该文件标识对应的第二对象文件,存储第一对象文件和第一对象文件的元数据,结束。
可选的,第一存储节点存储第一对象文件和第一对象文件的元数据后,向客户端发送上传成功消息。
第一对象文件的元数据包括第一对象文件的文件标识、第一对象文件在第一存储节点中的存储位置和第一哈希值。
第一存储节点还在其自身保存的位图中,确定与第一哈希值相对应的比特位,设置该比特位的取值用于指示第一存储节点保存第一对象文件。
第一存储节点在保存该文件标识对应的第二对象文件的情况下,第一存储节点中也保存有第二对象文件的元数据。第二对象文件的元数据包括第二对象文件的文件标识、在第一存储节点的存储位置和第一哈希值,其中,第二对象文件的文件标识和第一对象文件的文件标识相同。其中,第二对象文件的元数报是在第一存储节点存储第二对象文件时产生的,并被第一存储节点保存在本地。
步骤205:第一存储节点在保存该文件标识对应的第二对象文件,将第二对象文件替换为第一对象文件,结束。
在步骤205中,对于第一对象文件的文件标识,第一存储节点从保存的元数据中获取包括该文件标识的元数据,获取的元数据为第二对象文件的元数据。基于该元数据中包括的第二对象文件的存储位置,将第二对象文件替换为第一对象文件。
第一存储节点保存大量对象文件的元数据,从第一存储节点保存的大量元数据中获取包括该文件标识的元数据,是需要占用大量的计算资源。如果在未确定第一存储节点是否保存第二对象文件时,从第一存储节点保存的大量元数据中可能获取到包括该文件标识的元数据,也可能获取不到包括该文件标识的元数据。在没有获取到包括该文件标识的元数据,会浪费计算资源。
然而,在本步骤中,由于第一存储节点基于其存储的位图和第一哈希值确定出保存第二对象文件时,才从第一存储节点保存的元数据中获取包括该文件标识的元数据,从而能够获取到包括该文件标识的元数据,避免了计算资源的浪费。
可选的,在将第二对象文件替换为第一对象文件之前,第一存储节点基于第二对象文件的存储位置获取第二对象文件;计算第一对象文件的内容标识和第二对象文件的内容标识;在第一对象文件的内容标识和第二对象文件的内容标识不同时,将第二对象文件替换为第一对象文件,向客户端返回上传成功消息;在第一对象文件的内容标识和第二对象文件的内容标识相同时,直接向客户端返回上传成功消息,实现秒传第一对象文件,这样可以减少不必要的磁盘操作,增加磁盘寿命。
在第一对象文件的内容标识和第二对象文件的内容标识相同,表示第一对象文件和第二对象文件是相同文件,在第一对象文件的内容标识和第二对象文件的内容标识不同时,表示第一对象文件和第二对象文件是不同文件。
可选的,上述内容标识为信息摘要算法(message-digest algorithm,MD5)值等。即第一对象文件的内容标识为第一对象文件的MD5值,第二对象文件的内容标识为第二对象文件的MD5值。
步骤206:在第一存储节点与第二存储节点不同时,第一存储节点向第二存储节点发送第一上传请求。
可选的,第一存储节点向第一上传请求添加第一哈希值,然后向第二存储节点发送第一上传请求,第一上传请求包括第一哈希值和第一对象文件。
在步骤206中,第一存储节点基于第二存储节点的序号,从云分布式对象存储系统当前的哈希环信息中获取第二存储节点的节点标识;基于该节点标识向第二存储节点发送第一上传请求。
第二存储节点也可能是故障的,第二存储节点处于离线状态,这样在步骤206中,第一存储节点向第二存储节点发送第一上传请求会失败。第一存储节点会检测到该失败情况,确定与第二存储节点互相备份的第三存储节点,向第三存储节点发送第一上传请求。第二存储节点和第三存储节点位于同一组。然后第三存储节点执行如下第二存储节点执行的步骤,即第三存储节点执行如下步骤207-209的操作。
步骤207:第二存储节点接收第一上传请求,获取第一哈值,基于位图和第一哈希值,确定是否保存该文件标识对应的第二对象文件。
在步骤207中,在第一上传请求包括第一哈希值时,第二存储节点从第一上传请求中获取第一哈希值,和/或,对第一对象文件的文件标识进行哈希运算,得到第一哈希值。第二存储节点基于第一哈希值,从第二存储节点保存的位图中获取与第一哈希值相对应的第一比特位,基于第一比特位确定第二存储节点中是否保存该文件标识对应的第二对象文件。
步骤208:第二存储节点在没有保存该文件标识对应的第二对象文件,存储第一对象文件和第一对象文件的元数据,结束。
可选的,第二存储节点存储第一对象文件和第一对象文件的元数据后,向第一存储节点发送上传成功消息。第一存储节点向客户端转发该上传成功消息。
第一对象文件的元数据包括第一对象文件的文件标识、第一对象文件在第二存储节点中的存储位置和第一哈希值。
第二存储节点还在其自身保存的位图中,确定与第一哈希值相对应的比特位,设置该比特位的取值用于指示第二存储节点保存第一对象文件。
步骤209:第二存储节点在保存该文件标识对应的第二对象文件,将第二对象文件替换为第一对象文件,结束。
在步骤209中,对于第一对象文件的文件标识,第二存储节点从保存的元数据中获取包括该文件标识的元数据,获取的元数据为第二对象文件的元数据。基于该元数据中包括的第二对象文件的存储位置,将第二对象文件替换为第一对象文件。
可选的,在将第二对象文件替换为第一对象文件之前,第二存储节点基于第二对象文件的存储位置获取第二对象文件;计算第一对象文件的内容标识和第二对象文件的内容标识。在第一对象文件的内容标识和第二对象文件的内容标识不同时,将第二对象文件替换为第一对象文件,向第一存储节点发送上传成功消息,由第一存储节点向客户端转发该上传成功消息。在第一对象文件的内容标识和第二对象文件的内容标识相同时,直接向第一存储节点发送上传成功消息,由第一存储节点向客户端转发该上传成功消息,实现秒传第一对象文件。
对于云分布式对象存储系统中的任一组存储节点,为了便于说明,将该组存储节点中的两个存储节点分别称为第三存储节点和第四存储节点,将第三存储节点中的位图称为第一位图,将第四存储节点中的位图称第二位图。
第三存储节点和第四存储节点可以互相备份各自存储的对象文件,使第三存储节点和第四存储节点存储相同的对象文件。参见图3,该互相备份对象文件的过程为:
步骤301:第三存储节点周期性地向管理设备发送第一位图。
步骤302:第四存储节点周期性地向管理设备发送第二位图。
步骤303:管理设备接收第一位图和第二位图,基于第一位图和第二位图,确定第一哈希值集合和第二哈希值集合。
其中,第一哈希值集合包括的每个哈希值对应的对象文件保存在第三存储节但未保存在第四存储节点中。第二哈希值集合包括的每个哈希值对应的对象文件保存在第四存储节但未保存在第三存储节点中。
在步骤303:对于第一位图和第二位图中相同位置的两个比特位,为了便于说明将该两个比特位称为第二比特位和第三比特位,第一位图包括第二比特位,第二位图包括第三比特位。与第二比特位相对应的哈希值和与第三比特位相对应的哈希值相同,为了便于说明,将该哈希值称为第三哈希值。如果该第二比特位的取值和第三比特位的取值不同且第二比特位用于指示第三存储节点保存第三哈希值对应的对象文件,此时第三比特位用于指示第四存储节点没有保存第三哈希值对应的对象文件,将与第三比特位相对应的第三哈希值添加到第一哈希值集合。如果该第二比特位的取值和第三比特位的取值不同且第三比特位用于指示第四存储节点保存第三哈希值对应的对象文件,此时第二比特位用于指示第三存储节点没有保存第三哈希值对应的对象文件,将与第四比特位相对应的第三哈希值添加到第二哈希值集合。重复上述过程,对第一位图和第二位图中所有相同位置的两个比特位进行比较,得到第一哈希值集合和第二哈希值集合。
步骤304:管理设备向第三存储节点发送第一哈希值集合,向第四存储节点发送第二哈希值集合。
步骤305:第三存储节点接收第一哈希值集合,向第四存储节点发送第一对象文件集合,第一对象文件集合包括第一哈希值集合中的每个哈希值对应的对象文件。
在步骤305中,对于第一哈希值集合中的任一个哈希值,第三存储节点从保存的元数据中获取包括该哈希值的元数据。基于该元数据中包括的对象文件的存储位置,获取该对象文件。重复上述过程,获取第一哈希值集合中的每个哈希值对应的对象文件,得到第一对象文件集合,向第四存储节点发送第一对象文件集合。
可选的,第三存储节点还向第四存储节点发送第一对象文件集合中的每个对象文件的哈希值。
步骤306:第四存储节点接收第一对象文件集合,保存第一对象文件集合中的每个对象文件和每个对象文件的元数据。
在步骤306中,对于第一对象文件集合中的任一个对象文件,第四存储节点保存该对象文件,并获取该对象文件的存储位置。获取该对象文件的哈希值,保存该对象文件的元数据,该元数据包括该对象文件的文件标识,哈希值和存储位置。
可选的,对于该对象文件的哈希值,第四存储节点接收该对象文件的哈希值,或者,对该对象文件的文件标识进行哈希运算,得到该对象文件的哈希值。
第四存储节点还在第二位图中,确定与该对象文件的哈希值相对应的比特位,设置该比特位的取值用于指示第四存储节点保存该对象文件。
步骤307:第四存储节点接收第二哈希值集合,向第三存储节点发送第二对象文件集合,第二对象文件集合包括第二哈希值集合中的每个哈希值对应的对象文件。
在步骤307中,对于第二哈希值集合中的任一个哈希值,第四存储节点从保存的元数据中获取包括该哈希值的元数据。基于该元数据中包括的对象文件的存储位置,获取该对象文件。重复上述过程,获取第二哈希值集合中的每个哈希值对应的对象文件,得到第二对象文件集合,向第三存储节点发送第二对象文件集合。
可选的,第四存储节点还向第三存储节点发送第二对象文件集合中的每个对象文件的哈希值。
步骤308:第三存储节点接收第二对象文件集合,保存第二对象文件集合中的每个对象文件和每个对象文件的元数据。
在步骤308中,对于第二对象文件集合中的任一个对象文件,第三存储节点保存该对象文件,并获取该对象文件的存储位置。获取该对象文件的哈希值,保存该对象文件的元数据,该元数据包括该对象文件的文件标识,哈希值和存储位置。
可选的,对于该对象文件的哈希值,第三存储节点接收该对象文件的哈希值,或者,对该对象文件的文件标识进行哈希运算,得到该对象文件的哈希值。
第三存储节点还在第一位图中,确定与该对象文件的哈希值相对应的比特位,设置该比特位的取值用于指示第三存储节点保存该对象文件。
在本申请实施例中,第一存储节点接收客户端发送的第一上传请求,第一上传请求包括第一对象文件,基于第一对象文件的第一哈希值,确定用于存储第一对象文件的第二存储节点,第一哈希值是基于第一对象文件的文件标识得到的。在第一存储节点和第二存储节点为同一存储节点时,第一存储节点基于其保存的位图和第一哈希值,确定是否保存该文件标识对应的第二对象文件。在保存该第二对象文件时,将第二对象文件替换为第一对象文件,在没有保存第二对象文件时,保存第一对象文件。在第一存储节点和第二存储节点为不同存储节点时,向第二存储节点发送第一上传请求,第二存储节点基于其保存的位图和第一哈希值,确定是否保存该文件标识对应的第二对象文件。在保存该第二对象文件时,将第二对象文件替换为第一对象文件,在没有保存第二对象文件时,保存第一对象文件。如此在上传文件时,能够及时发现是否保存该文件标识对应的第二对象文件,从而及时释放老版本的第二对象文件占用存储空间,节省了存储空间。
参见图4,本申请实施例提供了一种下载对象文件的方法,所述方法应用于图1所示的云分布式对象存储系统,包括:
步骤401:第一存储节点接收客户端发送的下载请求,该下载请求包括第一对象文件的文件标识,该客户端是与第一存储节点通信的客户端。
可选的,第一存储节点与客户端之间建立有通信连接,客户端通过该通信连接向第一存储节点发送该下载请求。
步骤402:第一存储节点基于第一哈希值和云分布式对象存储系统当前的哈希环信息,确定用于存储第一对象文件的第二存储节点。
在步骤402中,第一存储节点基于第一对象文件的文件标识,从版本信息与文件标识的对应关系中获取对应的版本信息,从保存的哈希环信息中获取包括该版本信息的哈希环信息。该哈希环信息包括在存储第一对象文件时,云分布式对象存储系统中的每个在线状态的存储节点的节点标识和序号。对第一对象文件的文件标识进行哈希运算,得到第一哈希值,对第一哈希值和第一个数进行求余运算得到一个序号,第一个数为该在线状态的存储节点个数,将该序号对应的存储节点作为用于存储第一对象文件的第二存储节点。
步骤403:在第一存储节点与第二存储节点相同时,第一存储节点基于第一对象文件的文件标识,向客户端发送第一对象文件,结束。
在步骤403中,第一存储节点基于第一对象文件的文件标识,从保存的元数据中获取包括该文件标识的元数据,该元数据中还包括第一对象文件在第一存储节点中的存储位置,基于该存储位置获取第一对象文件,向客户端发送第一对象文件。
步骤404:在第一存储节点与第二存储节点不同时,第一存储节点向第二存储节点发送该下载请求。
在步骤404中,第一存储节点基于第二存储节点的序号,从获取的哈希环信息中获取第二存储节点的节点标识;基于该节点标识向第二存储节点发送该下载请求。
步骤405:第二存储节点接收该下载请求,基于该下载请求包括的第一对象文件的文件标识,向第一存储节点发送第一对象文件。
在步骤405中,对于该下载请求包括的第一对象文件的文件标识,第二存储节点从保存的元数据中获取包括该文件标识的元数据,获取的元数据还包括第一对象文件在第二存储节点中的存储位置。基于该存储位置获取第一对象文件,向第一存储节点发送第一对象文件。
步骤406:第一存储节点接收第一对象文件,向客户端发送第一对象文件。
在下载第一对象文件时,第二存储节点也可能是故障的,第二存储节点处于离线状态,这样在步骤404中,第一存储节点向第二存储节点发送下载请求会失败。第一存储节点会检测到该失败情况,确定与第二存储节点互相备份的第三存储节点,向第三存储节点发送该下载请求。第二存储节点和第三存储节点位于同一组,第三存储节点中也存储有第一对象文件。
第三存储节点接收该下载请求,第二存储节点从保存的元数据中获取包括该文件标识的元数据,获取的元数据还包括第一对象文件在第二存储节点中的存储位置。基于该存储位置获取第一对象文件,向第一存储节点发送第一对象文件。第一存储节点接收第一对象文件,向客户端发送第一对象文件。
在本申请实施例中,第一存储节点接收包括第一文件的文件标识的下载请求,基于该文件标识计算出第一哈希值,基于第一哈希值确定用于存储第一对象文件的第二存储节点。在第一存储节点和第二存储节点是同一存储节点时,从保存的元数据获取包括该文件标识的元数据,基于该元数据中的存储位置,获取第一对象文件。在第一存储节点和第二存储节点为不同存储节点时,第一存储节点向第二存储节点发送该下载请求,第二存储节点从保存的元数据获取包括该文件标识的元数据,基于该元数据中的存储位置,获取第一对象文件。如此,每个存储节点包括各自保存的对象文件的元数据,这样元数据分散在不同的存储节点,而不是集中存储,避免了性能瓶顶的问题出现。
由于哈希环中的存储节点可能因为掉线等原因,导致某一组存储节点离线,为了便于说明,称该组存储节点为第一组存储节点。对于第一存储节点中保存的对象文件,在第一组存储节点离线后,如果客户端重新上传该对象文件或新版本的该对象文件,此时就可能将该对象文件保存在其他组存储节点中。也就是说,第一组存储节点和该其他组存储节点保存同一文件标识对应的对象文件。在第一组存储节点重新上线时,此时,需要在第一组存储节点中删除重复存储的该文件标识对应的对象文件。参见图5,本申请实施例提供了一种删除对象文件的方法,包括:
步骤501:管理设备获取第一组存储节点对应的第三位图和第二组存储节点对应的第四位图,第一组存储节点对应的位图是第一组存储节点中的任一个存储节点对应的位图,第二组存储节点是除第一组存储节点以外的其他组存储节点,第二组存储节点对应的位图是第二组存储节点中的任一个存储节点对应的位图。
每组存储节点中的存储节点周期性地向管理设备发送各自对应的位图,管理设备接收每组存储节点中的存储节点发送的位图。
其中,对于每组存储节点,管理设备通过上述图3所示实施例,使得该组存储节点中的两个存储节点存储相同的对象文件,所以该两个存储节点对应的位图相同,因此将该两个存储节点中的任一个存储节点对应的位图作为该组存储节点对应的位图。
步骤502:管理设备基于第三位图和第四位图,确定第四哈希值,第一组存储节点和第二组存储节点均保存第四哈希值对应的对象文件。
第三位图中与第四哈希值相对应的比特位的取值等于第四位图中与第四哈希值相对应的比特位的取值。
在步骤502中,对于第三位图和第四位图中相同位置的两个比特位,为了便于说明将该两个比特位称为第四比特位和第五比特位,第三位图包括第四比特位,第四位图包括第五比特位。与第四比特位相对应的哈希值和与第五比特位相对应的哈希值相同。如果该第四比特位的取值和第五比特位的取值相同,则将该哈希值作为第四哈希值。
对于第三位图和第四位图中其他相同位置的两个比特位,按上述操作可以得到一个或多个第四哈希值,也就是说,在本步骤中可以获取到至少一个第四哈希值。
步骤503:管理设备向第一组存储节点中的每个存储节点发送删除命令,该删除命令包括至少一个第四哈希值。
步骤504:存储节点接收该删除命令,删除该至少一个第四哈希值中的每个第四哈希值对应的对象文件,第一组存储节点包括该存储节点。
对于该至少一个第四哈希值中的任一个第四哈希值,从该存储节点保存的元数据中获取包括该第四哈希值的元数据。基于该元数据中包括该第四哈希值对应的对象文件的存储位置,从该存储节点中删除该对象文件。
在本申请实施例中,由于第一组存储节点中的某些对象文件保存在其他组存储节点中,管理设备可以获取这些对象文件的哈希值,向该第一组存储节点发送删除命令,以使第一组存储节点中的存储节点可以删除这些对象文件,从而节省了存储资源。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
参见图6,本申请实施例提供了一种存储对象文件的装置600,所述装置600包括:
接收模块601,用于接收第一上传请求,第一上传请求包括第一对象文件,所述装置600包括第一位图,第一位图中的多个比特位与多个哈希值一一对应,对于第一位图包括的比特位以及该比特位对应的哈希值,该比特位用于指示装置600中是否保存该哈希值对应的对象文件;
确定模块602,用于基于第一位图和第一哈希值,确定所述装置600是否保存第二对象文件,第一哈希值是基于第一对象文件的文件标识得到的,第二对象文件的文件标识和第二对象文件的文件标识相同;
保存模块603,用于在保存第二对象文件时,将第二对象文件替换为第一对象文件,在没有保存第二对象文件时,保存第一对象文件。
可选的,所述装置600还包括:
设置模块,用于设置目标比特位用于指示所述装置600保存第一对象文件,该目标比特位是第一位图中的与第一哈希值相对应的比特位。
可选的,确定模块602,用于:
基于第一哈希值和第一个数,确定用于保存第一对象文件的第二存储节点,第一个数为在线状态的存储节点个数;
在所述装置600和第二存储节点是同一存储节点时,基于位图和第一哈希值,确定所述装置600是否保存第二对象文件。
可选的,所述装置600还包括:
第一发送模块,用于在所述装置和所述第二存储节点是不同存储节点时,向所述第二存储节点发送所述第一上传请求,所述第一上传请求用于触发所述第二存储节点保存所述第一对象文件。
可选的,所述装置600还包括:获取模块和第二发送模块;
所述接收模块,还用于接收下载请求,该下载请求包括第一对象文件的文件标识;
获取模块,用于基于该文件标识获取第一对象文件;
第二发送模块,用于发送第一对象文件。
可选的,获取模块,用于基于第一哈希值和第一个数,确定用于保存第一对象文件的第二存储节点,第一个数为在保存第一对象文件时在线状态的存储节点个数,第一哈希值是基于该文件标识得到的;
第二发送模块,还用于在所述装置600和第二存储节点是不同存储节点时,向第二存储节点发送该下载请求,该下载请求用于触发第二存储节点获取第一对象文件;
接收模块601,还用于接收第二存储节点发送的第一对象文件。
可选的,所述装置600还包括:
第三发送模块,用于向管理设备发送第一位图,以使管理设备基于第二位图和所一位图确定第一哈希值集合和第二哈希值集合,第二位图是第三存储节点中的位图,所述装置600和第二存储节点互相备份,第一哈希值集合包括的每个哈希值对应的对象文件保存在所述装置600且未保存在第二存储节点中,第二哈希值集合包括的每个哈希值对应的对象文件保存在第二存储节点且未保存在所述装置600中;
第三发送模块,还用于向第三存储节点发送第一哈希值集合中的每个哈希值对应的对象文件,以使第三存储节点保存第一哈希值集合中的每个哈希值对应的对象文件。
可选的,所述装置600还包括:
接收模块601,还用于接收第二存储节点发送的第二哈希值集合中的每个哈希值对应的对象文件;
保存模块603,还用于保存第二哈希值集合中的每个哈希值对应的对象文件。
在本申请实施例中,接收模块接收第一上传请求,第一上传请求包括第一对象文件,所述装置包括第一位图,对于第一位图包括的比特位以及该比特位对应的哈希值,该比特位用于指示所述装置中是否保存该哈希值对应的对象文件。由于确定模块基于第一位图和第一哈希值,确定所述装置是否保存第二对象文件,第一哈希值是基于第一对象文件的文件标识得到的,第二对象文件的文件标识和第二对象文件的文件标识相同。在保存第二对象文件时,保存模块将第二对象文件替换为第一对象文件,在没有保存第二对象文件时,保存模块保存第一对象文件。其中,第一对象文件和第二对象文件是该文件标识对应的两个不同版本的文件,第二对象文件是该文件标识对应的老版本文件。由于可以基于第一位图和第一哈希值确定所述装置是否保存第二对象文件,从而在上传文件时,能够及时发现是否保存该文件标识对应的第二对象文件,在保存该文件标识对应的第二对象文件时,将第二对象文件替换为第一对象文件,从而避免保存该文件标识对应的不同版本的对象文件,节省了存储空间。。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7示出了本申请一个示例性实施例提供的电子设备700的结构框图。该电子设备700可以是上述存储节点,该存储节点可以为服务器,或计算机等。通常,电子设备700包括有:处理器701和存储器702。
处理器701可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器701可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器701也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器701可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器701还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器702可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器702还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器702中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器701所执行以实现本申请中方法实施例提供的存储对象文件的方法。
在一些实施例中,电子设备700还可选包括有:外围设备接口703和至少一个外围设备。处理器701、存储器702和外围设备接口703之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口703相连。具体地,外围设备包括:射频电路704、显示屏705、摄像头组件706、音频电路707、定位组件708和电源709中的至少一种。
外围设备接口703可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器701和存储器702。在一些实施例中,处理器701、存储器702和外围设备接口703被集成在同一芯片或电路板上;在一些其他实施例中,处理器701、存储器702和外围设备接口703中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路704用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路704通过电磁信号与通信网络以及其他通信设备进行通信。射频电路704将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路704包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路704可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路704还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏705用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏705是触摸显示屏时,显示屏705还具有采集在显示屏705的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器701进行处理。此时,显示屏705还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏705可以为一个,设置在电子设备700的前面板;在另一些实施例中,显示屏705可以为至少两个,分别设置在电子设备700的不同表面或呈折叠设计;在另一些实施例中,显示屏705可以是柔性显示屏,设置在电子设备700的弯曲表面上或折叠面上。甚至,显示屏705还可以设置成非矩形的不规则图形,也即异形屏。显示屏705可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件706用于采集图像或视频。可选地,摄像头组件706包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件706还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路707可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器701进行处理,或者输入至射频电路704以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在电子设备700的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器701或射频电路704的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路707还可以包括耳机插孔。
定位组件708用于定位电子设备700的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件708可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源709用于为电子设备700中的各个组件进行供电。电源709可以是交流电、直流电、一次性电池或可充电电池。当电源709包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,电子设备700还包括有一个或多个传感器710。该一个或多个传感器710包括但不限于:加速度传感器711、陀螺仪传感器712、压力传感器713、指纹传感器714、光学传感器715以及接近传感器716。
加速度传感器711可以检测以电子设备700建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器711可以用于检测重力加速度在三个坐标轴上的分量。处理器701可以根据加速度传感器711采集的重力加速度信号,控制显示屏705以横向视图或纵向视图进行用户界面的显示。加速度传感器711还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器712可以检测电子设备700的机体方向及转动角度,陀螺仪传感器712可以与加速度传感器711协同采集用户对电子设备700的3D动作。处理器701根据陀螺仪传感器712采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器713可以设置在电子设备700的侧边框和/或显示屏705的下层。当压力传感器713设置在电子设备700的侧边框时,可以检测用户对电子设备700的握持信号,由处理器701根据压力传感器713采集的握持信号进行左右手识别或快捷操作。当压力传感器713设置在显示屏705的下层时,由处理器701根据用户对显示屏705的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器714用于采集用户的指纹,由处理器701根据指纹传感器714采集到的指纹识别用户的身份,或者,由指纹传感器714根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器701授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器714可以被设置在电子设备700的正面、背面或侧面。当电子设备700上设置有物理按键或厂商Logo时,指纹传感器714可以与物理按键或厂商Logo集成在一起。
光学传感器715用于采集环境光强度。在一个实施例中,处理器701可以根据光学传感器715采集的环境光强度,控制显示屏705的显示亮度。具体地,当环境光强度较高时,调高显示屏705的显示亮度;当环境光强度较低时,调低显示屏705的显示亮度。在另一个实施例中,处理器701还可以根据光学传感器715采集的环境光强度,动态调整摄像头组件706的拍摄参数。
接近传感器716,也称距离传感器,通常设置在电子设备700的前面板。接近传感器716用于采集用户与电子设备700的正面之间的距离。在一个实施例中,当接近传感器716检测到用户与电子设备700的正面之间的距离逐渐变小时,由处理器701控制显示屏705从亮屏状态切换为息屏状态;当接近传感器716检测到用户与电子设备700的正面之间的距离逐渐变大时,由处理器701控制显示屏705从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图7中示出的结构并不构成对电子设备700的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种存储对象文件的方法,其特征在于,所述方法包括:
第一存储节点接收第一上传请求,所述第一上传请求包括第一对象文件,所述第一存储节点包括第一位图,所述第一位图中的多个比特位与多个哈希值一一对应,对于所述第一位图包括的比特位以及所述比特位对应的哈希值,所述比特位用于指示所述第一存储节点中是否保存所述哈希值对应的对象文件;
所述第一存储节点基于第一位图和第一哈希值,确定所述第一存储节点是否保存有第二对象文件,所述第一哈希值是对所述第一对象文件的文件标识进行哈希运算得到的,所述第二对象文件的文件标识和所述第一对象文件的文件标识相同;
所述第一存储节点在已经保存有所述第二对象文件时,将所述第二对象文件替换为所述第一对象文件,在没有保存所述第二对象文件时,保存所述第一对象文件。
2.如权利要求1所述的方法,其特征在于,所述第一存储节点保存所述第一对象文件之后,还包括:
所述第一存储设备设置目标比特位用于指示所述第一存储节点保存所述第一对象文件,所述目标比特位是所述第一位图中的与所述第一哈希值相对应的比特位。
3.如权利要求1或2所述的方法,其特征在于,所述第一存储节点基于第一位图和第一哈希值,确定所述第一存储节点是否保存有第二对象文件,包括:
所述第一存储节点基于所述第一哈希值和第一个数,确定用于保存所述第一对象文件的第二存储节点,所述第一个数为在线状态的存储节点个数;
在所述第一存储节点和所述第二存储节点是同一存储节点时,所述第一存储节点基于第一位图和第一哈希值,确定所述第一存储节点是否保存有第二对象文件。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
在所述第一存储节点和所述第二存储节点是不同存储节点时,所述第一存储节点向所述第二存储节点发送所述第一上传请求,所述第一上传请求用于触发所述第二存储节点保存所述第一对象文件。
5.如权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述第一存储节点接收下载请求,所述下载请求包括所述第一对象文件的文件标识;
所述第一存储节点基于所述文件标识获取所述第一对象文件;
所述第一存储节点发送所述第一对象文件。
6.如权利要求5所述的方法,其特征在于,所述第一存储节点基于所述文件标识获取所述第一对象文件,包括:
所述第一存储节点基于所述第一哈希值和第一个数,确定用于保存所述第一对象文件的第二存储节点,所述第一个数为在保存所述第一对象文件时在线状态的存储节点个数,所述第一哈希值是基于所述文件标识得到的;
在所述第一存储节点和所述第二存储节点是不同存储节点时,所述第一存储节点向所述第二存储节点发送所述下载请求,所述下载请求用于触发所述第二存储节点获取所述第一对象文件;
所述第一存储节点接收所述第二存储节点发送的所述第一对象文件。
7.如权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述第一存储节点向管理设备发送所述第一位图,以使所述管理设备基于第二位图和所述第一位图确定第一哈希值集合和第二哈希值集合,所述第二位图是第三存储节点中的位图,所述第一存储节点和所述第三存储节点互相备份,所述第一哈希值集合包括的每个哈希值对应的对象文件保存在第一存储节点且未保存在第三存储节点中,所述第二哈希值集合包括的每个哈希值对应的对象文件保存在所述第三存储节点且未保存在所述第一存储节点中;
所述第一存储节点向所述第三存储节点发送所述第一哈希值集合中的每个哈希值对应的对象文件,以使所述第三存储节点保存所述第一哈希值集合中的每个哈希值对应的对象文件。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
所述第一存储节点接收所述第三存储节点发送的所述第二哈希值集合中的每个哈希值对应的对象文件;
所述第一存储节点保存所述第二哈希值集合中的每个哈希值对应的对象文件。
9.一种存储对象文件的装置,其特征在于,所述装置包括:
接收模块,用于接收第一上传请求,所述第一上传请求包括第一对象文件,所述装置包括第一位图,所述第一位图中的多个比特位与多个哈希值一一对应,对于所述第一位图包括的比特位以及所述比特位对应的哈希值,所述比特位用于指示所述装置中是否保存所述哈希值对应的对象文件;
确定模块,用于基于第一位图和第一哈希值,确定所述装置是否保存有第二对象文件,所述第一哈希值是对所述第一对象文件的文件标识进行哈希运算得到的,所述第二对象文件的文件标识和所述第一对象文件的文件标识相同;
保存模块,用于在已经保存有所述第二对象文件时,将所述第二对象文件替换为所述第一对象文件,在没有保存所述第二对象文件时,保存所述第一对象文件。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
第三发送模块,用于向管理设备发送所述第一位图,以使所述管理设备基于第二位图和所述第一位图确定第一哈希值集合和第二哈希值集合,所述第二位图是第三存储节点中的位图,所述装置和所述第三存储节点互相备份,所述第一哈希值集合包括的每个哈希值对应的对象文件保存在装置且未保存在第三存储节点中,所述第二哈希值集合包括的每个哈希值对应的对象文件保存在所述第三存储节点且未保存在所述装置中;
所述第三发送模块,还用于向所述第三存储节点发送所述第一哈希值集合中的每个哈希值对应的对象文件,以使所述第三存储节点保存所述第一哈希值集合中的每个哈希值对应的对象文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110644631.7A CN113282243B (zh) | 2021-06-09 | 2021-06-09 | 存储对象文件的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110644631.7A CN113282243B (zh) | 2021-06-09 | 2021-06-09 | 存储对象文件的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113282243A CN113282243A (zh) | 2021-08-20 |
CN113282243B true CN113282243B (zh) | 2022-12-02 |
Family
ID=77284036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110644631.7A Active CN113282243B (zh) | 2021-06-09 | 2021-06-09 | 存储对象文件的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113282243B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115357384B (zh) * | 2022-08-17 | 2024-02-02 | 广州鼎甲计算机科技有限公司 | 重复数据删除存储系统的空间回收方法和装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102843403A (zh) * | 2011-06-23 | 2012-12-26 | 盛大计算机(上海)有限公司 | 基于分布式文件系统的文件处理方法、系统及客户端 |
CN103729225B (zh) * | 2014-01-22 | 2016-09-28 | 中国人民解放军国防科学技术大学 | 一种基于内容分块的远程文件实时更新方法 |
CN105117489B (zh) * | 2015-09-21 | 2018-10-19 | 北京金山安全软件有限公司 | 一种数据库管理方法、装置及电子设备 |
CN107220005A (zh) * | 2017-05-27 | 2017-09-29 | 郑州云海信息技术有限公司 | 一种数据操作方法及系统 |
CN111147226B (zh) * | 2018-11-02 | 2023-07-18 | 杭州海康威视系统技术有限公司 | 数据存储方法、装置及存储介质 |
CN110399340A (zh) * | 2019-06-28 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 一种文件处理方法及装置 |
CN112241336A (zh) * | 2019-07-19 | 2021-01-19 | 伊姆西Ip控股有限责任公司 | 用于备份数据的方法、设备和计算机程序产品 |
CN111522883B (zh) * | 2020-04-28 | 2023-04-28 | 杭州海康威视系统技术有限公司 | 对象数据的备份方法、装置、设备及存储介质 |
-
2021
- 2021-06-09 CN CN202110644631.7A patent/CN113282243B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113282243A (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108881030B (zh) | 灰度发布场景下的路由方法及装置 | |
CN110058935B (zh) | 日志级别调整方法、装置及系统、可读存储介质 | |
CN110147380B (zh) | 数据更新方法、装置、服务器以及存储介质 | |
CN110659127A (zh) | 一种处理任务的方法、装置及系统 | |
CN110753198B (zh) | 存储图像数据的方法和装置 | |
CN110535890B (zh) | 文件上传的方法和装置 | |
CN111897465B (zh) | 弹窗显示方法、装置、设备及存储介质 | |
CN110636144A (zh) | 数据下载的方法和装置 | |
CN110704324A (zh) | 应用调试方法、装置及存储介质 | |
CN109828915B (zh) | 一种调试应用程序的方法、装置、设备和存储介质 | |
CN113282243B (zh) | 存储对象文件的方法及装置 | |
CN112181915B (zh) | 执行业务的方法、装置、终端和存储介质 | |
CN111324293B (zh) | 一种存储系统、存储数据的方法、读取数据的方法及装置 | |
CN110086814B (zh) | 一种数据获取的方法、装置及存储介质 | |
CN111881423A (zh) | 限制功能使用授权方法、装置、系统 | |
CN111275607A (zh) | 界面显示方法、装置、计算机设备及存储介质 | |
CN114143280B (zh) | 会话显示方法、装置、电子设备及存储介质 | |
CN111694521B (zh) | 存储文件的方法、装置及系统 | |
CN110471613B (zh) | 存储数据的方法、读取数据的方法、装置及系统 | |
CN112698787A (zh) | 写数据方法、装置及计算机存储介质 | |
CN109618018B (zh) | 用户头像显示方法、装置、终端、服务器及存储介质 | |
CN111158791A (zh) | 配置文件更新方法、装置及系统、存储介质 | |
CN108632459B (zh) | 通讯信息的通知方法、装置及计算机可读存储介质 | |
CN112711636A (zh) | 数据同步方法、装置、设备及介质 | |
CN111131490A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |