CN106302702B - 数据的分片存储方法、装置及系统 - Google Patents

数据的分片存储方法、装置及系统 Download PDF

Info

Publication number
CN106302702B
CN106302702B CN201610659118.4A CN201610659118A CN106302702B CN 106302702 B CN106302702 B CN 106302702B CN 201610659118 A CN201610659118 A CN 201610659118A CN 106302702 B CN106302702 B CN 106302702B
Authority
CN
China
Prior art keywords
data
stored
copies
storage
storage nodes
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
CN201610659118.4A
Other languages
English (en)
Other versions
CN106302702A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610659118.4A priority Critical patent/CN106302702B/zh
Publication of CN106302702A publication Critical patent/CN106302702A/zh
Priority to EP17838361.8A priority patent/EP3487149B1/en
Priority to PCT/CN2017/079971 priority patent/WO2018028229A1/zh
Priority to US16/270,048 priority patent/US10942828B2/en
Application granted granted Critical
Publication of CN106302702B publication Critical patent/CN106302702B/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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • 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]

Abstract

本申请涉及分布式领域,尤其设计分布式分片存储技术。在一种分布式存储系统数据的分片存储方法中,确定待存储数据所要存储的M个数据节点,获取所述待存储数据的N个副本,将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片。然后将待存储数据存储到M个存储节点中,即将X个数据分片中的每个数据分片的N个副本分别存储于N个存储节点中,使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以
Figure DDA0001074899040000011
的整数商。b本申请提供了一种分布式数据分片存储的方法,提高了数据的可用性,以及当节点故障时数据恢复的效率。

Description

数据的分片存储方法、装置及系统
技术领域
本发明实施例涉及分布式存储领域,更具体地,涉及一种分布式存储系统中数据的分片存储方法、装置以及系统。
背景技术
随着信息技术的快速发展,信息系统数据库中的数据量越来越大。为了满足大数据量的存储需求,在多台服务器上运行的分布式存储系统得到了广泛的应用。在分布式存储系统中,多台服务器上分别运行了多个数据库系统。数据进行存储时,需要先将数据进行分片(sharding),再将不同的数据分片交由不同的服务器进行存储。分片是一种水平扩展(horizontal scaling)的方式,把一个大的数据集分散到多个数据节点上,所有的数据节点将组成一个逻辑上的数据库来存储这个大的数据集。分片对用户(应用层)是透明的,用户不会知道数据很被存放到哪个片服务器上。采用数据分片进行数据存储,可以突破单节点服务器的I/O能力限制,解决数据库拓展性的问题。
同时,为了保证数据和服务的高可用性,往往需要为分布式数据库提供必要的容错机制,对各个数据分片进行冗余备份。通过将同一数据分片的多个副本存储在不同的服务器上,可以避免由于单个服务器不可用时造成的数据分片丢失。
在现有技术中,通常采用交叉备份的方式来对分布式存储系统中的数据分片进行备份。数据分片的分片数量一般与存储节点数量相同,从而将每个数据分片的主分片分别存储于每个存储节点上,而将备份分片存储于与主分片所不同的另外任意两个存储节点上。例如,表1列举了一种常见的将主数据及两份备份数据存储在6个数据节点的存储策略,其中,数据分为A-F共六个数据分片,每个数据分片包含一个主数据以及两个备份数据。
存储节点 数据分片
节点1 A C D
节点2 B A C
节点3 C A F
节点4 D B E
节点5 E D F
节点6 F B E
表1
在现有技术中,通过将主分片与备份分片分别存储在不同的存储节点上,可以保证当一个存储节点故障时,该数据分片不会损失,而只有当同一数据分片所在的全部数据节点都产生故障时,该数据片才会损失。但是,当同一数据分片所在的全部数据节点都产生故障时,可能会出现两个数据分片的主备数据存储在了相同的多个节点的情况,例如,在表1的例子中,数据分片A和数据分片C均存储在了节点1、2、3中,当该3个数据节点出现故障时,数据分片A和C均会丢失。此外,当单个节点发生故障后,需要通过数据恢复来形成新的节点,而在数据恢复时,并发恢复的效率不高,例如在表1的例子中,当节点6发生故障后,最多分别通过一个存储有F、B、E数据分片的节点,例如节点3、4、5来并发实现数据恢复,而其他节点则不可参与恢复。
发明内容
有鉴于此,本发明提供了一种分布式存储系统中数据的分片存储方法、装置以及系统,提高了数据备份的可用性,以及数据恢复的效率。
第一方面,本发明的实施例提供了一种数据的分片存储方法。方法包括确定待存储数据所要存储到的M个数据节点,并获取待存储数据的N个副本,其中,副本数数据的分片存储方法N为待存储数据的原始数据和备份数据的份数的总和,将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片,从而每个数据分片都有N个数据分片副本。将待存储数据的N个副本存储到M个存储节点中,即将X个数据分片中每个数据分片的N个数据分片副本分别存储于N个存储节点中。其中,使得副本存储在相同的N个存储节点中的数据分片副本的数量最小,具体的,使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以
Figure BDA0001074899020000031
的整数商(整数商指不完全商或部分商,例如,X为10,
Figure BDA0001074899020000032
为3时,整数商P为3)。由此,由于在相同的N个存储节点中的数据分片副本的数量最小,使得当任意N个存储节点同时发生故障时,可能造成的最大的数据损失最小,相对于现有技术而言,降低了数据损失比例,提高了数据备份的可用性。同时,由于每个数据分片的副本均匀分布在不同的节点上,当某一节点故障时,存储于该节点上的数据分片可以通过存储于多个不同的节点相应的副本进行恢复,从而提高并发恢复的效率。
在一种可能的设计中,对副本进行分时,分片数X基于最佳分片基数Y进行取值,其中
Figure BDA0001074899020000033
分片数X可以等于或小于所述最佳分片基数Y与系数K的乘积,其中K为大于或者等于1的整数。
在该种设计的一种实现方式中,X的取值小于Y与K的乘积,此时,X的取值越接近Y与K的乘积时,当N个存储节点同时发生故障时,可能造成的最大的数据损失量占总存储数据量的比例越小。
在该种设计的一种实现方式中,X的取值为Y与K的乘积,此时,当N个存储节点同时发生故障时,可能造成的最大的数据损失量占总存储数据量的比例最小。
在该种设计的一种实现方式中,确定待存储数据的分片数X时,可以根据分布式存储系统的负载均衡需求,确定系数K。其中,K的值越大,待存储数据的均衡负载程度越高。
在一种可能的设计中,根据当前分布式存储系统的均衡负载情况,确定所述待存储数据的分片数X。当需要提高待存储数据在分布式存储系统中的均衡负载程度时,可以取较大分片数X,从而获得更小的数据粒度,提高均衡负载程度。
在一种可能的设计中,根据待存储数据的安全需求确定待存储数据的副本数N,其中,所述副本数N的值越大,所能够满足的所述待存储数据的安全需要越高,即要损失一个数据分片,需要同时发生故障的节点数量更多。
在一种可能的设计中,根据所述待存储数据的数据类型和数据类型与副本数的对应关系,确定所述待存储数据的副本数N。从而对不同类型的数据提供更加灵活的数据可用性保障。
在一种可能的设计中,将待存储数据存储到存储节点中时,从M个数据节点中选出N个数据节点的的
Figure BDA0001074899020000041
种数据节点的组合方式;确定分片数X除以
Figure BDA0001074899020000042
所得的商P以及余数Q;在所述
Figure BDA0001074899020000043
种所述数据节点的组合方式种中选择Q种数据节点的组合方式用于存储P+1个数据分片,其余
Figure BDA0001074899020000044
个数据节点的组合方式用于存储P个数据分片,其中,每个数据分片的N个副本分别存储在要存储的数据节点的组合方式中N个不同的数据节点上。
第二方面,本发明实施例提供了一种确定分布式存储系统中数据分片的方法,方法包括确定待存储数据所要存储到的M个数据节点以及获取待存储数据的副本数N,从而确定待存储数据的分片数X。其中,等于或小于所述最佳分片基数Y与系数K的乘积,其中,K为大于或等于1的整数。X的取值越接近Y与K的乘积时,当N个存储节点同时发生故障时,可能造成的最大的数据损失量占总存储数据量的比例越小。当X的取值为Y与K的乘积时,可能造成的最大的数据损失量占总存储数据量的比例最小。
在一种可能的设计中,根据分布式存储系统的负载均衡需求,确定系数K,其中,所述系数K为大于或等于1的整数,所述K的值越大,待存储数据的负载均衡程度越高。分片数X等于或小于
Figure BDA0001074899020000051
在一种可能的设计中,确定分片数X后,确定将待存储数据存储到所述M个存储节点中的存储策略,其中,将所述X个数据分片中的每个数据分片的N个数据分片副本分别存储于所述M个存储节点中的N个存储节点中,并使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以
Figure BDA0001074899020000052
的整数商。
在该设计的一种可能的实现方式中,确定存储策略的具体方式为:确定N个所述待存储数据副本存储于M个所述数据节点时,从M个数据节点中选出N个数据节点的的
Figure BDA0001074899020000053
种数据节点的组合方式;确定分片数X除以
Figure BDA0001074899020000054
所得的商P以及余数Q;在所述
Figure BDA0001074899020000055
种所述数据节点的组合方式种中选择Q种数据节点的组合方式用于存储P+1个数据分片,其余
Figure BDA0001074899020000056
个数据节点的组合方式用于存储P个数据分片,其中,每个数据分片的N个副本分别存储在要存储的数据节点的组合方式中N个不同的数据节点上。
在一种可能的设计中,可以根据待存储数据的安全需求确定待存储数据的副本数N,副本数N的值越大,所能够满足的所述待存储数据的安全需要越高。
在一种可能的设计中,根据所述待存储数据的数据类型和数据类型与副本数的对应关系,确定所述待存储数据的副本数N。从而可以对不同数据类型提供不同程度的数据可用性的保障。
第三方面,本发明实施例提供了一种分布式存储设备,该设备可以实现前述第一或者第二方面方法设计中的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。所述模块可以是软件和/或硬件。
在一种可能的设计中,该设备的结构包括处理器,以及与所述处理器相连接的存储器。其中,处理器调用所述存储器中存储的指令以用于执行前述第一或者第二方面的方法。
在一种可能的设计中,该设备包括获取单元和存储单元,其中,获取单元用于确定待存储数据所要存储到的M个存储节点以及获取所述待存储数据的N个副本,其中所述N个副本包括所述待存储数据的原始数据和所述原始数据的N-1个备份数据,所述N个副本中的每个副本依据同样的分片方式被分片为X个数据分片以使得每个数据分片具有N个数据分片副本,N小于或等于M。确定单元将所述待存储数据的N个副本存储到所述M个存储节点,其中,将所述X个数据分片中的每个数据分片的N个数据分片副本分别存储于所述M个存储节点中的N个存储节点中,并使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以
Figure BDA0001074899020000061
的整数商。
在一种可能的设计中,该设备包括获取单元和确定单元,其中,获取单元用于获取待存储数据所要存储到的M个数据节点以及待存储数据的副本数N。确定单元根据前述第二方面的方法确定分片数X。
第四方面,本发明实施例提供了一种分布式存储系统。该分布式存储系统包括客户端、多个硬盘以及分布式存储设备,该分布式存储设备可以是前述第三方面的设计中的设备,用于执行前述第一方面或者第二方面相对于的方法。
第五方面,本发明实施例提供了又一种分布式存储系统,该系统包括客户端和分布式存储服务器系统,其中,分布式存储服务器系统可以包括:控制服务器、运维管理(OAM)服务器、业务服务器、存储资源池以及存储引擎。这里,存储引擎可以用于执行前述第一方面或者第二方面中相应的方法。
相较于现有技术,本发明提供了一种分布式环境下的数据分片存储的方法,提高了数据的可用性,以及当节点故障时数据恢复的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面附图中反映的仅仅是本发明的一部分实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得本发明的其他实施方式。而所有这些实施例或实施方式都在本发明的保护范围之内。
图1为本发明的一种可能的系统架构示意图;
图2为本发明实施例提供的一种确定分布式存储系统分片存储策略的流程示意图;
图3为本发明实施例中的一种可能的分布式存储系统分片存储策略的示意图;
图4为本发明实施例中的一种可能的分布式存储系统分片存储策略下节点恢复的示意图;
图5为本发明实施例中一种可能的场景下多节点故障后分片数量与数据损失比例的关系示例图;
图6为本发明实施例提供的一种分布式存储设备的结构示意图;
图7为本发明实施例提供的又一种分布式存储设备的结构示意图;
图8为本发明实施例提供的一种分布式存储系统的结构示意图;
图9为本发明实施例提供的又一种分布式存储系统的结构示意图;
图10为本发明实施例提供的一种分布式存储装置的结构示意图。
图11为本发明实施例提供的又一种分布式存储装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于对本发明实施例的理解,首先介绍本发明所应用于的分布式存储系统的系统架构。分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
如图1所示,是一种分布式存储系统的架构示意图。需要说明的是,该分布式存储系统只是举例说明,本发明的应用范围并不局限于此。如图所示的分布式存储系统中,包括分布式数据库引擎102和分布式数据存储节点107。其中,分布式数据库引擎102是系统核心,其负责数据的解析、路由、分发、合并等操作,并将底层的众多存储节点管理起来;分布式存储节点由多个用于存储数据的数据节点组合,用户可以根据需求灵活的构建不同规模的数据节点集群。
分布式数据库引擎102包含了API(Application Programming Interface,应用程序编程接口)模块103,为客户端提供接口以调用数据库。资源申请模块104根据客户端的存储需求,以及分布式数据存储节点中提供的每个节点的存储量确定提供给客户端本次存储需求的节点数量,可选的,还可以根据用户提交的数据可靠性需求确定待存储数据备份副本的数量。数据管理模块105根据申请的存储资源确定存储策略,即数据分片的数量以及数据分片与存储节点之间的对应关系。数据路由模块106根据数据管理模块确定的存储策略,对来自客户端的请求进行路由,将数据进行分片并路由到数据节点上,或者聚合各个节点的数据并返回客户端。
应当理解的是,在分布式存储系统中,模块的功能是由服务器来实现的,通常情况下,某一功能模块可以由独立的服务器所实现,但是,在一些情况下,也可以通过一个服务器实现多个功能模块,或者一个功能模块有多个服务器所组成的集群来实现。
参考图2,是本发明实施例一的流程示意图。在本发明实施例中,提供了一种确定分布式存储系统中数据分片存储策略方法。结合前述介绍,本发明实施例主要通过对数据管理模块105的改进,从而确定数据分片的存储策略。
在本发明实施例中,客户端向分布式存储系统发起了数据存储请求,将待存储数据存储到分布式存储系统中。应当理解的,本实施例中,对于方法步骤之间的执行顺序并不进行限定。参考图2本领域技术人员可以理解,S101、S102均为S103步骤的前置步骤,即S101、S102可以按照任意顺序执行,也可以一个或多个步骤并行同时执行。
如图2所示,该方法包括:
S101、确定待存储数据所要存储到的M个数据节点。
具体的,一般而言,根据待存储数据的数据大小,以及每个数据节点所能提供的存储量,可以确定要存储到的M个数据节点。在一些情况下,数据所存储的数据节点数量也可以为预设的固定值,或者为存储节点的总数。此外,数据节点数M也可以根据通过API接口,根据用户的设定值来确定。
在一种设计中,在确定要存储到的数据节点时,可以根据每个节点的负载情况,选择负载程度较低的M个数据节点作为要存储到的数据节点,从而提高整个分布式存储系统的均衡负载程度。
S102、获取待存储数据的N个副本。
为了方便描述,在本发明中,副本数N指的是待存储数据的原始数据和备份数据的份数的总和,即N个副本包括所述待存储数据的原始数据和所述原始数据的N-1个备份数据。为了保证数据的可用性,需要对待存储数据进行冗余备份。待存储数据的副本数N越大,待存储数据的冗余程度越高,从而待存储数据的可靠性也越好,但同时也会占用更大的存储空间。在一般情况下,数据的副本数为预设的值,可以通过用户事先设定,或者根据不同的待存储数据,在每次存储请求时进行设定。
可以理解的,为了保证副本的冗余备份的隔离性,同一数据的副本应当存储于不同的存储节点上,从而保证当某一存储节点故障时,其他副本不会丢失。因此,对于同一分布式系统而言,副本数N的值应当小于或者等于数据节点数M的值。
可选的,可以根据待存储数据的安全需求确定待存储数据的副本数N。当待存储数据的安全需求越高时,所确定的待存储数据副本数N的值越大。数据的安全需求可以通过用户的存储请求直接获得,即用户在不同的存储请求对待存储数据提出不同的安全需求;也可以通过预设的判断逻辑,例如不同的数据类型与安全需求的对应关系,或者不同的用户类型与安全需求的对应关系等,确定待存储数据的安全需求。在一些服务器平台中,例如PaaS(Platform-as-a-Service,平台即服务)平台下,用户在平台上所部属的不同应用的数据的安全需求不同,还可以根据不同的应用或者应用类型来确定待存储数据的安全需求。
可选的,可以根据待存储数据的数据类型和数据类型与副本数的对应关系,确定待存储数据的副本数N,从而对不同类型的数据以不同程度的可用性保护。
N个副本中的每个副本依据同样的分片方式被分片为X个数据分片以使得每个数据分片具有N个数据分片副本。分片数X是指将一个待存储数据副本进行分片的分片数量。在进行分片存储时,待存储数据的主数据和备份数据均需要以同样的分片方式进行分片,从而的到主数据分片和与之对应的备份数据分片。在进行分片后,每个数据副本都被分成同样的X个数据分片,因而对于一个数据分片而言,存在N个包含该数据分片在内的相同的分片副本。可以理解的,当待存储数据的分片数X确定后,待存储数据共计有N×X个数据分片需要存储到M个节点中。
在一些情况下,分片数X可以由用户预先设置,即可以对任一待存储数据均采用相同的分片数,或者由用户根据不同的待存储数据在进行存储请求时设置该待存储数据的分片数。
可选的,由于分片数越高,存储到存储节点中的数据分片数量越多,从而减小数据分片粒度,更容易将数据均匀的存储到各个节点中,尽可能的实现负载均衡。因此,根据当前分布式存储系统的负载均衡情况,对待存储数据设置不同的分片数。例如,当分布式系统对于负载均衡的需求较高时,动态的增大分片数,以提高分布式系统的均衡负载程度。
S103、将所述待存储数据的N个副本存储到所述M个存储节点。
具体的,在进行存储时遵循以下方法:将所述X个数据分片中的每个数据分片的N个数据分片副本分别存储于所述M个存储节点中的N个存储节点中,并使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以
Figure BDA0001074899020000111
的整数商。
相同的N个存储节点上的数据分片的数量,是指在分布式系统中,对于任意N个数据节点,在这N个数据节点上存储了该数据分片的全部N个副本的数据分片的数量。使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以
Figure BDA0001074899020000112
的整数商,实质上即是使得存储在相同的N个节点上的数据分片的数量最少。即需要将数据节点均匀的存储在可能的N个数据节点的组合中,使得每种N个数据节点组合所存储的数据分片数量相对均匀,从而任意选取N个数据节点,在可能的存储了全部N个副本的数据节点的数量中,其最大值最小。可以理解的,每个数据分片存储于N个节点上,即一种N个节点的组合。而对于包含M个存储节点的分布式系统而言,从中选出N个节点的组合,总共可以有
Figure BDA0001074899020000121
种不同的组合。因此,当分片数X小于
Figure BDA0001074899020000122
时,每个数据分片均可以选择不同的N个数据分片,即存储在相同的N个节点上的数据分片数量为1;当分片数X大于
Figure BDA0001074899020000123
时,则会出现多个数据分片存储在相同的N个节点上的情况。具体的,设分片数X除以
Figure BDA0001074899020000124
所得的整数商P以及余数Q,那么,在
Figure BDA0001074899020000125
种数据节点的组合方式种中选择Q种数据节点的组合方式用于存储P+1个数据分片,其余
Figure BDA0001074899020000126
个数据节点的组合方式用于存储P个数据分片。
例如,当有40个数据分片需要存储,每个数据分片有3个副本,而分布式系统中,共有20种3个数据节点的不同组合,因此,当进行存储时,要使得存储在相同3个存储节点中的数据分片的数量最小,即每种组合存储2个不同数据节点的全部副本;而当有50个数据分片需要存储时,则需要其中10种数据节点组合存储3个不同的数据节点的全部副本,而另外10中数据节点组合存储2个不同的数据节点的全部副本。
下面举例给出一种具体的进行存储的算法,从而获得满足前述存储方式的存储策略。应当理解的是,该算法仅仅是对于根据前述原则将待存储数据存储于存储节点的存储策略的一种设计。对于本领域技术人员而言,在理解前述分配原则的基础上,可以通过多种不同的具体算法来实现上述的存储策略,在此不再一一列举。
该算法包括如下步骤:
1、为X个待存储数据分片编号为1,2,3……X;
2、为每个数据节点编号为1,2,3……N;
3、建立存储分配表,该存储分配表包含
Figure BDA0001074899020000131
行,N列,一行包含N个数据节点,每行所包含的数据节点的组合互不相同,即每行中的数据节点为
Figure BDA0001074899020000132
种数据节点组合中的一种;
4、确立数据分片与存储分配表中每行数据节点组合的对应关系。其中,设分片数X除以
Figure BDA0001074899020000133
所得的商P,存储分配表中第N行分别与第K个数据节点相对应,
Figure BDA0001074899020000134
且K≤X;
5、根据确立的对应关系,将每个数据节点的N个副本存储到与之对应的存储分配表上一行的N个数据节点中,所述的存储策略即为符合前述原则的存储策略。
为了方便对对本实施例的理解,下面按照本方法实施例得到的存储策略的一个具体示例。如图3所示,是将分片数X为20的待存储数据以副本数N为3存储于数据节点数M为6的分布式系统中,按照本发明实施例得到的存储策略中的一种。在该策略中,由于
Figure BDA0001074899020000135
正好与分片数量相等,要满足存储在相同的3个存储节点中的数据分片的数量最小,即每种3个存储节点组合存储一个数据分片的3个副本。因此,在本例中,任意选出3个存储节点,其都只完整的存储了一个数据分片的全部3个副本。例如,节点1、2、3仅完整存储了数据分片A的全部3个副本,而节点1、2、4仅完整存储了数据分片B的全部3个副本。由于每个数据分片均分别存储在了3个不同的数据节点中,因此,要造成数据分片的彻底丢失,需要至少3个数据节点同时故障。而在本例的存储策略下,当任意3个数据节点同时故障时,只会造成1个数据分片的丢失。例如,当节点1、2、3故障时,仅会造成数据分片A的丢失,而其他数据分片则在其余节点中至少还保存有1个数据分片副本。
同时,在本例中,当任意一个数据节点发生故障时,由于数据分片的副本均匀的分散在其余的数据节点上,其余节点均可以对该节点同时进行数据恢复。例如,如图4所示,列举了当节点5故障时的一种可能的数据恢复方式,该节点中所存储的数据分片的副本可以分别通过另外5个数据节点中灰色部分的的副本进行恢复。
根据本发明实施例,适用于将不同分片数和副本数的数据存储于分布式系统中,可以根据待存储数据的不同情况对分片数和副本数进行灵活的调整。由于保证了存储在相同N个节点的数据分片数量最少,因此,当N个节点同时发生故障时,可能造成的数据分片的丢失量最少,从而提高了数据备份的可用性。同时,由于本方案可以实现分片数高于节点数的存储策略,因此单个节点所存储的的数据分片数量提高,当单个节点发送故障时,由于其存储的数据分片的副本均匀的分布在其他的数据节点中,因此,能够参与数据恢复的数据节点数量提高,即提高了节点故障时的数据恢复并发数量,提高了数据恢复效率。
下面介绍本发明的第二种方法实施例。在本实施例中,给出了一种确定待存储数据分片数的方法,通过所述的待存储数据分片数,可以达到更优的数据可用性。本实施例中,如何确定待存储数据所要存储的数据节点数以及获取待存储数据的副本数的方法,与前述实施例的S101以及S102所介绍的方法相类似,在此不再赘述。此外,根据本方法实施例所确定的待存储数据的分片数,可以用于根据前述实施例中的S102步骤来将数据副本进行分片,与之相似的介绍在本实施例中亦不再赘述。
本实施例中确定待存储数据的分片数X包括:
S201、根据副本数N和存储节点数M,确定待存储数据的最佳分片基数Y,其中,
Figure BDA0001074899020000141
S202、根据最佳分片基数Y,获取待存储数据的分片数X,所述待存储数据的分片数X等于或小于所述最佳分片基数Y与系数K的乘积,其中,K为大于或等于1的整数。
由前述可知,当副本数为N,存储节点数为M时,将待存储数据存入所述M个节点时,待存储数据的每个数据分片均需要存储到N个节点中。从M个数据节点中选出N个数据节点,总共有
Figure BDA0001074899020000151
中组合方式。为了提高数据可用性,使得当任意N个节点故障时,可能造成的数据分片数丢失最少,应当尽可能的将每个数据分片存储到不同的数据节点的组合中。由此可知,当分片数量小于
Figure BDA0001074899020000152
时,分片数量越大,当N个节点故障时可能丢失的最大数据量越少。具体的,若分片数为X,且每个数据分片的大小相等的情况下,当
Figure BDA0001074899020000153
时,N各节点故障时可能丢失的最大数据量为总数据量的1/X。因此,当
Figure BDA0001074899020000154
时,可能丢失的总数据量最小,为
Figure BDA0001074899020000155
而当分片数X大于
Figure BDA0001074899020000156
时,则会出现有2个或者更多的数据分片存储在了相同的N个节点上,当这N个节点故障时,可能会造成2个或者更多的数据分片丢失。设X除以
Figure BDA0001074899020000157
的整数商为P,则当N个节点故障时,且每个数据分片的大小相等的情况下,可能丢失的最大数据量占总数据量的P/X。由此可知,当X为
Figure BDA0001074899020000158
的整数倍时,P/N的值等于
Figure BDA0001074899020000159
此时可能丢失的总数据量也是最小的。
为了便于理解,下面以数据节点数为6,副本数为3,且数据分片的大小相等的情况为例,举例说明在不同的分片数下,当任意3个数据节点发生故障时,可能造成的最大数据丢失量占全部数量的比例的变化情况。如图5所示,横坐标为数据分片数量X,纵坐标为当任意3个数据节点发生故障时,可能造成的最大数据丢失量占全部数量的比例,其函数图像如图所示。其中,
若数据分片数量为6,三点故障时的最大丢失数据为全部数据的1/6;
若数据分片数量为7,三点故障时的最大丢失数据为全部数据的1/7;……
若数据分片数量为20,三点故障时的最大丢失数据为全部数据的1/20;
若数据分片数量为21,三点故障时的最大丢失数据为全部数据的2/21;……
若数据分片数量为40,三点故障时的最大丢失数据为全部数据的2/40;
若数据分片数量为41,三点故障时的最大丢失数据为全部数据的3/41;……
由此可知,以
Figure BDA0001074899020000161
作为基数,所述待存储数据的分片数X等于所述最佳分片基数Y与系数K的乘积,当N个节点发生故障时,可能丢失的最大数据量占总数据量的比例最小,即数据的可用性最高。同时,数据分片数X小于
Figure BDA0001074899020000162
Figure BDA0001074899020000163
的整数倍数时,分片数X越接近
Figure BDA0001074899020000164
Figure BDA0001074899020000165
的整数倍数,则可能丢失的最大数据量占总数据量的比例越小,数据的可用性越高,因而当待存储数据的分片数X小于且比较接近所述最佳分片基数Y与系数K的乘积,也能获得相对较高的数据可用性。
可见,当数据分片数X为
Figure BDA0001074899020000166
Figure BDA0001074899020000167
的大于1的整数倍时,从数据的可用性上考虑,可以达到最优值。而当不能取所述的最优值时,则取值小于且越接近
Figure BDA0001074899020000168
Figure BDA0001074899020000169
的大于1的整数倍数时,数据的可用性越高。因此,在确定分片数X时,为了达到数据可用性上的最优,应当选取
Figure BDA00010748990200001610
Figure BDA00010748990200001611
的大于1的整数倍数作为分片数X;而当综合其他因素的考虑,不将
Figure BDA00010748990200001612
Figure BDA00010748990200001613
的大于1的整数倍数作为分片数X时,分片数X的取值小于且越接近
Figure BDA00010748990200001614
Figure BDA00010748990200001615
的大于1的整数倍数,越能够提高数据的可用性。
具体的,在考虑分片数X小于
Figure BDA00010748990200001616
Figure BDA00010748990200001617
的大于1的整数倍数时,可以结合应用本发明的具体场景所要达到的效果来确定X的最终取值。当希望达到的技术效果为当N个节点故障时,可能造成的最大的数据丢失比例小于Q。结合前述可以理解,当K取大于或者等于1的整数时,在区间
Figure BDA00010748990200001618
当N个节点故障时,可能造成的最大的数据丢失比例是单调递减的,且该区间内X的取值所对应的可能造成的最大数据丢失比例为K/X。因此,要使得K/X小于Q,即X的取值应当大于K/Q。相应的,当K/Q的值小于或等于
Figure BDA0001074899020000171
时,X取区间
Figure BDA0001074899020000172
中的任意值均可以满足可能造成的最大的数据丢失比例小于Q;当K/Q的值大于
Figure BDA0001074899020000173
时,X在区间
Figure BDA0001074899020000174
中取任意值可以满足可能造成的最大的数据丢失比例小于Q。
可选的,由于分片数越高,待存储数据存储到数据节点中可实现的负载均衡程度越高,因此,在以种实施方式中,可以根据分布式存储系统的负载均衡需求,确定系数K。该系数K为大于或等于1的整数,用于确定最佳分片基数的倍数。当待存储数据的均衡负载需求越高时,所述的系数K的值越大。分片数X的取值为等于或者小于所述最佳分片基数Y与所述系数K的乘积。即分片数X等于最佳分片基数Y与所述系数K的乘积时,可以获得最佳的数据可用性,且满足分布式存储系统的负载均衡需求;而当综合考虑其他因素,使得分片数X的取值不为最佳分片基数Y与所述系数K的乘积时时,则分片数X的取值越接近最佳分片基数Y与所述系数K的乘积,则数据可用性越高,且越能够满足分布式存储系统的负载均衡需求。
在本实施例中,通过确定最佳分片基数Y,进而根据最佳分片基数确定分片数,可以在实现前述实施例的优点的基础上,进一步的提高数据的可用性,使得在相同的数据节点数以及副本数的情况下,根据最佳分片基数所确定的分片数可以达到最优或者相对最优的数据可用性。同时,由于所确定的分片数的值往往大于节点数,从而提高了分布式系统的负载均衡,以及当某一节点故障时的并发恢复效率。
参阅图6,图6为本申请下一实施例提供的一种分布式存储设备600,该设备600可以为部署在分布式存储系统中的一个节点,也可以为在分布式存储系统中独立的数据管理装置。该设备600包括但不限于:计算机、服务器等设备,如图6所示,该设备600包括:处理器601、存储器602、收发器603和总线604。收发器603用于与外部设备(例如分布式系统中的其他节点或分布式系统以外的网络设备)之间收发数据。设备600中的处理器601的数量可以是一个或多个。本申请的一些实施例中,处理器601、存储器602和收发器603可通过总线系统或其他方式连接。关于本实施例涉及的术语的含义以及举例,可以参前述实施例,此处不再赘述。
其中,存储器602中可以存储程序代码。处理器601用于调用存储器602中存储的程序代码,用于执行前述实施例中S101、S102、S103操作:
对于上述操作的理解,可以参考前述第一个方法实施例中的介绍,在此不再赘述。
可选的,处理器501还可以用于执行前述第一个实施例中的步骤的细化或者可选的方案。
可选的,在本实施例中,所述的处理器501在确定分片数X时,还可以通过执行S201、S202操作确定分片数X:根据副本数N和存储节点数M,确定待存储数据的最佳分片基数Y,最佳分片基数
Figure BDA0001074899020000181
根据最佳分片基数Y,获取待存储数据的分片数X,所述待存储数据的分片数X等于或小于所述最佳分片基数Y或者等于或小于所述最佳分片基数Y的自然数倍数。
对于执行上述步骤的理解,可以参考前述第二种实施例中的介绍,上述步骤也可以参照前述第二种实施例进行拓展或者细化。
需要说明的是,这里的处理器601可以是一个处理元件,也可以是多个处理元件的统称。例如,该处理元件可以是中央处理器(Central Processing Unit,CPU),也可以是特定集成电路(Application Specific Integrated Circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital singnalprocessor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)。
存储器603可以是一个存储装置,也可以是多个存储元件的统称,且用于存储可执行程序代码或应用程序运行装置运行所需要参数、数据等。且存储器603可以包括随机存储器(RAM),也可以包括非易失性存储器(non-volatile memory),例如磁盘存储器,闪存(Flash)等。
总线604可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
该用户设备还可以包括输入输出装置,连接于总线604,以通过总线与处理器601等其它部分连接。用户可以通过输入设备实现本实施例中需要人工配置或者预设参数的步骤。该输入输出装置可以为操作人员提供一输入界面,以便操作人员通过该输入界面选择布控项,还可以是其它接口,可通过该接口外接其它设备。
参阅图7,图7为本申请下一实施例提供的一种分布式存储设备700,该设备700可以为部署在分布式存储系统中的一个节点,也可以为在分布式存储系统中独立的数据管理装置。该设备700包括但不限于:计算机、服务器等设备,如图7所示,该设备700包括:处理器701、存储器702、收发器703和总线704。收发器703用于与外部设备(例如分布式系统中的其他节点或分布式系统以外的网络设备)之间收发数据。设备700中的处理器701的数量可以是一个或多个。本申请的一些实施例中,处理器701、存储器702和收发器703可通过总线系统或其他方式连接。关于本实施例涉及的术语的含义以及举例,可以参前述实施例,此处不再赘述。
其中,存储器702中可以存储程序代码。处理器701用于调用存储器702中存储的程序代码,用于执行以下S201、S202操作操作,从而确定在分布式存储系统中进行分片存储时的分片数量。
对于上述操作的理解,可以参考前述第二个方法实施例中的介绍,在此不再赘述。
可选的,处理器701还可以用于执行前述第二个实施例中的步骤的细化或者可选的方案。
需要说明的是,这里的处理器701可以是一个处理元件,也可以是多个处理元件的统称。例如,该处理元件可以是中央处理器(Central Processing Uni t,CPU),也可以是特定集成电路(Application Specific Integrated Circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital singnalprocessor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)。
存储器703可以是一个存储装置,也可以是多个存储元件的统称,且用于存储可执行程序代码或应用程序运行装置运行所需要参数、数据等。且存储器703可以包括随机存储器(RAM),也可以包括非易失性存储器(non-volati le memory),例如磁盘存储器,闪存(Flash)等。
总线704可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
该设备还可以包括输入输出装置,连接于总线704,以通过总线与处理器701等其它部分连接。用户可以通过输入设备实现本实施例中需要人工配置或者预设参数的步骤。该输入输出装置可以为操作人员提供一输入界面,以便操作人员通过该输入界面选择布控项,还可以是其它接口,可通过该接口外接其它设备。
图8是根据本发明的实施例的一种分布式存储系统800的意性结构图。分布式存储系统800包括:客户端810,多个硬盘820和分布式存储设备830。分布式存储设备830可以是图6或者图7所示的分布式存储设备600和分布式存储设备700,在此不再赘述。
在本实施例中所提供的分布式系统的硬件实体,可以参照前述的图1中分布式系统架构进行理解。图1中分布式数据库引擎102在本发明实施例中以本不是存储装置830作为硬件实体,因而在本发明实施例所改进的数据管理模块105,在本实施例中所对应承载的硬件实体是分布式存储装置830。
分布式存储装置830根据用户通过客户端810发送的存储/读取请求,在多个硬盘820上存储/读取用户的数据文件。
图9是根据本发明的实施例给出的另一种的分布式存储系统900的示意性结构图。分布式存储系统900包括:客户端910和分布式存储服务器系统920。
客户端910可以通过互联网连接到存储服务器系统920。
客户端910可以运行分布式存储系统的客户端代理程序,用于支撑各种类型的分布式存储应用接入分布式存储系统,例如,客户端代理程序可以实现个人在线存储和备份、企业在线存储和备份、应用在线存储或者其它新兴的存储和备份等等。
分布式存储服务器系统920可以包括:控制服务器930、运维管理(OAM)服务器940、业务服务器950、存储资源池970以及存储引擎980。这里,存储引擎980可以为图6或图7的分布式存储装置的例子。
本实施例中的硬件装置可以对应前述图1中的分布式架构进行理解,通过本实施例中的存储引擎980实现分布式数据库引擎102的功能,而分布式存储服务器系统920中还包含分布式系统相关的其他功能性服务器,如控制服务器930、运维管理服务器940、业务服务器950等。
控制服务器930主要用于控制分布式存储系统执行各类存储业务,如组织数据的搬迁、搬移和备份、存储热点消除等等。
运维管理服务器940可以提供存储系统的配置接口和运行维护接口,并提供日志、告警等功能。
业务服务器950可以提供业务识别、鉴权等功能,完成业务的传递功能。
存储资源池970可以包括物理存储节点构成的存储资源池,例如,可以由存储服务器/存储单板960构成,各个物理存储节点中的虚拟节点构成了一个存储逻辑环,用户的数据文件可以存储在存储资源池中的虚拟节点上。
存储引擎980可以提供分布式存储系统的主要功能的逻辑,这些逻辑可以部署在控制服务器930、业务服务器950、运维管理服务器940中的某一个设备上,也可以以分布式部署方式部署在控制服务器940、业务服务器950、运维管理服务器940和存储资源池970上。因此,本发明所对应的改进也可以是在上述硬件中实现。
图10是是根据本发明的实施例的一种分布式存储设备1000的示意性结构图。分布式存储装置1000包括:获取单元1001、存储单元1002。
其中,获取单元1001用于确定待存储数据所要存储到的M个存储节点以及获取所述待存储数据的N个副本,其中所述N个副本包括所述待存储数据的原始数据和所述原始数据的N-1个备份数据,所述N个副本中的每个副本依据同样的分片方式被分片为X个数据分片以使得每个数据分片具有N个数据分片副本,N小于或等于M。结合前述第一个实施例中所述的方法,本实施例中不再对获取单元1001获取数据节点数以及获取待存储数据的副本的具体方式或者可选的实施方式进行赘述。
结合前述的装置实施例,获取单元1001可以通过包含图6所述分布式存储装置的收发器603,从而从外部网络或者分布式存储系统内部的其他设备中获取所述数据。或者,获取单元1001还可以包含输入输出设备,从而可以通过用户设置的方式获取所述数据。此外,获取单元1001还可以读取存储在该分布式存储设备的预设值,从而获取所述数据的预设数值。
可选的,在本实施例中,所述的获取单元1001在获取待存储数据的部分时,对副本进行分片,还可以通过图6所述分布式存储装置的处理器601调用存储器602中存储的程序代码执行如下操作步骤来确定分片数X:根据所述副本数N和所述存储节点数M,确定所述待存储数据的最佳分片基数Y,所述最佳分片基数
Figure BDA0001074899020000231
根据所述最佳分片基数Y,获取所述待存储数据的分片数X,所述待存储数据的分片数X等于或小于所述最佳分片基数Y与系数K的乘积,其中,K为大于或等于1的整数。
可选的,根据所述分布式存储系统的负载均衡需求,确定系数K,其中,所述系数K为自然数,所述K的值越大,所述待存储数据的负载均衡程度越高。
可选的,根据当前分布式存储系统的均衡负载情况,确定所述待存储数据的分片数X。
存储单元1002用于将所述待存储数据存储到分布式系统的M个存储节点中。具体的,进行存储时的存储策略遵循如下原则:将所述X个数据分片中的每个数据分片的N个数据分片副本分别存储于所述M个存储节点中的N个存储节点中,并使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以
Figure BDA0001074899020000241
的整数商。
结合前述的装置实施例,存储单元1002可以通过包含图6所述分布式存储装置的处理器601调用存储器602中存储的程序代码实现。
对于执行上述步骤的理解,可以参考前述第一或者第二个实施例中的介绍,上述步骤也可以参照前述实施例进行拓展或者细化。
图11是是根据本发明的实施例的一种分布式存储设备1100的示意性结构图。分布式存储装置1100包括:获取单元1101、确定单元1102。
其中,获取单元1101用于获取待存储数据所要存储到的M个数据节点、待存储数据的副本数N。结合前述第二个实施例中所述的方法,本实施例中不再对获取单元1101获取所述的两个个数据的具体方式或者可选的实施方式进行赘述。
结合前述的装置实施例,获取单元1101可以通过包含图7所述分布式存储装置的收发器703,从而从外部网络或者分布式存储系统内部的其他设备中获取所述数据。或者,获取单元1101还可以包含输入输出设备,从而可以通过用户设置的方式获取所述数据。此外,获取单元1101还可以读取存储在该分布式存储设备的预设值,从而获取所述数据的预设数值。
确定单元1101用于确定待存储数据的分片数X,所述分片数为将一个待存储数据副本分片后的分片数量,所述待存储数据的分片数X等于或小于
Figure BDA0001074899020000242
或者等于或小于
Figure BDA0001074899020000243
的正整数倍数。
可选的,确定单元1101还用于根据所述分布式存储系统的负载均衡需求,确定系数K,其中,所述系数K为正整数,所述K的值越大,所述待存储数据的负载均衡程度越高;所述分片数X等于或小于
Figure BDA0001074899020000244
确定单元1102可以通过包含图7所述分布式存储装置的处理器701调用存储器702中存储的程序代码执行上述的操作步骤来确定分片数X。
结合前述的装置实施例,确定单元1102可以通过包含图7所述分布式存储装置的处理器701调用存储器702中存储的程序代码实现。
对于执行上述步骤的理解,可以参考前述第一或者第二个实施例中的介绍,上述步骤也可以参照前述实施例进行拓展或者细化。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memor)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (9)

1.一种数据的分片存储方法,其特征在于,所述方法包括:
确定待存储数据所要存储到的M个存储节点;
获取所述待存储数据的N个副本,其中所述N个副本包括所述待存储数据的原始数据和所述原始数据的N-1个备份数据,将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片,以使得每个数据分片具有N个数据分片副本,N小于或等于M;
将所述待存储数据的N个副本存储到所述M个存储节点,其中,将所述X个数据分片中的每个数据分片的N个数据分片副本分别存储于所述M个存储节点中的N个存储节点中,并使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以
Figure FDA0002299632690000011
的整数商;
其中,所述将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片具体包括:根据所述副本数N和所述存储节点数M,确定所述待存储数据的最佳分片基数Y,所述最佳分片基数
Figure FDA0002299632690000012
所述待存储数据的分片数X等于所述最佳分片基数Y与系数K的乘积,其中,K为大于或等于1的整数;将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片;
或者,
其中,所述将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片具体包括:根据所述副本数N和所述存储节点数M,确定所述待存储数据的最佳分片基数Y,所述最佳分片基数
Figure FDA0002299632690000013
根据所述最佳分片基数Y,获取所述待存储数据的分片数X,所述待存储数据的分片数X小于所述最佳分片基数Y与系数K的乘积,其中,K为大于或等于1的整数;将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片。
2.根据权利要求1所述方法,其特征在于,所述系数K根据分布式存储系统的负载均衡需求确定,所述K的值越大,所述待存储数据的负载均衡程度越高。
3.根据权利要求1所述方法,其特征在于,所述获取待存储数据的副本数N具体包括:
根据待存储数据的安全需求确定待存储数据的副本数N,其中,所述副本数N的值越大,所能够满足的所述待存储数据的安全需要越高。
4.根据权利要求2所述方法,其特征在于,所述获取待存储数据的副本数N具体包括:
根据待存储数据的安全需求确定待存储数据的副本数N,其中,所述副本数N的值越大,所能够满足的所述待存储数据的安全需要越高。
5.根据权利要求1所述方法,其特征在于,所述数据分片数X根据分布式存储系统的负载均衡需求确定,所述X的值越大,所述待存储数据的负载均衡程度越高。
6.根据权利要求1-5中任一所述方法,其特征在于,所述将所述待存储数据的N个副本存储到所述M个存储节点具体包括:
确定N个所述待存储数据副本存储于M个所述存储节点时,从M个存储节点中选出N个存储节点的的
Figure FDA0002299632690000021
种存储节点的组合方式;
确定分片数X除以
Figure FDA0002299632690000022
所得的商P以及余数Q;
在所述
Figure FDA0002299632690000023
种存储节点的组合方式种中选择Q种存储节点的组合方式用于存储P+1个数据分片,其余
Figure FDA0002299632690000024
个存储节点的组合方式用于存储P个数据分片,其中,每个数据分片的N个副本分别存储在要存储的存储节点的组合方式中N个不同的存储节点上。
7.一种数据的分片存储方法,其特征在于,所述方法包括:
确定待存储数据所要存储到的M个存储节点;
获取所述待存储数据的N个副本,其中所述N个副本包括所述待存储数据的原始数据和所述原始数据的N-1个备份数据,将所述N个副本中的每个副本依据同样的分片方式分片为X个数据分片,以使得每个数据分片具有N个数据分片副本,N小于或等于M;
将所述待存储数据的N个副本存储到所述M个存储节点,其中,将所述X个数据分片中的每个数据分片的N个数据分片副本分别存储于所述M个存储节点中的N个存储节点中,并使得数据分片副本存储在相同的N个存储节点中的数据分片的数量为P或P+1,其中P为X除以
Figure FDA0002299632690000031
的整数商;
其中,所述将所述待存储数据的N个副本存储到所述M个存储节点具体包括:
确定N个所述待存储数据副本存储于M个所述存储节点时,从M个存储节点中选出N个存储节点的的
Figure FDA0002299632690000032
种存储节点的组合方式;
确定分片数X除以
Figure FDA0002299632690000033
所得的商P以及余数Q;
在所述
Figure FDA0002299632690000034
种存储节点的组合方式种中选择Q种存储节点的组合方式用于存储P+1个数据分片,其余
Figure FDA0002299632690000035
个存储节点的组合方式用于存储P个数据分片,其中,每个数据分片的N个副本分别存储在要存储的存储节点的组合方式中N个不同的存储节点上。
8.一种分布式存储设备,所述设备用于包含至少两个存储节点的分布式存储系统中,用以确定待存储数据的分片存储策略,所述设备包括:
处理器,以及与所述处理器相连接的存储器;
其中,所述处理器调用所述存储器中存储的指令以用于执行权利要求1-7中任意一项权利要求所述的方法。
9.一种分布式存储系统,所述系统包括至少两个存储节点,以及至少一个管理设备,所述管理设备用于确定待存储数据的分片存储策略,所述设备包括:
处理器,以及与所述处理器相连接的存储器;
其中,所述处理器调用所述存储器中存储的指令以用于执行权利要求1-7中任意一项权利要求所述的方法。
CN201610659118.4A 2016-08-10 2016-08-10 数据的分片存储方法、装置及系统 Active CN106302702B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201610659118.4A CN106302702B (zh) 2016-08-10 2016-08-10 数据的分片存储方法、装置及系统
EP17838361.8A EP3487149B1 (en) 2016-08-10 2017-04-10 Data shard storage method, device and system
PCT/CN2017/079971 WO2018028229A1 (zh) 2016-08-10 2017-04-10 数据的分片存储方法、装置及系统
US16/270,048 US10942828B2 (en) 2016-08-10 2019-02-07 Method for storing data shards, apparatus, and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610659118.4A CN106302702B (zh) 2016-08-10 2016-08-10 数据的分片存储方法、装置及系统

Publications (2)

Publication Number Publication Date
CN106302702A CN106302702A (zh) 2017-01-04
CN106302702B true CN106302702B (zh) 2020-03-20

Family

ID=57670023

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610659118.4A Active CN106302702B (zh) 2016-08-10 2016-08-10 数据的分片存储方法、装置及系统

Country Status (4)

Country Link
US (1) US10942828B2 (zh)
EP (1) EP3487149B1 (zh)
CN (1) CN106302702B (zh)
WO (1) WO2018028229A1 (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106302702B (zh) * 2016-08-10 2020-03-20 华为技术有限公司 数据的分片存储方法、装置及系统
US11461273B1 (en) * 2016-12-20 2022-10-04 Pure Storage, Inc. Modifying storage distribution in a storage system that includes one or more storage devices
CN108572976A (zh) * 2017-03-10 2018-09-25 华为软件技术有限公司 一种分布式数据库中数据恢复方法、相关设备和系统
CN107395745A (zh) * 2017-08-20 2017-11-24 长沙曙通信息科技有限公司 一种分布式存储系统数据分散存储实现方法
CN109660493B (zh) * 2017-10-11 2020-12-18 南京南瑞继保电气有限公司 一种基于区块链的新能源集控云存储方法
WO2019080015A1 (zh) * 2017-10-25 2019-05-02 华为技术有限公司 一种数据读写方法、装置和存储服务器
CN109992196B (zh) * 2017-12-29 2022-05-17 杭州海康威视数字技术股份有限公司 索引数据的存储方法及装置、存储系统
CN108491167B (zh) * 2018-03-29 2020-12-04 重庆大学 一种工业过程工况数据快速随机分布存储方法
WO2019207503A1 (en) * 2018-04-27 2019-10-31 nChain Holdings Limited Partitioning a blockchain network
CN108769171B (zh) * 2018-05-18 2021-09-17 百度在线网络技术(北京)有限公司 分布式存储的副本保持验证方法、装置、设备及存储介质
CN108664223B (zh) * 2018-05-18 2021-07-02 百度在线网络技术(北京)有限公司 一种分布式存储方法、装置、计算机设备及存储介质
CN108874585B (zh) * 2018-05-25 2021-01-22 南京云信达科技有限公司 文件备份方法、装置及系统
CN110535898B (zh) * 2018-05-25 2022-10-04 许继集团有限公司 大数据存储中副本存放、补全、节点选择方法及管理系统
US10764258B2 (en) * 2018-06-29 2020-09-01 Arm Ip Limited Blockchain infrastructure for securing and/or managing electronic artifacts
CN110798492B (zh) * 2018-08-02 2022-08-09 杭州海康威视数字技术股份有限公司 数据存储方法及装置、数据处理系统
CN109062736A (zh) * 2018-08-20 2018-12-21 广州视源电子科技股份有限公司 一种数据备份方法、装置、设备及存储介质
CN109597826B (zh) * 2018-09-04 2023-02-21 创新先进技术有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN110874288A (zh) * 2018-09-04 2020-03-10 北京奇虎科技有限公司 一种Redis集群缓存数据的管理方法及装置
CN110633378A (zh) * 2019-08-19 2019-12-31 杭州欧若数网科技有限公司 一种支持超大规模关系网络的图数据库构建方法
CN110795702A (zh) * 2019-10-12 2020-02-14 山东英信计算机技术有限公司 一种软件防破解方法、装置、设备、介质
US11074129B2 (en) 2019-10-31 2021-07-27 Western Digital Technologies, Inc. Erasure coded data shards containing multiple data objects
CN111444274B (zh) * 2020-03-26 2021-04-30 上海依图网络科技有限公司 数据同步方法、数据同步系统及其装置、介质和系统
CN111428271A (zh) * 2020-04-17 2020-07-17 上海坤仪金科信息技术有限公司 一种区块链云存储用户数据安全解决方法
CN111835848B (zh) * 2020-07-10 2022-08-23 北京字节跳动网络技术有限公司 数据分片方法、装置、电子设备及计算机可读介质
CN113297005B (zh) * 2020-07-27 2024-01-05 阿里巴巴集团控股有限公司 数据处理方法、装置和设备
CN112231398A (zh) * 2020-09-25 2021-01-15 北京金山云网络技术有限公司 数据存储方法、装置、设备及存储介质
CN113268472B (zh) * 2021-07-15 2021-10-12 北京华品博睿网络技术有限公司 一种分布式数据存储系统及方法
CN113609090A (zh) * 2021-08-06 2021-11-05 杭州网易云音乐科技有限公司 数据存储方法及装置、计算机可读存储介质、电子设备
CN113505027B (zh) * 2021-09-10 2022-03-01 深圳市科力锐科技有限公司 业务系统备份方法、装置、设备及存储介质
CN113961149B (zh) * 2021-10-29 2024-01-26 国网江苏省电力有限公司营销服务中心 一种电力信息系统多态数据存储系统及存储方法
CN114398371A (zh) * 2022-01-13 2022-04-26 九有技术(深圳)有限公司 数据库集群系统多副本分片方法、装置、设备及存储介质
CN114925073B (zh) * 2022-06-14 2024-04-16 深圳九有数据库有限公司 支持灵活动态分片的分布式数据库系统及其实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101753349A (zh) * 2008-12-09 2010-06-23 中国移动通信集团公司 数据节点的升级方法、升级调度节点及升级系统
CN105335297A (zh) * 2014-08-06 2016-02-17 阿里巴巴集团控股有限公司 基于分布式内存和数据库的数据处理方法、装置和系统
CN105740295A (zh) * 2014-12-12 2016-07-06 中国移动通信集团公司 一种分布式数据的处理方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555404A (en) * 1992-03-17 1996-09-10 Telenor As Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas
US7739239B1 (en) 2005-12-29 2010-06-15 Amazon Technologies, Inc. Distributed storage system with support for distinct storage classes
US7653782B2 (en) * 2006-05-23 2010-01-26 Dell Products L.P. Method for host bus adapter-based storage partitioning and mapping across shared physical drives
WO2015029139A1 (ja) * 2013-08-27 2015-03-05 株式会社東芝 データベースシステム、プログラムおよびデータ処理方法
CN104468651B (zh) 2013-09-17 2019-09-10 南京中兴新软件有限责任公司 分布式多副本数据存储方法及装置
US10620830B2 (en) * 2013-12-18 2020-04-14 Amazon Technologies, Inc. Reconciling volumelets in volume cohorts
US10120924B2 (en) * 2014-03-31 2018-11-06 Akamai Technologies, Inc. Quarantine and repair of replicas in a quorum-based data storage system
CN104376087B (zh) * 2014-11-19 2017-09-29 天津南大通用数据技术股份有限公司 一种采用交叉备份的分布式数据库负载均衡的计算方法
CN104580427B (zh) * 2014-12-27 2018-09-04 北京奇虎科技有限公司 一种分布式存储系统中的主从平衡方法和装置
US20160306822A1 (en) * 2015-04-17 2016-10-20 Samsung Electronics Co., Ltd. Load balancing of queries in replication enabled ssd storage
CN106302702B (zh) * 2016-08-10 2020-03-20 华为技术有限公司 数据的分片存储方法、装置及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101753349A (zh) * 2008-12-09 2010-06-23 中国移动通信集团公司 数据节点的升级方法、升级调度节点及升级系统
CN105335297A (zh) * 2014-08-06 2016-02-17 阿里巴巴集团控股有限公司 基于分布式内存和数据库的数据处理方法、装置和系统
CN105740295A (zh) * 2014-12-12 2016-07-06 中国移动通信集团公司 一种分布式数据的处理方法及装置

Also Published As

Publication number Publication date
EP3487149A4 (en) 2019-05-22
US20190171537A1 (en) 2019-06-06
US10942828B2 (en) 2021-03-09
WO2018028229A1 (zh) 2018-02-15
EP3487149A1 (en) 2019-05-22
CN106302702A (zh) 2017-01-04
EP3487149B1 (en) 2020-04-29

Similar Documents

Publication Publication Date Title
CN106302702B (zh) 数据的分片存储方法、装置及系统
US10678451B2 (en) Cycling out dispersed storage processing units from access pools to perform expensive operations
US10248504B2 (en) List request processing during a dispersed storage network configuration change
US10459899B1 (en) Splitting database partitions
US10229004B2 (en) Data transfer priority levels
US10735545B2 (en) Routing vault access requests in a dispersed storage network
US20170123947A1 (en) Utilizing request deadlines in a dispersed storage network
US20170212683A1 (en) Provisioning ds units on the fly in a dsn memory in response to load
US11681582B2 (en) Write lock conflicts in a storage network
CN109478125B (zh) 操纵分布式一致性协议以识别期望的存储单元集
CN108897858B (zh) 分布式集群索引分片的评估方法及装置、电子设备
US10275185B2 (en) Fail-in-place supported via decentralized or Distributed Agreement Protocol (DAP)
US10834194B2 (en) Batching updates in a dispersed storage network
US11080092B1 (en) Correlated volume placement in a distributed block storage service
US10769016B2 (en) Storing a plurality of correlated data in a dispersed storage network
US10884648B2 (en) Temporary relocation of data within local storage of a dispersed storage network
US11436009B2 (en) Performing composable transactions in a dispersed storage network
US10642521B2 (en) Scaling distributed queues in a distributed storage network
US10592109B2 (en) Selecting storage resources in a dispersed storage network
US10476961B2 (en) Changing rebuild priority for a class of data
US10241861B2 (en) Method for tenant isolation in a distributed computing system
US11169731B2 (en) Managing storage resources in a dispersed storage network
US11036537B1 (en) On demand capacity management in provider networks using type-agnostic resources
US11048554B1 (en) Correlated volume placement in a distributed block storage service
CN117851040A (zh) 一种基于动态资源负载实现云平台计算节点的资源整合方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant