CN103312825B - 一种数据分布存储方法和装置 - Google Patents
一种数据分布存储方法和装置 Download PDFInfo
- Publication number
- CN103312825B CN103312825B CN201310289571.7A CN201310289571A CN103312825B CN 103312825 B CN103312825 B CN 103312825B CN 201310289571 A CN201310289571 A CN 201310289571A CN 103312825 B CN103312825 B CN 103312825B
- Authority
- CN
- China
- Prior art keywords
- data block
- back end
- business
- stored
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据分布存储方法和装置,该方法应用于分布式存储系统,该分布式存储系统包括核心服务器组和至少一个外围服务器组,其中核心服务器组和外围服务器组中均包括用于存储数据和处理数据的多个数据节点,该方法在获取到待存储业务的数据块和数据块副本后,依据预置的均衡分布规则,将业务的数据块存储至核心服务器组的数据节点中,而将数据块副本存储在外围服务器组的数据节点中。这样,可以只运行核心服务器组的数据节点,且当存在数据块异常或者核心服务器组中数据处理量过大时,才将处理请求调度到外围服务器组中数据节点中,从而在为保证系统正常访问需求的前提下,减少系统能耗提供了可能。
Description
技术领域
本发明涉及分布式共享存储技术领域,更具体的说是涉及一种数据分布存储方法和装置。
背景技术
云计算是一种典型的网络计算模式,强调在虚拟计算环境下运行大规模应用的可伸缩性和可用性。
随着数据密集型计算的飞速发展和对信息处理能力要求的逐渐提高,数据密集型应用的数据在云计算环境下的应用也越发广泛。数据密集型应用的数据一般是存储在分布式共享存储环境中。然而在数据分布共享存储环境下,影响数据密集型计算性能的主要因素是数据的网络传输。为了减少数据的网络传输,数据密集型计算往往需要将计算逻辑分配到存储相应数据所在的服务器上进行计算,然后由服务器将计算结果返回。
在现有的分布式共享存储环境中,为了满足数据密集型应用的数据的可用性要求,一般是将需要存储的数据分为固定大小的数据块,并为每一块数据复制一定数量的数据块副本,并将这些切分出的数据块和复制出的数据块分布存储到网络中不同的存储服务器中。通过该种多副本相互备份的方式可以提高数据可用性。同时,通过多副本的大规模并行数据访问,也满足了用户对于数据访问速度的要求。然而这种存储方式虽然满足了用户的服务质量需求,但是对于数据密集型应用而言,却可能会带来资源效率利用率低的问题,从而造成资源浪费。
发明内容
有鉴于此,本发明提供一种数据分布存储方法和装置,以为减少分布式系统中的资源消耗,实现系统节能。
为实现上述目的,本发明提供如下技术方案:一种数据分布存储方法,应用于分布式存储系统中,所述分布式存储系统中包括核心服务器组和至少一个外围服务器组,所述核心服务器组和所述外围服务器组均包括多个数据节点,核心服务器组中与所述外围服务器组中不包括同一个数据节点,所述方法包括:
获取待存储业务的第一数据块集合和至少一个第二数据块集合,其中,所述第一数据块集合中包括:对所述待存储业务的业务数据进行切分得到的多个第一数据块;所述第二数据块集合中包括:多个所述数据块分别复制的多个第一数据块副本;
依据预置的均衡分布规则,并结合所述第一数据块的数量、所述核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将所述多个第一数据块分别存储至所述核心服务器组的数据节点中;
将所述第二数据块集合中的多个第一数据块副本分别存储至所述外围服务器组中的所述多个数据节点内。
另一方面,本发明还提供了一种数据分布存储装置,所述装置应用于分布式存储系统中,所述分布式存储系统中包括核心服务器组和至少一个外围服务器组,所述核心服务器组和所述外围服务器组均包括多个数据节点,核心服务器组中与所述外围服务器组中不包括同一个数据节点,所述装置包括:
数据获取单元,用于获取待存储业务的第一数据块集合和至少一个第二数据块集合,其中,所述第一数据块集合中包括:对所述待存储业务的业务数据进行切分得到的多个第一数据块;所述第二数据块集合中包括:多个所述数据块分别复制的多个第一数据块副本;
核心存储单元,用于依据预置的均衡分布规则,并结合所述第一数据块的数量、所述核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将所述多个第一数据块分别存储至所述核心服务器组的数据节点中;
外围存储单元,用于将所述第二数据块集合中的多个第一数据块副本分别存储至所述外围服务器组中的所述多个数据节点内。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种数据分布存储方法和装置,由于将分布式存储系统中的多个数据节点分别划归为核心服务器组和至少一个外围服务器组内。在获取到待存储业务的第一数据块集合和至少一个第二数据块集合后,将第一数据块集合中的多个数据块存储至核心服务器组的多个数据节点中,而将第二数据块集合中的多个数据块副本存储至外围服务器组中的数据节点中。这样,当业务的数据块未发生损坏或失效等异常情况时,可以将外围服务器组中存储业务的数据块副本的数据节点设置为关闭或处于休眠状态,以减少设备损耗以及电力开销,无需使得所有数据节点在任意时刻均处于运行状态,从而减少资源消耗,实现了系统节能的目的;而当某个数据块损坏或失效等异常情况出现,或者是核心服务器负载较大时,则可以通过资源调度来开启外围服务器组中相应数据节点,从而可以在满足了数据的可访问性的前提下,最大限度实现节能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本发明一种数据分布存储方法一个实施例的流程示意图;
图2示出了本发明一种数据分布存储方法中依据均衡分布规则,将多个第一数据块分别存储至核心服务器组的一种实现方式的流程示意图;
图3示出了本发明一种数据分布存储方法中,将第二数据块集合中的多个第一数据块副本分别存储至外围服务器组的数据节点内的一种实现方式的流程示意图;
图4示出了本发明一种数据分布存储装置一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,示出了本发明一种数据分布存储方法一个实施例的流程示意图,本实施例的方法应用于分布式存储系统,其中,该分布式存储系统可以存储数据密集型应用的数据,在本实施例中的分布式存储系统至少包括多个数据节点,数据节点可以理解为用于存储数据的数据服务器,当然,与现有的分布式数据系统中的服务器相同,该数据节点也具备计算以及处理数据的功能。与现有不同的是,在本发明实施例中,分布式存储系统中的这多个数据节点分别被划归为核心服务器组和至少一个外围服务器组。其中,核心服务器组和外围服务器均包含有多个数据节点,核心服务器组中与所述外围服务器组中不包括同一个数据节点,也就是说同一个数据节点只能属于一个组,不能同时属于核心服务器组和外围服务器组。当然,当系统包含多个核心服务器组时,同一个数据节点也不能同时属于两个外围服务器组。其中,外围服务器组的数量可以根据实际需要的保护级别来确定,如可以仅仅有一个外围服务器组,当然为了数据的安全性考虑可以有多个核心服务器组。本实施例的方法包括:
步骤101:获取待存储业务的第一数据块集合和至少一个第二数据块集合。
其中,该第一数据块集合中包括:对所述待存储业务的业务数据进行切分得到的多个第一数据块。该第二数据块集合中包括:多个所述数据块分别复制的多个第一数据块副本。
其中,待存储业务也就是需要存储到分布式存储系统中的数据节点内的对象。一般不同的业务,所对应的业务数据也不相同,如待存储业务的业务数据可以是搜索引擎的应用程序以及相关数据等。一般情况下,在将业务数据存储至数据节点之前,需要将业务数据切分成多个数据块,在本实施例中为了描述方便,将当前待存储的业务数据切分得到的数据块称为第一数据块。并将多个第一数据块组成的集合称为第一数据块集合。
为了当某一个数据块损坏或丢失后,分布式存储系统中仍然有可能访问的数据块,对于该业务数据切分得到的每个第一数据块,还需要分别复制每个第一数据块的数据块副本,在本实施例中,将每一个第一数据块复制得到的数据块副本称为第一数据块副本。这多个第一数据块分别进行复制,得到多个第一数据块副本,这多个数据块副本组成第二数据块集合。
在本申请实施例可以根据实际需要来确定所需要的第二数据块集合,即每一个第一数据块需要复制出的数据块副本的数量。由于本申请实施例中,该第二数据块集合中的数据块副本均需要存储至属于同一个外围服务器组的数据节点内,因此,第二数据块集合的数量不应大于外围服务器组的数量,以免造成数据复制过程中的,数据资源浪费。
步骤102:依据预置的均衡分布规则,并结合该第一数据块的数量、核心服务器组中数据节点的数量以及核心服务器组中各个数据节点内当前已存储的数据块的数量,将多个第一数据块分别存储至所述核心服务器组的数据节点中。
与现有的根据负载均衡原则,将对业务数据进行切分后的数据块在整个分布式存储系统中数据节点内进行存储不同,在本申请实施例中,根据预置的均衡分布规则,将业务数据切分得到的多个第一数据块均衡的存储至属于核心服务器组的数据节点内。也就是说,这多个第一数据块不会被存储至核心服务器组之外的数据节点内,在存储这多个第一数据块时,只需要考虑该核心服务器组中数据节点的负载均衡问题。
其中,预置的均衡分布规则可以为现有的负载均衡规则或算法,也可以是根据需要设定的分布方式,在此不加以限定。
步骤103:将第二数据块集合中的多个第一数据块副本分别存储至外围服务器组中的所述多个数据节点内。
对于一个第二数据块集合,需要将该第二数据块集合中所包含的多个第一数据块副本分别存储至一个外围服务器组中的多个数据节点内。当针对同一个业务有多个第二数据块集合时,不同的第二数据块集合中的数据块副本不可以存储在同一个外围服务器组的数据节点内。例如,业务A第二数据块集合a1和第二数据块集合a2,第二数据块集合a1和a2中均包含有多个第一数据块副本,且每个第二数据块集合中的数据块副本均可以组成业务A,假设第二数据块集合a1中的第一数据块副本均存储至外围服务器组m1中,则第二数据块集合a1中的第一数据块副本需存储至不同于外围服务器组m1的另一个外围服务器组的数据节点内。
其中,可以理解的是,将第二数据块集合中的多个第一数据块副本存储至外围服务器组的数据节点时,该第二数据块集合中的任意第一数据块只能存储至一个数据节点内,不能出现同一个第二数据块集合中的同一个数据块副本中同时存储在两个数据节点内的情况。
其中,将第二数据块集合中的多个第一数据块副本存储至外围服务器组的数据节点中,可以随机将这多个第一数据块副本分别存储至外围服务器组的多个数据节点中。也可以综合考虑该外围服务器组中各个数据节点之间的负载均衡,来确定存储各个数据块副本的数据节点。
在本发明实施例中,由于将分布式存储系统中的多个数据节点分别划归为核心服务器组和至少一个外围服务器组内。在获取到待存储业务的第一数据块集合和至少一个第二数据块集合后,将第一数据块集合中的多个数据块存储至核心服务器组的多个数据节点中,而将第二数据块集合中的多个数据块副本存储至外围服务器组中的数据节点中。这样,当业务的数据块未发生损坏或失效等异常情况,且核心服务器组中需要处理的处理请求较少时,可以将外围服务器组中存储该业务的数据块副本的数据节点设置为关闭或处于休眠状态,以减少设备损耗以及电力开销,无需使得所有数据节点在任意时刻均处于运行状态,从而减少资源消耗,实现了系统节能的目的;而当业务的数据块损坏或失效等异常情况出现,或者存储数据块的数据节点的数据处理量较大时,则可以开启外围服务器组中相应数据节点,以实现可以访问该数据块,为在满足数据的可访问性的前提下,减少资源浪费提供了可能。
同时,由于本发明的数据分布存储方法将数据块和数据块副本分别存储在不同的服务器组中,这样当出现针对某个业务的访问需求量过大,而导致核心服务器中某一个或几个数据节点内的数据处理量过大的情况下,为将核心服务器组中的处理请求迁移到外围服务器组提供了可能,为在保证了系统正常的数据访问的前提下,最大限度的实现系统节能提供了可能。
在实际应用中,同一时刻系统中需要存储的待存储业务可能会有多个,相应的,可以确定出多个待存储业务,以及每个待存储业务的第一数据块集合和至少一个第二数据块集合。但是对于每一个待存储业务而言,将其第一数据块集合中的多个第一数据块存储至核心服务器组的数据节点内的过程均与上述实施例的描述过程相同。相应的,对于每一个待存储业务,将其第二数据库块集合中的多个第一数据块副本存储至外围服务器组的数据节点内的过程也与上述实施例的描述过程相同。
考虑到由于当系统接收到数据处理请求后,一般会优先访问存储有数据块的数据节点,只有在数据块损坏后才可能访问存储有数据块副本的数据节点,以完成相应的数据处理。可见,核心服务器组中的数据节点需要保证大规模并行处理,因此,在向核心服务器组中存储数据块时,需要保证核心服务器组中各个数据节点中的数据尽可能最大限度的均衡分布。为了实现核心服务器组中各个数据节点之间的数据的均衡分布,尽量使得每一个业务的各个数据块尽可能分不到较多的数据节点中;且在该核心服务器组中,各个数据节点中存储的同一个业务的数据块的个数应尽可能相同,且每个数据节点中承载的业务的个数应尽可能一样多。其中,每个数据节点承载的业务是根据该数据节点中的各个数据块所属的业务确定的,例如,数据节点A中存储有属于业务a1的业务的两个数据块,且存储有属于业务a2的三个数据块,则该数据节点中承载或者说存储的业务有两个,也就是说数据节点中存储有两个业务对应的数据块。
为了实现以上目的,使得核心服务器组中的数据节点内所存储的数据块能够最大限度的达到均衡分布,在获取到待存储业务后,将待存储业务的第一数据块集合中的第一数据块存储至核心服务器组时,所依据的均衡分布规则可以为:所述核心服务器组中,任意两个所述数据节点中存储该业务的第一数据块的数据量之差不大于一,且任意两个数据节点中存储的数据块的总数量之差不大于一。
这样,系统依据预置的均衡分布规则,并根据第一数据块集合中第一数据块的个数,该核心服务器组中数据节点的个数,以及核心服务器组的各个数据节点内已经存储的数据块的数量,便可以确定出需要分别向该核心服务器组的各个数据节点内存储第一数据块的数量,进而完成将多个第一数据块存储至核心服务器组的数据节点内。
进一步的,参见图2,示出了依据如上的均衡分布规则,将所述多个第一数据块分别存储至核心服务器组的数据节点内的一种具体实现方式的流程示意图,该过程包括:
步骤201:计算该第一数据块集合中第一数据块的数量与所述核心服务器组中数据节点的数量之间的比值,确定不超过该比值的最大的第一整数值。
其中,获取到该第一数据块集合后,该第一数据块集合中所包含对该业务的业务数据进行切分得到的数据块的数量S是确定不变的,而该核心服务器组中的数据节点的个数N也是确定不变的。
为了后续能够实现该第一数据块在核心服务器中的均衡分布,需要分析第一数据块集合中第一数据块的数量S1与核心服务器中数据节点的个数的大小关系。在本实施例中通过比值来区分二者的大小关系,进而确定核心服务器组中,每个数据节点至少需要存储的第一数据块的数量,即每个数据节点至少需要存储第一整数值个第一数据块。
其中,该第一整数值=int(S/N),S是第一数据块的总数量,N为核心服务器组中数据节点的总数量。例如,S=10,N=8,则第一整数值为1,其表示核心服务器中每个数据节点至少需要存储一个第一数据块,当然,有10个第一数据块,则剩余的两个第一数据块则需要通过后续步骤来确定存储至核心服务器组的哪个数据节点中。又如,S=5,N=8,则第一整数值为0,则说明有可能有些核心服务器组的数据节点中不需要存储第一数据块,但是有5个第一数据块需要存储至这8个数据节点中的某5个数据节点内。
步骤202:计算核心服务器组中数据节点的数量与该第一整数值的乘积,将该第一数据块的数量减去所述乘积得到第一剩余量。
确定出第一整数值是为了确定核心服务器组中的每个数据节点内至少需存储的第一数据块的数量,但是每个数据节点存储了该第一整数值个第一数据块后,可能还会剩余未被存储的数据块。而未被存储的数据块,则将由该第一数据块的数量减去该核心服务器组中数据节点的总数量N与第一整数值的乘积得到的。例如,第一数据块的总数量S=10,N=8时,第一整数值为1,则第一剩余量=S-N*1=2。
步骤203:向核心服务器组中的每个数据节点内存储该第一整数值个第一数据块,剩余第一剩余量个未被存储的第一数据块。
确定出第一整数值以及第一剩余量后,则向核心服务器组的每个数据节点中均存储第一整数值个第一数据块,此时,核心服务器组的每个数据节点中存储该业务的第一数据块的数量相同。但是该第一数据库集合中仍会留有第一剩余量个第一数据块未被存储至核心服务器组的数据节点中。
步骤204:从核心服务器组中,确定当前存储数据块的数量最少的至少一个第一数据节点,并确定第一数据节点的第一数量。
为了将剩余的第一剩余量个第一数据块存储至核心服务器后,能够使得满足以上预置的均衡规则,使得核心服务器组中,不同数据节点所承载的业务数量差距最小,且不同数据节点存储同一业务的数据块尽可能相同,以最大限度达到数据块均衡分布。因此,需要确定出核心服务器组中,当前存储有数据块数量最少的至少一个第一数据节点。可以理解是,第一数据节点仅仅是为了与核心服务器组中,当前不属于为了存储的数据块最少的数据节点相区分,而命名的。
需要说明的是,当核心服务器组中所有数据节点存储的数据块的数量均相同时,则核心服务器组中的所有数据节点均可以被认为是第一数据节点。
步骤205:当该第一数量不小于该第一剩余量时,将剩余的第一剩余量个第一数据块分别存储至第一剩余量个第一数据节点内。
当第一数据节点的数量大于或等于未被存储的第一数据块的数量时,则可以从多个第一数据节点中,随机选择出与剩余的第一数据块相同数量的第一数据节点来存储剩余的第一数据块。每个剩余的第一数据块存储至一个选择出的第一数据节点中。
例如,仍以前面第一数据块的总数量S=10,核心服务器组中数据节点的数量N=8时,第一整数值为1,第一剩余量=S-N*1=2为例,假设之前该核心服务器组的数据节点中均未存储过数据块或者数据节点中存储的数据块数量相同,则核心服务器组中的8个数据节点均是存储数据块最少的第一数据节点,即第一数量等于N=8,则可以从这8个数据节点中随机选择两个数据节点,然后将剩余的两个第一数据块分别存储至选择出的两个数据节点中。当假设该核心服务器组的数据节点中已经存储过其他业务的数据块时,并假设有5个数据节点中存储的数据块的数量比其他3个数据节点中存储的数据块的数量多一个,则有3个数据节点为第一数据节点,此时,可以从这三个数据节点中随机选择两个数据节点,并将剩余的2个第一数据块分别存储至这两个数据节点中。
步骤206:当该第一数量小于该第一剩余量时,将未被存储的该第一数量个第一数据块分别存储至第一数量个第一数据节点中,得到剩余的第二剩余量个未被存储的第一数据块。
当第一数据节点的数量小于未被存储的第一数据块的数量时,则可以先将与第一数据节点相同数量的数据块分别存储至确定出的第一数据节点中,得到第二剩余量个未被存储的第一数据块。其中,第二剩余量等于第一剩余量减去该第一数量。
步骤207:从核心服务器组中选择第二剩余量个数据节点,将第二剩余量个第一数据块存储至选择出的第二剩余量个数据节点内。
由于向核心服务器组的数据节点中存储任意业务的数据块时,都是依据本实施例的存储方法,因此,核心服务器组中不同数据节点之间所存储的数据块的数量之差不大于一。这样,当进行了步骤206后,当前时刻核心服务器组的各个数据节点所存储的数据块的数量相同。因此,对于剩余的第二剩余量个第一数据块,则可以随机从核心服务器组中选择与该第一剩余量相同数量的数据节点,进而将第二剩余量个第一数据块存储至选择出的第二剩余量个数据节点内。
例如,当第一数据节点的第一数量为2个,而当前剩余的第一数据块的第一剩余量为5个时,则第一数量小于第一剩余量,将剩余的这5个第一数据块中的2个存储分别存储至确定出的这两个第一数据节点内。此时,核心服务器组的各个数据节点中存储的数据块的总数量相同,而未被存储的第一数据块还剩余3个即第二剩余量为3,则可以从核心服务器组中随机选择3个数据节点,并将剩余的3个第一数据块分别存储至选择出的这3个数据节点中。
可以理解的是,本实施例仅仅是以需要存储的业务为一个为例,来说明的,当需要存储的业务有多个时,可以分别将每一个需要存储的业务作为当前待存储的业务,并按照图2所示流程的方式进行处理。
当然,图2仅仅是按照预置的均衡分布规则,向核心服务器组中存储第一数据块的一种实现形式,在实际应用中,还可以有其他实现方式。例如,可以不通过步骤201的方式,即不确定该第一整数值,而可以是将该第一数据块集合中第一数据块的数量S除以该核心服务器组中数据节点的总数量N,得到商和余数。然后向核心服务器组中的每个数据节点中均存储与该商相同个数的第一数据块,剩余与该余数相同个数的第一数据块,对于剩余的第一数据块,则仍可以采用步骤204至206的操作。
为了便于理解,以需要存储三个业务的业务,分别为业务B1、B2、和B3的业务数据。每个业务均包括第一数据块集合和第二数据块集合,该第一数据块集合中包括对该业务进行切分得到的多个第一数据块。其中,业务B1有第一数据块的数量S1=64个,业务B2的第一数据块的数量S2=30个,业务B3的第一数据块的数量S3为28个。假设核心服务器的数据节点的数量N=10,分别为数据节点n1-n10,且每个数据节点中均未存储过数据块。
首先,分别针对每个业务,确定其对应的每个服务器所需存储数据块的最大整数值,并向核心服务器的每个数据节点中存储该最大整数值个第一数据块。
业务B1:
最大整数值int(S1/N)=int(64/10)=6,第一剩余量=S1-6*N=64-60=4
当然,也可以是将S1除以N的商和余数,如,S1=a*N+b,其中,a为商,b为余数。a与最大整数值相同,即a=6,b与第一剩余量相同,即b=4。可见,这两种方式的原理是相同。
将业务B1的60个第一数据块分别存储至这10个数据节点中,向每个数据节点存储6个第一数据块,剩余4个未被存储的第一数据块。
业务B2:
最大整数值为3,第一剩余量为0。
向核心服务器组的每个数据节点中均存储3个第一数据块,此时业务B2的所有第一数据块均已经被存储,没有剩余的第一数据块,则对于该业务B而言,向核心服务器组中存储数据块的过程结束。
业务B3:
最大整数值为2,第一剩余量为8。
向核心服务器组的每个数据节点中均存储2个第一数据块,此时还剩余该业务B2的8个未被存储的第一数据块。
其次,对于每一个业务,确定该业务当前剩余的第一数据块需要分配的数据节点。
业务B1:剩余4个第一数据块
由于当前时刻,核心服务器组中每个数据节点所存储的数据块的总数量相同,对于B1中剩余的4个第一数据块,可以从核心服务器组中随机选择4个数据节点来存储这4个第一数据块,假设将这4个第一数据块分别存储至核心服务器组中的数据节点n1、数据节点n2、数据节点n3和数据节点n4。
业务B2:没有剩余的第一数据块。
业务B3:剩余8个第一数据块
由于当前时刻核心服务器组中存储数据块的总数量最少的数据节点有6个,即数据节点n5-n10,则可以将这8个剩余的第一数据块中的6个第一数据块,分别存储至数据节点n5到数据节点n10中。可见,此时核心服务器中每个数据节点内存储的数据块的总数量相同,而该业务B3当前剩余的第一数据块的第二剩余量为2,此时可以将这2个剩余的第一数据块随机存储至该核心服务器组中任意两个数据节点中,例如,可以将这两个剩余的第一数据块分别存储至数据节点n1和数据节点n2中。
当后续再有需要存储的业务的数据时,还可以继续按照以上例子的方式来完成数据块的存储。
通过本实施例的方法向核心服务器组中存储第一数据块,可以使得核心服务器组中各个数据节点中所承载的业务尽可能相同,且每个数据节点中所存储的数据块也尽可能相同,使得核心服务器组中的数据块分布均衡,从而有利于后续系统数据处理过程中的负载均衡,有利于提高系统中数据的访问性能,能很好的保证对系统中核心服务器组大规模并行处理的需求。
进一步的,在以上任意一个实施例中,为了能够兼顾数据处理性能,并能最大限度的节能,对于一个外围服务器组,则需要每个数据节点上存储的数据块尽可能一样多,同时对于同一个业务的数据块副本应尽可能存储较少的数据节点中,而不同业务的数据块副本要么存储在不同的数据节点中,要么尽可能存储在相同的数据节点中。这样,使得同一个业务的数据块副本尽可能集中,当核心服务器组中针对单个业务的处理请求的处理量过大时,可以将处理请求迁移到外围服务器组中比较集中的数据节点内,减少了需要开启的数据节点的数量,达到了节能的目的;同时,不同业务的数据块副本尽可能集中在相同的数据节点中,这样,当核心服务器组的数据节点中针对业务的数据处理请求过多,导致核心服务器组中的数据节点存在负载过大的情况下,可以确定在外围服务器组的数据节点中存储的较为集中的业务,并将针对这些业务的数据处理请求迁移到外围服务器组,从而使得外围服务器组处理迁移出的数据处理请求的数据节点较为集中,不会是的外围服务器组中的大部分数据节点均处于运行阶段,从而达到了节能的目的。
为了实现以上目的,参见图3,示出了本发明的数据分布存储方法中,将第二数据块集合中的多个第一数据块副本分别存储至外围服务器组的数据节点内的一种具体实现方式的流程示意图,包括:
步骤301:确定外围服务器组中所包含的数据节点的第二总数量,各个数据节点当前已经存储的数据块副本的第二副本存储量,以及数据节点针对同一业务能够存储的数据块副本数量的最大存储量。
其中,当一个外围服务器组确定后,其所包含的数据节点的个数也是确定的。当然,不同的外围服务器组所包含的数据节点的数量有可能不同。本实施例中仅仅是针对将一个第二数据块集合中的多个第一数据块副本存储至一个外围服务器组的数据节点为例,对于有多个第二数据块集合中,可能需要有多个外围服务器组,但是将任意一个第二数据块集合中的多个第一数据块副本存储至一个外围服务器组的过程均相同。
在对该待存储业务的数据块副本进行存储之前,如果该外围服务器组的数据节点中未存储过其他业务的数据块副本,则该第二副本存储量为零;如果该外围服务器组的数据节点中已经存储过其他业务的数据块副本,则需要分别确定每个数据节点中存储的数据块副本的数量,即确定第二副本存储量。
其中,该最大存储量是指,对于任意一个业务,该外围服务器组中的数据节点中能够存储的数据块副本的数量的最大值。一般情况下,对于任意业务,该最大存储量是同一个值,且为一个设定的固定值。该最大存储量表征在存储的数据块副本的存储量不超过该最大存储量时,数据节点的数据处理能够满足业务需求,因此,该最大存储量的具体值可能根据实际情况设定。
步骤302:根据该第二总数量、第二副本存储量、最大存储量以及该第二数据块集合中第一数据块副本的第二副本总量,确定外围服务器组中每个数据节点平均需存储的业务的第二平均数量。
该第二平均数量是指,外围服务器组中每个数据节点需要存储的数据块副本所属的业务的平均数量。
根据外围服务器集合中的数据节点的数量、外围服务器中各个数据节点已经存储的数据块副本的数量、待存储的第一数据块副本的总量、以及每个数据节点存储一个业务的数据块副本的最大存储量,便可以计算出完成将该待存储的第一数据块副本存储到外围服务器组的数据节点内后,外围服务器组中每个数据节点中平均需要存储的业务的个数,即外围服务器组的每个数据节点中需要存储来自几个业务的数据块副本。
具体的,该过程可以包括:
将该外围服务器组中的各个数据节点当前已经存储的数据块副本的第二副本存储量与第一数据块副本的第二副本总量进行求和,得到该外围服务器组中需要存储的数据块副本的总存储量。
利用该总存储量除以该第二总数据量,得到外围服务器中平均每个数据节点需要存储的数据块副本的平均值;其中,该平均值为不小于总存储量除以该第二总数据量所得值的最小整数。例如,总存储量为123,第二总数据量为12,则123除以12等于10.25,则需要存储的数据块副本的平均值为11个。
将该每个数据节点需要存储的数据块副本的平均值除以该最大存储量,计算出每个数据节点平均需要存储的业务的第二平均数量。其中,该第二平均数量是不小于该平均值除以该最大存储量的最小整数。
例如,设外围服务器组中包含的数据节点的第二总数量M=12,外围服务器组中数据节点对同一个业务的数据块副本的最大存储量为P=8,第一数据块副本的第二副本总量为64。
假设外围服务器组中各个数据节点中已经存储的数据块副本的第二副本存储量的总和为80,则外围服务器组中需要存储的数据块副本的总存储量L=64+80=144。外围服务器中平均每个数据节点需要存储的数据块副本的平均值为Lp=L/M=144/12=12。每个数据节点平均需要存储的业务的第二平均数量为:Lp/P=12/8=1.5,取不小于1.5的最小整数为2,即每个数据节点上平均需要存储有属于两个业务的数据块副本。
步骤303:根据该最大存储量以及第二副本总量,计算存储该多个第一数据块副本所需要的数据节点的第二需求数量。
根据第一数据块副本的第二副本总量与核心服务器组中数据节点能够存储同一业务的的数据块副本的最大数量的比值,可以计算出存储这第二副本总量个第一数据块副本至少需要的数据节点的个数。
仍以步骤302中的例子为例,最大存储量为P=8,第一数据块副本的第二副本总量为64,则存储这64个第二数据块副本所需要的数据节点的第二需求数量至少为8个。
步骤304:根据外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从外围服务器组中,确定至少一个第二数据节点,其中,该第二数据节点为外围服务器组中,存储的数据块副本所属的业务的数量未达到第二平均数量的数据节点。
当外围服务器组中,数据节点所存储的数据块副本所属的业务的个数达到该第二平均数量时,则不能再向该数据节点中再存储其他业务的数据块副本。例如,设外围服务器组中,数据节点的最大存储量为8,数据节点平均存储业务的第二平均数量为3个。当数据节点1中存储有业务1的8个数据块副本,业务2的8个数据节点副本,以及业务3的6个数据块副本,而该数据节点1中存储的数据块副本属于3个业务,即该数据节点存储有3个业务的数据块副本,则不能向数据节点1中再存储其他业务的数据块副本。数据节点2中存储有业务1的8个数据块副本,业务2的8个数据块副本,则该数据节点2存储的业务的数量未达到第一平均数量,而该数据节点2可以作为该第二数据节点,可以继续向该数据节点2中存储其他业务的数据块副本。
步骤305:按照所存储的数据块副本所属的业务的总数量从高到低,对该至少一个第二数据节点进行排序,并确定排序靠前的第二需求数量个第二数据节点。
步骤306:将第二数据集合中的第一数据块副本分别存储至排序靠前的第二需求数量个第二数据节点中,且每个第二数据节点中均存储与最大存储量相同个数的第一数据块副本。
例如,设对于当前待存储的业务的第一数据块副本为24个,需要的数据节点的第二需求数量为3个,并假设该外围服务器组中属于第二数据节点的包括数据节点2-10,其中,数据节点2、数据节点5中存储的数据块副本均属于2个业务,数据节点3中存储的数据块副本属于一个业务,数据节点4中没有存储任何业务的数据块副本,则按照存储的业务的总数量从高到低排序为:数据节点2、数据节点5、数据节点3、数据节点4,则确定排序靠前的3个(第二需求数量为3)的数据节点为数据节点2、数据节点5和数据节点3。
确定出存储第一数据块副本的第二数据节点中,将这24个第一数据块副本平均分到这排序靠前的3个数据节点内,每个数据节点均存储8个第一数据块副本。
可以理解的是,本实施例仅仅是以需要存储的业务为一个为例,来说明的,当需要存储的业务有多个时,可以分别将每一个需要存储的业务作为当前待存储的业务,并按照图3所示流程的方式完成数据块副本的存储。
当系统中获取到多个待存储的业务时,除了依次对于每个业务执行如图3所示的步骤外,为了减少数据处理量,当获取每个业务的第一数据集合和至少一个第二数据块集合,得到这多个业务的多个第二数据块集合后,统一计算出一个第二平均数量,然后再分别针对每个业务的第二数据块集合,确定存储该第二数据块集合中第一数据块副本的数据节点。
具体的,可以根据该第二总数量、第二副本存储量、最大存储量以及这多个业务的多个第二数据集合中第一数据块副本的第二副本总量之和,确定该第二平均数量。由于一个待存储业务可能有多个第二数据块集合,但是存储至该外围服务器组中的只可能为该业务的一个第二数据块集合中的第一数据块副本,因此,计算该第二副本总量之和是待存储的至该外围服务器组的第二数据块集合中的第一数据块副本的总数量之和。这样,无需多次计算该第二平均数量。
相应的,在计算第二需求数量时,则需要依次针对每一个待存储的业务,根据所述最大存储量以及待存储业务的第一数据块副本的第二副本总量,计算存储当前待存储业务的多个第一数据块副本所需要的数据节点的第二需求数量。
计算出该第二需求数量后,在根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点之前,还包括:
按照对数据节点的第二需求数量从多大少,对所述多个待存储业务进行排序。
完成排序操作后,则可以执行如下操作:
按照对所述待存储业务的排序的位置先后,依次将每个待存储业务作为当前待处理的业务;
对于当前待处理的业务,根据外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从外围服务器组中,确定至少一个第二数据节点,并执行按照所存储的数据块副本所属的业务的总数量从高到低,对所述至少一个第二数据节点进行排序的操作,并在完成将当前待处理的业务的多个第一数据块副本存储至排序靠前的第二需求数量个第二数据节点之后,将下一待存储的业务作为当前待处理的业务,直至完成所有待存储的业务的第一数据块副本均存储完毕。
为了便于理解,假设外围服务器组中有数据节点10个,分别为数据节点1-10,数据节点对于同一个业务的数据块副本的最大存储量为12个,为了便于描述假设外围服务器组中的每个数据节点中均未存储过任何业务的数据块副本。待存储业务有4个,按照待存储业务包含的第一数据块副本的数量从多到少排列这几个待存储的业务分别为:业务B1包括84个第一数据块副本,业务B2包括72个第一数据块副本,业务B3包括60个第一数据块副本,业务B4包括24个第一数据块副本。
首先,计算外围服务器组中每个数据节点平均需存储的业务的第二平均数量。
该外围服务器组中需要存储的第一数据块副本的总数量为这四个业务所包含的第一数据块副本的总和,即84+72+48+24=228。
外围服务器中平均每个数据节点需要存储的数据块副本的数量为:大于或等于228/10=22.8的最小整数,即每个外围服务器中至少需要存储23个数据块副本。
第二平均数量为大于或等于23/12的最小整数,即第一平均数量为两个,也就是每个数据节点需要存储属于两个业务的数据块副本。
其次,计算存储每个业务的多个数据块副本所需的数据节点的数量。
B1需要84/12=7个数据节点;
B2需要72/12=6个数据节点;
B3需要48/12=4个数据节点
B2需要24/12=2个数据节点
最后,按照所需数据节点的数量由多到少,依次处理每个业务的数据块副本。
业务B1:由于此时外围服务器中所有的数据节点中均未存储任何业务的数据块,所有的数据节点中存储的业务的个数均未达到两个(平均承载的业务的第二平均数量)。因此,可以随机选择7个数据节点,例如,选择数据节点1-7。将业务B1的84个第一数据块副本分别存储至这7个数据节点中,且每个数据节点中均存储12个该业务B1的第一数据块副本。
业务B2:存储了业务B1的第一数据块副本后,外围服务器组的所有数据节点中存储的业务也均未达到2个,此时,按照所存储的业务的总数量从高到低,对该这些数据节点进行排序,则依次为数据节点1-7,数据节点8、数据节点9和数据节点10。将业务B2的第一数据块副本存储至排序靠前的6个数据节点中,如业务B2的72个数据块平均存储至数据节点1-6中。
业务B3:存储了业务B2的数据块副本后,数据节点1-6中存储的数据块副本来自两个业务,而数据节点7-10中的业务的个数为达到2个,且数据节点7中有一个业务的数据块副本,数据节点8-10中没有存储任何业务的数据块副本。此时,按照所存储的业务的总数量从高到低,对该这些数据节点进行排序为:数据节点7、数据节点8-10。因此选择排序位于前4个的数据节点,则将该业务B3的48个第一数据块副本分别存储至数据节点7-10中。
业务B4:完成业务B3的第一数据块副本的存储后,存储业务的数量没有达到两个的第二数据节点包括数据节点8-10,则可以从这3个数据节点中随机选择两个数据节点,如选择数据节点8和9,将业务B4的24个第一数据块副本平均存储至数据节点8和数据节点9中。
对应本发明的一种数据分布存储方法,本发明还提供了一种数据分布存储装置。参见图4,示出了本发明一种数据分布存储装置一个实施例的结构示意图,该装置应用于分布式存储系统中,该分布式存储系统中包括核心服务器组和至少一个外围服务器组,该核心服务器组和外围服务器组均包括多个数据节点,核心服务器组中与所述外围服务器组中不包括同一个数据节点,该装置包括:数据获取单元401、核心存储单元402和外围存储单元403。
其中,数据获取单元401,用于获取待存储业务的第一数据块集合和至少一个第二数据块集合,其中,所述第一数据块集合中包括:对所述待存储业务的业务数据进行切分得到的多个第一数据块;所述第二数据块集合中包括:多个所述数据块分别复制的多个第一数据块副本。
核心存储单元402,用于依据预置的均衡分布规则,并结合所述第一数据块的数量、所述核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将所述多个第一数据块分别存储至所述核心服务器组的数据节点中。
外围存储单元403,用于将所述第二数据块集合中的多个第一数据块副本分别存储至所述外围服务器组中的所述多个数据节点内。
其中,数据获取单元获取到待存储业务可以是一个,也可以是确定出多个待存储业务,并获取每个待存储业务的第一数据块集合和至少一个第二数据块集合。
相应的,核心存储单元,用于依次将每一个待存储业务的第一数据块集合作为当前待处理的第一数据块结合,依据预置的均衡分布规则,并结合当前待处理的第一数据块集合中第一数据块的数量、核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将当前待处理的多个第一数据块分别存储至核心服务器组的数据节点中。
该外围存储单元403,用于依次将每个待存储业务的一个第二数据块集合作为当前待处理的集合,将当前待处理的第二数据块集合中的多个第一数据块副本分别存储至所述外围服务器组中的所述多个数据节点内。
进一步的,该第一存储单元所依据的所述预置的均衡分布规则可以包括:所述核心服务器组中,任意两个所述数据节点中存储所述第一数据块的数据量之差不大于一,且任意两个数据节点中存储的数据块的总数量之差不大于一。
在以上均衡分布规则基础上,可选的,该核心存储单元,可以包括:
最小存储数确定单元,用于计算所述第一数据块的数量与所述核心服务器组中数据节点的数量之间的比值,确定不超过所述比值的最大的第一整数值;
第一剩余量计算单元,用于计算所述核心服务器组中数据节点的数量与所述第一整数值的乘积,将所述第一数据块的数量减去所述乘积得到第一剩余量;
第一核心存储单元,用于向核心服务器组中的每个数据节点内存储所述第一整数值个所述第一数据块,剩余所述第一剩余量个所述第一数据块;
第一节点选择单元,用于从所述核心服务器组中,确定当前存储数据块的数量最少的至少一个第一数据节点,并确定所述第一数据节点的第一数量;
第二核心存储单元,用于当所述第一数量不小于所述第一剩余量时,将剩余的所述第一剩余量个所述第一数据块,分别存储至第一剩余量个所述第一数据节点内;
第三核心存储单元,用于当所述第一数量小于所述第一剩余量时,将第一数量个所述第一数据块分别存储至所述第一数量个所述第一数据节点中,得到剩余的第二剩余量个未被存储的第一数据块,并触发执行第四核心存储单元的操作;
第四核心存储单元,用于从所述核心服务器组中选择第二剩余量个数据节点,将所述第二剩余量个第一数据块存储至选择出的第二剩余量个数据节点内。
可选的,该外围存储单元,可以包括:
确定单元,用于确定所述外围服务器组中所包含的数据节点的第二总数量,各个数据节点当前已经存储的数据块副本的第二副本存储量,以及数据节点针对同一业务能够存储的数据块副本数量的最大存储量;
业务平均确定单元,用于根据所述第二总数量、所述第二副本存储量、所述最大存储量以及所述第二数据块集合中第一数据块副本的第二副本总量,确定外围服务器组中每个数据节点平均需存储的业务的第二平均数量;
节点需求计算单元,用于根据所述最大存储量以及所述第二副本总量,计算存储所述多个第一数据块副本所需要的数据节点的第二需求数量;
第一节点确定单元,用于根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点,其中,所述第二数据节点为所述外围服务器组中,存储的数据块副本所属的业务的数量未达到所述第二平均数量的数据节点;
第二节点确定单元,用于按照所存储的数据块副本所属的业务的总数量从高到低,对所述至少一个第二数据节点进行排序,并确定排序靠前的第二需求数量个第二数据节点;
外围存储子单元,用于将所述第二数据集合中的第一数据块副本分别存储至所述排序靠前的第二需求数量个第二数据节点中,且每个第二数据节点中均存储与所述最大存储量相同个数的第一数据块副本。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (7)
1.一种数据分布存储方法,应用于分布式存储系统中,其特征在于,所述分布式存储系统中包括核心服务器组和至少一个外围服务器组,所述核心服务器组和所述外围服务器组均包括多个数据节点,核心服务器组中与所述外围服务器组中不包括同一个数据节点,所述方法包括:
获取待存储业务的第一数据块集合和至少一个第二数据块集合,其中,所述第一数据块集合中包括:对所述待存储业务的业务数据进行切分得到的多个第一数据块;所述第二数据块集合中包括:多个所述数据块分别复制的多个第一数据块副本;
依据预置的均衡分布规则,并结合所述第一数据块的数量、所述核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将所述多个第一数据块分别存储至所述核心服务器组的数据节点中;
将所述第二数据块集合中的多个第一数据块副本分别存储至所述外围服务器组中的所述多个数据节点内;其中,当业务的数据块未发生异常情况,且所述核心服务器组中需要处理的处理请求较少时,将所述外围服务器组中存储相对应的业务的数据块副本的数据节点设置为关闭或处于休眠状态;
其中,所述将所述第二数据块集合中的多个第一数据块副本分别存储至所述外围服务器组中的所述多个数据节点内,包括:
确定所述外围服务器组中所包含的数据节点的第二总数量,各个数据节点当前已经存储的数据块副本的第二副本存储量,以及数据节点针对同一业务能够存储的数据块副本数量的最大存储量;
根据所述第二总数量、所述第二副本存储量、所述最大存储量以及所述第二数据块集合中第一数据块副本的第二副本总量,确定第二平均数量,其中,所述第二平均数量为外围服务器组中每个数据节点需要存储的数据块副本所属的业务的平均数量;
根据所述最大存储量以及所述第二副本总量,计算存储所述多个第一数据块副本所需要的数据节点的第二需求数量;
根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点,其中,所述第二数据节点为所述外围服务器组中,存储的数据块副本所属的业务的数量未达到所述第二平均数量的数据节点;
按照所存储的数据块副本所属的业务的总数量从高到低,对所述至少一个第二数据节点进行排序,并确定排序靠前的第二需求数量个第二数据节点;
将所述第二数据集合中的第一数据块副本分别存储至所述排序靠前的第二需求数量个第二数据节点中,且每个第二数据节点中均存储与所述最大存储量相同个数的第一数据块副本;
其中,当确定出多个待存储的业务,并获取每个待存储业务的第一数据集合和至少一个第二数据块集合时,所述多个待存储业务对应有多个第二数据块集合,相应的,所述根据所述第二总数量、所述第二副本存储量、所述最大存储量以及所述第二数据块集合中第一数据块副本的第二副本总量,确定所述第二平均数量,包括:
根据所述第二总数量、所述第二副本存储量、所述最大存储量以及所述多个第二数据块集合中第一数据块副本的第二副本总量之和,确定所述第二平均数量;
所述根据所述最大存储量以及所述第二副本总量,计算存储所述多个第一数据块副本所需要的数据节点的第二需求数量,包括:
依次针对每一个待存储业务,根据所述最大存储量以及待存储业务的第一数据块副本的第二副本总量,计算存储当前待存储业务的多个第一数据块副本所需要的数据节点的第二需求数量;
在根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点之前,还包括:
按照对数据节点的第二需求数量从多到少,对所述多个待存储业务进行排序;
所述根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点,包括:
按照对所述待存储据节点的第二需求数量从多到少,对所述多个待存储业务进行排序业务的排序的位置先后,依次将所述待存储业务作为当前待处理的业务;
对于当前待处理的业务,根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点,触发按照所存储的数据块副本所属的业务的总数量从高到低,对所述至少一个第二数据节点进行排序的操作,并在完成将当前待处理的业务的多个第一数据块副本存储至排序靠前的第二需求数量个第二数据节点之后,将下一待存储的业务作为当前待处理的业务,直至完成所有待存储的业务的第一数据块副本均存储完毕。
2.根据权利要求1所述的方法,其特征在于,所述获取待存储业务的第一数据块集合和至少一个第二数据块集合,包括:
确定多个待存储的业务,以及每个待存储业务的第一数据块集合和至少一个第二数据块集合。
3.根据权利要求1或2所述的方法,其特征在于,所述预置的均衡分布规则包括:所述核心服务器组中,任意两个所述数据节点中存储所述第一数据块的数据量之差不大于一,且任意两个数据节点中存储的数据块的总数量之差不大于一。
4.根据权利要求3所述的方法,其特征在于,所述依据预置的均衡分布规则,并结合所述第一数据块的数量、所述核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将所述多个第一数据块分别存储至所述核心服务器组的数据节点中,包括:
计算所述第一数据块的数量与所述核心服务器组中数据节点的数量之间的比值,确定不超过所述比值的最大的第一整数值;
计算所述核心服务器组中数据节点的数量与所述第一整数值的乘积,将所述第一数据块的数量减去所述乘积得到第一剩余量;
向核心服务器组中的每个数据节点内存储所述第一整数值个所述第一数据块,剩余所述第一剩余量个所述第一数据块;
从所述核心服务器组中,确定当前存储数据块的数量最少的至少一个第一数据节点,并确定所述第一数据节点的第一数量;
当所述第一数量不小于所述第一剩余量时,将剩余的所述第一剩余量个所述第一数据块,分别存储至第一剩余量个所述第一数据节点内;
当所述第一数量小于所述第一剩余量时,将第一数量个所述第一数据块分别存储至所述第一数量个所述第一数据节点中,得到剩余的第二剩余量个未被存储的第一数据块;
从所述核心服务器组中选择第二剩余量个数据节点,将所述第二剩余量个第一数据块存储至选择出的第二剩余量个数据节点内。
5.根据权利要求1所述的方法,其特征在于,所述根据所述第二总数量、所述第二副本存储量、所述最大存储量以及所述第二数据块集合中第一数据块副本的第二副本总量,确定所述第二平均数量,包括:
将所述外围服务器组中的各个数据节点当前已经存储的数据块副本的第二副本存储量与所述第一数据块副本的第二副本总量求和,得到所述外围服务器组中需要存储的数据块副本的总存储量;
利用所述总存储量除以所述第二总数据量,得到所述外围服务器中平均每个数据节点需要存储的数据块副本的平均值;
将所述每个数据节点需要存储的数据块副本的平均值除以所述最大存储量,计算出所述第二平均数量。
6.一种数据分布存储装置,所述装置应用于分布式存储系统中,其特征在于,所述分布式存储系统中包括核心服务器组和至少一个外围服务器组,所述核心服务器组和所述外围服务器组均包括多个数据节点,核心服务器组中与所述外围服务器组中不包括同一个数据节点,所述装置包括:
数据获取单元,用于获取待存储业务的第一数据块集合和至少一个第二数据块集合,其中,所述第一数据块集合中包括:对所述待存储业务的业务数据进行切分得到的多个第一数据块;所述第二数据块集合中包括:多个所述数据块分别复制的多个第一数据块副本;
核心存储单元,用于依据预置的均衡分布规则,并结合所述第一数据块的数量、所述核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将所述多个第一数据块分别存储至所述核心服务器组的数据节点中;
外围存储单元,用于将所述第二数据块集合中的多个第一数据块副本分别存储至所述外围服务器组中的所述多个数据节点内;其中,当业务的数据块未发生异常情况,且核心服务器组中需要处理的处理请求较少时,将外围服务器组中存储相对应的业务的数据块副本的数据节点设置为关闭或处于休眠状态;
所述外围存储单元,包括:
确定单元,用于确定所述外围服务器组中所包含的数据节点的第二总数量,各个数据节点当前已经存储的数据块副本的第二副本存储量,以及数据节点针对同一业务能够存储的数据块副本数量的最大存储量;
业务平均确定单元,用于根据所述第二总数量、所述第二副本存储量、所述最大存储量以及所述第二数据块集合中第一数据块副本的第二副本总量,确定第二平均数量,所述第二平均数量为外围服务器组中每个数据节点需存储的数据块副本所属的业务的平均数量;
节点需求计算单元,用于根据所述最大存储量以及所述第二副本总量,计算存储所述多个第一数据块副本所需要的数据节点的第二需求数量;
第一节点确定单元,用于根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点,其中,所述第二数据节点为所述外围服务器组中,存储的数据块副本所属业务的数量未达到所述第二平均数量的数据节点;
第二节点确定单元,用于按照所存储的数据块副本所属的业务的总数量从高到低,对所述至少一个第二数据节点进行排序,并确定排序靠前的第二需求数量个第二数据节点;
外围存储子单元,用于将所述第二数据集合中的第一数据块副本分别存储至所述排序靠前的第二需求数量个第二数据节点中,且每个第二数据节点中均存储与所述最大存储量相同个数的第一数据块副本;
其中,当确定出多个待存储的业务,并获取每个待存储业务的第一数据集合和至少一个第二数据块集合时,所述多个待存储业务对应有多个第二数据块集合,相应的,所述业务平均确定单元,具体用于根据所述第二总数量、所述第二副本存储量、所述最大存储量以及所述多个第二数据块集合中第一数据块副本的第二副本总量之和,确定所述第二平均数量;
所述节点需求计算单元,具体用于依次针对每一个待存储业务,根据所述最大存储量以及待存储业务的第一数据块副本的第二副本总量,计算存储当前待存储业务的多个第一数据块副本所需要的数据节点的第二需求数量;按照对数据节点的第二需求数量从多到少,对所述多个待存储业务进行排序;
所述第一节点确定单元,具体用于按照对所述待存储据节点的第二需求数量从多到少,对所述多个待存储业务进行排序业务的排序的位置先后,依次将所述待存储业务作为当前待处理的业务;
其中,对于当前待处理的业务,根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点,触发按照所存储的数据块副本所属的业务的总数量从高到低,对所述至少一个第二数据节点进行排序的操作,并在完成将当前待处理的业务的多个第一数据块副本存储至排序靠前的第二需求数量个第二数据节点之后,将下一待存储的业务作为当前待处理的业务,直至完成所有待存储的业务的第一数据块副本均存储完毕。
7.根据权利要求6所述的装置,其特征在于,所述核心存储单元,包括:
最小存储数确定单元,用于计算所述第一数据块的数量与所述核心服务器组中数据节点的数量之间的比值,确定不超过所述比值的最大的第一整数值;
第一剩余量计算单元,用于计算所述核心服务器组中数据节点的数量与所述第一整数值的乘积,将所述第一数据块的数量减去所述乘积得到第一剩余量;
第一核心存储单元,用于向核心服务器组中的每个数据节点内存储所述第一整数值个所述第一数据块,剩余所述第一剩余量个所述第一数据块;
第一节点选择单元,用于从所述核心服务器组中,确定当前存储数据块的数量最少的至少一个第一数据节点,并确定所述第一数据节点的第一数量;
第二核心存储单元,用于当所述第一数量不小于所述第一剩余量时,将剩余的所述第一剩余量个所述第一数据块,分别存储至第一剩余量个所述第一数据节点内;
第三核心存储单元,用于当所述第一数量小于所述第一剩余量时,将第一数量个所述第一数据块分别存储至所述第一数量个所述第一数据节点中,得到剩余的第二剩余量个未被存储的第一数据块,并触发执行第四核心存储单元的操作;
第四核心存储单元,用于从所述核心服务器组中选择第二剩余量个数据节点,将所述第二剩余量个第一数据块存储至选择出的第二剩余量个数据节点内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310289571.7A CN103312825B (zh) | 2013-07-10 | 2013-07-10 | 一种数据分布存储方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310289571.7A CN103312825B (zh) | 2013-07-10 | 2013-07-10 | 一种数据分布存储方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103312825A CN103312825A (zh) | 2013-09-18 |
CN103312825B true CN103312825B (zh) | 2016-08-10 |
Family
ID=49137603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310289571.7A Active CN103312825B (zh) | 2013-07-10 | 2013-07-10 | 一种数据分布存储方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103312825B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104008075B (zh) * | 2014-05-26 | 2017-01-18 | 华中科技大学 | 一种分布式存储系统请求的处理方法 |
US10102086B2 (en) * | 2014-12-19 | 2018-10-16 | Futurewei Technologies, Inc. | Replicated database distribution for workload balancing after cluster reconfiguration |
CN106294511B (zh) * | 2015-06-10 | 2019-07-02 | 中国移动通信集团广东有限公司 | 一种Hadoop分布式文件系统的存储方法及装置 |
CN106326252B (zh) * | 2015-06-24 | 2020-05-22 | 中兴通讯股份有限公司 | 数据库的数据处理方法及装置 |
CN105681052B (zh) * | 2016-01-11 | 2018-11-27 | 天津大学 | 一种用于数据中心分布式文件存储的节能方法 |
CN108156189B (zh) * | 2016-12-02 | 2019-03-08 | 中科星图股份有限公司 | 一种多节点系统中冗余数据处理方法 |
CN108153615B (zh) * | 2016-12-02 | 2019-07-23 | 中科星图股份有限公司 | 一种故障数据恢复方法 |
CN108153759B (zh) * | 2016-12-05 | 2021-07-09 | 中国移动通信集团公司 | 一种分布式数据库的数据传输方法、中间层服务器及系统 |
CN107819828B (zh) * | 2017-10-16 | 2020-03-10 | 平安科技(深圳)有限公司 | 数据传输方法、装置、计算机设备和存储介质 |
CN108184170B (zh) * | 2017-11-27 | 2021-08-20 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及装置 |
CN108491732A (zh) * | 2018-03-13 | 2018-09-04 | 山东超越数控电子股份有限公司 | 一种基于业务隔离存储的海量存储数据保护系统及方法 |
CN111352723A (zh) * | 2018-12-21 | 2020-06-30 | 创发信息科技(苏州)有限公司 | 跨进程共享存储器动态分配的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102282544A (zh) * | 2009-01-27 | 2011-12-14 | 日本电气株式会社 | 存储系统 |
CN102882983A (zh) * | 2012-10-22 | 2013-01-16 | 南京云创存储科技有限公司 | 一种云存储系统中提升并发访问性能的数据快速存储方法 |
CN103124295A (zh) * | 2013-02-28 | 2013-05-29 | 浪潮集团有限公司 | 一种基于云计算的大附件上传和管理的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5637552B2 (ja) * | 2009-02-17 | 2014-12-10 | 日本電気株式会社 | ストレージシステム |
-
2013
- 2013-07-10 CN CN201310289571.7A patent/CN103312825B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102282544A (zh) * | 2009-01-27 | 2011-12-14 | 日本电气株式会社 | 存储系统 |
CN102882983A (zh) * | 2012-10-22 | 2013-01-16 | 南京云创存储科技有限公司 | 一种云存储系统中提升并发访问性能的数据快速存储方法 |
CN103124295A (zh) * | 2013-02-28 | 2013-05-29 | 浪潮集团有限公司 | 一种基于云计算的大附件上传和管理的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103312825A (zh) | 2013-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103312825B (zh) | 一种数据分布存储方法和装置 | |
CN102831120B (zh) | 一种数据处理方法及系统 | |
CN103369042B (zh) | 一种数据处理方法和装置 | |
US9619430B2 (en) | Active non-volatile memory post-processing | |
CN103927231B (zh) | 一种面向数据处理的能耗优化数据集分配方法 | |
CN105335251B (zh) | 一种故障恢复方法及系统 | |
CN106406987A (zh) | 一种集群中的任务执行方法及装置 | |
CN103139302A (zh) | 考虑负载均衡的实时副本调度方法 | |
CN103095599A (zh) | 一种云计算操作系统中动态反馈加权综合负载调度方法 | |
CN103929454A (zh) | 一种云计算平台中负载均衡存储的方法和系统 | |
CN104023088A (zh) | 一种应用于分布式文件系统的存储服务器选择方法 | |
CN108810115A (zh) | 一种适用于分布式数据库的负载均衡方法、装置及服务器 | |
CN105827678B (zh) | 一种基于高可用架构下的通信方法和节点 | |
CN105824686A (zh) | 一种虚拟机宿主机的选择方法和选择系统 | |
Li et al. | Improving the shuffle of hadoop MapReduce | |
CN105915626B (zh) | 一种面向云存储的数据副本初始放置方法 | |
CN109144783A (zh) | 一种分布式海量非结构化数据备份方法及系统 | |
CN107124473A (zh) | 云平台的构建方法及云平台 | |
CN107222565B (zh) | 一种网络图分割方法及系统 | |
WO2024159953A1 (zh) | 数据表的同步方法、系统和电子设备及存储介质 | |
CN103593249A (zh) | 一种ha预警方法及虚拟资源管理器 | |
Mao et al. | A fine-grained and dynamic MapReduce task scheduling scheme for the heterogeneous cloud environment | |
Jothi et al. | Increasing performance of parallel and distributed systems in high performance computing using weight based approach | |
Luo et al. | Superset: a non-uniform replica placement strategy towards high-performance and cost-effective distributed storage service | |
Mao et al. | FiGMR: A fine-grained mapreduce scheduler in the heterogeneous cloud |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |