CN116095098A - 数据的分布式存储方法及装置 - Google Patents

数据的分布式存储方法及装置 Download PDF

Info

Publication number
CN116095098A
CN116095098A CN202211502503.XA CN202211502503A CN116095098A CN 116095098 A CN116095098 A CN 116095098A CN 202211502503 A CN202211502503 A CN 202211502503A CN 116095098 A CN116095098 A CN 116095098A
Authority
CN
China
Prior art keywords
server
data
fragments
original
slave
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202211502503.XA
Other languages
English (en)
Other versions
CN116095098B (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.)
Yunhe Enmo Beijing Information Technology Co ltd
South China Agricultural University
Original Assignee
Yunhe Enmo Beijing Information Technology Co ltd
South China Agricultural University
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 Yunhe Enmo Beijing Information Technology Co ltd, South China Agricultural University filed Critical Yunhe Enmo Beijing Information Technology Co ltd
Priority to CN202211502503.XA priority Critical patent/CN116095098B/zh
Publication of CN116095098A publication Critical patent/CN116095098A/zh
Application granted granted Critical
Publication of CN116095098B publication Critical patent/CN116095098B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • H04L67/108Resource delivery mechanisms characterised by resources being split in blocks or fragments
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据的分布式存储方法及装置。其中,该方法包括:主服务器获取客户端发送的更新数据,并将包括更新数据的第一消息发送至各个从服务器,通过各个从服务器中的目标从服务器对更新数据进行存储,其中,目标从服务器为存储更新数据对应的原始数据分片的服务器,主服务器和全部从服务器共同存储k个原始数据分片,全部从服务器存储m个原始校验分片,k和m为正整数;当主服务器收到全部从服务器发送的k-1个第二消息时,向客户端发送第三消息。本申请解决了由于现有的数据分布式存储方法无法在保持服务器活性的同时降低服务器存储数据的时延造成的服务器存储成本增加的技术问题。

Description

数据的分布式存储方法及装置
技术领域
本申请涉及数据存储领域,具体而言,涉及一种数据的分布式存储方法及装置。
背景技术
随着计算机、互联网、人工智能和元宇宙等新技术概念的蓬勃发展,物理磁盘容量的增长速度已完全无法应对海量数据的存储问题,而将大量普通服务器通过网络互联作为一个整体,提供存储服务的分布式存储技术也日渐成熟。
Paxos、Raft等共识协议凭借高效且容易实现的优点,在分布式存储中应用较为广泛。但是Paxos、Raft等共识协议都只关注了服务器活性或服务器存储时延的其中一个方面,没有同时兼顾两方面的性能。
上述技术针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种数据的分布式存储方法及装置,以至少解决由于现有的数据分布式存储方法无法在保持服务器活性的同时降低服务器存储数据的时延造成的服务器存储成本增加的技术问题。
根据本申请实施例的一个方面,提供了一种数据的分布式存储方法,包括:主服务器获取客户端发送的更新数据,并将包括更新数据的第一消息发送至各个从服务器,通过各个从服务器中的目标从服务器对更新数据进行存储,其中,目标从服务器为存储更新数据对应的原始数据分片的服务器,主服务器和全部从服务器共同存储k个原始数据分片,全部从服务器存储m个原始校验分片,k和m为正整数;当主服务器收到全部从服务器发送的k-1个第二消息时,向客户端发送第三消息,其中,第二消息包括原始数据分片和原始校验分片,第三消息为目标从服务器对更新数据存储成功的消息。
可选地,主服务器和全部从服务器共同存储k个原始数据分片,从服务器存储m个原始校验分片,包括:主服务器对待存储数据进行分片处理,得到k个原始数据分片,其中,原始数据分片的存储容量小于或等于目标存储容量;主服务器通过纠删码编码方式确定原始数据分片对应的原始校验分片;根据预设规则将x个原始数据分片存储在主服务器的对象存储设备;根据预设规则将y个原始数据分片和原始校验分片分别发送至全部从服务器的对象存储设备,其中,k=x+y,对象存储设备的数量为n,n为正整数。
可选地,判断更新数据的存储容量是否大于目标存储容量;若更新数据的存储容量大于目标存储容量,对更新数据进行分片处理,得到多个更新数据分片,其中,更新数据分片的存储容量小于或等于目标存储容量;对多个更新数据分片重复执行权利要求1的方法。
可选地,主服务器通过纠删码编码方式确定原始数据分片对应的原始校验分片,包括:主服务器根据k个原始数据分片构成的向量以及分布矩阵确定原始校验分片,其中,分布矩阵为(k+m)×k的矩阵,分布矩阵的前k行为单位矩阵,且分布矩阵的任意k个行向量相互独立。
可选地,原始数据分片的数量k、原始校验分片的数量m和对象存储设备的数量n之间满足如下关系:n=m+k。
可选地,当主服务器收到全部从服务器发送的k-1个第二消息时,向客户端发送第三消息之后,方法还包括:主服务器根据更新数据、原始数据分片和原始校验分片,确定更新校验分片;主服务器将包括更新校验分片的第四消息发送至第一从服务器,通过第一从服务器对更新校验分片进行存储,其中,第一从服务器为存储原始校验分片的服务器。
可选地,第一消息、第二消息和第四消息均为主服务器与各个从服务器之间的周期性交互消息。
根据本申请实施例的再一方面,还提供了一种非易失性存储介质,存储介质包括存储的程序,其中,程序运行时控制存储介质所在的设备执行以上的数据的分布式存储方法。
根据本申请实施例的再一方面,还提供了一种电子设备,包括:存储器和处理器,处理器用于运行存储在存储器中的程序,其中,程序运行时执行以上的数据的分布式存储方法。
在本申请实施例中,采用主服务器获取客户端发送的更新数据,并将包括更新数据的第一消息发送至各个从服务器,通过各个从服务器中的目标从服务器对更新数据进行存储,其中,目标从服务器为存储更新数据对应的原始数据分片的服务器,主服务器和全部从服务器共同存储k个原始数据分片,全部从服务器存储m个原始校验分片,k和m为正整数;当主服务器收到全部从服务器发送的k-1个第二消息时,向客户端发送第三消息,其中,第二消息包括原始数据分片和原始校验分片,第三消息为目标从服务器对更新数据存储成功的消息的方式,通过在收到全部从服务器发送的k-1个第二消息的情况下,向客户端发送数据存储成功消息的方式,达到了降低服务器存储数据的时延的目的,从而实现了减少服务器存储成本的技术效果,进而解决了由于现有的数据分布式存储方法无法在保持服务器活性的同时降低服务器存储数据的时延造成的服务器存储成本增加技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种数据的分布式存储方法的流程图;
图2是根据本申请实施例的一种数据的分布存储装置的结构图;
图3是根据本申请实施例提供的一种数据的分布式存储方法的计算机终端(或电子设备)的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了更好地理解本申请实施例,以下将本申请实施例中涉及的技术术语解释如下:
Raft协议:是一种实现一致性分布式的协议,也称共识算法,主要目的是使多个节点(服务器)对某件事情达成一致。
纠删码:即EC,英文全称为Erasure Code,是一种保护数据的方法,它将数据分割成片段,把冗余数据块(也叫校验块)扩展、编码,并将其存储在不同的位置,比如磁盘、存储节点或者其它计算机中的地理位置。
数据分片:是指分布式存储中对日志条目进行长度上的均分得到的数据块。
校验分片:是由已分片的数据分片通过纠删码编码所产生的校验块。
Paxos、Raft等共识协议凭借高效且容易实现的优点,在分布式存储中应用较为广泛。但是Paxos、Raft等共识协议存在具有较高网络成本和存储成本的缺点,即在基于Paxos、Raft等共识协议的分布式存储系统中,如果要容忍F个服务器出现故障,至少需要N=2F+1台服务器复制完整条目,是原始数据量的N倍左右。
RS-Paxos存储协议节约了服务器存储成本和网络成本,但服务器的活性水平较低。服务器活性水平降低会导致在不满足一半以上的服务器正常工作时,系统无法正常工作。Craft存储协议,采用片段复制与完全复制相结合的方式有效提高了服务器的活性,确保在F+1个节点故障情况下,仍然能够保证服务器集群的活性与原raft一致。但是,Craft存储协议存在存储成本过高的问题。另外,Craft存储协议没有过多关注服务器存储的时延问题,例如在完全复制阶段对F+1个服务器进行复制时,当提交失败的服务器需要重新提交时,会导致增加提交时延。
在相关技术中,无法在保持服务器活性的同时降低服务器存储数据的时延造成的服务器存储成本增加的技术问题。为了解决该问题,本申请实施例中提供了相关的解决方案,以下详细说明。
根据本申请实施例,提供了一种数据的分布式存储方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的一种数据的分布式存储方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,主服务器获取客户端发送的更新数据,并将包括更新数据的第一消息发送至各个从服务器,通过各个从服务器中的目标从服务器对更新数据进行存储,其中,目标从服务器为存储更新数据对应的原始数据分片的服务器,主服务器和全部从服务器共同存储k个原始数据分片,全部从服务器存储m个原始校验分片,k和m为正整数。
根据本申请的一个可选的实施例,主服务器为与客户端进行通信的服务器,客户端对从服务器的原始数据进行修改后,生成更新数据,由主服务器获取该更新数据,并将该更新数据发送给原始数据被修改的从服务器,其中,原始数据被修改的从服务器为目标从服务器,目标从服务器接收到原始数据对应的更新数据后,对该更新数据进行存储。原始数据是以数据分片的形式存储在各个从服务器和主服务器中的,例如,主服务器存储2个原始数据分片,从服务器存储2个原始数据分片。
步骤S104,当主服务器收到全部从服务器发送的k-1个第二消息时,向客户端发送第三消息,其中,第二消息包括原始数据分片和原始校验分片,第三消息为目标从服务器对更新数据存储成功的消息。
根据本申请的另一个可选的实施例,主服务器中存储有原始数据分片,当主服务器收到全部从服务器发送的k-1个第二消息时,即主服务器收到总数量为k-1的原始数据分片和原始校验分片。通过总数量为k-1的原始数据分片和原始校验分片,以及主服务器存储的原始数据分片,可以得到总数量为k的原始数据分片和原始校验分片。通过总数量为k的原始数据分片和原始校验分片可以对全部的原始数据分片进行恢复,此时,可以判定成功对所述更新数据进行存储,进而对更新数据进行提交(commit),即主服务器向客户端发送回应消息,告知客户端主服务器通过目标服务器将更新数据存储成功。
根据上述步骤,通过在收到全部从服务器发送的k-1个第二消息的情况下,向客户端发送数据存储成功消息的方式,达到了降低服务器存储数据的时延的目的,从而实现了减少服务器存储成本的技术效果,进而解决了由于现有的数据分布式存储方法无法在保持服务器活性的同时降低服务器存储数据的时延造成的服务器存储成本增加技术问题。
需要说明的是,相关技术中,主服务器在收到全部从服务器发送的带有数据分片和校验分片的消息后,才对更新数据进行提交(commit),即主服务器向客户端发送回应消息,在本申请中主服务器在收到全部从服务器发送的k-1个第二消息的情况下,向客户端发送数据存储成功消息。可以通过以下方式判断本申请提供方法的存储时延和现有技术的存储时延,即:获取主服务器收到一条命令(command)到主服务器commit由这条命令组成的日志条目的第一时间;以及在实现完整条目复制(相关技术)的方式下,主服务器收到一条命令(command)到主服务器commit由这条命令组成的日志条目的第二时间,通过对第一时间和第二时间的比较,可以判断本申请提供的数据的分布式存储方法能够有效降低服务器的存储时延。
根据本申请的一个可选的实施例,主服务器和全部从服务器共同存储k个原始数据分片,从服务器存储m个原始校验分片,可以通过以下方法实现:主服务器对待存储数据进行分片处理,得到k个原始数据分片,其中,原始数据分片的存储容量小于或等于目标存储容量;主服务器通过纠删码编码方式确定原始数据分片对应的原始校验分片;根据预设规则将x个原始数据分片存储在主服务器的对象存储设备;根据预设规则将y个原始数据分片和原始校验分片分别发送至全部从服务器的对象存储设备,其中,k=x+y,对象存储设备的数量为n,n为正整数。
根据本申请的另一个可选的实施例,原始数据分片的基本单位(目标存储容量)为4kB,存储容量为4kB时,随机读性能较优。因为在粒度更小的情况下,例如512Byte,那么每次读取4kB的数据时,需要从多个节点(对象存储设备)读取,再把多个512Byte的数据拼凑为4kB,此时会造成很大的时延。
例如,主服务器将待存储数据分为2个原始数据分片,并通过纠删码编码方式生成1个原始校验分片,主服务器将1个原始数据分片存储在主服务器的磁盘(对象存储设备)中;将1个原始数据分片发送给第一从服务器的磁盘,将1个原始校验分片发送给第二从服务器的磁盘,如表1所示:
主服务器 第一从服务器 第二从服务器
Osd0 Osd1 Osd2
D0-0 D0-1 P0-0
D1-0 D1-1 P1-0
D2-0 D2-1 P2-0
D3-0 D3-1 P3-0
表1
其中,Osd0即为主服务器的磁盘,Osd1为第一从服务器的磁盘,Osd2为第二从服务器的磁盘;Da-b表示原始数据分片,Pa-b表示原始校验分片,a表示条带号码,b表示分片号码。
主服务器将待存储数据分为4个原始数据分片,并通过纠删码编码方式生成2个原始校验分片,主服务器将2个原始数据分片存储在主服务器的磁盘(对象存储设备)中;将2个原始数据分片发送给第一从服务器的磁盘,将2个原始校验分片发送给第二从服务器的磁盘,如表2所示:
Figure BDA0003968326030000061
表2
在本申请的一些可选的实施例,判断更新数据的存储容量是否大于目标存储容量;若更新数据的存储容量大于目标存储容量,对更新数据进行分片处理,得到多个更新数据分片,其中,更新数据分片的存储容量小于或等于目标存储容量;对多个更新数据分片重复执行步骤S102和步骤S104的方法。
原始数据分片的基本单位(目标存储容量)为4kB,判断更新数据的存储容量是否大于4kB,若更新数据的存储容量大于4kB,为18kB,对更新数据进行分片处理,得到4个更新数据分片,其中,第一更新数据分片的存储容量为4kB,第二更新数据分片的存储容量为4kB,第三更新数据分片的存储容量为4kB,第四更新数据分片的存储容量为2kB。主服务器首先将第一更新数据分片发送至各个从服务器,通过第一更新数据分片对应的原始数据分片所在的服务器,对第一更新数据分片进行存储,当主服务器收到k-1个从服务器发送的第二消息时,向客户端发送第三消息;其次将第二更新数据分片发送至各个从服务器,通过第二更新数据分片对应的原始数据分片所在的服务器,对第二更新数据分片进行存储,当主服务器收到k-1个从服务器发送的第二消息时,向客户端发送第三消息,直至将第四更新数据分片发送至各个从服务器,通过第四更新数据分片对应的原始数据分片所在的服务器,对第四更新数据分片进行存储。
在本申请的一些可选的实施例中,主服务器通过纠删码编码方式确定原始数据分片对应的原始校验分片,通过以下方法实现:主服务器根据k个原始数据分片构成的向量以及分布矩阵确定原始校验分片,其中,分布矩阵为(k+m)×k的矩阵,分布矩阵的前k行为单位矩阵,且分布矩阵的任意k个行向量相互独立。
在一个可选的实施例中,原始数据分片的数量k、原始校验分片的数量m和对象存储设备的数量n之间满足如下关系:n=m+k。
在表1中,服务器的数量为3,对象存储设备(Osd)的数量为3,即一个服务器中包括1个对象存储设备,原始数据分片的数量为2,原始校验分片的数量为1,满足n=m+k;在表2中,服务器的数量为3,对象存储设备(Osd)的数量为6,即一个服务器中包括2个对象存储设备,原始数据分片的数量为4,原始校验分片的数量为2,同样满足n=m+k。
根据本申请的一个可选的实施例,当主服务器收到全部从服务器发送的k-1个第二消息时,向客户端发送第三消息之后,还需要:主服务器根据更新数据、原始数据分片和原始校验分片,确定更新校验分片;主服务器将包括更新校验分片的第四消息发送至第一从服务器,通过第一从服务器对更新校验分片进行存储,其中,第一从服务器为存储原始校验分片的服务器。
在本申请的一些可选的实施例,主服务器收到全部从服务器发送的k-1个第二消息之后,利用总数量为k的原始数据分片和原始校验分片生成完整的存储数据,将完整的存储数据中的其中一个原始数据分片替换为更新数据分片,利用该更新数据分片生成更新校验分片,因为校验分片无法主动更新,当校验分片对应的数据分片更新时,校验分片根据其对应的数据分片的更新进行更新。
作为本申请的一个可选的实施例,第一消息、第二消息和第四消息均为主服务器与各个从服务器之间的周期性交互消息。
主服务器与各个从服务器之间的周期性交互消息包括Raft协议中的AppendEntries,AppendEntries是Raft协议中主服务器特有的周期性交互消息,用于告知各个从服务器主服务器的运行状态,即主服务器是否发生故障,主服务器是否正常运行。
图2是根据本申请实施例的一种数据的分布式存储装置的结构图,如图2所示,该装置包括:
第一获取模块20,用于获取客户端发送的更新数据,并将包括更新数据的第一消息发送至各个从服务器,通过各个从服务器中的目标从服务器对更新数据进行存储,其中,目标从服务器为存储更新数据对应的原始数据分片的服务器,主服务器和全部从服务器共同存储k个原始数据分片,全部从服务器存储m个原始校验分片,k和m为正整数。
根据本申请的一个可选的实施例,主服务器为与客户端进行通信的服务器,客户端对从服务器的原始数据进行修改后,生成更新数据,由主服务器获取该更新数据,并将该更新数据发送给原始数据被修改的从服务器,其中,原始数据被修改的从服务器为目标从服务器,目标从服务器接收到原始数据对应的更新数据后,对该更新数据进行存储。原始数据是以数据分片的形式存储在各个从服务器和主服务器中的,例如,主服务器存储2个原始数据分片,从服务器存储2个原始数据分片。
第二获取模块22,用于收到全部从服务器发送的k-1个第二消息时,向客户端发送第三消息,其中,第二消息包括原始数据分片和原始校验分片,第三消息为目标从服务器对更新数据存储成功的消息。
根据本申请的另一个可选的实施例,主服务器中存储有原始数据分片,当主服务器收到全部从服务器发送的k-1个第二消息时,即主服务器收到总数量为k-1的原始数据分片和原始校验分片。通过总数量为k-1的原始数据分片和原始校验分片,以及主服务器存储的原始数据分片,可以得到总数量为k的原始数据分片和原始校验分片。通过总数量为k的原始数据分片和原始校验分片可以对全部的原始数据分片进行恢复,此时,可以判定成功对所述更新数据进行存储,进而对更新数据进行提交(commit),即主服务器向客户端发送回应消息,告知客户端主服务器通过目标服务器将更新数据存储成功。
根据上述装置,通过在收到全部从服务器发送的k-1个第二消息的情况下,向客户端发送数据存储成功消息的方式,达到了降低服务器存储数据的时延的目的,从而实现了减少服务器存储成本的技术效果,进而解决了由于现有的数据分布式存储方法无法在保持服务器活性的同时降低服务器存储数据的时延造成的服务器存储成本增加技术问题。
根据本申请的一个可选的实施例,上述装置还用于通过主服务器和全部从服务器共同存储k个原始数据分片,从服务器存储m个原始校验分片,可以通过以下方法实现:主服务器对待存储数据进行分片处理,得到k个原始数据分片,其中,原始数据分片的存储容量小于或等于目标存储容量;主服务器通过纠删码编码方式确定原始数据分片对应的原始校验分片;根据预设规则将x个原始数据分片存储在主服务器的对象存储设备;根据预设规则将y个原始数据分片和原始校验分片分别发送至全部从服务器的对象存储设备,其中,k=x+y,对象存储设备的数量为n,n为正整数。
根据本申请的另一个可选的实施例,原始数据分片的基本单位(目标存储容量)为4kB,存储容量为4kB时,随机读性能较优。因为在粒度更小的情况下,例如512Byte,那么每次读取4kB的数据时,需要从多个节点(对象存储设备)读取,再把多个512Byte的数据拼凑为4kB,此时会造成很大的时延。
例如,主服务器将待存储数据分为2个原始数据分片,并通过纠删码编码方式生成1个原始校验分片,主服务器将1个原始数据分片存储在主服务器的磁盘(对象存储设备)中;将1个原始数据分片发送给第一从服务器的磁盘,将1个原始校验分片发送给第二从服务器的磁盘,如表1所示:
主服务器 第一从服务器 第二从服务器
Osd0 Osd1 Osd2
D0-0 D0-1 P0-0
D1-0 D1-1 P1-0
D2-0 D2-1 P2-0
D3-0 D3-1 P3-0
表1
其中,Osd0即为主服务器的磁盘,Osd1为第一从服务器的磁盘,Osd2为第二从服务器的磁盘;Da-b表示原始数据分片,Pa-b表示原始校验分片,a表示条带号码,b表示分片号码。
主服务器将待存储数据分为4个原始数据分片,并通过纠删码编码方式生成2个原始校验分片,主服务器将2个原始数据分片存储在主服务器的磁盘(对象存储设备)中;将2个原始数据分片发送给第一从服务器的磁盘,将2个原始校验分片发送给第二从服务器的磁盘,如表2所示:
Figure BDA0003968326030000101
表2
在本申请的一些可选的实施例,上述装置还用于判断更新数据的存储容量是否大于目标存储容量;若更新数据的存储容量大于目标存储容量,对更新数据进行分片处理,得到多个更新数据分片,其中,更新数据分片的存储容量小于或等于目标存储容量;对多个更新数据分片重复执行第一获取模块20和第二获取模块22中的程序。
原始数据分片的基本单位(目标存储容量)为4kB,判断更新数据的存储容量是否大于4kB,若更新数据的存储容量大于4kB,为18kB,对更新数据进行分片处理,得到4个更新数据分片,其中,第一更新数据分片的存储容量为4kB,第二更新数据分片的存储容量为4kB,第三更新数据分片的存储容量为4kB,第四更新数据分片的存储容量为2kB。主服务器首先将第一更新数据分片发送至各个从服务器,通过第一更新数据分片对应的原始数据分片所在的服务器,对第一更新数据分片进行存储,当主服务器收到k-1个从服务器发送的第二消息时,向客户端发送第三消息;其次将第二更新数据分片发送至各个从服务器,通过第二更新数据分片对应的原始数据分片所在的服务器,对第二更新数据分片进行存储,当主服务器收到k-1个从服务器发送的第二消息时,向客户端发送第三消息,直至将第四更新数据分片发送至各个从服务器,通过第四更新数据分片对应的原始数据分片所在的服务器,对第四更新数据分片进行存储。
在本申请的一些可选的实施例中,上述装置还用于通过纠删码编码方式确定原始数据分片对应的原始校验分片,通过以下方法实现:主服务器根据k个原始数据分片构成的向量以及分布矩阵确定原始校验分片,其中,分布矩阵为(k+m)×k的矩阵,分布矩阵的前k行为单位矩阵,且分布矩阵的任意k个行向量相互独立。
在一个可选的实施例中,原始数据分片的数量k、原始校验分片的数量m和对象存储设备的数量n之间满足如下关系:n=m+k。
在表1中,服务器的数量为3,对象存储设备(Osd)的数量为3,即一个服务器中包括1个对象存储设备,原始数据分片的数量为2,原始校验分片的数量为1,满足n=m+k;在表2中,服务器的数量为3,对象存储设备(Osd)的数量为6,即一个服务器中包括2个对象存储设备,原始数据分片的数量为4,原始校验分片的数量为2,同样满足n=m+k。
根据本申请的一个可选的实施例,上述装置还用于当收到全部从服务器发送的k-1个第二消息时,向客户端发送第三消息之后,包括下述步骤:主服务器根据更新数据、原始数据分片和原始校验分片,确定更新校验分片;主服务器将包括更新校验分片的第四消息发送至第一从服务器,通过第一从服务器对更新校验分片进行存储,其中,第一从服务器为存储原始校验分片的服务器。
在本申请的一些可选的实施例,主服务器收到全部从服务器发送的k-1个第二消息之后,利用总数量为k的原始数据分片和原始校验分片生成完整的存储数据,将完整的存储数据中的其中一个原始数据分片替换为更新数据分片,利用该更新数据分片生成更新校验分片,因为校验分片无法主动更新,当校验分片对应的数据分片更新时,校验分片根据其对应的数据分片的更新进行更新。
作为本申请的一个可选的实施例,第一消息、第二消息和第四消息均为主服务器与各个从服务器之间的周期性交互消息。
主服务器与各个从服务器之间的周期性交互消息包括Raft协议中的AppendEntries,AppendEntries是Raft协议中主服务器特有的周期性交互消息,用于告知各个从服务器主服务器的运行状态,即主服务器是否发生故障,主服务器是否正常运行。
需要说明的是,上述图2中的各个模块可以是程序模块(例如是实现某种特定功能的程序指令集合),也可以是硬件模块,对于后者,其可以表现为以下形式,但不限于此:上述各个模块的表现形式均为一个处理器,或者,上述各个模块的功能通过一个处理器实现。
图3示出了一种用于实现数据的分布式存储方法的计算机终端(或移动设备)的硬件结构框图。如图3所示,计算机终端30(或移动设备30)可以包括一个或多个(图中采用302a、302b,……,302n来示出)处理器302(处理器302可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器304、以及用于通信功能的传输模块306。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为BUS总线的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图3所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端30还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。
应当注意到的是上述一个或多个处理器302和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端30(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器304可用于存储应用软件的软件程序以及模块,如本申请实施例中的数据的分布式存储方法对应的程序指令/数据存储装置,处理器302通过运行存储在存储器304内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据的分布式存储方法。存储器304可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器304可进一步包括相对于处理器302远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端30。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块306用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端30的通信供应商提供的无线网络。在一个实例中,传输模块306包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块306可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端30(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图3所示的计算机设备(或电子设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图3仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或电子设备)中的部件的类型。
需要说明的是,图3所示的电子设备用于执行图1所示的数据的分布式存储方法,因此上述命令的执行方法中的相关解释说明也适用于该电子设备,此处不再赘述。
本申请实施例还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,程序运行时控制存储介质所在的设备执行以上的数据的分布式存储方法。
非易失性存储介质执行以下功能的程序:服务器获取客户端发送的更新数据,并将包括更新数据的第一消息发送至各个从服务器,通过各个从服务器中的目标从服务器对更新数据进行存储,其中,目标从服务器为存储更新数据对应的原始数据分片的服务器,主服务器和全部从服务器共同存储k个原始数据分片,全部从服务器存储m个原始校验分片,k和m为正整数;当主服务器收到全部从服务器发送的k-1个第二消息时,向客户端发送第三消息,其中,第二消息包括原始数据分片和原始校验分片,第三消息为目标从服务器对更新数据存储成功的消。
本申请实施例还提供了一种电子设备,包括:存储器和处理器,处理器用于运行存储在存储器中的程序,其中,程序运行时执行以上的数据的分布式存储方法。
处理器用于运行执行以下功能的程序:服务器获取客户端发送的更新数据,并将包括更新数据的第一消息发送至各个从服务器,通过各个从服务器中的目标从服务器对更新数据进行存储,其中,目标从服务器为存储更新数据对应的原始数据分片的服务器,主服务器和全部从服务器共同存储k个原始数据分片,全部从服务器存储m个原始校验分片,k和m为正整数;当主服务器收到全部从服务器发送的k-1个第二消息时,向客户端发送第三消息,其中,第二消息包括原始数据分片和原始校验分片,第三消息为目标从服务器对更新数据存储成功的消。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种数据的分布式存储方法,其特征在于,包括:
主服务器获取客户端发送的更新数据,并将包括所述更新数据的第一消息发送至各个从服务器,通过各个所述从服务器中的目标从服务器对所述更新数据进行存储,其中,所述目标从服务器为存储所述更新数据对应的原始数据分片的服务器,所述主服务器和全部所述从服务器共同存储k个所述原始数据分片,全部所述从服务器存储m个原始校验分片,k和m为正整数;
当所述主服务器收到全部所述从服务器发送的k-1个第二消息时,向所述客户端发送第三消息,其中,所述第二消息包括所述原始数据分片和原始校验分片,所述第三消息为所述目标从服务器对所述更新数据存储成功的消息。
2.根据权利要求1所述的方法,其特征在于,所述主服务器和全部所述从服务器共同存储k个所述原始数据分片,所述从服务器存储m个原始校验分片,包括:
所述主服务器对待存储数据进行分片处理,得到k个所述原始数据分片,其中,所述原始数据分片的存储容量小于或等于目标存储容量;
所述主服务器通过纠删码编码方式确定所述原始数据分片对应的所述原始校验分片;
根据预设规则将x个所述原始数据分片存储在所述主服务器的对象存储设备;
根据所述预设规则将y个所述原始数据分片和所述原始校验分片分别发送至全部所述从服务器的所述对象存储设备,其中,k=x+y,所述对象存储设备的数量为n,n为正整数。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
判断所述更新数据的存储容量是否大于所述目标存储容量;
若所述更新数据的存储容量大于所述目标存储容量,对所述更新数据进行分片处理,得到多个更新数据分片,其中,所述更新数据分片的存储容量小于或等于所述目标存储容量;
对所述多个更新数据分片重复执行权利要求1所述的方法。
4.根据权利要求2所述的方法,其特征在于,所述主服务器通过纠删码编码方式确定所述原始数据分片对应的所述原始校验分片,包括:
所述主服务器根据k个所述原始数据分片构成的向量以及分布矩阵确定所述原始校验分片,其中,所述分布矩阵为(k+m)×k的矩阵,所述分布矩阵的前k行为单位矩阵,且所述分布矩阵的任意k个行向量相互独立。
5.根据权利要求2所述的方法,其特征在于:
所述原始数据分片的数量k、所述原始校验分片的数量m和所述对象存储设备的数量n之间满足如下关系:n=m+k。
6.根据权利要求1所述的方法,其特征在于,当所述主服务器收到全部所述从服务器发送的k-1个第二消息时,向所述客户端发送第三消息之后,所述方法还包括:
所述主服务器根据所述更新数据、所述原始数据分片和所述原始校验分片,确定更新校验分片;
所述主服务器将包括所述更新校验分片的第四消息发送至第一从服务器,通过所述第一从服务器对所述更新校验分片进行存储,其中,所述第一从服务器为存储所述原始校验分片的服务器。
7.根据权利要求1至6中任意一项所述的方法,其特征在于,所述第一消息、所述第二消息和所述第四消息均为所述主服务器与各个所述从服务器之间的周期性交互消息。
8.一种数据的分布式存储装置,其特征在于,包括:
获取模块,用于获取客户端发送的更新数据,并将包括所述更新数据的第一消息发送至各个从服务器,通过各个所述从服务器中的目标从服务器对所述更新数据进行存储,其中,所述目标从服务器为存储所述更新数据对应的原始数据分片的服务器,所述主服务器和全部所述从服务器共同存储k个所述原始数据分片,全部所述从服务器存储m个原始校验分片,k和m为正整数;
发送模块,用于收到全部所述从服务器发送的k-1个第二消息时,向所述客户端发送第三消息,其中,所述第二消息包括所述原始数据分片和原始校验分片,所述第三消息为所述目标从服务器对所述更新数据存储成功的消息。
9.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至7中任意一项所述数据的分布式存储方法。
10.一种电子设备,其特征在于,包括:存储器和处理器,所述处理器用于运行存储在所述存储器中的程序,其中,所述程序运行时执行权利要求1至7中任意一项所述数据的分布式存储方法。
CN202211502503.XA 2022-11-28 2022-11-28 数据的分布式存储方法及装置 Active CN116095098B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211502503.XA CN116095098B (zh) 2022-11-28 2022-11-28 数据的分布式存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211502503.XA CN116095098B (zh) 2022-11-28 2022-11-28 数据的分布式存储方法及装置

Publications (2)

Publication Number Publication Date
CN116095098A true CN116095098A (zh) 2023-05-09
CN116095098B CN116095098B (zh) 2024-04-09

Family

ID=86201411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211502503.XA Active CN116095098B (zh) 2022-11-28 2022-11-28 数据的分布式存储方法及装置

Country Status (1)

Country Link
CN (1) CN116095098B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130325932A1 (en) * 2012-06-05 2013-12-05 Hon Hai Precision Industry Co., Ltd. Electronic device and method for storing distributed documents
CN110445840A (zh) * 2019-07-09 2019-11-12 北京健网未来科技有限公司 一种基于区块链技术的文件存储和读取的方法
CN111314479A (zh) * 2016-06-20 2020-06-19 阿里巴巴集团控股有限公司 一种数据处理方法和设备
CN112835885A (zh) * 2019-11-22 2021-05-25 北京金山云网络技术有限公司 一种分布式表格存储的处理方法、装置及系统
CN114070847A (zh) * 2020-07-27 2022-02-18 腾讯科技(深圳)有限公司 服务器的限流方法、装置、设备及存储介质
CN114663460A (zh) * 2022-02-28 2022-06-24 华南农业大学 基于双流驱动编码器和特征记忆模块的视频分割方法及装置
CN115016979A (zh) * 2022-06-30 2022-09-06 中国工商银行股份有限公司 纠删码数据处理方法、装置及系统、存储介质、处理器

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130325932A1 (en) * 2012-06-05 2013-12-05 Hon Hai Precision Industry Co., Ltd. Electronic device and method for storing distributed documents
CN111314479A (zh) * 2016-06-20 2020-06-19 阿里巴巴集团控股有限公司 一种数据处理方法和设备
CN110445840A (zh) * 2019-07-09 2019-11-12 北京健网未来科技有限公司 一种基于区块链技术的文件存储和读取的方法
CN112835885A (zh) * 2019-11-22 2021-05-25 北京金山云网络技术有限公司 一种分布式表格存储的处理方法、装置及系统
CN114070847A (zh) * 2020-07-27 2022-02-18 腾讯科技(深圳)有限公司 服务器的限流方法、装置、设备及存储介质
CN114663460A (zh) * 2022-02-28 2022-06-24 华南农业大学 基于双流驱动编码器和特征记忆模块的视频分割方法及装置
CN115016979A (zh) * 2022-06-30 2022-09-06 中国工商银行股份有限公司 纠删码数据处理方法、装置及系统、存储介质、处理器

Also Published As

Publication number Publication date
CN116095098B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
US10514971B2 (en) Dispersed b-tree directory trees
US10936417B2 (en) Multi-stage slice recovery in a dispersed storage network
US10241694B2 (en) Reducing data stored when using multiple information dispersal algorithms
US10042566B2 (en) Intelligent read strategy within a dispersed storage network (DSN)
JP7442466B2 (ja) データ検証の方法および装置、ならびに記憶媒体
KR20150111952A (ko) 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템
US10691541B2 (en) Method for partial updating data content in a distributed storage network
US10324657B2 (en) Accounting for data whose rebuilding is deferred
US20170163730A1 (en) Adaptive replication of dispersed data to improve data access performance
CN116095098B (zh) 数据的分布式存储方法及装置
US10331519B2 (en) Application of secret sharing schemes at multiple levels of a dispersed storage network
CN109224451B (zh) 基于区块链子链的游戏开发方法、设备以及存储介质
US10318382B2 (en) Determining missing encoded data slices
US10540120B2 (en) Contention avoidance on associative commutative updates
US20220394091A1 (en) Storing a Data Object as Data Regions in a Storage Network
US10067998B2 (en) Distributed sync list
US10594793B2 (en) Read-prepare requests to multiple memories
CN107203559B (zh) 一种划分数据条带的方法和装置
US20180262565A1 (en) Replicating containers in object storage using intents
CN104580512A (zh) 数据处理方法和装置,及分布式文件系统
US20180052736A1 (en) Initializing storage unit performance rankings in new computing devices of a dispersed storage network
CN117667834B (zh) 存算解耦系统、数据处理方法及存储介质
US20240045777A1 (en) Processing of Data Access Requests in a Storage Network
CN112988461B (zh) 数据备份方法、边缘节点、数据中心及计算机存储介质
CN118151848A (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