CN103369042B - 一种数据处理方法和装置 - Google Patents
一种数据处理方法和装置 Download PDFInfo
- Publication number
- CN103369042B CN103369042B CN201310288500.5A CN201310288500A CN103369042B CN 103369042 B CN103369042 B CN 103369042B CN 201310288500 A CN201310288500 A CN 201310288500A CN 103369042 B CN103369042 B CN 103369042B
- Authority
- CN
- China
- Prior art keywords
- back end
- data block
- business
- data
- stored
- 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示出了本发明一种数据处理方法另一个实施例的流程示意图;
图5示出了本发明一种数据处理装置一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种数据处理方法,以在保证系统正常的数据访问的前提下,减少资源浪费,并提高系统资源利用效率,从而达到节能的目的。
参见图1,示出了本发明一种数据处理方法一个实施例的流程示意图,本实施例的方法应用于分布式存储系统,特别适用于数据密集型应用,其中,该分布式存储系统可以存储数据密集型应用的数据,在本实施例中的分布式存储系统至少包括多个数据节点,数据节点可以理解为用于存储数据的服务器,当然,与现有的分布式数据系统中的服务器相同,该数据节点也具备计算以及处理数据的功能。与现有不同的是,在本发明实施例中,分布式存储系统中的这多个数据节点分别被划归为核心服务器组和至少一个外围服务器组。其中,核心服务器组和外围服务器均包含有多个数据节点,核心服务器组中与所述外围服务器组中不包括同一个数据节点,也就是说同一个数据节点只能属于一个组,不能同时属于核心服务器组和外围服务器组。当然,当系统包含多个核心服务器组时,同一个数据节点也不能同时属于两个外围服务器组。其中,外围服务器组的数量可以根据实际需要的保护级别来确定,如可以仅仅有一个外围服务器组,当然为了数据的安全性考虑可以有多个核心服务器组。
在所述核心服务器组的数据节点中存储有至少一个业务的业务数据切分得到的多个数据块,且核心服务器组中不同的数据节点内存储有不同的数据块;所述外围服务器组的数据节点中存储有所述业务的多个数据块副本,且所述外围服务器组中不同的数据节点存储有不同的数据块副本,所述数据块副本是对所述数据块进行复制得到的,所述方法包括:
步骤101:依据当前针对业务的多个处理请求,判断核心服务器组中,是否存在需要处理数据的数据处理量达到第一预设阈值的第一目标数据节点。
在分布式系统中,一般会向系统内的数据节点内存储业务的数据块。其中,业务的业务数据可以理解为存储在分布式存储系统中的对象的数据。一般不同的业务,所对应的业务数据也不相同,如待存储的业务数据可以是搜索引擎的应用程序以及相关数据等。在将待存储业务的业务数据存储至数据节点之前,需要将待存储业务的业务数据切分成多个数据块,从而得到一个业务的多个数据块。同时,为了当某一个数据块损坏或丢失后,分布式存储系统中仍然有可能访问的数据块,对于该业务的业务数据切分得到的每个数据块,还需要分别复制每个数据块的数据块副本。这样,一个业务可以对应有切分出的多个数据块,以及这多个数据块的副本数据。
在存储业务的数据块以及数据块副本时,与现有的根据负载均衡原则,将对业务进行切分后的数据块在整个分布式存储系统中数据节点内进行存储不同,在本申请实施例中,根据预置的均衡分布规则,如现有的负载均衡规则或算法,将业务的数据切分得到的多个数据块均衡的存储至属于核心服务器组的数据节点内。也就是说,这多个数据块不会被存储至核心服务器组之外的数据节点内,在存储这多个数据块时,只需要考虑该核心服务器组中数据节点的负载均衡问题。而这多个数据块副本分别存储至外围服务器组中的多个数据节点内。
可以理解的是,在向核心服务器组的数据节点中存储业务的数据块时,同一个数据块不能同时存储到两个或多个数据节点内,以使得核心服务器组中不同数据节点内存储有该业务不同的数据块。同样,外围服务器组中的不同数据节点内存储有该业务的不同的数据块副本。
当然,在实际应用中,每个数据块复制出的数据块副本的数量也可以有多个。这样,当一个数据块复制出多个数据块副本时,这多个数据块副本需要存储至不同的外围服务器组的数据节点内。也就是一个外围服务器组的数据节点中存储能够恢复出业务的业务数据所需的最少数量的数据块副本。
为了描述方便,将业务的业务数据切分得到的多个数据块组成的集合称为第一数据块集合,则由该第一数据块集合中各个数据块复制出的数据块副本所组成的集合称为第二数据块集合。当一个数据块复制出的数据块副本有多个时,第二数据块集合就有多个,然而,每个第二数据块集合中的数据块副本只能存储在一个外围服务器组的数据节点内。例如,业务A包括第二数据块集合a1和第二数据块集合a2,第二数据块集合a1和a2中均包含有多个第一数据块副本,且每个第二数据块集合中的数据块副本均可以组成业务A的业务数据,假设第二数据块集合a1中的第一数据块副本均存储至外围服务器组m1中,则第二数据块集合a1中的第一数据块副本需存储至不同于外围服务器组m1的另一个外围服务器组的数据节点内。
其中,将第二数据块集合中的多个第一数据块副本存储至外围服务器组的数据节点中,可以随机将这多个第一数据块副本分别存储至外围服务器组的多个数据节点中。也可以综合考虑该外围服务器组中各个数据节点之间的负载均衡,来确定存储各个数据块副本的数据节点。
在本申请实施例中,为了描述方便,仅仅以一个外围服务器组为例,相应的以业务的每个数据块复制出的一个数据块副本,并将该业务的各个数据块复制出的多个数据块副本存储在该外围服务器中为例进行介绍。当然,对于有多个外围服务器组的情况,对于每个外围服务器组的处理方式均相同。
结合数据密集型应用的特点,当采用如上的方式来存储业务的数据块和数据块副本时,在业务的数据块未发生损坏或失效等异常情况时,可以将外围服务器组中未存储有业务的数据块副本的数据节点设置为关闭或处于休眠状态,以减少设备损耗以及电力开销,无需使得所有数据节点在任意时刻均处于运行状态,从而减少资源消耗;而当某个业务的数据块损坏或失效等异常情况出现时,则可以再开启外围服务器组中相应数据节点,以实现可以访问该数据块,既满足了数据的可访问性,又减少了资源浪费。
在分布式系统中可以接收针对业务的处理请求。针对业务的处理请求也便可以理解为针对该业务的数据的处理请求。一般情况下,会系统会将处理请求分配给存储有该业务的数据块的数据节点进行处理,然而这样,很容易出现某个数据节点中的数据处理量过大,而有些数据节点中的数据处理量而过小,从而使得系统负载分布不均。因此,本申请可以根据系统中当前时刻系统中处理请求所请求处理的业务,以及核心服务器组各个数据节点对业务的数据块的存储情况,来确定当前时刻核心服务器组中各个数据节点需要处理的处理请求,从而确定出各个数据节点所需的数据处理量,进而判断出核心服务器组中当前时刻是否存在数据处理量超出第一预设阈值的数据节点。为了描述方便,将核心服务器组中,数据处理量超出第一预设阈值的数据节点称为第一目标数据节点。
例如,系统中核心服务器组中包括数据节点1-10,其中,数据节点1-10中均存储有业务1和业务2的数据块,而仅有数据节点1-6中存储有业务3的数据块,而在当前时刻系统中存在针对业务1的处理请求1、针对业务2的处理请求2和针对业务3的处理请求3,当然,这三个处理请求可能是刚刚接收到需要分配的处理请求,也可以是正在处理中的处理请求。根据核心服务器组中数据节点对业务的数据块的存储情况可知,在当前时刻数据节点1-10均需要处理的处理请求有处理请求1和2,而数据节点1-6还需要处理该处理请求3。这样,根据每个数据节点需要处理的处理请求以及当前处理请求的状态可以确定出每个数据节点所需处理的数据处理量,从而可以确定出核心服务器组中是否存在数据处理量超出第一预设阈值的数据节点。
其中,确定出的该第一目标数据节点可能会有多个。
而确定核心服务器组中,当前时刻需要处理的数据处理量达到第一预设阈值的数据节点,则可以是在系统接收到处理请求的时刻来触发执行,也可以是系统每隔预设时间进行一次,当然也可以是在系统接收到指令的时才确定该第一目标数据节点。
其中,该第一预置可以根据需要设定,一般以数据节点的数据处理量超出该第一预设阈值时,该数据节点的性能将急剧下降为依据。
步骤102:当存在所述第一目标数据节点时,获取处理请求当前的处理状态信息以及当前处理该处理请求所需的第一数据处理量。
由于系统接收到处理请求的时刻不同,以及处理请求所请求处理的数据量的大小等原因,导致了系统的当前时刻各个处理请求的处理状态不同。如,当系统接收到处理请求后,可以将处理请求分成多个任务,在当前时刻,有些处理请求的任务大部分已经被执行了,而有些处理请求的第一个任务可能才刚刚执行,有的处理请求可能还未被处理。因此,为了系统后续进行迁移,需要确定出各个处理请求当前的处理状态信息。该处理状态信息包含了该处理请求当前被执行的状态,处理该处理请求过程中返回的数据等等。
同时,系统还可以获取到当前时刻处理该处理请求所需的数据处理量,具体的,可以根据处理请求当前的处理状态信息,以及待进行的任务来确定处理请求所需的数据处理量。为了描述方便,将处理该处理请求所需的数据处理量称为第一数据处理量。
步骤103:依据处理请求的第一数据处理量,从该多个处理请求中确定出至少一个待迁移处理请求。
依据该处理请求的第一数据处理量,来从这多个处理请求中确定出至少一个待迁移的处理请求,从而使得将待迁移的处理请求从核心服务器组的数据节点中移出后,该核心服务组中的第一目标数据节点中所需处理的数据的数据处理量小于该第一预设阈值。具体确定待迁移处理请求的方式,可以有多种,只要是能够满足将确定出待迁移处理请求从核心服务器组移出后,该第一目标数据节点的数据处理量会小于该第一预设阈值即可。
可选的,可以根据处理请求的第一数据处理量从大到小的顺序,优先将第一数据处理量的一个或多个处理请求作为待迁移处理请求。
步骤104:根据待迁移处理请求的处理状态信息,将该待迁移处理请求迁移至外围服务器组的第二目标数据节点中。
其中,该第二目标数据节点为外围服务器中,存储有待迁移处理请求所请求处理的业务的数据块副本的数据节点。由于一个业务一般有多个数据块副本,因此对于一个待迁移处理请求而言,外围服务器组中的第二目标数据节点的数量一般也不止一个。
确定出待迁移处理请求后,为了使得系统能够维持正常的数据处理,需要确定出待迁移处理请求所请求访问的业务,并确定出外围服务器组中存储有该业务的数据块副本的第二目标数据节点。
根据待迁移处理请求的处理状态信息,将该待迁移处理请求迁移至该外围服务器组第二目标数据节点中,从而使得该第二目标数据节点可以获知该待迁移处理请求的处理状态,这样,第二目标数据节点可以依据待迁移处理请求的处理状态,以及待迁移处理请求的所请求处理的业务,继续处理该待迁移处理请求,以保证系统的数据访问以及处理。
在本发明实施例中,分布式存储系统包括核心服务器组和外围服务器组,且核心服务器组和外围服务器组中均包含有多个数据节点,当依据系统中针对业务的多个处理请求,确定出核心服务器组中,存在所需处理的数据处理量超出第一预设阈值的第一目标数据节点时,系统会获取所述多个处理请求当前时刻的处理状态信息以及处理该处理请求所需的第一数据处理量,并根据该第一数据处理量,从这多个处理请求中确定出至少一个待迁移处理请求,进而将待迁移处理请求迁移至外围服务器组中存储有相应业务的数据块副本的第二目标数据节点中,从而使得核心服务器组的数据处理量小于第一预设阈值。这样,减少了由于系统中某些服务器的负载较大,而导致的数据处理效率低,保证了系统正常的数据访问;同时,由于只有当由于系统中某些服务器的负载较大,才将核心服务器组中的处理请求迁移至外围服务器组的数据节点中,而正常情况下,则无需从核心服务器组中迁移出处理请求,这样无需时刻开启所有的数据节点,仅在满足条件时才开启某些外围服务器组的数据节点,从而实现了保证了对系统访问速度的前提下,降低了系统能耗,实现了系统节能。
可选的,在以上实施例中,确定出第一目标数据节点后,还可以确定该第一目标数据节点所需处理的处理请求,以及该处理请求所需访问的业务。相应的,可以只获取该第一目标数据节点所需处理的处理请求的状态以及第一数据处理量。在确定待迁移处理请求时,可以从该第一目标数据节点所需处理的处理请求中,确定至少一个待迁移处理请求,从而减少数据处理量。
在以上实施例中在进行步骤101之前,系统还会对待存储业务的数据块以及数据块副本进行存储,具体的存储方式如步骤101中的描述。
然而考虑到由于当系统接收到数据处理请求后,一般会优先访问存储有数据块数据节点,只有在数据块损坏后才可能访问存储有数据块副本的数据节点,以完成相应的数据处理。可见,核心服务器组中的数据节点需要保证大规模并行处理,因此,在向核心服务器组中存储数据块时,需要保证核心服务器组中各个数据节点中的数据尽可能最大限度的均衡分布。为了实现核心服务器组中各个数据节点之间的数据的均衡分布,尽量使得每一个业务的各个数据块尽可能分不到较多的数据节点中;且在该核心服务器组中,各个数据节点中存储的同一个业务的数据块的个数应尽可能相同,且每个数据节点中承载的业务的个数应尽可能一样多。其中,每个数据节点承载的业务是根据该数据节点中的各个数据块所属的业务确定的,例如,数据节点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中。
当通过以上方式存储业务的数据块和数据块副本的基础上,在确定待迁移处理请求之前,还可以包括:依据已存储的业务的数据块副本在外围服务器组的各个数据节点中分布状态,将外围服务器组中的数据节点划分为多个服务器子集,其中,外围服务器组中,存储同一业务的数据块副本的数据节点属于同一服务器子集。外围服务器组中,同一个数据节点可以属于多个服务器子集,但同一数据节点所存储的数据块副本所属的业务与该数据节点所属的服务器子集中的各个数据节点所存储的数据块副本所属的业务之间重叠率最高。
例如,服务器子集1中包含有数据节点a1、a2、a3、a4以及a5,服务器子集2中包含数据节点a4、a5、a6、a7和a8,业务1的数据块副本存储在数据节点a1-a5中,业务2的数据块副本存储在数据节点a1-a4中,业务3的数据块副本存储在数据节点a1-a3中,而业务4的数据块副本则存储在数据节点a4-a8中,业务5的数据块副本存储在数据节点a6-a8中。可见,数据块副本完全存储在服务器子集1中业务为业务1-3,而数据块完全存储在服务器子集2中的业务为业务4和5,而服务器子集1中的数据节点存储的数据块副本所属的业务的重叠率较高,例如,数据节点a1-a3中均存储有业务1-3的数据块副本,而数据节点a1中存储的数据块副本所属的业务,与服务器子集2中数据节点a6、a7存储的数据块副本所属的业务之间没有任何重叠。
具体的,依据已存储的业务的数据块副本在外围服务器组的各个数据节点中分布状态,将所述外围服务器组中的数据节点划分为多个服务器子集,可以包括:
(1)、确定数据块副本存储在所述外围服务器组的数据节点内的目标业务Bi,得到包含多个目标业务Bi的业务集合TB,其中,i=1、2、3····m,TB={B1、B2、······Bm},m为业务集合TB中所包含的目标业务的总个数。
(2)、从该外围服务器组中,分别确定每一个目标业务Bi对应数据节点集sbi,得到包含多个数据节点集的集合sb。
其中,sb为各个目标业务所对应的数据节点集的集合,sb={sb1、sb2·····sbm}。
其中,所述数据节点集包含存储有所述目标业务的各个数据块副本的数据节点。
例如,系统中需要进行业务数据存储的待存储业务有12个,业务B1-B12,则会有12个业务的数据块副本存储在外围服务器组的数据节点内。此时,目标业务的数量为12,即m等于12。假设系统中的数据节点有13个,分别为N1-N13,而目标业务B1的数据块副本存储在数据节点N1-N8中,则该目标业务B1对应的数据节点集sb1包括数据节点N1-N8,即sb1={N1、N2、N3、N4、N5、N6|、N7、N8}。
为了后续计算方便,设:SC为包含所述划分的多个服务器子集的集合。换言之,该SC为最终需要确定的划分出的多个服务器子集的输出结果。
设St为中间变量;Sf为设定的基础服务器集或者称为基础数据节点集,在后续计算的过程中,需要利用其他数据节点集与该基础服务器集中所包含的数据节点的不同,来确定需要划分出的服务器子集。
(3)、判断所述业务集合TB是否为空,如果是,则输出得到的服务器子集的集合SC,算法结束;如果否,则令St为当前时刻所述业务集合TB中的第一个元素b所对应的数据节点集,并令TB=TB-b,即将该当前时刻的该第一个元素从该业务集合TB中去除;同时令,Sf=St。
在实际运算过程中,令St为当前时刻该TB中的第一个元素b,即当前时刻该TB中的第一个目标业务。由于为St赋值后,会将TB中当前时刻的第一个元素去除,则后续循环过程中,该TB的第一个元素b会不断变化。
例如,仍以上面的例子为例,在第一次循环时,该TB中的第一个元素为B1,即b=B1,则St为目标业务B1所对应的数据节点集sb1。将B1从TB中去除后,该TB中的第一个元素为目标业务B2,则下一次循环时,该b为目标业务B2,依次类推。
(4)、判断所述业务集合TB是否为空,如果是,则令SC=SC∪{St},并返回步骤(3);如果否,依次将当前时刻所述业务集合TB中的每个元素作为待处理的目标业务b’,并令S为所述待处理的目标业务b’对应的数据节点集;
S1=S∩Sf;即,S1为基础服务器集Sf与当前待处理的目标业务b’所对应的数据节点集S的交集。
S2=S-Sf;即,S2为当前待处理的目标业务b’所对应的数据节点集S与基础服务器集Sf的差集。
如果|S1|>|S2|或者|S1|=|S2|,令St=St∪S,且TB=TB-b’,并返回所述步骤(4)。
如果|S1|<|S2|,则令SC=SC∪{St},返回步骤(3)。
其中,|S1|表示集合S1中包含的元素的个数,相应的,|S2|表示集合S2中包含的元素的个数。
在该步骤中,当前时刻该业务集合TB中的元素不包括在步骤(3)被作为TB的第一个元素b的目标业务。例如,仍以上面的例子为例,在第一次循环时,在执行了步骤(3)之后,当前时刻该TB={B2、B3······Bm},可以依次将该TB中的元素作为b’,如第一次执行该步骤(4)时,b’为目标业务B2。
如果该|S1|>|S2|则说明当前待处理的目标业务b’所对应的数据节点集与基础服务器集之间的重叠度大于50%,重叠较多,则b’所对应的业务集属于当前需要确定的服务器子集。
如果|S1|=|S2|,则说明该当前待处理的目标业务b’所对应的数据节点集与基础服务器集之间的重叠度为50%,该b’所对应的业务集也可能属于当前需要确定的服务器子集。
如果|S1|>|S2|或者|S1|=|S2|时,为了后续将TB下一个元素作为当前待处理的目标业务,以便最终确定出一个服务器子集,则需要从该TB中去除当前作为b’的目标业务,并重新执行该步骤(4),重新从当前的Tb中确定一个目标业务作为b’。例如,仍以前面例子进行介绍,假设当前待处理的目标业务b’为TB中的目标业务B2,则去除该B2后,该Tb={B3、B4······Bm},返回执行该步骤(4)时,则可以将B4作为目标业务b’,依次类推。
如果|S1|<|S2|,则可以得到一个服务器子集,即令SC=SC∪{St},本次循环结束,返回步骤(3)重新确定基础服务器集,直至业务集合TB中不包含任何元素,即所有目标业务均被处理完。
例如,仍以上面的例子进行介绍,假设目标业务B1的数据块副本分别存储在外围服务器组的数据节点N1-N8中,即B1所对应的数据节点集为数据节点N1-N8;B2对应的数据节点集为数据节点N1-N7,B3对应的数据节点集为数据节点N1-N6,B4对应的数据节点集为数据节点N1-N5,B5对应的数据节点集为数据节点N6-N10,B6对应的数据节点集为数据节点N7-N11,B7对应的数据节点集为数据节点N8-N12,B8对应的数据节点集为数据节点N9-N11,B9对应的数据节点集为数据节点N11-N13,B10和B11的数据节点集均为数据节点N12-N13,B12对应的数据节点集为数据节点N13,则通过如上方法可以划分出3个服务器子集,分别为{N1,N2,N3,N4,N5,N6,N7,N8}、{N6,N7,N8,N9,N10,N11,N12}和{N11,N12,N13},即输出的SC={{N1,N2,N3,N4,N5,N6,N7,N8},{N6,N7,N8,N9,N10,N11,N12},{N11,N12,N13}}。
由于将外围服务器组中的数据节点划分为多个服务器子集后,服务器子集中数据节点所承载的业务的重叠率较高,这样,在核心服务组存储第一目标数据节点时,可以根据该服务器子集中的数据节点能够运行的处理请求,来确定需要迁移的处理请求,进而将处理请求迁移到服务器子集的数据节点中,使得迁移出的处理请求集中到外围服务器组中较少数量的数据节点内,以减少开启的数据节点的数量,进而达到减少资源浪费的目的。其中,服务器子集中的数据节点能够运行的处理请求是根据该服务器子集中的数据节点中存储的业务的数据块副本来确定的,如果某一业务的数据块副本均存储在该服务器子集的数据节点中,则该服务器子集能够处理针对该业务的处理请求。
具体的,可以该核心服务器中需要运行的多个处理请求中,能够被各个服务器子集中的数据节点能够运行的处理请求,然后确定第一处理量最大的处理请求作为待迁入处理请求,并将能够处理该待迁入处理请求的服务器子集作为待迁入处理请求的目标服务器子集,将该待迁移处理请求迁移至该目标服务器子集的数据节点中。如果将该待迁移处理请求迁移至该目标服务器子集中的数据节点后,核心服务器组中该第一目标数据节点当前所需处理的数据处理量仍大于所述第一预设阈值,则重复上面的操作,重新再确定至少一个待迁入处理请求以及目标服务器子集,直至该第一目标数据节点中所需处理的数据处理量小于所述第一预设阈值。
进一步的,在以上介绍的存储业务的数据块和数据块副本方式的基础上,参见图4,示出了本发明一种数据处理方法另一个实施例的流程示意图,本实施例的步骤包括:
步骤401:依据已存储的业务的数据块副本在外围服务器组的各个数据节点中分布状态,将该外围服务器组中的数据节点划分为多个服务器子集。
其中,划分服务器子集可以参照前面介绍的划分服务器子集的方式,在此不再赘述。
步骤402:判断这多个服务器子集中,是否存在包含有处于运行状态的数据节点的第一服务器子集,如果是,则执行步骤403,否则,执行步骤405;
其中,处于运行状态的数据节点当前时刻正在处理针对业务的处理请求。如,服务器子集L1中包含数据节点n1-n10,其中,n1-n6中存储有业务s的数据块副本,且数据节点n1-n6正在处理针对业务s的处理请求,则该数据节点n1-n6处于运行状态,该服务器子集为第一服务器子集,而服务器子集L2中的所有数据节点均未处理任何处理请求,则该服务器子集L2不是第一服务器子集。
步骤403:对于当前待处理的第一服务器子集,确定当前时刻该第一服务器子集中所有数据节点仍能够接收的第一最大数据处理总量,并从多个处理请求中,确定第一数据处理量小于第一最大数据处理总量的至少一个第一待迁移处理请求。
步骤404:将该第一待迁移处理请求迁移至该当前待处理的第一服务器子集的第二目标数据节点中。
其中,第一待迁移处理请求所请求处理的业务的数据块副本均存储在所述第一服务器子集包含的数据节点中。也就是说,在本步骤确定的第一待迁移处理请求至少需要满足以下条件:该处理请求所请求处理的业务的数据块副本均存储在所述第一服务器子集包含的数据节点中,且该处理请求的第一数据处理量小于该服务器子集能够接收的第一最大数据处理总量。
该第一最大数据处理总量是指第一服务器子集的数据节点除去当前需要处理的数据处理量后,仍然能够进行的最大数据处理量的总和。第一服务器子集中各个数据节点需要处理的数据处理量加上能够接收的第一数据处理总量后,该第一服务器子集中的数据节点的数据处理量将达到数据处理量的最大限度值。
其中,确定待迁移处理请求时,可以是将该第一数据处理量小于该第一数据处理总量,且能够被该当前处理的服务器子集处理的处理请求均作为第一待迁移处理请求。
为了减少迁移的数据量,可选的,可以从该多个处理请求中,确定出第一数据处理量小于第一最大数据处理总量的待定处理请求,该待定处理请求所请求处理的业务的数据块副本均存储在该第一服务器子集包含的数据节点中;根据该第一最大数据处理总量以及该第一目标数据节点所需处理的数据处理量超出该第一预设阈值的程度,并按照该待定处理请求的第一数据处理量从大到小,来选择排序靠前的至少一个第一待迁移处理请求。如,第一目标数据节点所需处理的数据处理量超出第一预设阈值的量为M,则将待定处理请求的第一数据处理量从大到小排序后,如果M大于该第一最大数据处理总量,则选择的排序靠前几个待定理请求的数据处理量的总和不大于fai第一最大数据处理总量。如果M小于该第一最大数据处理总量,则选择的排序靠前几个待定处理请求的数据处理量均小于该第一最大数据处理总量,且这几个排序靠前的待定请求的数据处理总量不小于M。
当然,在实际应用中也可以是依据待定处理请求从大到小的排序,先将第一数据处理量小于第一最大数据处理总量,且第一数据处理量最大的待定处理请求作为待迁移处理请求,并将该待迁移处理请求迁移至当前处理的第一服务器子集的数据节点中,然后判断核心服务器组中的第一目标数据节点的数据处理量是否仍大于第一阈值,如果是,则重复上述操作,从当前剩余的待定处理请求中,确定一个待迁移处理请求;如果否,则说明核心服务器组中不存在所需处理的数据处理量大于第一预设阈值的第一目标数据节点,则结束操作。
步骤405:判断当前时刻该第一目标数据节点的数据处理量仍超过该第一预设阈值,如果是,则执行步骤406,如果否,则结束。
步骤406:判断是否仍存在未被处理的第一服务器子集,如果是,则从未被处理的第一服务器子集中选择一个作为当前待处理的第一服务器子集,并返回执行步骤403;如果否,则执行步骤407。
完成了步骤404的操作后,如果核心服务器组中数据节点的数据处理量均小于该第一预设阈值,则结束操作;否则,如果否仍有第一服务器子集未被作为当前待处理的第一服务器子集,则选择一个未处理的第一服务器子集重新执行步骤403;其中选择未处理的第一服务器子集可以是选择当前能够接收的处理请求的数据处理量最大的第一服务器子集。如果所有的第一服务器子集均已经经过步骤403的处理,而核心服务器组中仍存在所需处理的数据量超出该第一预设阈值的第一目标数据节点时,则从未包含有处于运行状态的数据节点的服务器子集中选择待迁入处理请求的服务器子集。
步骤407:从不属于第一服务器子集的多个第二服务器子集中,确定出至少一个用于迁入处理请求的第二目标服务器子集,并根据处理请求的第一处理量,从该多个处理请求中,确定出至少一个待迁入至第二目标服务器子集的第二待迁移处理请求。
其中,第二待迁移处理请求所请求处理的业务的数据块副本均存储在所述第二目标服务器子集包含的数据节点中。
需要说明的是,此时的多个处理请求是指除了已经被迁移到第一服务器子集中的处理请求之外的处理请求,但是由于所请求处理的业务的数据块副本均存储在所述第二目标服务器子集包含的数据节点中内的处理请求肯定不属于该第一待迁移处理请求,所以此处直接从多个处理请求中,确定第二待迁移处理请求同样可行。
步骤408:将该第二待迁移处理请求迁移至所述第二目标服务器子集中的第二目标数据节点中。
其中,确定第二待迁移处理请求的方式可以前面描述的不区分第一服务器子集和第二服务器子集的情况下所描述的操作相似。
可选的,该步骤408可以包括以下几步:
D1、从多个处理请求中,确定出该第二服务器子集对应的第一处理请求,其中,该第一处理请求所请求处理的业务的数据块副本均存储在所述待处理服务器子集中。
D2、判断该多个第二服务器子集中是否存在满足第一预设条件的第二服务器子集,其中,满足所述第一预设条件的第二服务器子集为:如果将第二服务器子集对应的第一处理请求迁移至第二服务器子集的数据节点内之后,该第一目标数据节点当前时刻所需处理的数据处理量小于第一预设阈值。
D3、当存在满足第一预设条件的第二服务器子集时,选择一个满足第一预设条件的第二服务器子集作为第二目标服务器子集,将第二目标服务器子集对应的第一处理请求作为所述第二待迁移处理请求,并执行将第二待迁移处理请求迁移至所述第二目标服务器子集中的第二目标数据节点中的操作;
D4、当不存在满足第一预设条件的第二服务器子集时,逐次第二服务器子集作为第二目标服务器子集,判断确定当前时刻所述第二目标服务器子集中所有数据节点仍能够接收的第二数据处理总量,并从所述多个处理请求中,确定第一数据处理量小于所述第二数据处理总量的至少一个第二待迁移处理请求,并执行将所述第二待迁移处理请求迁移至所述第二目标服务器子集中的第二目标数据节点中,直至该第一目标数据节点所需处理的数据处理量小于所述第一预设阈值。
由于处于运行状态的数据节点已经处于开启状态,如果将处理请求优先迁移至处于运行状态的数据节点,则无需再开启其他数据节点,从而可以减少资源浪费,因此在本申请实施例中,如果存在包含有处于运行状态的数据节点的第一服务器子集时,则从该第一服务器子集的数据节点能够处理的处理请求中确定至少一个待迁移处理请求,只有当第一服务器子集均被处理完之后,才将处理请求迁入至不属于第一服务器子集的服务器子集中,从而减少了需要开启的数据节点的数量,减少了资源浪费。
进一步的,在以上实施例中,如果包含有处于运行状态的数据节点的第一服务器子集内的数据处理量过小,使得某些数据节点的数据处理量较少,且核心服务器组的数据节点当前所需处理的数据处理量未达到该第一预设阈值,则可以第一服务器子集内的处理请求迁移回核心服务器组的相应数据节点中,从而减少外围服务器组需要开启的数据节点的数量。因此,在以上实施例中,还可以包括:
判断包含有处于运行状态的数据节点的第一服务器子集中所需处理的总数据处理量是否小于第二预设阈值;其中,该第二预设阈值可以根据需要设定,该第一服务器子集所需处理的总数据处理量是指该第一服务器子集中所有数据节点所需处理的数据处理量的总和。
如果存在总数据处理量小于该第二预设阈值的第一服务器子集时,确定该第一服务器子集当前所需处理的目标处理请求以及该目标处理请求的处理状态;
判断如果将该目标处理请求迁移至核心服务器组的数据节点中,核心服务器组中,是否会存在所需处理的数据处理量达到所述第一预设阈值的数据节点,如果否,则将根据所述目标处理请求的处理状态,将所述目标处理请求迁移至所述核心服务器组中能够处理所述目标处理请求的数据节点中,其中所述能够处理所述目标处理请求的数据节点中,存储有所述目标处理请求所请求处理的业务的数据块。
对应本发明的一种数据处理方法,本发明还提供了一种数据处理装置,参见图5,示出了本发明一种数据处理装置一个实施例的结构示意图,本实施例的装置应用于分布式存储系统中,所述分布式存储系统中包括核心服务器组和至少一个外围服务器组,所述核心服务器组和所述外围服务器组均包括多个数据节点,核心服务器组中与所述外围服务器组中不包括同一个数据节点,其中,所述核心服务器组的数据节点中存储有至少一个业务的多个数据块,且核心服务器组中不同的数据节点内存储有不同的数据块;所述外围服务器组的数据节点中存储有所述业务的多个数据块副本,且所述外围服务器组中不同的数据节点存储有不同的数据块副本,所述数据块副本是对所述数据块进行复制得到的,所述装置包括:
第一判断单元501,用于依据当前针对业务的多个处理请求,判断核心服务器组中,是否存在需要处理数据的数据处理量达到第一预设阈值的第一目标数据节点;
信息获取单元502,用于当存在所述第一目标数据节点时,获取所述处理请求当前的处理状态信息以及当前处理所述处理请求所需的第一数据处理量;
请求确定单元503,用于依据所述处理请求的第一数据处理量,从所述多个处理请求中确定出至少一个待迁移处理请求;
迁移单元504,用于根据待迁移处理请求的处理状态信息,将所述待迁移处理请求迁移至外围服务器组的第二目标数据节点中,其中,所述第二目标数据节点为外围服务器中,存储有所述待迁移处理请求所请求处理的业务的数据块副本的数据节点。
可选的,所述装置还包括:
核心存储单元,用于依据预置的均衡分布规则,并结合待存储业务的第一数据块的数量、所述核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将所述待存储业务的多个第一数据块分别存储至所述核心服务器组的数据节点中;其中待存储业务的第一数据块是将待存储业务的业务数据进行切分得到的数据块。
其中,所述预置的均衡分布规则包括:所述核心服务器组中,任意两个所述数据节点中存储所述第一数据块的数据量之差不大于一,且任意两个数据节点中存储的数据块的总数量之差不大于一;
外围存储单元,用于将所述待存储的业务的多个第一数据块副本分别存储至所述外围服务器集合中的所述多个数据节点内;
其中,所述外围存储单元包括:
确定单元,用于确定所述外围服务器组中所包含的数据节点的第二总数量,各个数据节点当前已经存储的数据块副本的第二副本存储量,以及数据节点针对同一业务能够存储的数据块副本数量的最大存储量;
业务平均确定单元,用于根据所述第二总数量、所述第二副本存储量、所述最大存储量以及所述待存储业务的第一数据块副本的第二副本总量,确定外围服务器组中每个数据节点平均需存储的业务的第二平均数量;其中,该第一数据块副本为由所述第一数据块复制得到的数据副本。
节点需求计算单元,用于根据所述最大存储量以及所述第二副本总量,计算存储所述多个第一数据块副本所需要的数据节点的第二需求数量;
第一节点确定单元,用于根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点,其中,所述第二数据节点为所述外围服务器组中,存储的业务的数量未达到所述第二平均数量的数据节点;
第二节点确定单元,用于按照所存储业务的总数量从高到低,对所述至少一个第二数据节点进行排序,并确定排序靠前的第二需求数量个第二数据节点;
外围存储子单元,将所述待存储业务的第一数据块副本分别存储至所述排序靠前的第二需求数量个第二数据节点中,且每个第二数据节点中均存储与所述最大存储量相同个数的第一数据块副本;
所述装置还包括:服务器组划分单元,用于依据已存储的业务的数据块副本在外围服务器组的各个数据节点中分布状态,将所述外围服务器组中的数据节点划分为多个服务器子集,其中,外围服务器组中,存储同一业务的数据块副本的数据节点属于同一服务器子集;外围服务器组中,同一个数据节点可以属于多个服务器子集,但同一数据节点所存储的数据块副本所属的业务与该数据节点所属的服务器子集中的各个数据节点所存储的数据块副本所属的业务之间重叠率最高;
所述请求确定单元,具体包括:
服务器集判断单元,用于判断所述多个服务器子集中,是否存在包含有处于运行状态的数据节点的第一服务器子集,其中,所述处于运行状态的数据节点当前时刻正在处理针对业务的处理请求;
第一服务器集处理单元,用于当存储所述第一服务器集时,对于当前待处理的第一服务器子集,确定当前时刻所述第一服务器子集中所有数据节点仍能够接收的第一最大数据处理总量,并从所述多个处理请求中,确定第一数据处理量小于所述第一最大数据处理总量的至少一个第一待迁移处理请求,并触发执行第一迁移单元的操作,其中,所述第一待迁移处理请求所请求处理的业务的数据块副本均存储在所述第一服务器子集包含的数据节点中;
第一服务器集判断单元,用于如果当前时刻所述第一目标数据节点的数据处理量仍超过所述第一预设阈值,判断是否仍存在未被处理的第一服务器子集,如果是,则从未被处理的第一服务器子集中选择一个作为当前待处理的第一服务器子集,并执行所述第一服务器处理单元的操作;如果否,执行所述第二服务器集处理单元的操作;
第二服务器集处理单元,用于从不属于所述第一服务器子集的多个第二服务器子集中,确定出至少一个用于迁入处理请求的第二目标服务器子集,并根据所述处理请求的第一处理量,从所述多个处理请求中,确定出至少一个待迁入至所述第二目标服务器子集的第二待迁移处理请求,并执行第二迁移单元的操作,其中,所述第二待迁移处理请求所请求处理的业务的数据块副本均存储在所述第二目标服务器子集包含的数据节点中;
其中,在所述迁移单元,包括:
第一迁移单元,用于将所述第一待迁移处理请求迁移至所述当前待处理的第一服务器子集的第二目标数据节点中;和/或,
第二迁移单元,用于将所述第二待迁移处理请求迁移至所述第二目标服务器子集中的第二目标数据节点中。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种数据处理方法,应用于分布式存储系统中,其特征在于,所述分布式存储系统中包括核心服务器组和至少一个外围服务器组,所述核心服务器组和所述外围服务器组均包括多个数据节点,核心服务器组中与所述外围服务器组中不包括同一个数据节点,其中,所述核心服务器组的数据节点中存储有至少一个业务的多个数据块,且核心服务器组中不同的数据节点内存储有不同的数据块;所述外围服务器组的数据节点中存储有所述业务的多个数据块副本,且所述外围服务器组中不同的数据节点存储有不同的数据块副本,所述数据块副本是对所述数据块进行复制得到的,所述方法包括:
依据预置的均衡分布规则,并结合待存储业务的第一数据块的数量、所述核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将所述待存储业务的多个第一数据块分别存储至所述核心服务器组的数据节点中,其中,所述预置的均衡分布规则包括:所述核心服务器组中,任意两个所述数据节点中存储所述第一数据块的数据量之差不大于一,且任意两个数据节点中存储的数据块的总数量之差不大于一;
依据当前针对业务的多个处理请求,判断核心服务器组中,是否存在需要处理数据的数据处理量达到第一预设阈值的第一目标数据节点;
当存在所述第一目标数据节点时,获取所述处理请求当前的处理状态信息以及当前处理所述处理请求所需的第一数据处理量;
依据所述处理请求的第一数据处理量,从所述多个处理请求中确定出至少一个待迁移处理请求;
根据待迁移处理请求的处理状态信息,将所述待迁移处理请求迁移至外围服务器组的第二目标数据节点中,其中,所述第二目标数据节点为外围服务器中,存储有所述待迁移处理请求所请求处理的业务的数据块副本的数据节点;
其中,通过如下方式将所述待存储业务的多个第一数据块副本分别存储至所述外围服务器集合中的所述多个数据节点内:
确定所述外围服务器组中所包含的数据节点的第二总数量,各个数据节点当前已经存储的数据块副本的第二副本存储量,以及数据节点针对同一业务能够存储的数据块副本数量的最大存储量;
根据所述第二总数量、所述第二副本存储量、所述最大存储量以及所述待存储业务的第一数据块副本的第二副本总量,确定第二平均数量,其中,所述第二平均数量为外围服务器组中每个数据节点需要存储的数据块副本所属的业务的平均数量;
根据所述最大存储量以及所述第二副本总量,计算存储所述多个第一数据块副本所需要的数据节点的第二需求数量;
根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点,其中,所述第二数据节点为所述外围服务器组中,存储的数据块副本所属的业务的数量未达到所述第二平均数量的数据节点;
按照所存储的数据块副本所属的业务的总数量从高到低,对所述至少一个第二数据节点进行排序,并确定排序靠前的第二需求数量个第二数据节点;
将所述待存储业务的第一数据块副本分别存储至所述排序靠前的第二需求数量个第二数据节点中,且每个第二数据节点中均存储与所述最大存储量相同个数的第一数据块副本。
2.根据权利要求1所述的方法,其特征在于,所述依据预置的均衡分布规则,并结合所述第一数据块的数量、所述核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将所述多个第一数据块分别存储至所述核心服务器组的数据节点中,包括:
计算所述第一数据块的数量与所述核心服务器组中数据节点的数量之间的比值,确定不超过所述比值的最大的第一整数值;
计算所述核心服务器中数据节点的数量与所述最大整数值的乘积,将所述第一数据块的数量减去所述乘积得到第一数值;
向核心服务器组中的每个数据节点内存储所述第一整数值个所述第一数据块,剩余所述第一数值个所述第一数据块;
从所述核心服务器组中,确定当前存储数据块的数量最少的至少一个第一数据节点,并确定所述第一数据节点的第一数量;
当所述第一数量不小于所述第一数值时,将剩余的所述第一数值个所述第一数据块,分别存储至所述第一数值个所述第一数据节点内;
当所述第一数量小于所述第一数值时,将所述第一数量个所述第一数据块分别存储至所述第一数量个所述第一数据节点中,剩余第二数值个未被存储的第一数据块;
从所述核心服务器中选择第二数值个数据节点,将所述第二数值个第一数据块存储至选择出的第二数值个数据节点内。
3.根据权利要求1所述的方法,其特征在于,在所述依据所述处理请求的数据处理量,从所述多个处理请求中确定出至少一个待迁移处理请求之前,还包括:
依据已存储的业务的数据块副本在外围服务器组的各个数据节点中分布状态,将所述外围服务器组中的数据节点划分为多个服务器子集,其中,外围服务器组中,存储同一业务的数据块副本的数据节点属于同一服务器子集;外围服务器组中,同一个数据节点可以属于多个服务器子集,但同一数据节点所存储的数据块副本所属的业务与该数据节点所属的服务器子集中的各个数据节点所存储的数据块副本所属的业务之间重叠率最高;
所述依据所述处理请求的第一数据处理量,从所述多个处理请求中确定出至少一个待迁移处理请求,包括:
A、判断所述多个服务器子集中,是否存在包含有处于运行状态的数据节点的第一服务器子集,如果是,则执行步骤B,否则,执行步骤D;其中,所述处于运行状态的数据节点当前时刻正在处理针对业务的处理请求;
B、对于当前待处理的第一服务器子集,确定当前时刻所述第一服务器子集中所有数据节点仍能够接收的第一最大数据处理总量,并从所述多个处理请求中,确定第一数据处理量小于所述第一最大数据处理总量的至少一个第一待迁移处理请求,并执行所述将所述待迁移处理请求迁移至外围服务器组的第二目标数据节点中的操作,其中,所述第一待迁移处理请求所请求处理的业务的数据块副本均存储在所述第一服务器子集包含的数据节点中;
C、如果当前时刻所述第一目标数据节点的数据处理量仍超过所述第一预设阈值,判断是否仍存在未被处理的第一服务器子集,如果是,则从未被处理的第一服务器子集中选择一个作为当前待处理的第一服务器子集,并返回执行步骤B;如果否,则执行步骤D;
D、从不属于所述第一服务器子集的多个第二服务器子集中,确定出至少一个用于迁入处理请求的第二目标服务器子集,并根据所述处理请求的第一处理量,从所述多个处理请求中,确定出至少一个待迁入至所述第二目标服务器子集的第二待迁移处理请求,并执行所述将所述待迁移处理请求迁移至外围服务器组的第二目标数据节点中的操作,其中,所述第二待迁移处理请求所请求处理的业务的数据块副本均存储在所述第二目标服务器子集包含的数据节点中;
其中,在所述步骤B之后,执行的所述将所述待迁移处理请求迁移至外围服务器组的第二目标数据节点中的操作,包括:将所述第一待迁移处理请求迁移至所述当前待处理的第一服务器子集的第二目标数据节点中;
在所述步骤D之后,执行的所述将所述待迁移处理请求迁移至外围服务器组的第二目标数据节点中的操作,包括:将所述第二待迁移处理请求迁移至所述第二目标服务器子集中的第二目标数据节点中。
4.根据权利要求3所述的方法,其特征在于,所述从所述多个处理请求中,确定出第一数据处理量小于所述第一最大数据处理总量的至少一个第一待迁移处理请求,包括:
从所述多个处理请求中,确定出第一数据处理量小于所述第一最大数据处理总量的待定处理请求,所述待定处理请求所请求处理的业务的数据块副本均存储在所述第一服务器子集包含的数据节点中;
根据所述第一最大数据处理总量以及所述第一目标数据节点所需处理的数据处理量超出所述第一预设阈值的程度,并按照所述待定处理请求的第一数据处理量从大到小,来选择排序靠前的至少一个第一待迁移处理请求。
5.根据权利要求3或4所述的方法,其特征在于,所述步骤D,包括:
D1、从所述多个处理请求中,确定出所述第二服务器子集对应的第一处理请求,其中,所述第一处理请求所请求处理的业务的数据块副本均存储在所述待处理服务器子集中;
D2、判断所述多个第二服务器子集中是否存在满足第一预设条件的第二服务器子集,其中,满足所述第一预设条件的第二服务器子集为:如果将所述第二服务器子集对应的第一处理请求迁移至所述第二服务器子集后,所述第一目标数据节点当前时刻所需处理的数据处理量小于所述第一预设阈值;
D3、当存在所述满足第一预设条件的第二服务器子集时,选择一个满足第一预设条件的第二服务器子集作为第二目标服务器子集,将第二目标服务器子集对应的第一处理请求作为所述第二待迁移处理请求,并执行所述将第二待迁移处理请求迁移至所述第二目标服务器子集中的第二目标数据节点中;
D4、当不存在所述满足第一预设条件的第二服务器子集时,逐次第二服务器子集作为第二目标服务器子集,判断确定当前时刻所述第二目标服务器子集中所有数据节点仍能够接收的第二最大数据处理总量,并从所述多个处理请求中,确定第一数据处理量小于所述第二最大数据处理总量的至少一个第二待迁移处理请求,并执行将所述第二待迁移处理请求迁移至所述第二目标服务器子集中的第二目标数据节点中,直至所述第一目标数据节点所需处理的数据处理量小于所述第一预设阈值。
6.根据权利要求3所述的方法,其特征在于,所述依据已存储的业务的数据块副本在外围服务器组的各个数据节点中分布状态,将所述外围服务器组中的数据节点划分为多个服务器子集,包括:
M1、确定数据块副本存储在所述外围服务器组的数据节点内的目标业务Bi,得到包含多个目标业务Bi的业务集合TB,其中,i=1、2、3····m,TB={B1、B2、······Bm},m为业务集合TB中所包含的目标业务的总个数;
M2、从所述外围服务器组中,分别确定每一个目标业务Bi对应数据节点集sbi,得到包含多个数据节点集的集合sb,其中,所述数据节点集包含存储有所述目标业务的各个数据块副本的数据节点,其中,sb={sb1、sb2·····sbm};
设SC为包含所述划分的多个服务器子集的集合,St为中间变量,Sf为设定的基础服务器集;
M3、判断所述业务集合TB是否为空,如果是,则输出所得到的服务器子集的集合SC,算法结束;如果否,则令St为当前时刻所述业务集合TB中的第一个元素b所对应的数据节点集,并令TB=TB-b;
Sf=St;
M4、判断所述业务集合TB是否为空,如果是,则令SC=SC∪{St},并返回所述M3;如果否,则依次将当前时刻所述业务集合TB中的每个元素作为待处理的目标业务b’,并令S为所述待处理的目标业务b’对应的数据节点集;
S1=S∩Sf;
S2=S-Sf;
如果|S1|>|S2|或者|S1|=|S2|,令St=St∪S,且TB=TB-b’,并返回所述M4;
如果|S1|<|S2|,则令SC=SC∪{St},并返回所述M3。
7.根据权利要求3所述的方法,其特征在于,还包括:判断包含有处于运行状态的数据节点的第一服务器子集中所需处理的总数据处理量是否小于第二预设阈值;
如果存在总数据处理量小于所述第二预设阈值的第一服务器子集时,确定所述第一服务器子集当前所需处理的目标处理请求以及所述目标处理请求的处理状态;
判断如果将所述目标处理请求迁移至所述核心服务器组的数据节点中,所述核心服务器组中,是否会存在所需处理的数据处理量达到所述第一预设阈值的数据节点,如果否,则将根据所述目标处理请求的处理状态,将所述目标处理请求迁移至所述核心服务器组中能够处理所述目标处理请求的数据节点中,其中所述能够处理所述目标处理请求的数据节点中,存储有所述目标处理请求所请求处理的业务的数据块。
8.一种数据处理装置,应用于分布式存储系统中,其特征在于,所述分布式存储系统中包括核心服务器组和至少一个外围服务器组,所述核心服务器组和所述外围服务器组均包括多个数据节点,核心服务器组中与所述外围服务器组中不包括同一个数据节点,其中,所述核心服务器组的数据节点中存储有至少一个业务的多个数据块,且核心服务器组中不同的数据节点内存储有不同的数据块;所述外围服务器组的数据节点中存储有所述业务的多个数据块副本,且所述外围服务器组中不同的数据节点存储有不同的数据块副本,所述数据块副本是对所述数据块进行复制得到的,所述装置包括:
第一判断单元,用于依据当前针对业务的多个处理请求,判断核心服务器组中,是否存在需要处理数据的数据处理量达到第一预设阈值的第一目标数据节点;
信息获取单元,用于当存在所述第一目标数据节点时,获取所述处理请求当前的处理状态信息以及当前处理所述处理请求所需的第一数据处理量;
请求确定单元,用于依据所述处理请求的第一数据处理量,从所述多个处理请求中确定出至少一个待迁移处理请求;
迁移单元,用于根据待迁移处理请求的处理状态信息,将所述待迁移处理请求迁移至外围服务器组的第二目标数据节点中,其中,所述第二目标数据节点为外围服务器中,存储有所述待迁移处理请求所请求处理的业务的数据块副本的数据节点;
所述装置还包括:
核心存储单元,用于依据预置的均衡分布规则,并结合待存储业务的第一数据块的数量、所述核心服务器组中数据节点的数量以及所述核心服务器组中各个数据节点内当前已存储的数据块的数量,将所述待存储的业务的多个第一数据块分别存储至所述核心服务器组的数据节点中;
其中,所述预置的均衡分布规则包括:所述核心服务器组中,任意两个所述数据节点中存储所述第一数据块的数据量之差不大于一,且任意两个数据节点中存储的数据块的总数量之差不大于一;
外围存储单元,用于将所述待存储的业务的多个第一数据块副本分别存储至所述外围服务器集合中的所述多个数据节点内;
其中,所述外围存储单元包括:
确定单元,用于确定所述外围服务器组中所包含的数据节点的第二总数量,各个数据节点当前已经存储的数据块副本的第二副本存储量,以及数据节点针对同一业务能够存储的数据块副本数量的最大存储量;
业务平均确定单元,用于根据所述第二总数量、所述第二副本存储量、所述最大存储量以及所述待存储的业务的第一数据块副本的第二副本总量,确定外围服务器组中每个数据节点平均需存储的业务的第二平均数量;
节点需求计算单元,用于根据所述最大存储量以及所述第二副本总量,计算存储所述多个第一数据块副本所需要的数据节点的第二需求数量;
第一节点确定单元,用于根据所述外围服务器组中各个数据节点内已经存储的数据块副本所属的业务,从所述外围服务器组中,确定至少一个第二数据节点,其中,所述第二数据节点为所述外围服务器组中,存储的业务的数量未达到所述第二平均数量的数据节点;
第二节点确定单元,用于按照所存储的业务的总数量从高到低,对所述至少一个第二数据节点进行排序,并确定排序靠前的第二需求数量个第二数据节点;
外围存储子单元,将所述待存储的业务的第一数据块副本分别存储至所述排序靠前的第二需求数量个第二数据节点中,且每个第二数据节点中均存储与所述最大存储量相同个数的第一数据块副本。
9.根据权利要求8所述的装置,其特征在于,
所述装置还包括:服务器组划分单元,用于依据已存储的业务的数据块副本在外围服务器组的各个数据节点中分布状态,将所述外围服务器组中的数据节点划分为多个服务器子集,其中,外围服务器组中,存储同一业务的数据块副本的数据节点属于同一服务器子集;外围服务器组中,同一个数据节点可以属于多个服务器子集,但同一数据节点所存储的数据块副本所属的业务与该数据节点所属的服务器子集中的各个数据节点所存储的数据块副本所属的业务之间重叠率最高;
所述请求确定单元,具体包括:
服务器集判断单元,用于判断所述多个服务器子集中,是否存在包含有处于运行状态的数据节点的第一服务器子集,其中,所述处于运行状态的数据节点当前时刻正在处理针对业务的处理请求;
第一服务器集处理单元,用于当存储所述第一服务器集时,对于当前待处理的第一服务器子集,确定当前时刻所述第一服务器子集中所有数据节点仍能够接收的第一最大数据处理总量,并从所述多个处理请求中,确定第一数据处理量小于所述第一最大数据处理总量的至少一个第一待迁移处理请求,并触发执行第一迁移单元的操作,其中,所述第一待迁移处理请求所请求处理的业务的数据块副本均存储在所述第一服务器子集包含的数据节点中;
第一服务器集判断单元,用于如果当前时刻所述第一目标数据节点的数据处理量仍超过所述第一预设阈值,判断是否仍存在未被处理的第一服务器子集,如果是,则从未被处理的第一服务器子集中选择一个作为当前待处理的第一服务器子集,并执行所述第一服务器处理单元的操作;如果否,执行第二服务器集处理单元的操作;
第二服务器集处理单元,用于从不属于所述第一服务器子集的多个第二服务器子集中,确定出至少一个用于迁入处理请求的第二目标服务器子集,并根据所述处理请求的第一处理量,从所述多个处理请求中,确定出至少一个待迁入至所述第二目标服务器子集的第二待迁移处理请求,并执行第二迁移单元的操作,其中,所述第二待迁移处理请求所请求处理的业务的数据块副本均存储在所述第二目标服务器子集包含的数据节点中;
其中,在所述迁移单元,包括:
第一迁移单元,用于将所述第一待迁移处理请求迁移至所述当前待处理的第一服务器子集的第二目标数据节点中;和/或,
第二迁移单元,用于将所述第二待迁移处理请求迁移至所述第二目标服务器子集中的第二目标数据节点中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310288500.5A CN103369042B (zh) | 2013-07-10 | 2013-07-10 | 一种数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310288500.5A CN103369042B (zh) | 2013-07-10 | 2013-07-10 | 一种数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103369042A CN103369042A (zh) | 2013-10-23 |
CN103369042B true CN103369042B (zh) | 2016-03-30 |
Family
ID=49369563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310288500.5A Active CN103369042B (zh) | 2013-07-10 | 2013-07-10 | 一种数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103369042B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577122B (zh) * | 2013-11-06 | 2016-08-17 | 杭州华为数字技术有限公司 | 分布式应用系统在平台间迁移的实现方法及装置 |
CN103716381B (zh) * | 2013-12-12 | 2017-04-12 | 华为技术有限公司 | 一种分布式系统的控制方法,及管理节点 |
CN104978344B (zh) * | 2014-04-09 | 2018-11-20 | 华为技术有限公司 | 一种数据运算方法及装置 |
CN104158902B (zh) * | 2014-08-27 | 2017-09-19 | 浙江宇视科技有限公司 | 一种基于请求数的Hbase数据块分配方法及装置 |
CN105763857A (zh) * | 2016-04-27 | 2016-07-13 | 王正作 | 一种无人机视频传输系统 |
CN105912718B (zh) * | 2016-04-29 | 2019-06-18 | 华为技术有限公司 | 一种文件存储方法及名称节点 |
CN107122442B (zh) * | 2017-04-24 | 2021-04-16 | 上海兴容信息技术有限公司 | 一种分布式数据库及其访问方法 |
CN107819828B (zh) * | 2017-10-16 | 2020-03-10 | 平安科技(深圳)有限公司 | 数据传输方法、装置、计算机设备和存储介质 |
CN109150964B (zh) * | 2018-07-06 | 2022-01-11 | 中科星图股份有限公司 | 一种可迁移的数据管理方法及服务迁移方法 |
CN111240580B (zh) * | 2018-11-29 | 2022-04-12 | 浙江宇视科技有限公司 | 数据迁移方法及装置 |
CN111435939B (zh) * | 2019-01-14 | 2023-05-05 | 百度在线网络技术(北京)有限公司 | 用于划分节点的存储空间的方法和装置 |
CN111435938B (zh) * | 2019-01-14 | 2022-11-29 | 阿里巴巴集团控股有限公司 | 一种数据请求的处理方法、装置及其设备 |
CN110188007B (zh) * | 2019-06-05 | 2022-02-15 | 深圳市迅雷网络技术有限公司 | 分布式数据修复方法、装置、网络节点及存储介质 |
CN110636058B (zh) * | 2019-09-16 | 2020-08-21 | 湖南德善信医药科技有限公司 | 基于大数据的信息安全系统和方法 |
CN110808922B (zh) * | 2019-10-29 | 2023-06-06 | 北京大米科技有限公司 | 一种消息处理方法、装置、存储介质及电子设备 |
CN111131486B (zh) * | 2019-12-30 | 2023-04-07 | 北京三快在线科技有限公司 | 执行节点的负载调节方法、装置、服务器及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339570A (zh) * | 2008-08-12 | 2009-01-07 | 北京航空航天大学 | 一种高效的海量遥感数据分布式组织管理方法 |
CN101610287A (zh) * | 2009-06-16 | 2009-12-23 | 浙江大学 | 一种应用于分布式海量存储系统的负载均衡方法 |
CN102821164A (zh) * | 2012-08-31 | 2012-12-12 | 河海大学 | 一种高效并行分布式数据处理系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8560691B2 (en) * | 2007-06-19 | 2013-10-15 | Microsoft Corporation | Relocating item in distributed storage system |
-
2013
- 2013-07-10 CN CN201310288500.5A patent/CN103369042B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339570A (zh) * | 2008-08-12 | 2009-01-07 | 北京航空航天大学 | 一种高效的海量遥感数据分布式组织管理方法 |
CN101610287A (zh) * | 2009-06-16 | 2009-12-23 | 浙江大学 | 一种应用于分布式海量存储系统的负载均衡方法 |
CN102821164A (zh) * | 2012-08-31 | 2012-12-12 | 河海大学 | 一种高效并行分布式数据处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103369042A (zh) | 2013-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103369042B (zh) | 一种数据处理方法和装置 | |
CN103312825B (zh) | 一种数据分布存储方法和装置 | |
Efe | Heuristic models of task assignment scheduling in distributed systems. | |
CN103595805A (zh) | 一种基于分布式集群的数据放置方法 | |
CN106339386B (zh) | 数据库弹性调度方法以及装置 | |
CN104639645A (zh) | 网络负载均衡方法、装置及集群服务系统 | |
CN102314336A (zh) | 一种数据处理方法和系统 | |
CN107729514A (zh) | 一种基于hadoop的副本放置节点确定方法及装置 | |
CN112286917A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
Mestre et al. | Adaptive sorted neighborhood blocking for entity matching with mapreduce | |
CN107729267A (zh) | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 | |
CN107704322A (zh) | 请求分配方法及装置 | |
CN107391039B (zh) | 一种数据对象存储方法和装置 | |
CN105701128B (zh) | 一种查询语句的优化方法和装置 | |
Enokido et al. | The improved redundant active time-based (IRATB) algorithm for process replication | |
US10713096B2 (en) | System and method for handling data skew at run time | |
CN109788013B (zh) | 分布式系统中作业资源分配方法、装置及设备 | |
Tian et al. | Efficient algorithms for VM placement in cloud data centers | |
CN104239520A (zh) | 一种基于历史信息的hdfs数据块放置策略 | |
CN106599184B (zh) | 一种Hadoop系统优化方法 | |
CN112929400A (zh) | 一种分布式缓存库数据重均衡方法和系统 | |
Zhang et al. | Speeding up vm startup by cooperative vm image caching | |
Mao et al. | A fine-grained and dynamic MapReduce task scheduling scheme for the heterogeneous cloud environment | |
CN106844037A (zh) | 一种基于knl的测试方法及系统 | |
Tiwari et al. | A PREDICTION BASED MULTI-PHASES LIVE MIGRATION APPROACH TO MINIMIZE THE NUMBER OF TRANSFERRED PAGES, IN CLOUD COMPUTING ENVIRONMENT |
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 |