CN115878046B - 数据处理方法、系统、装置、存储介质及电子设备 - Google Patents

数据处理方法、系统、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN115878046B
CN115878046B CN202310029731.8A CN202310029731A CN115878046B CN 115878046 B CN115878046 B CN 115878046B CN 202310029731 A CN202310029731 A CN 202310029731A CN 115878046 B CN115878046 B CN 115878046B
Authority
CN
China
Prior art keywords
storage
storage node
hash
disk
node
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
Application number
CN202310029731.8A
Other languages
English (en)
Other versions
CN115878046A (zh
Inventor
尹明俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310029731.8A priority Critical patent/CN115878046B/zh
Publication of CN115878046A publication Critical patent/CN115878046A/zh
Application granted granted Critical
Publication of CN115878046B publication Critical patent/CN115878046B/zh
Priority to PCT/CN2023/114305 priority patent/WO2024148824A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Hardware Redundancy (AREA)

Abstract

本申请实施例提供了一种数据处理方法、系统、装置、存储介质及电子设备,其中,该方法包括:通过客户端连接分布式存储集群中的目标存储节点;在存在数据写入需求的情况下,根据目标存储节点存储的分布式哈希表索引待写入数据的各个副本所在存储节点,并控制副本所在存储节点将数据写入磁盘;在存在数据读取需求的情况下,根据目标存储节点存储的分布式哈希表索引存储有待读取数据的存储节点,并从存储有待读取数据的存储节点中的磁盘读取数据。通过本申请,解决了相关技术中分布式存储系统难以实现数据本地容灾及双活的问题,进而达到了实现数据本地容灾及双活,提升数据可靠性的效果。

Description

数据处理方法、系统、装置、存储介质及电子设备
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种数据处理方法、系统、装置、存储介质及电子设备。
背景技术
随着云计算等技术产业的发展,企业的数字化转型成为战略核心,而多数企业在数字化转型中面临着海量数据的存放、管理、优化和利用等挑战,当前存储中心的响应速度难以满足企业及时性、灵活性的存储需求。在传统存储中,存储过于依赖设备,需根据设备性能响应需求,而软件定义存储可按需求进行动态配置实现存储与应用更紧密的联系,提供更高的敏捷性,以策略管理驱动的高级功能匹配企业业务需求,用户管理数据请求直接传达至自动化软件,软件直接对应请求分配存储资源,无需人工干预。
软件定义存储(SDS,Software-defined Storage)指将存储物理资源通过抽象、池化整合,并通过智能软件实现存储资源的管理,实现控制平面和数据平面的解耦,最终以存储服务的形式提供给应用,满足应用按需(如容量、性能、服务质量、服务等级协议等)使用存储的需求。通常软件定义存储利用副本机制保证数据的高可靠,通过副本复制模块来保证副本的一致性和副本之间的数据同步,副本的索引机制依据一致性哈希算法实现,但是当业务有本地容灾或者本地双活需求时,在跨机房部署中软件定义存储集群无法保障数据副本均匀分布在多个机房间,使得不能良好实现本地容灾及双活。
针对相关技术中难以实现数据本地容灾及双活的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据处理方法、系统、装置、存储介质及电子设备,以至少解决相关技术中难以实现数据本地容灾及双活的问题。
根据本申请的一个实施例,提供了一种数据处理方法,包括:通过客户端连接分布式存储集群中的目标存储节点,其中,目标存储节点是分布式存储集群中的任意存储节点,分布式存储集群中的每个存储节点均存储有分布式哈希表,分布式哈希表用于表征存储域哈希环、存储节点哈希环以及磁盘哈希环之间的映射关系;在存在数据写入需求的情况下,根据目标存储节点存储的分布式哈希表索引待写入数据的各个副本所在存储节点,并控制副本所在存储节点将数据写入磁盘;在存在数据读取需求的情况下,根据目标存储节点存储的分布式哈希表索引存储有待读取数据的存储节点,并从存储有待读取数据的存储节点中的磁盘读取数据。
在一个示例性实施例中,分布式哈希表通过以下方式建立:将分布式存储集群中的多个存储节点划分至不同的存储域,获取各个存储域的特征值并设置每个存储域的虚拟节点个数,根据各个存储域的特征值以及虚拟节点个数生成存储域哈希环,其中,存储域哈希环上分布有各个存储域的虚拟节点,每个存储域的虚拟节点至少包含一个;对于每个存储域,获取各个存储节点的特征值并设置每个存储节点的虚拟节点个数,根据各个存储节点的特征值以及虚拟节点个数生成存储节点哈希环,其中,存储节点哈希环上分布有各个存储节点的虚拟节点,每个存储节点的虚拟节点至少包含一个;对于每个存储节点,获取各个磁盘的特征值并设置每个磁盘的虚拟节点个数,根据各个磁盘的特征值以及虚拟节点个数生成磁盘哈希环,其中,磁盘哈希环上分布有各个磁盘的虚拟节点,每个磁盘的虚拟节点至少包含一个;根据存储节点与存储域之间的归属关系建立各个存储节点哈希环与存储域哈希环之间的映射关系,根据磁盘与存储节点之间的归属关系建立各个磁盘哈希环与存储节点哈希环之间的映射关系,得到分布式哈希表。
在一个示例性实施例中,根据各个存储域的特征值以及虚拟节点个数生成存储域哈希环包括:在存储域的虚拟节点个数为一个的情况下,根据预设哈希算法对存储域的特征值计算哈希值,得到存储域的哈希值;在存储域的虚拟节点个数为多个的情况下,根据预设哈希算法对存储域的特征值计算哈希值,并基于得到的哈希值再次根据预设哈希算法计算哈希值,直至重复计算哈希值的次数达到存储域的虚拟节点个数,得到一个存储域的多个哈希值;根据各个存储域的哈希值在初始哈希环上分别设置存储域的虚拟节点,得到存储域哈希环。
在一个示例性实施例中,根据各个存储节点的特征值以及虚拟节点个数生成存储节点哈希环包括:在存储节点的虚拟节点个数为一个的情况下,根据预设哈希算法对存储节点的特征值计算哈希值,得到存储节点的哈希值;在存储节点的虚拟节点个数为多个的情况下,根据预设哈希算法对存储节点的特征值计算哈希值,并基于得到的哈希值再次根据预设哈希算法计算哈希值,直至重复计算哈希值的次数达到存储节点的虚拟节点个数,得到一个存储节点的多个哈希值;根据各个存储节点的哈希值在初始哈希环上分别设置存储节点的虚拟节点,得到存储节点哈希环。
在一个示例性实施例中,根据各个磁盘的特征值以及虚拟节点个数生成磁盘哈希环包括:在磁盘的虚拟节点个数为一个的情况下,根据预设哈希算法对磁盘的特征值计算哈希值,得到磁盘的哈希值;在磁盘的虚拟节点个数为多个的情况下,根据预设哈希算法对磁盘的特征值计算哈希值,并基于得到的哈希值再次根据预设哈希算法计算哈希值,直至计算哈希值的次数达到磁盘的虚拟节点个数,得到一个磁盘的多个哈希值;根据各个磁盘的哈希值在初始哈希环上分别设置磁盘的虚拟节点,得到磁盘哈希环。
在一个示例性实施例中,存储域的虚拟节点个数由存储域的重要程度确定,各个存储域的虚拟节点个数与存储域的重要程度呈正相关关系。
在一个示例性实施例中,存储节点的虚拟节点个数由存储节点的存储空间确定,各个存储节点的虚拟节点个数与存储节点的存储空间呈正相关关系。
在一个示例性实施例中,磁盘的虚拟节点个数由磁盘的存储空间确定,各个磁盘的虚拟节点个数与磁盘的存储空间呈正相关关系。
在一个示例性实施例中,在存在数据读取需求的情况下,根据目标存储节点存储的分布式哈希表索引存储有待读取数据的存储节点,并从存储有待读取数据的存储节点中的磁盘读取数据包括:判断目标存储节点是否存储有待读取数据,并在目标存储节点存储有待读取数据的情况下,将目标存储节点确定为目的存储节点,从目的存储节点的磁盘读取数据;在目标存储节点未存储待读取数据的情况下,判断目标存储节点所在存储域是否存在存储有待读取数据的存储节点,并在存在的情况下,将存储有待读取数据的存储节点确定为目的存储节点,从目的存储节点的磁盘读取数据;在目标存储节点所在存储域不存在存储有待读取数据的存储节点的情况下,确定与目标存储节点所在存储域距离最近的目的存储域,并目的存储域中存储有待读取数据的存储节点确定为目的存储节点,从目的存储节点的磁盘读取数据。
在一个示例性实施例中,该方法还包括:在目的存储节点所在存储域出现故障的情况下,从目的存储节点所在存储域以外的存储域重新确定目的存储节点,并从重新确定的目的存储节点的磁盘读取数据。
在一个示例性实施例中,在存在数据写入需求的情况下,根据目标存储节点存储的分布式哈希表索引待写入数据的各个副本所在存储节点,并控制副本所在存储节点将数据写入磁盘包括:确定待写入数据的副本的预设数量,从存储域哈希环的第一个虚拟节点开始顺时针确定预设数量的虚拟节点,并将待写入数据写入预设数量的虚拟节点指示的存储域的存储节点的磁盘中。
在一个示例性实施例中,该方法还包括:在分布式存储集群中的存储域存在故障的情况下,若预设数量的虚拟节点中包含故障存储域的虚拟节点,则跳过故障存储域的虚拟节点继续确定虚拟节点,直至得到不包含故障存储域的虚拟节点的预设数量的虚拟节点。
在一个示例性实施例中,该方法还包括:在分布式存储集群中的存储节点存在故障的情况下,在存储节点所在存储域执行数据恢复操作;在分布式存储集群中的磁盘存在故障的情况下,在磁盘所在存储域执行数据恢复操作。
在一个示例性实施例中,该方法还包括:在分布式存储集群中存在存储节点故障的情况下,重建存储节点哈希环和磁盘哈希环,并建立重建后的存储节点哈希环与重建前的存储域哈希环之间的映射关系,建立重建后的磁盘哈希环和重建后的存储节点哈希环之间的映射关系,得到更新后的分布式哈希表。
在一个示例性实施例中,该方法还包括:在分布式存储集群中存在磁盘缩容需求的情况下,重建磁盘哈希环,在分布式哈希表上删除重建前的磁盘哈希环和重建前的存储节点哈希环之间的映射关系,建立重建后的磁盘哈希环和重建前的存储节点哈希环之间的映射关系,得到更新后的分布式哈希表。
根据本申请的一个实施例,提供了一种数据处理系统,包括:多个机房;分布式存储集群,分布式存储集群中的多个存储节点部署在多个机房内,其中,多个存储节点划分至不同的存储域,同一存储域中的存储节点设部署在同一机房内,每个存储节点均存储有分布式哈希表,分布式哈希表用于表征存储域哈希环、存储节点哈希环以及磁盘哈希环之间的映射关系;客户端,与分布式存储集群中的任意一个存储节点连接,用于通过连接的存储节点执行数据读写操作。
在一个示例性实施例中,存储域哈希环上分布有各个存储域的虚拟节点,每个存储域的虚拟节点至少包含一个,各个存储域的虚拟节点个数与存储域的重要程度呈正相关关系。
在一个示例性实施例中,存储节点哈希环上分布有各个存储节点的虚拟节点,每个存储节点的虚拟节点至少包含一个,各个存储节点的虚拟节点个数与存储节点的存储空间呈正相关关系。
在一个示例性实施例中,磁盘哈希环上分布有各个磁盘的虚拟节点,每个磁盘的虚拟节点至少包含一个,各个磁盘的虚拟节点个数与磁盘的存储空间呈正相关关系。
根据本申请的另一个实施例,提供了一种数据处理装置,包括:连接单元,用于通过客户端连接分布式存储集群中的目标存储节点,其中,目标存储节点是分布式存储集群中的任意存储节点,分布式存储集群中的每个存储节点均存储有分布式哈希表,分布式哈希表用于表征存储域哈希环、存储节点哈希环以及磁盘哈希环之间的映射关系;写入单元,用于在存在数据写入需求的情况下,根据目标存储节点存储的分布式哈希表索引待写入数据的各个副本所在存储节点,并控制副本所在存储节点将数据写入磁盘;读取单元,用于在存在数据读取需求的情况下,根据目标存储节点存储的分布式哈希表索引存储有待读取数据的存储节点,并从存储有待读取数据的存储节点中的磁盘读取数据。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,由于利用哈希算法构建了存储域哈希环、节点哈希环与磁盘哈希环,并构建了三级哈希环之间的映射关系,得到了三级数据索引关系,在数据读取和写入时根据三级数据索引关系索引至分布式存储集群中,因此,可以解决难以实现数据本地容灾及双活的问题,达到实现数据本地容灾及双活,提升数据可靠性的效果。
附图说明
图1是本申请实施例的一种数据处理方法的移动终端的硬件结构框图;
图2是根据本申请实施例的数据处理系统的示意图;
图3是根据本申请实施例的分布式存储集群的示意图;
图4是根据本申请实施例的数据处理方法的流程图;
图5是根据本申请实施例的基于存储域哈希环执行数据写入操作的示意图一;
图6是根据本申请实施例的基于存储域哈希环执行数据写入操作的示意图二;
图7是根据本申请实施例的数据处理装置的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的一种数据处理方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的数据处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
图2是根据本申请实施例的数据处理系统的示意图,如图2所示,系统包括:
多个机房202。
具体的,机房202中设置多个存储设备,为客户端206侧的数据读写提供存储支持。
分布式存储集群204,分布式存储集群204中的多个存储节点部署在多个机房202内,其中,多个存储节点划分至不同的存储域,同一存储域中的存储节点设部署在同一机房202内,每个存储节点均存储有分布式哈希表,分布式哈希表用于表征存储域哈希环、存储节点哈希环以及磁盘哈希环之间的映射关系。
具体的,分布式存储集群204是指将多台存储设备中的存储空间聚合成一个能够给应用服务器提供统一访问接口和管理界面的存储池,应用可以通过该访问接口透明地访问和利用所有存储设备上的磁盘,可以充分发挥存储设备的性能和磁盘利用率,数据将会按照一定的规则从多台存储设备上存储和读取,以获得更高的并发访问性能。
图3是根据本申请实施例的分布式存储集群的示意图,如图3所示,将分布式存储集群204中的多个存储节点划分为多个存储域,每个存储域中包含至少一个存储节点,同一存储域的存储节点部署在同一机房202内,实现不同机房之间的存储隔离,实现数据本地容灾及双活。
其中,每个存储节点均存储有分布式哈希表,在数据读写时,可以通过分布式哈希表将待读取的数据从存储域哈希环映射至存储节点哈希环,再从存储节点哈希环映射至磁盘哈希环之间,从而索引至具体的位置,在该位置执行数据读写,无需额外构建索引元数据,节省元数据存储空间的同时,降低元数据复杂度。
客户端206,与分布式存储集群204中的任意一个存储节点连接,用于通过连接的存储节点执行数据读写操作。
具体的,客户端206通过与分布式存储集群204的节点连接进行数据的读写操作,由于每个存储节点均存储有整个分布式存储集群204的分布式哈希表,客户端206连接任意一个存储节点,即可通过分布式哈希表索引至待读取数据的位置、或待写入数据的位置。
可选地,在本申请实施例提供的数据处理系统中,存储域哈希环上分布有各个存储域的虚拟节点,每个存储域的虚拟节点至少包含一个,各个存储域的虚拟节点个数与存储域的重要程度呈正相关关系。
具体的,存储域的虚拟节点的个数可以设置,以实现数据更集中分布在某个存储域。例如,在分布式存储集群204中包含存储域A与存储域B,为了实现数据更集中分布在存储域A,则可以在存储域哈希环设置存储域A的虚拟节点个数为15,存储域B的虚拟节点个数为10。
可选地,在本申请实施例提供的数据处理系统中,存储节点哈希环上分布有各个存储节点的虚拟节点,每个存储节点的虚拟节点至少包含一个,各个存储节点的虚拟节点个数与存储节点的存储空间呈正相关关系。
具体的,按照存储节点的数据容量内存分配虚拟节点的个数,以实现数据的均匀分布。例如,存储节点A与存储节点B的数据容量内存比例为1.5比1,则可以在存储节点哈希环设置存储节点A的虚拟节点个数为15,存储节点B的虚拟节点个数为10。
可选地,在本申请实施例提供的数据处理系统中,磁盘哈希环上分布有各个磁盘的虚拟节点,每个磁盘的虚拟节点至少包含一个,各个磁盘的虚拟节点个数与磁盘的存储空间呈正相关关系。
具体的,按照磁盘的数据容量内存分配虚拟节点的个数,以实现数据的均匀分布。例如,磁盘A与磁盘B的数据容量内存比例为1.5比1,则可以在磁盘哈希环设置磁盘A中的虚拟节点个数为15,磁盘B中的虚拟节点个数为10。
在本实施例中提供了一种运行于移动终端的数据处理方法,图4是根据本申请实施例的数据处理方法的流程图,如图4所示,该流程包括如下步骤:
步骤S402,通过客户端连接分布式存储集群中的目标存储节点,其中,目标存储节点是分布式存储集群中的任意存储节点,分布式存储集群中的每个存储节点均存储有分布式哈希表,分布式哈希表用于表征存储域哈希环、存储节点哈希环以及磁盘哈希环之间的映射关系。
需要说明的是,分布式哈希表,也即DHT(distributed hash table),是分布式计算系统中的一类,用来将一个键的集合分散到所有在分布式系统中的节点,其中,节点是指哈希表中的存储位置。本实施例中分布式哈希表包含三级哈希环,具体包括存储域的哈希环、节点的哈希环以及磁盘哈希环三类,用于表征存储域哈希环、存储节点哈希环以及磁盘哈希环之间的映射关系。
其中,计算各个存储域的特征值唯一对应的哈希值,并根据哈希值将存储域的虚拟节点排布在哈希环上,得到存储域哈希环;计算各个存储节点的特征值唯一对应的哈希值,并根据哈希值将存储节点的虚拟节点排布在哈希环上,得到存储节点哈希环;计算各个磁盘的特征值唯一对应的哈希值,并根据哈希值将磁盘的虚拟节点排布在哈希环上,得到磁盘哈希环。
具体的,在对客户端信息进行响应时,需要通过客户端连接分布式存储集群中的存储节点,其中,分布式存储集群的作用为应用可以通过该访问接口透明地访问和利用所有存储设备上的磁盘,可以充分发挥存储设备的性能和磁盘利用率,由于本实施例中每个存储节点中包含分布式哈希表,客户端接入任意一个存储节点,即可通过分布式哈希表索引至分布式存储集群中的存储节点,存储节点中含有存储单元,也即存储引擎,用于将数据写入磁盘或读取磁盘中的内容。
步骤S404,在存在数据写入需求的情况下,根据目标存储节点存储的分布式哈希表索引待写入数据的各个副本所在存储节点,并控制副本所在存储节点将数据写入磁盘。
具体的,当客户端侧发出数据写入申请时,客户端连接分布式存储集群中的任意一个节点,其中,该节点作为目标存储节点,依据目标存储节点中存储的三级哈希环的一一映射关系,索引到存在写入申请的数据所有副本的位置,然后将写请求转发给所有副本所在的存储节点中,由各个节点的本地存储单元完成写入操作,将数据写入磁盘。
步骤S406,在存在数据读取需求的情况下,根据目标存储节点存储的分布式哈希表索引存储有待读取数据的存储节点,并从存储有待读取数据的存储节点中的磁盘读取数据。
具体的,当客户端侧发出数据读取申请时,客户端连接分布式存储集群中的任意一个节点,其中,该节点作为目标存储节点,依据目标存储节点中存储的三级哈希环的一一映射关系,索引到存储有待读取数据的距离客户端最近的所有副本的位置,然后将读请求转发给该副本所在的存储节点中,从存储有读取申请数据的存储节点的存储单元进行读取数据操作。
通过上述步骤,解决了难以实现数据本地容灾及双活的问题,达到了实现数据本地容灾及双活,提升数据可靠性的效果。
其中,上述步骤的执行主体可以为服务器、终端等,但不限于此。
步骤S404和步骤S406的执行顺序是可以互换的,即可以先执行步骤S406,然后再执行S404。
可选地,在本申请实施例提供的数据处理方法中,分布式哈希表通过以下方式建立:将分布式存储集群中的多个存储节点划分至不同的存储域,获取各个存储域的特征值并设置每个存储域的虚拟节点个数,根据各个存储域的特征值以及虚拟节点个数生成存储域哈希环,其中,存储域哈希环上分布有各个存储域的虚拟节点,每个存储域的虚拟节点至少包含一个;对于每个存储域,获取各个存储节点的特征值并设置每个存储节点的虚拟节点个数,根据各个存储节点的特征值以及虚拟节点个数生成存储节点哈希环,其中,存储节点哈希环上分布有各个存储节点的虚拟节点,每个存储节点的虚拟节点至少包含一个;对于每个存储节点,获取各个磁盘的特征值并设置每个磁盘的虚拟节点个数,根据各个磁盘的特征值以及虚拟节点个数生成磁盘哈希环,其中,磁盘哈希环上分布有各个磁盘的虚拟节点,每个磁盘的虚拟节点至少包含一个;根据存储节点与存储域之间的归属关系建立各个存储节点哈希环与存储域哈希环之间的映射关系,根据磁盘与存储节点之间的归属关系建立各个磁盘哈希环与存储节点哈希环之间的映射关系,得到分布式哈希表。
具体的,分布式存储集群包含多个存储域,每个存储域包含唯一的特征值,例如,UUID值(通用唯一识别码,Universally Unique Identifier),根据存储域特征值计算得到存储域唯一对应的哈希值,根据存储域哈希值建立虚拟节点,将虚拟节点排布在哈希环,即可得到存储域哈希环,需要说明的是,为使得数据更集中分布在某个存储域,不同存储域可以设置有不同数量的虚拟节点。
存储域中包含多个存储节点,每个存储节点包含唯一的特征值,根据存储节点特征值计算得到存储节点唯一对应的哈希值,根据存储域哈希值建立虚拟节点,将虚拟节点排布在哈希环,即可得到存储节点哈希环,需要说明的是,为使得数据均匀分布在同一存储域的各个存储节点,不同存储节点可以根据存储容量设置有不同数量的虚拟节点。
存储节点中包含多个磁盘,每个磁盘包含唯一的特征值,根据磁盘特征值计算得到磁盘唯一对应的哈希值,根据存储域哈希值建立虚拟节点,将虚拟节点排布在哈希环,即可得到磁盘哈希环,需要说明的是,为使得数据均匀分布在同一存储域的各个磁盘,不同磁盘可以根据存储容量设置有不同数量的虚拟节点。
根据存储域、存储节点以及磁盘的从属关系可以进一步得到存储域哈希环和存储节点哈希环的映射关系,存储节点哈希环和磁盘哈希环的映射关系,从而得到分布式哈希。
可选地,在本申请实施例提供的数据处理方法中,根据各个存储域的特征值以及虚拟节点个数生成存储域哈希环包括:在存储域的虚拟节点个数为一个的情况下,根据预设哈希算法对存储域的特征值计算哈希值,得到存储域的哈希值;在存储域的虚拟节点个数为多个的情况下,根据预设哈希算法对存储域的特征值计算哈希值,并基于得到的哈希值再次根据预设哈希算法计算哈希值,直至重复计算哈希值的次数达到存储域的虚拟节点个数,得到一个存储域的多个哈希值;根据各个存储域的哈希值在初始哈希环上分别设置存储域的虚拟节点,得到存储域哈希环。
具体的,存储域哈希值的确定由存储域的虚拟节点的个数以及特征值利用哈希算法计算得到。
可选地,在本申请实施例提供的数据处理方法中,存储域的虚拟节点个数由存储域的重要程度确定,各个存储域的虚拟节点个数与存储域的重要程度呈正相关关系。
具体的,虚拟节点的数量可以表示存储域的重要性程度,也即当虚拟节点个数最多的存储域即为主存储域,其余存储域为备存储域,也即虚拟节点个数与存储域的主次关系呈现正相关。
例如,分布式存储集群包含存储域A和存储域B,存储域B为主存储域,设置3个虚拟节点,存储域A为备存储域,设置一个虚拟节点。
存储域A的虚拟节点个数为一个,对存储域的唯一特征值通过哈希算法计算进行一次哈希计算,得到存储域A的哈希值。存储域B的虚拟节点个数为三个,根据哈希算法以及唯一的存储域特征值计算得到第一哈希值,将第一哈希值再利用哈希算法计算得到第二哈希值,最后利用哈希算法将第二哈希值进行代入计算得到第三哈希值,则存储域B的哈希值包括三个:第一哈希值、第二哈希值以及第三哈希值。其中,哈希算法是指将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串表示为哈希值。
进一步的,在得到存储域A和存储域B的四个虚拟节点的哈希值后,在哈希环上对虚拟节点进行设置,也即根据哈希值映射在存储节域哈希环上的位置得到存储域哈希环。
可选地,在本申请实施例提供的数据处理方法中,根据各个存储节点的特征值以及虚拟节点个数生成存储节点哈希环包括:在存储节点的虚拟节点个数为一个的情况下,根据预设哈希算法对存储节点的特征值计算哈希值,得到存储节点的哈希值;在存储节点的虚拟节点个数为多个的情况下,根据预设哈希算法对存储节点的特征值计算哈希值,并基于得到的哈希值再次根据预设哈希算法计算哈希值,直至重复计算哈希值的次数达到存储节点的虚拟节点个数,得到一个存储节点的多个哈希值;根据各个存储节点的哈希值在初始哈希环上分别设置存储节点的虚拟节点,得到存储节点哈希环。
具体的,存储域包含多个存储节点,三级哈希环中存储域哈希环与存储节点哈希环存在从属关系,每个存储域关联的存储节点哈希环由该存储域中的各个存储节点的唯一特征值以及存储节点的虚拟节点个数确定。
可选地,在本申请实施例提供的数据处理方法中,存储节点的虚拟节点个数由存储节点的存储空间确定,各个存储节点的虚拟节点个数与存储节点的存储空间呈正相关关系。
具体的,存储节点哈希环中各个存储节点的虚拟节点个数由节点存储总量归一化处理后得出,例如,存储域中包含存储节点A和存储节点B,存储节点A的存储空间内存大小与存储节点B的存储空间内存大小比例为3比1,则当存储节点A的虚拟节点个数为3时,存储节点B的虚拟节点的个数1个,存储空间越大,虚拟节点的个数越多,也即重要性程度越大。
例如,存储节点B的虚拟节点个数为一个,存储节点B的哈希值按照哈希算法以及存储节点的特征值进行一次哈希计算得到;存储节点A的虚拟节点个数为三个,首先利用哈希算法以及该存储节点的特征值计算得到第一存储节点哈希值,将第一存储节点哈希值继续利用哈希算法以及存储节点特征值计算得到第二存储节点哈希值;基于第二存储节点哈希值,并利用哈希算法以及存储节点特征值计算得到第三存储节点哈希值,使得计算哈希值的次数为三次,与虚拟节点的个数保持一致,得到一个存储节点的哈希值包括:第一存储节点哈希值、第二存储节点哈希值以及第三存储节点哈希值。进一步的,在得到存储节点A和存储节点B的四个虚拟节点的哈希值后,在哈希环上对虚拟节点进行设置,也即根据哈希值映射在存储节点哈希环上的位置,得到存储节点哈希环。
可选地,在本申请实施例提供的数据处理方法中,根据各个磁盘的特征值以及虚拟节点个数生成磁盘哈希环包括:在磁盘的虚拟节点个数为一个的情况下,根据预设哈希算法对磁盘的特征值计算哈希值,得到磁盘的哈希值;在磁盘的虚拟节点个数为多个的情况下,根据预设哈希算法对磁盘的特征值计算哈希值,并基于得到的哈希值再次根据预设哈希算法计算哈希值,直至计算哈希值的次数达到磁盘的虚拟节点个数,得到一个磁盘的多个哈希值;根据各个磁盘的哈希值在初始哈希环上分别设置磁盘的虚拟节点,得到磁盘哈希环。
具体的,存储节点中包含多个磁盘,三级哈希环中存储节点哈希环与磁盘哈希环存在从属关系,每个存储节点关联的磁盘哈希环由该存储节点中的各个磁盘的唯一特征值以及磁盘的虚拟节点个数确定。
可选地,在本申请实施例提供的数据处理方法中,磁盘的虚拟节点个数由磁盘的存储空间确定,各个磁盘的虚拟节点个数与磁盘的存储空间呈正相关关系。
具体的,磁盘哈希环中各个磁盘的虚拟节点个数由磁盘存储总量归一化处理后得出,例如,存储节点中包含磁盘A和磁盘B,磁盘A的存储空间内存大小与磁盘B的存储空间内存大小比例为3比1,则当磁盘A的虚拟节点个数为3时,磁盘B的虚拟节点的个数1个,磁盘的存储空间越大,虚拟节点的个数越多,也即重要性程度越大。
例如,磁盘B的虚拟节点的个数为一个,磁盘B的哈希值按照哈希算法以及磁盘的特征值进行一次哈希计算得到;磁盘A的虚拟节点的个数为三个,首先利用哈希算法以及该磁盘的特征值计算得到第一磁盘哈希值,将第一磁盘哈希值继续利用哈希算法以及磁盘特征值计算得到第二磁盘哈希值;基于第二磁盘哈希值,并利用哈希算法以及磁盘特征值计算得到第三磁盘哈希值,使得计算哈希值的次数为三次,与磁盘的个数保持一致,得到一个磁盘的哈希值包括:第一磁盘哈希值、第二磁盘哈希值以及第三磁盘哈希值。
进一步的,在得到磁盘A和磁盘B的四个虚拟节点的哈希值后,根据计算所得的磁盘哈希值,在哈希环上对虚拟节点进行设置,也即根据哈希值映射在磁盘哈希环上的位置,可以建立数据与磁盘哈希环的映射关系。
可选地,在本申请实施例提供的数据处理方法中,在存在数据读取需求的情况下,根据目标存储节点存储的分布式哈希表索引存储有待读取数据的存储节点,并从存储有待读取数据的存储节点中的磁盘读取数据包括:判断目标存储节点是否存储有待读取数据,并在目标存储节点存储有待读取数据的情况下,将目标存储节点确定为目的存储节点,从目的存储节点的磁盘读取数据;在目标存储节点未存储待读取数据的情况下,判断目标存储节点所在存储域是否存在存储有待读取数据的存储节点,并在存在的情况下,将存储有待读取数据的存储节点确定为目的存储节点,从目的存储节点的磁盘读取数据;在目标存储节点所在存储域不存在存储有待读取数据的存储节点的情况下,确定与目标存储节点所在存储域距离最近的目的存储域,并目的存储域中存储有待读取数据的存储节点确定为目的存储节点,从目的存储节点的磁盘读取数据。
具体的,当需要从软件定义存储中读取数据时,需要按照目标节点中存储的三级哈希环的映射关系进行读取,也即,按照数据与存储节点、存储域的映射关系进行读取。
具体的,在客户端侧发送读取需求时,按照副本的拓扑关系中最近节点的副本,首先判断目标存储节点是否存储需要读取的数据,当确定存在时,将该目标存储节点确定为目的存储节点,并从目的存储节点中读取数据;当未在目标存储节点中查找到,需要判断目标存储节点所在的存储域中是否包含数据。
当该存储域中包含所需数据时,查找到包含所需数据的存储节点,从该存储节点中读取数据;当该存储域中不存在所需数据时,也即确定与目标存储节点所在存储域距离最近的存储域,从该存储域中含有所需数据的存储节点中读取数据。
可选地,在本申请实施例提供的数据处理方法中,该方法还包括:在目的存储节点所在存储域出现故障的情况下,从目的存储节点所在存储域以外的存储域重新确定目的存储节点,并从重新确定的目的存储节点的磁盘读取数据。
具体的,当目的存储节点所在的存储域出现故障时,需要从该存储节点所在的存储域之外数据所有副本中拓扑关系中最近节点的副本,也即目的存储节点所在存储域以外的最近的存储域中重新确定存储节点,例如,若该存储节点所在的存储域相邻的存储域中的存储节点存在数据副本,则将相邻的存储域中的存储节点确定为目的存储节点,从新确定的目的存储节点的磁盘中读取数据。
可选地,在本申请实施例提供的数据处理方法中,在存在数据写入需求的情况下,根据目标存储节点存储的分布式哈希表索引待写入数据的各个副本所在存储节点,并控制副本所在存储节点将数据写入磁盘包括:确定待写入数据的副本的预设数量,从存储域哈希环的第一个虚拟节点开始顺时针确定预设数量的虚拟节点,并将待写入数据写入预设数量的虚拟节点指示的存储域的存储节点的磁盘中。
具体的,存储域可将单一集群中多个节点间进行隔离,以多副本机制实现数据本地容灾,也即在某一节点或者分布式存储集群中存储多个副本,存储域与存储域之间互为对方副本也即按照存储域划分副本,例如,存储域包含两个,分别是A存储域以及B存储域,A存储域中各个节点存储的数据在B存储域中有对应的副本。具体的,确定写入数据的副本的数量,从存储域哈希环初始位置开始顺时针运动,“遇到”的第一个虚拟节点开始确定为写入数据的第一个副本,将待写入的数据写入到哈希环的多个副本中,也即将数据到存储域哈希环中的存储节点的磁盘中。
图5是根据本申请实施例的基于存储域哈希环执行数据写入操作的示意图一,如图5所示,当哈希环上设置有两个存储域时,在待写入数据为数a时,按照顺时针顺序,初始位置顺时针寻找到的第一个存储域(存储域A)即为第一副本,在第一副本后按照顺时针找到的下一存储域(存储域B)即为第二副本位置。在待写入数据为数b时,按照顺时针顺序,初始位置顺时针寻找到的第一个存储域(存储域C)即为第一副本,在第一副本后按照顺时针找到的下一个非第一副本所在的存储域(存储域A)即为第二副本位置。
图6是根据本申请实施例的基于存储域哈希环执行数据写入操作的示意图二,如图6所示,当哈希环上设置有三个存储域时,在待写入数据为数a时,按照顺时针顺序,初始位置顺时针寻找到的第一个存储域(存储域A)即为第一副本,在第一副本后按照顺时针找到的下一存储域(存储域B)即为第二副本位置,在第二副本后按照顺时针找到的下一存储域(存储域C)即为第三副本位置。在待写入数据为数b时,按照顺时针顺序,初始位置顺时针寻找到的第一个存储域(存储域C)即为第一副本,在第一副本后按照顺时针找到的下一存储域(存储域A)即为第二副本位置,在第二副本后按照顺时针找到下一个非第一副本所在的存储域(存储域C)即为第三副本位置。
可选地,在本申请实施例提供的数据处理方法中,该方法还包括:在分布式存储集群中的存储域存在故障的情况下,若预设数量的虚拟节点中包含故障存储域的虚拟节点,则跳过故障存储域的虚拟节点继续确定虚拟节点,直至得到不包含故障存储域的虚拟节点的预设数量的虚拟节点。
具体的,故障域可以表示为单一集群跨存储域的划分,当分布式存储集群中的存储域包含了故障域,当存在读写需求时,检索含有读写需求的所有虚拟节点是否存在于故障域中,若有虚拟节点存在于故障域,则跳过该节点重新确定新的写入或读取数据的虚拟节点,直至含有读写需求的所有虚拟节点均不存在于故障域中。
可选地,在本申请实施例提供的数据处理方法中,该方法还包括:在分布式存储集群中的存储节点存在故障的情况下,在存储节点所在存储域执行数据恢复操作;在分布式存储集群中的磁盘存在故障的情况下,在磁盘所在存储域执行数据恢复操作。
例如,当数据a应落在存储域中的存储节点A和B中,存储域包含三个存储节点,分别为A、B、C,当存储域中的存储节点A出现故障时,或者存储节点A中的磁盘出现故障时,需要将存储域的存储节点A的各个磁盘中的数据进行转移,移到下一存储域的存储节点中,也即转移至存储域的存储节点C中,其余部分保持不动,也即存储节点B中的数据保持不动。从而达到了不影响存储域哈希环的重建的情况下,保证数据符合不同存储域分布的可靠性的效果。
可选地,在本申请实施例提供的数据处理方法中,该方法还包括:在分布式存储集群中存在存储节点故障的情况下,重建存储节点哈希环和磁盘哈希环,并建立重建后的存储节点哈希环与重建前的存储域哈希环之间的映射关系,建立重建后的磁盘哈希环和重建后的存储节点哈希环之间的映射关系,得到更新后的分布式哈希表。
具体的,当分布式存储集群需要重建故障存储节点时,需要重建存储节点哈希环和磁盘哈希环,根据故障存储节点的特征值重建存储节点哈希环,根据故障存储节点的各个磁盘的特征值重建磁盘哈希环,将重建后的存储节点哈希环中的数据对应到重建前的存储域哈希环中,形成映射关系,将重建后的磁盘哈希环中的数据对应到重建后的存储节点哈希环中,形成一一映射关系,进而可以得到更新后的分布式哈希表。
可选地,在本申请实施例提供的数据处理方法中,该方法还包括:在分布式存储集群中存在磁盘缩容需求的情况下,重建磁盘哈希环,在分布式哈希表上删除重建前的磁盘哈希环和重建前的存储节点哈希环之间的映射关系,建立重建后的磁盘哈希环和重建前的存储节点哈希环之间的映射关系,得到更新后的分布式哈希表。
具体的,当分布式存储集群的节点中的磁盘不能存放更多的数据时,需要对磁盘进行扩容,另一方面当磁盘内空闲空间占用过大,需要对磁盘进行缩容。在扩容和缩容的需求下,需要将存储节点以及磁盘进行更新,也即在分布式哈希表中将重建前的存储节点以及磁盘的对应哈希环的映射关系删除,建立新的哈希环映射关系,根据新的哈希环映射关系,更新分布式哈希表。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种数据处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本申请实施例的数据处理装置的示意图,如图7所示,该装置包括连接单元70、写入单元71和读取单元72:
连接单元70,用于通过客户端连接分布式存储集群中的目标存储节点,其中,目标存储节点是分布式存储集群中的任意存储节点,分布式存储集群中的每个存储节点均存储有分布式哈希表,分布式哈希表用于表征存储域哈希环、存储节点哈希环以及磁盘哈希环之间的映射关系。
写入单元71,用于在存在数据写入需求的情况下,根据目标存储节点存储的分布式哈希表索引待写入数据的各个副本所在存储节点,并控制副本所在存储节点将数据写入磁盘。
读取单元72,用于在存在数据读取需求的情况下,根据目标存储节点存储的分布式哈希表索引存储有待读取数据的存储节点,并从存储有待读取数据的存储节点中的磁盘读取数据。
可选地,在本申请实施例提供的镜像的数据处理装置中,连接单元70包括:分布式哈希表通过以下方式建立:划分模块,用于将分布式存储集群中的多个存储节点划分至不同的存储域,获取各个存储域的特征值并设置每个存储域的虚拟节点个数,根据各个存储域的特征值以及虚拟节点个数生成存储域哈希环,其中,存储域哈希环上分布有各个存储域的虚拟节点,每个存储域的虚拟节点至少包含一个;第一获取模块,用于对于每个存储域,获取各个存储节点的特征值并设置每个存储节点的虚拟节点个数,根据各个存储节点的特征值以及虚拟节点个数生成存储节点哈希环,其中,存储节点哈希环上分布有各个存储节点的虚拟节点,每个存储节点的虚拟节点至少包含一个;第二获取模块,用于对于每个存储节点,获取各个磁盘的特征值并设置每个磁盘的虚拟节点个数,根据各个磁盘的特征值以及虚拟节点个数生成磁盘哈希环,其中,磁盘哈希环上分布有各个磁盘的虚拟节点,每个磁盘的虚拟节点至少包含一个;建立模块,用于根据存储节点与存储域之间的归属关系建立各个存储节点哈希环与存储域哈希环之间的映射关系,根据磁盘与存储节点之间的归属关系建立各个磁盘哈希环与存储节点哈希环之间的映射关系,得到分布式哈希表。
可选地,在本申请实施例提供的镜像的数据处理装置中,连接单元70包括:第一计算模块,用于在存储域的虚拟节点个数为一个的情况下,根据预设哈希算法对存储域的特征值计算哈希值,得到存储域的哈希值;第二计算模块,用于在存储域的虚拟节点个数为多个的情况下,根据预设哈希算法对存储域的特征值计算哈希值,并基于得到的哈希值再次根据预设哈希算法计算哈希值,直至重复计算哈希值的次数达到存储域的虚拟节点个数,得到一个存储域的多个哈希值;第一设置模块,用于根据各个存储域的哈希值在初始哈希环上分别设置存储域的虚拟节点,得到存储域哈希环。
可选地,在本申请实施例提供的镜像的数据处理装置中,连接单元70包括:第三计算模块,用于在存储节点的虚拟节点个数为一个的情况下,根据预设哈希算法对存储节点的特征值计算哈希值,得到存储节点的哈希值;第四计算模块,用于在存储节点的虚拟节点个数为多个的情况下,根据预设哈希算法对存储节点的特征值计算哈希值,并基于得到的哈希值再次根据预设哈希算法计算哈希值,直至重复计算哈希值的次数达到存储节点的虚拟节点个数,得到一个存储节点的多个哈希值;第二设置模块,用于根据各个存储节点的哈希值在初始哈希环上分别设置存储节点的虚拟节点,得到存储节点哈希环。
可选地,在本申请实施例提供的镜像的数据处理装置中,连接单元70包括:第五计算模块,用于在磁盘的虚拟节点个数为一个的情况下,根据预设哈希算法对磁盘的特征值计算哈希值,得到磁盘的哈希值;第六计算模块,用于在磁盘的虚拟节点个数为多个的情况下,根据预设哈希算法对磁盘的特征值计算哈希值,并基于得到的哈希值再次根据预设哈希算法计算哈希值,直至计算哈希值的次数达到磁盘的虚拟节点个数,得到一个磁盘的多个哈希值;第三设置模块,用于根据各个磁盘的哈希值在初始哈希环上分别设置磁盘的虚拟节点,得到磁盘哈希环。
可选地,在本申请实施例提供的镜像的数据处理装置中,连接单元70包括:第一确定模块,用于存储域的虚拟节点个数由存储域的重要程度确定,各个存储域的虚拟节点个数与存储域的重要程度呈正相关关系。
可选地,在本申请实施例提供的镜像的数据处理装置中,写入单元71包括:第二确定模块,用于存储节点的虚拟节点个数由存储节点的存储空间确定,各个存储节点的虚拟节点个数与存储节点的存储空间呈正相关关系。
可选地,在本申请实施例提供的镜像的数据处理装置中,写入单元71包括:第三确定模块,用于磁盘的虚拟节点个数由磁盘的存储空间确定,各个磁盘的虚拟节点个数与磁盘的存储空间呈正相关关系。
可选地,在本申请实施例提供的镜像的数据处理装置中,读取单元72包括:第一判断模块,用于判断目标存储节点是否存储有待读取数据,并在目标存储节点存储有待读取数据的情况下,将目标存储节点确定为目的存储节点,从目的存储节点的磁盘读取数据;第二判断模块,用于在目标存储节点未存储待读取数据的情况下,判断目标存储节点所在存储域是否存在存储有待读取数据的存储节点,并在存在的情况下,将存储有待读取数据的存储节点确定为目的存储节点,从目的存储节点的磁盘读取数据;第四确定模块,用于在目标存储节点所在存储域不存在存储有待读取数据的存储节点的情况下,确定与目标存储节点所在存储域距离最近的目的存储域,并目的存储域中存储有待读取数据的存储节点确定为目的存储节点,从目的存储节点的磁盘读取数据。
可选地,在本申请实施例提供的镜像的数据处理装置中,读取单元72包括:第五确定模块,用于在目的存储节点所在存储域出现故障的情况下,从目的存储节点所在存储域以外的存储域重新确定目的存储节点,并从重新确定的目的存储节点的磁盘读取数据。
可选地,在本申请实施例提供的镜像的数据处理装置中,写入单元71包括:第六确定模块,用于确定待写入数据的副本的预设数量,从存储域哈希环的第一个虚拟节点开始顺时针确定预设数量的虚拟节点,并将待写入数据写入预设数量的虚拟节点指示的存储域的存储节点的磁盘中。
可选地,在本申请实施例提供的镜像的数据处理装置中,写入单元71包括:跳过模块,用于在分布式存储集群中的存储域存在故障的情况下,若预设数量的虚拟节点中包含故障存储域的虚拟节点,则跳过故障存储域的虚拟节点继续确定虚拟节点,直至得到不包含故障存储域的虚拟节点的预设数量的虚拟节点。
可选地,在本申请实施例提供的镜像的数据处理装置中,写入单元71包括:执行模块,用于在分布式存储集群中的存储节点存在故障的情况下,在存储节点所在存储域执行数据恢复操作;在分布式存储集群中的磁盘存在故障的情况下,在磁盘所在存储域执行数据恢复操作。
可选地,在本申请实施例提供的镜像的数据处理装置中,写入单元71包括:第一重建模块,用于在分布式存储集群中存在存储节点故障的情况下,重建存储节点哈希环和磁盘哈希环,并建立重建后的存储节点哈希环与重建前的存储域哈希环之间的映射关系,建立重建后的磁盘哈希环和重建后的存储节点哈希环之间的映射关系,得到更新后的分布式哈希表。
可选地,在本申请实施例提供的镜像的数据处理装置中,装置包括:第二重建模块,用于在分布式存储集群中存在磁盘缩容需求的情况下,重建磁盘哈希环,在分布式哈希表上删除重建前的磁盘哈希环和重建前的存储节点哈希环之间的映射关系,建立重建后的磁盘哈希环和重建前的存储节点哈希环之间的映射关系,得到更新后的分布式哈希表。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (21)

1.一种数据处理方法,其特征在于,包括:
通过客户端连接分布式存储集群中的目标存储节点,其中,所述目标存储节点是所述分布式存储集群中的任意存储节点,所述分布式存储集群中的每个存储节点均存储有分布式哈希表,所述分布式哈希表用于表征存储域哈希环、存储节点哈希环以及磁盘哈希环之间的映射关系;
在存在数据写入需求的情况下,根据所述目标存储节点存储的所述分布式哈希表索引待写入数据的各个副本所在存储节点,并控制副本所在存储节点将数据写入磁盘;
在存在数据读取需求的情况下,根据所述目标存储节点存储的所述分布式哈希表索引存储有待读取数据的存储节点,并从所述存储有待读取数据的存储节点中的磁盘读取数据;
其中,所述分布式哈希表通过以下方式建立:
将所述分布式存储集群中的多个存储节点划分至不同的存储域,获取各个存储域的特征值并设置每个存储域的虚拟节点个数,根据各个存储域的特征值以及虚拟节点个数生成所述存储域哈希环,其中,所述存储域哈希环上分布有各个存储域的虚拟节点,每个存储域的虚拟节点至少包含一个;
对于每个存储域,获取各个存储节点的特征值并设置每个存储节点的虚拟节点个数,根据各个存储节点的特征值以及虚拟节点个数生成存储节点哈希环,其中,所述存储节点哈希环上分布有各个存储节点的虚拟节点,每个存储节点的虚拟节点至少包含一个;
对于每个存储节点,获取各个磁盘的特征值并设置每个磁盘的虚拟节点个数,根据各个磁盘的特征值以及虚拟节点个数生成磁盘哈希环,其中,所述磁盘哈希环上分布有各个磁盘的虚拟节点,每个磁盘的虚拟节点至少包含一个;
根据存储节点与存储域之间的归属关系建立各个存储节点哈希环与存储域哈希环之间的映射关系,根据磁盘与存储节点之间的归属关系建立各个磁盘哈希环与存储节点哈希环之间的映射关系,得到所述分布式哈希表。
2.根据权利要求1所述的方法,其特征在于,根据各个存储域的特征值以及虚拟节点个数生成所述存储域哈希环包括:
在存储域的虚拟节点个数为一个的情况下,根据预设哈希算法对存储域的特征值计算哈希值,得到存储域的哈希值;
在存储域的虚拟节点个数为多个的情况下,根据所述预设哈希算法对存储域的特征值计算哈希值,并基于得到的哈希值再次根据所述预设哈希算法计算哈希值,直至重复计算哈希值的次数达到所述存储域的虚拟节点个数,得到一个存储域的多个哈希值;
根据各个存储域的哈希值在初始哈希环上分别设置存储域的虚拟节点,得到所述存储域哈希环。
3.根据权利要求1所述的方法,其特征在于,根据各个存储节点的特征值以及虚拟节点个数生成存储节点哈希环包括:
在存储节点的虚拟节点个数为一个的情况下,根据预设哈希算法对存储节点的特征值计算哈希值,得到存储节点的哈希值;
在存储节点的虚拟节点个数为多个的情况下,根据所述预设哈希算法对存储节点的特征值计算哈希值,并基于得到的哈希值再次根据所述预设哈希算法计算哈希值,直至重复计算哈希值的次数达到所述存储节点的虚拟节点个数,得到一个存储节点的多个哈希值;
根据各个存储节点的哈希值在初始哈希环上分别设置存储节点的虚拟节点,得到所述存储节点哈希环。
4.根据权利要求1所述的方法,其特征在于,根据各个磁盘的特征值以及虚拟节点个数生成磁盘哈希环包括:
在磁盘的虚拟节点个数为一个的情况下,根据预设哈希算法对磁盘的特征值计算哈希值,得到磁盘的哈希值;
在磁盘的虚拟节点个数为多个的情况下,根据所述预设哈希算法对磁盘的特征值计算哈希值,并基于得到的哈希值再次根据所述预设哈希算法计算哈希值,直至计算哈希值的次数达到所述磁盘的虚拟节点个数,得到一个磁盘的多个哈希值;
根据各个磁盘的哈希值在初始哈希环上分别设置磁盘的虚拟节点,得到所述磁盘哈希环。
5.根据权利要求1所述的方法,其特征在于,存储域的虚拟节点个数由存储域的重要程度确定,各个存储域的虚拟节点个数与存储域的重要程度呈正相关关系。
6.根据权利要求1所述的方法,其特征在于,存储节点的虚拟节点个数由存储节点的存储空间确定,各个存储节点的虚拟节点个数与存储节点的存储空间呈正相关关系。
7.根据权利要求1所述的方法,其特征在于,磁盘的虚拟节点个数由磁盘的存储空间确定,各个磁盘的虚拟节点个数与磁盘的存储空间呈正相关关系。
8.根据权利要求1所述的方法,其特征在于,在存在数据读取需求的情况下,根据所述目标存储节点存储的所述分布式哈希表索引存储有待读取数据的存储节点,并从所述存储有待读取数据的存储节点中的磁盘读取数据包括:
判断所述目标存储节点是否存储有所述待读取数据,并在所述目标存储节点存储有所述待读取数据的情况下,将所述目标存储节点确定为目的存储节点,从所述目的存储节点的磁盘读取数据;
在所述目标存储节点未存储所述待读取数据的情况下,判断所述目标存储节点所在存储域是否存在存储有所述待读取数据的存储节点,并在存在的情况下,将存储有所述待读取数据的存储节点确定为目的存储节点,从所述目的存储节点的磁盘读取数据;
在所述目标存储节点所在存储域不存在存储有所述待读取数据的存储节点的情况下,确定与所述目标存储节点所在存储域距离最近的目的存储域,并将所述目的存储域中存储有所述待读取数据的存储节点确定为目的存储节点,从所述目的存储节点的磁盘读取数据。
9.根据权利要求8所述的方法,其特征在于,还包括:
在所述目的存储节点所在存储域出现故障的情况下,从所述目的存储节点所在存储域以外的存储域重新确定目的存储节点,并从重新确定的目的存储节点的磁盘读取数据。
10.根据权利要求1所述的方法,其特征在于,在存在数据写入需求的情况下,根据所述目标存储节点存储的所述分布式哈希表索引待写入数据的各个副本所在存储节点,并控制副本所在存储节点将数据写入磁盘包括:
确定所述待写入数据的副本的预设数量,从所述存储域哈希环的第一个虚拟节点开始顺时针确定所述预设数量的虚拟节点,并将所述待写入数据写入所述预设数量的虚拟节点指示的存储域的存储节点的磁盘中。
11.根据权利要求10所述的方法,其特征在于,还包括:
在所述分布式存储集群中的存储域存在故障的情况下,若所述预设数量的虚拟节点中包含故障存储域的虚拟节点,则跳过所述故障存储域的虚拟节点继续确定虚拟节点,直至得到不包含所述故障存储域的虚拟节点的所述预设数量的虚拟节点。
12.根据权利要求1所述的方法,其特征在于,还包括:
在所述分布式存储集群中的存储节点存在故障的情况下,在所述存储节点所在存储域执行数据恢复操作;在所述分布式存储集群中的磁盘存在故障的情况下,在所述磁盘所在存储域执行数据恢复操作。
13.根据权利要求1所述的方法,其特征在于,还包括:
在所述分布式存储集群中存在存储节点故障的情况下,重建存储节点哈希环和磁盘哈希环,并建立重建后的存储节点哈希环与重建前的存储域哈希环之间的映射关系,建立重建后的磁盘哈希环和重建后的存储节点哈希环之间的映射关系,得到更新后的分布式哈希表。
14.根据权利要求1所述的方法,其特征在于,还包括:
在所述分布式存储集群中存在磁盘缩容需求的情况下,重建磁盘哈希环,在所述分布式哈希表上删除重建前的磁盘哈希环和重建前的存储节点哈希环之间的映射关系,建立重建后的磁盘哈希环和重建前的存储节点哈希环之间的映射关系,得到更新后的分布式哈希表。
15.一种数据处理系统,其特征在于,包括:
多个机房;
分布式存储集群,所述分布式存储集群中的多个存储节点部署在所述多个机房内,其中,所述多个存储节点划分至不同的存储域,同一存储域中的存储节点设部署在同一机房内,每个存储节点均存储有分布式哈希表,所述分布式哈希表用于表征存储域哈希环、存储节点哈希环以及磁盘哈希环之间的映射关系;
客户端,与所述分布式存储集群中的任意一个存储节点连接,用于通过连接的存储节点执行数据读写操作;
其中,所述分布式哈希表通过以下方式建立:
将所述分布式存储集群中的多个存储节点划分至不同的存储域,获取各个存储域的特征值并设置每个存储域的虚拟节点个数,根据各个存储域的特征值以及虚拟节点个数生成所述存储域哈希环,其中,所述存储域哈希环上分布有各个存储域的虚拟节点,每个存储域的虚拟节点至少包含一个;
对于每个存储域,获取各个存储节点的特征值并设置每个存储节点的虚拟节点个数,根据各个存储节点的特征值以及虚拟节点个数生成存储节点哈希环,其中,所述存储节点哈希环上分布有各个存储节点的虚拟节点,每个存储节点的虚拟节点至少包含一个;
对于每个存储节点,获取各个磁盘的特征值并设置每个磁盘的虚拟节点个数,根据各个磁盘的特征值以及虚拟节点个数生成磁盘哈希环,其中,所述磁盘哈希环上分布有各个磁盘的虚拟节点,每个磁盘的虚拟节点至少包含一个;
根据存储节点与存储域之间的归属关系建立各个存储节点哈希环与存储域哈希环之间的映射关系,根据磁盘与存储节点之间的归属关系建立各个磁盘哈希环与存储节点哈希环之间的映射关系,得到所述分布式哈希表。
16.根据权利要求15所述的数据处理系统,其特征在于,所述存储域哈希环上分布有各个存储域的虚拟节点,每个存储域的虚拟节点至少包含一个,各个存储域的虚拟节点个数与存储域的重要程度呈正相关关系。
17.根据权利要求15所述的数据处理系统,其特征在于,所述存储节点哈希环上分布有各个存储节点的虚拟节点,每个存储节点的虚拟节点至少包含一个,各个存储节点的虚拟节点个数与存储节点的存储空间呈正相关关系。
18.根据权利要求15所述的数据处理系统,其特征在于,所述磁盘哈希环上分布有各个磁盘的虚拟节点,每个磁盘的虚拟节点至少包含一个,各个磁盘的虚拟节点个数与磁盘的存储空间呈正相关关系。
19.一种数据处理装置,其特征在于,包括:
连接单元,用于通过客户端连接分布式存储集群中的目标存储节点,其中,所述目标存储节点是所述分布式存储集群中的任意存储节点,所述分布式存储集群中的每个存储节点均存储有分布式哈希表,所述分布式哈希表用于表征存储域哈希环、存储节点哈希环以及磁盘哈希环之间的映射关系;
写入单元,用于在存在数据写入需求的情况下,根据所述目标存储节点存储的所述分布式哈希表索引待写入数据的各个副本所在存储节点,并控制副本所在存储节点将数据写入磁盘;
读取单元,用于在存在数据读取需求的情况下,根据所述目标存储节点存储的所述分布式哈希表索引存储有待读取数据的存储节点,并从所述存储有待读取数据的存储节点中的磁盘读取数据;
其中,所述连接单元包括:
划分模块,用于将所述分布式存储集群中的多个存储节点划分至不同的存储域,获取各个存储域的特征值并设置每个存储域的虚拟节点个数,根据各个存储域的特征值以及虚拟节点个数生成所述存储域哈希环,其中,所述存储域哈希环上分布有各个存储域的虚拟节点,每个存储域的虚拟节点至少包含一个;
第一获取模块,用于对于每个存储域,获取各个存储节点的特征值并设置每个存储节点的虚拟节点个数,根据各个存储节点的特征值以及虚拟节点个数生成存储节点哈希环,其中,所述存储节点哈希环上分布有各个存储节点的虚拟节点,每个存储节点的虚拟节点至少包含一个;
第二获取模块,用于对于每个存储节点,获取各个磁盘的特征值并设置每个磁盘的虚拟节点个数,根据各个磁盘的特征值以及虚拟节点个数生成磁盘哈希环,其中,所述磁盘哈希环上分布有各个磁盘的虚拟节点,每个磁盘的虚拟节点至少包含一个;
建立模块,用于根据存储节点与存储域之间的归属关系建立各个存储节点哈希环与存储域哈希环之间的映射关系,根据磁盘与存储节点之间的归属关系建立各个磁盘哈希环与存储节点哈希环之间的映射关系,得到所述分布式哈希表。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至14任一项中所述的方法的步骤。
21.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至14任一项中所述的方法的步骤。
CN202310029731.8A 2023-01-09 2023-01-09 数据处理方法、系统、装置、存储介质及电子设备 Active CN115878046B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202310029731.8A CN115878046B (zh) 2023-01-09 2023-01-09 数据处理方法、系统、装置、存储介质及电子设备
PCT/CN2023/114305 WO2024148824A1 (zh) 2023-01-09 2023-08-22 数据处理方法、系统、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310029731.8A CN115878046B (zh) 2023-01-09 2023-01-09 数据处理方法、系统、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN115878046A CN115878046A (zh) 2023-03-31
CN115878046B true CN115878046B (zh) 2023-05-12

Family

ID=85758380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310029731.8A Active CN115878046B (zh) 2023-01-09 2023-01-09 数据处理方法、系统、装置、存储介质及电子设备

Country Status (2)

Country Link
CN (1) CN115878046B (zh)
WO (1) WO2024148824A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115878046B (zh) * 2023-01-09 2023-05-12 苏州浪潮智能科技有限公司 数据处理方法、系统、装置、存储介质及电子设备
CN118377835A (zh) * 2024-06-21 2024-07-23 支付宝(杭州)信息技术有限公司 用于分布式图数据库的数据处理方法和装置
CN118643102A (zh) * 2024-07-31 2024-09-13 北京盈创力和电子科技有限公司 数据下发方法、装置、计算机设备及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096227A (zh) * 2019-03-28 2019-08-06 北京奇艺世纪科技有限公司 数据存储方法、数据处理方法、装置、电子设备及计算机可读介质
CN113806298A (zh) * 2021-08-09 2021-12-17 中国地质大学(武汉) 分布式文件系统存储优化方法、计算机设备及存储介质
CN114816225A (zh) * 2021-01-28 2022-07-29 北京金山云网络技术有限公司 存储集群的管理方法、装置、电子设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6770244B2 (ja) * 2015-03-30 2020-10-14 日本電気株式会社 ストレージシステム
US20200073765A1 (en) * 2018-09-03 2020-03-05 Ashish Tanwer Distributed backup and precise recovery for consistent hashing systems
CN110058822B (zh) * 2019-04-26 2022-06-24 北京计算机技术及应用研究所 一种磁盘阵列横向拓展方法
CN115113893A (zh) * 2021-03-22 2022-09-27 腾讯科技(深圳)有限公司 一种数据处理方法、装置、存储介质和计算机设备
CN113326006B (zh) * 2021-06-17 2023-09-29 上海天玑科技股份有限公司 一种基于纠删码的分布式块存储系统
CN114879907A (zh) * 2022-04-28 2022-08-09 济南浪潮数据技术有限公司 一种数据分布确定方法、装置、设备及存储介质
CN115878046B (zh) * 2023-01-09 2023-05-12 苏州浪潮智能科技有限公司 数据处理方法、系统、装置、存储介质及电子设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096227A (zh) * 2019-03-28 2019-08-06 北京奇艺世纪科技有限公司 数据存储方法、数据处理方法、装置、电子设备及计算机可读介质
CN114816225A (zh) * 2021-01-28 2022-07-29 北京金山云网络技术有限公司 存储集群的管理方法、装置、电子设备及存储介质
CN113806298A (zh) * 2021-08-09 2021-12-17 中国地质大学(武汉) 分布式文件系统存储优化方法、计算机设备及存储介质

Also Published As

Publication number Publication date
WO2024148824A1 (zh) 2024-07-18
CN115878046A (zh) 2023-03-31

Similar Documents

Publication Publication Date Title
CN115878046B (zh) 数据处理方法、系统、装置、存储介质及电子设备
US11809726B2 (en) Distributed storage method and device
US9665428B2 (en) Distributing erasure-coded fragments in a geo-distributed storage system
CN103067433B (zh) 一种分布式存储系统的数据迁移方法、设备和系统
CN108964948A (zh) 主从服务系统、主节点故障恢复方法及装置
CN101272313B (zh) 进行文件级的虚拟化的中间装置、文件服务器系统和中继方法
US9031906B2 (en) Method of managing data in asymmetric cluster file system
CN109314721B (zh) 分布式文件系统的多个集群的管理
US10712964B2 (en) Pre-forking replicas for efficient scaling of a distributed data storage system
CN108319623A (zh) 一种数据重分布方法、装置及数据库集群
JP2016521427A (ja) ピアツーピアデータ複製用の方法、デバイス、およびシステム、ならびにマスタノード切替え用の方法、デバイス、およびシステム
CN109407975B (zh) 写数据方法与计算节点以及分布式存储系统
US20200401340A1 (en) Distributed storage system
CN113051250A (zh) 数据库集群的扩容方法和装置、电子设备和存储介质
CN109597903A (zh) 图像文件处理装置和方法、文件存储系统及存储介质
CN105335450B (zh) 数据存储处理方法及装置
CN113411363A (zh) 一种镜像文件的上传方法、相关设备及计算机存储介质
JP2007317138A (ja) データ記憶システム、ファイル検索装置およびプログラム
JP2015114913A (ja) ストレージ装置、ストレージシステム及びデータ管理プログラム
CN111428114A (zh) Elasticsearch搜索引擎的索引创建方法及装置
WO2016206392A1 (zh) 数据读写方法及装置
CN114415971B (zh) 数据处理方法以及装置
WO2018169040A1 (ja) 差分管理装置、ストレージシステム、差分管理方法及びプログラム
WO2014054173A1 (ja) 分散データ管理システム及びプログラム
CN110058790B (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