CN109992216B - 一种数据组分配方法、系统及电子设备和存储介质 - Google Patents
一种数据组分配方法、系统及电子设备和存储介质 Download PDFInfo
- Publication number
- CN109992216B CN109992216B CN201910290081.6A CN201910290081A CN109992216B CN 109992216 B CN109992216 B CN 109992216B CN 201910290081 A CN201910290081 A CN 201910290081A CN 109992216 B CN109992216 B CN 109992216B
- Authority
- CN
- China
- Prior art keywords
- storage engine
- primary
- storage
- determining
- weight
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 15
- 238000004364 calculation method Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000005236 sound signal Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据组分配方法、系统及一种电子设备和计算机可读存储介质,该方法包括:根据总缓存空间、存储引擎数量和每个存储引擎的实际缓存空间确定每个存储引擎的缓存权重;通过均衡算法为每个数据组分配存储引擎,并根据存储引擎数量、primary组总数和每个存储引擎的缓存权重确定每个存储引擎的期望primary组数;根据primary亲和性权重确定每个primary组的存储引擎,并确定每个存储引擎的实际primary组数;根据每个存储引擎的期望primary组数和实际primary组数的差值调整primary亲和性权重,直到满足预设条件,提高了分布式块存储系统的综合性能。
Description
技术领域
本申请涉及存储技术领域,更具体地说,涉及一种数据组分配方法、系统及一种电子设备和一种计算机可读存储介质。
背景技术
在分布式块存储系统中,以存储引擎为单位,分别管理各个磁盘的数据操作。以三副本分布式块存储系统为例,数据以组为单位存在于存储引擎上,每个组会存储三份,分别存储在不同的存储引擎上,所以写入的数据会存储于三个不同的存储引擎上。根据组编号和存储池编号的哈希值从三个存储引擎中计算出一个primary副本,则该primary副本的组成为primary组,其余两个存储引擎上对应的组为replicated副本,称为replicated组。当有读请求到达时,从primary副本进行数据的读取。
为了提升系统的性能,通常使用SSD(中文全称:固态硬盘,英文全称: SolidState Disk)缓存来为存储引擎进行性能加速,并优先将primary组存储在SSD缓存上,从而使更多的primary数据缓存在SSD上,进而最大限度的提升系统性能。在现有技术中,通过均衡算法,使各个存储引擎上的组数目基本保持一致,但primary组数目由于随机性的存在,差别较大。但是,在现场的实际环境配置中,通常难以为每个存储引擎提供同样大小的SSD缓存,从而使分布式块存储系统的综合性能受制于SSD缓存较小的存储引擎。
因此,如何使primary数据缓存在SSD上,进一步提高分布式块存储系统的综合性能是本领域技术人员需要解决的技术问题。
发明内容
本申请的目的在于提供一种数据组分配方法、系统及一种电子设备和一种计算机可读存储介质,使primary数据缓存在SSD上,进一步提高分布式块存储系统的综合性能。
为实现上述目的,本申请提供了一种数据组分配方法,包括:
确定总缓存空间、存储引擎数量,并根据所述总缓存空间、所述存储引擎数量和每个存储引擎的实际缓存空间确定每个所述存储引擎的缓存权重;
通过均衡算法为每个数据组分配存储引擎,并根据所述存储引擎数量、 primary组总数和每个所述存储引擎的缓存权重确定每个所述存储引擎的期望 primary组数;其中,所述数据组包括primary组和replicate组;
确定每个所述存储引擎的primary亲和性权重,根据所述primary亲和性权重确定每个primary组的存储引擎,并确定每个所述存储引擎的实际primary 组数;
根据每个所述存储引擎的期望primary组数和实际primary组数的差值调整所述primary亲和性权重,直到满足预设条件。
其中,根据所述总缓存空间、所述存储引擎数量和每个存储引擎的实际缓存空间确定每个所述存储引擎的缓存权重,包括:
根据所述总缓存空间和所述存储引擎数量计算平均缓存空间;
将每个所述存储引擎的实际缓存空间与所述平均缓存空间的比值作为每个所述存储引擎的缓存权重。
其中,根据所述存储引擎数量、primary组总数和每个所述存储引擎的缓存权重确定每个所述存储引擎的期望primary组数,包括:
根据期望primary组数计算公式计算每个所述存储引擎的期望primary组数;其中,所述期望primary组数计算公式为:
expect_N_i=N_primary_total/num×cache_weight_i;
其中,expect_N_i为所述期望primary组数,N_primary_total为所述 primary组总数,num为所述存储引擎数量,cache_weight_i为所述缓存权重。
其中,确定每个所述存储引擎的primary亲和性权重,根据所述primary 亲和性权重确定每个primary组的存储引擎,并确定每个所述存储引擎的实际 primary组数,包括:
S1:将每个所述存储引擎的primary亲和性权重确定为1;
S2:计算每个数据组对应的每个存储引擎的加权值;其中,所述加权值为目标哈希值和所述存储引擎的primary亲和性权重的乘积,所述目标哈希值为所述数据组的标识信息和所述存储引擎的标识信息组成的字段的哈希值;
S3:将每个所述数据组对应的存储引擎中加权值最高的存储引擎确定为所述primary组的存储引擎,并确定每个所述存储引擎的实际primary组数。
其中,根据每个所述存储引擎的期望primary组数和实际primary组数的差值调整所述primary亲和性权重,直到满足预设条件,包括:
S4:判断每个所述存储引擎是否满足预设条件;若否,则进入S5;
S5:当所述存储引擎的期望primary组数和实际primary组数的差值大于目标值时,将所述存储引擎的primary亲和性权重减少预设步长,当所述差值小于所述目标值的相反数时,将所述存储引擎的primary亲和性权重增加预设步长,并重新进入S2。
其中,所述预设条件具体为迭代次数达到预设值或所述存储引擎的期望 primary组数和实际primary组数的差值的绝对值小于所述目标值。
其中,所述目标值为2,所述预设步长为0.01。
为实现上述目的,本申请提供了一种数据组分配系统,包括:
第一确定模块,用于确定总缓存空间、存储引擎数量,并根据所述总缓存空间、所述存储引擎数量和每个存储引擎的实际缓存空间确定每个所述存储引擎的缓存权重;
第二确定模块,用于通过均衡算法为每个数据组分配存储引擎,并根据所述存储引擎数量、primary组总数和每个所述存储引擎的缓存权重确定每个所述存储引擎的期望primary组数;其中,所述数据组包括primary组和replicate 组;
第三确定模块,用于确定每个所述存储引擎的primary亲和性权重,根据所述primary亲和性权重确定每个primary组的存储引擎,并确定每个所述存储引擎的实际primary组数;
调整模块,用于根据每个所述存储引擎的期望primary组数和实际primary 组数的差值调整所述primary亲和性权重,直到满足预设条件。
为实现上述目的,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述数据组分配方法的步骤。
为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述数据组分配方法的步骤。
通过以上方案可知,本申请提供的一种数据组分配方法,包括:确定总缓存空间、存储引擎数量,并根据所述总缓存空间、所述存储引擎数量和每个存储引擎的实际缓存空间确定每个所述存储引擎的缓存权重;通过均衡算法为每个数据组分配存储引擎,并根据所述存储引擎数量、primary组总数和每个所述存储引擎的缓存权重确定每个所述存储引擎的期望primary组数;其中,所述数据组包括primary组和replicate组;确定每个所述存储引擎的primary 亲和性权重,根据所述primary亲和性权重确定每个primary组的存储引擎,并确定每个所述存储引擎的实际primary组数;根据每个所述存储引擎的期望 primary组数和实际primary组数的差值调整所述primary亲和性权重,直到满足预设条件。
本申请提供的数据组分配方法,引入SSD缓存权重和primary亲和性权重,实现了primary组数目按SSD缓存比例在各存储引擎间进行分配,即当存储引擎的SSD缓存较多时,为该存储引擎分配较多的primary组,对于SSD 缓存较少的存储引擎,相应地减少为该存储引擎分配的primary组数目,实现基于缓存空间的primary组分布均衡,达到了分布式存储系统中主副本数据均衡的目的,从而提升SSD缓存利用率,提高了分布式存储系统综合性能。本申请还公开了一种数据组分配系统及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为根据一示例性实施例示出的一种数据组分配方法的流程图;
图2为根据一示例性实施例示出的另一种数据组分配方法的流程图;
图3为根据一示例性实施例示出的一种数据组分配系统的结构图;
图4为根据一示例性实施例示出的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种数据组分配方法,使primary数据缓存在SSD上,进一步提高分布式块存储系统的综合性能。
参见图1,根据一示例性实施例示出的一种数据组分配方法的流程图,如图1所示,包括:
S101:确定总缓存空间、存储引擎数量,并根据所述总缓存空间、所述存储引擎数量和每个存储引擎的实际缓存空间确定每个所述存储引擎的缓存权重;
本实施例的执行主体可以为分布式存储系统的存储器,在分配数据组时,首先确定总缓存空间、存储引擎数量,并确定每个存储引擎的缓存权重,总缓存空间即为整个分布式存储系统中SSD缓存的总数,缓存权重表征为每个存储引擎的SSD缓存数目,SSD缓存数目越多,缓存权重越大。
本实施例不对每个存储引擎的缓存权重的确定方式进行具体限定,例如,本领域技术人员可以根据每个存储引擎的实际缓存空间进行直接设置,也可以通过算法进行自动计算,即根据所述总缓存空间、所述存储引擎数量和每个存储引擎的实际缓存空间确定每个所述存储引擎的缓存权重的步骤可以包括:根据所述总缓存空间和所述存储引擎数量计算平均缓存空间;将每个所述存储引擎的实际缓存空间与所述平均缓存空间的比值作为每个所述存储引擎的缓存权重。
平均缓存空间S_avg的计算公式为:S_avg=S_total/num,其中, S_total为总缓存空间,num为存储引擎数量。
缓存权重cache_weight_i的计算公式为:
cache_weight_i=Si/S_avg,其中,Si为第i个存储引擎的实际缓存空间。
S102:通过均衡算法为每个数据组分配存储引擎,并根据所述存储引擎数量、primary组总数和每个所述存储引擎的缓存权重确定每个所述存储引擎的期望primary组数;其中,所述数据组包括primary组和replicate组;
在本步骤中,首先通过均衡算法为每个数据组分配存储引擎,使各存储引擎上的数据组个数基本一致。此时所有的数据组都被均分到存储引擎上,但并没有确定各数据中中primary组所在的存储引擎位置。
在为每个数据组分配存储引擎,确定每个存储引擎的期望primary组数,可以理解的是,缓存权重越大代表该存储引擎上的SSD缓存较多,可以为其分配较多的primary组,因此该存储引擎的期望primary组数越大。本实施例同样不限定确定期望primary组数的具体步骤,可以为缓存权重与期望primary 组数建立对应关系,以数据表的形式存储在系统中,也可以根据期望primary 组数计算公式计算每个存储引擎的期望primary组数expect_N_i,期望 primary组数计算公式为:
expect_N_i=N_primary_total/num×cache_weight_i;其中,
N_primary_total为primary组总数,即数据组总数,num为存储引擎数量, cache_weight_i为第i个存储引擎的缓存权重。
S103:确定每个所述存储引擎的primary亲和性权重,根据所述primary 亲和性权重确定每个primary组的存储引擎,并确定每个所述存储引擎的实际 primary组数;
在本步骤中,确定每个存储引擎的期望primary组数后,需要确定每个存储引擎的实际primary组数。在本实施例中引入primary亲和性权重,表征每个存储引擎中的实际primary组数,primary亲和性权重越大,实际primary组数越多。在具体实施中,首先为每个存储引擎设置primary亲和性权重的初始值(如1),并确定每个数据组中primary组的存储引擎。此处同样不限定初始确定primary组的存储引擎的具体步骤,可以从S102中分配的存储引擎中随机指定,也可以通过算法进行计算,将在下一实施例进行详细介绍。
S104:根据每个所述存储引擎的期望primary组数和实际primary组数的差值调整所述primary亲和性权重,直到满足预设条件。
在具体实施中,根据步骤S102中确定的期望primary组数和步骤S103中确定的实际primary组数调整primary亲和性权重,并重新为每个primary组分配存储引擎,直到满足预设条件。预设条件可以具体为迭代次数(即为每个primary组分配存储引擎的次数或调整primary亲和性权重的次数)达到预设值或期望primary组数和实际primary组数的差值的绝对值小于目标值。
本申请实施例提供的数据组分配方法,引入SSD缓存权重和primary亲和性权重,实现了primary组数目按SSD缓存比例在各存储引擎间进行分配,即当存储引擎的SSD缓存较多时,为该存储引擎分配较多的primary组,对于SSD缓存较少的存储引擎,相应地减少为该存储引擎分配的primary组数目,实现基于缓存空间的primary组分布均衡,达到了分布式存储系统中主副本数据均衡的目的,从而提升SSD缓存利用率,提高了分布式存储系统综合性能。
本申请实施例公开了一种数据组分配方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
参见图2,根据一示例性实施例示出的另一种数据组分配方法的流程图,如图2所示,包括:
S201:确定总缓存空间、存储引擎数量,并根据所述总缓存空间和所述存储引擎数量计算平均缓存空间;
S202:将每个所述存储引擎的实际缓存空间与所述平均缓存空间的比值作为每个所述存储引擎的缓存权重。
S203:通过均衡算法为每个数据组分配存储引擎,并根据所述存储引擎数量、primary组总数和每个所述存储引擎的缓存权重确定每个所述存储引擎的期望primary组数;
S204:将每个所述存储引擎的primary亲和性权重确定为1;
在本实施例中,首先将每个存储引擎的primary亲和性权重的初始值设置为1。
S205:计算每个数据组对应的每个存储引擎的加权值;其中,所述加权值为目标哈希值和所述存储引擎的primary亲和性权重的乘积,所述目标哈希值为所述数据组的标识信息和所述存储引擎的标识信息组成的字段的哈希值;
S206:将每个所述数据组对应的存储引擎中加权值最高的存储引擎确定为所述primary组的存储引擎,并确定每个所述存储引擎的实际primary组数。
在本实施例中,首先计算数据组对应的每个存储引擎的加权值,加权值为数据组的标识信息和存储引擎的标识信息组成的字段的哈希值与存储引擎的primary亲和性权重的乘积,加权值最大的存储引擎即为primary组的存储引擎,其余设置为replicated组,循环上述过程以确定所有primary组的存储引擎,并统计每个存储引擎的实际primary组数。
S207:判断每个所述存储引擎是否满足预设条件;若是,则结束流程;若否,则进入S208;
在本实施例中,预设条件为迭代次数(即为每个primary组分配存储引擎的次数或调整primary亲和性权重的次数)达到预设值或期望primary组数和实际primary组数的差值的绝对值小于目标值,具体的可以将目标值设置为2。当期望primary组数和实际primary组数的差值的绝对值小于目标值时,说明实际primary组数与期望的primary组数较为接近,结束流程。
S208:当所述存储引擎的期望primary组数和实际primary组数的差值大于目标值时,将所述存储引擎的primary亲和性权重减少预设步长,当所述差值小于所述目标值的相反数时,将所述存储引擎的primary亲和性权重增加预设步长,并重新进入S205。
在具体实施中,当二者的差值超过目标值时,说明该存储引擎上的实际 primary组数与期望的primary组数偏差较远,此时需要调整primary亲和性权重primary_affinity_weight,若real_N_i-expect_N_i>目标值时,说明实际primary组数偏多,将该存储引擎的primary_affinity_weight减去预设步长,若real_N_i-expect_N_i<-目标值时,说明实际primary组数偏少,将该存储引擎的primary_affinity_weight增加预设步长,具体的可以将预设步长设置为0.01。
下面介绍本申请提供的数据组分配方法的应用实施例,具体包括以下步骤:
步骤1:获取各存储引擎的SSD缓存空间S_i、整个分布式块存储系统的总缓存空间S_total和存储引擎数目num;
步骤2:计算:各存储引擎的平均缓存空间S_avg=S_total/num,计算各存储引擎的缓存权重cache_weight_i=Si/S_avg;
步骤3:获取primary组个数N_primary_total,计算每个存储引擎的期望primary组个数expect_N_i:
expect_N_i=N_primary_total/num×cache_weight_i;
步骤4:预设各存储引擎的primary亲和性权重
primary_affinity_weight=1,设定期望偏差组数D为2,设定迭代步长T为 0.01,设定迭代次数上限N为1000;
步骤5:根据组ID和存储引擎ID组成的字段进行哈希值计算,并乘以 primary_affinity_weight,获取三副本的三个组在各自存储引擎上的加权值;
步骤6:设置加权值最大的组为primary组,其余两个设置为replicated 组;
步骤7:对比各存储引擎上的实际primary组个数real_N_i与期望 primary组个数expect_N_i:
若real_N_i-expect_N_i>2时,说明实际primary组数偏多,将该存储引擎的primary亲和性权重减去预设步长T;
若real_N_i-expect_N_i<-2时,说明实际primary组数偏少,将该存储引擎的primary亲和性权重增加预设步长T;
步骤8:使用新的priamry亲和性权重,重新执行步骤5到步骤7,当所有存储引擎上的primary组数都小于预设偏差阈值D,或者迭代次数达到预设值N时,停止循环迭代。
将最终获得的primary_affinity_weight应用到集群中,即可实现所有存储引擎上的primary组数都与期望的primary组数接近。
下面对本申请实施例提供的一种数据组分配系统进行介绍,下文描述的一种数据组分配系统与上文描述的一种数据组分配方法可以相互参照。
参见图3,根据一示例性实施例示出的一种数据组分配系统的结构图,如图3所示,包括:
第一确定模块301,用于确定总缓存空间、存储引擎数量,并根据所述总缓存空间、所述存储引擎数量和每个存储引擎的实际缓存空间确定每个所述存储引擎的缓存权重;
第二确定模块302,用于通过均衡算法为每个数据组分配存储引擎,并根据所述存储引擎数量、primary组总数和每个所述存储引擎的缓存权重确定每个所述存储引擎的期望primary组数;其中,所述数据组包括primary组和 replicate组;
第三确定模块303,用于确定每个所述存储引擎的primary亲和性权重,根据所述primary亲和性权重确定每个primary组的存储引擎,并确定每个所述存储引擎的实际primary组数;
调整模块304,用于根据每个所述存储引擎的期望primary组数和实际 primary组数的差值调整所述primary亲和性权重,直到满足预设条件。
本申请实施例提供的数据组分配系统,引入SSD缓存权重和primary亲和性权重,实现了primary组数目按SSD缓存比例在各存储引擎间进行分配,即当存储引擎的SSD缓存较多时,为该存储引擎分配较多的primary组,对于SSD缓存较少的存储引擎,相应地减少为该存储引擎分配的primary组数目,实现基于缓存空间的primary组分布均衡,达到了分布式存储系统中主副本数据均衡的目的,从而提升SSD缓存利用率,提高了分布式存储系统综合性能。
在上述实施例的基础上,作为一种优选实施方式,所述第一确定模块301 包括:
第一确定单元,用于确定总缓存空间、存储引擎数量;
第一计算单元,用于根据所述总缓存空间和所述存储引擎数量计算平均缓存空间;
比值单元,用于将每个所述存储引擎的实际缓存空间与所述平均缓存空间的比值作为每个所述存储引擎的缓存权重。
在上述实施例的基础上,作为一种优选实施方式,所述第二确定模块302 包括:
分配单元,用于通过均衡算法为每个数据组分配存储引擎;
第二计算单元,用于根据期望primary组数计算公式计算每个所述存储引擎的期望primary组数;其中,所述期望primary组数计算公式为:
expect_N_i=N_primary_total/num×cache_weight_i;
其中,expect_N_i为所述期望primary组数,N_primary_total为所述 primary组总数,num为所述存储引擎数量,cache_weight_i为所述缓存权重。
在上述实施例的基础上,作为一种优选实施方式,所述第三确定模块303 包括:
第二确定单元,用于将每个所述存储引擎的primary亲和性权重确定为1;
第三计算单元,用于计算每个数据组对应的每个存储引擎的加权值;其中,所述加权值为目标哈希值和所述存储引擎的primary亲和性权重的乘积,所述目标哈希值为所述数据组的标识信息和所述存储引擎的标识信息组成的字段的哈希值;
第三确定单元,用于将每个所述数据组对应的存储引擎中加权值最高的存储引擎确定为所述primary组的存储引擎,并确定每个所述存储引擎的实际 primary组数。
在上述实施例的基础上,作为一种优选实施方式,所述调整模块304包括:
判断单元,用于判断每个所述存储引擎是否满足预设条件;若否,则启动调整单元的工作流程;
调整单元,用于当所述存储引擎的期望primary组数和实际primary组数的差值大于目标值时,将所述存储引擎的primary亲和性权重减少预设步长,当所述差值小于所述目标值的相反数时,将所述存储引擎的primary亲和性权重增加预设步长,并重新启动所述第三计算单元的工作流程。
在上述实施例的基础上,作为一种优选实施方式,所述预设条件具体为迭代次数达到预设值或所述存储引擎的期望primary组数和实际primary组数的差值的绝对值小于所述目标值。
在上述实施例的基础上,作为一种优选实施方式,所述目标值为2,所述预设步长为0.01。
关于上述实施例中的系统,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请还提供了一种电子设备,参见图4,本申请实施例提供的一种电子设备400的结构图,如图4所示,可以包括处理器11和存储器12。该电子设备400还可以包括多媒体组件13,输入/输出(I/O)接口14,以及通信组件 15中的一者或多者。
其中,处理器11用于控制该电子设备400的整体操作,以完成上述的数据组分配方法中的全部或部分步骤。存储器12用于存储各种类型的数据以支持在该电子设备400的操作,这些数据例如可以包括用于在该电子设备400 上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称 EPROM),可编程只读存储器(Programmable Read-Only Memory,简称 PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件13可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器12或通过通信组件15发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口14为处理器11和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件15用于该电子设备400与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件15可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称 PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的数据组分配方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述数据组分配方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器12,上述程序指令可由电子设备400的处理器11执行以完成上述的数据组分配方法。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (7)
1.一种数据组分配方法,其特征在于,包括:
确定总缓存空间、存储引擎数量,并根据所述总缓存空间、所述存储引擎数量和每个存储引擎的实际缓存空间确定每个所述存储引擎的缓存权重;
通过均衡算法为每个数据组分配存储引擎,并根据所述存储引擎数量、primary组总数和每个所述存储引擎的缓存权重确定每个所述存储引擎的期望primary组数;其中,所述数据组包括primary组和replicate组;
确定每个所述存储引擎的primary亲和性权重,根据所述primary亲和性权重确定每个primary组的存储引擎,并确定每个所述存储引擎的实际primary组数;
根据每个所述存储引擎的期望primary组数和实际primary组数的差值调整所述primary亲和性权重,直到满足预设条件;
其中,根据所述总缓存空间、所述存储引擎数量和每个存储引擎的实际缓存空间确定每个所述存储引擎的缓存权重,包括:
根据所述总缓存空间和所述存储引擎数量计算平均缓存空间;
将每个所述存储引擎的实际缓存空间与所述平均缓存空间的比值作为每个所述存储引擎的缓存权重;
其中,根据所述存储引擎数量、primary组总数和每个所述存储引擎的缓存权重确定每个所述存储引擎的期望primary组数,包括:
根据期望primary组数计算公式计算每个所述存储引擎的期望primary组数;其中,所述期望primary组数计算公式为:
其中,确定每个所述存储引擎的primary亲和性权重,根据所述primary亲和性权重确定每个primary组的存储引擎,并确定每个所述存储引擎的实际primary组数,包括:
S1:将每个所述存储引擎的primary亲和性权重确定为1;
S2:计算每个数据组对应的每个存储引擎的加权值;其中,所述加权值为目标哈希值和所述存储引擎的primary亲和性权重的乘积,所述目标哈希值为所述数据组的标识信息和所述存储引擎的标识信息组成的字段的哈希值;
S3:将每个所述数据组对应的存储引擎中加权值最高的存储引擎确定为所述primary组的存储引擎,并确定每个所述存储引擎的实际primary组数。
2.根据权利要求1所述数据组分配方法,其特征在于,根据每个所述存储引擎的期望primary组数和实际primary组数的差值调整所述primary亲和性权重,直到满足预设条件,包括:
S4:判断每个所述存储引擎是否满足预设条件;若否,则进入S5;
S5:当所述存储引擎的期望primary组数和实际primary组数的差值大于目标值时,将所述存储引擎的primary亲和性权重减少预设步长,当所述差值小于所述目标值的相反数时,将所述存储引擎的primary亲和性权重增加预设步长,并重新进入S2。
3.根据权利要求2所述数据组分配方法,其特征在于,所述预设条件具体为迭代次数达到预设值或所述存储引擎的期望primary组数和实际primary组数的差值的绝对值小于所述目标值。
4.根据权利要求2所述数据组分配方法,其特征在于,所述目标值为2,所述预设步长为0.01。
5.一种数据组分配系统,其特征在于,包括:
第一确定模块,用于确定总缓存空间、存储引擎数量,并根据所述总缓存空间、所述存储引擎数量和每个存储引擎的实际缓存空间确定每个所述存储引擎的缓存权重;
第二确定模块,用于通过均衡算法为每个数据组分配存储引擎,并根据所述存储引擎数量、primary组总数和每个所述存储引擎的缓存权重确定每个所述存储引擎的期望primary组数;其中,所述数据组包括primary组和replicate组;
第三确定模块,用于确定每个所述存储引擎的primary亲和性权重,根据所述primary亲和性权重确定每个primary组的存储引擎,并确定每个所述存储引擎的实际primary组数;
调整模块,用于根据每个所述存储引擎的期望primary组数和实际primary组数的差值调整所述primary亲和性权重,直到满足预设条件;
其中,所述第一确定模块包括:
第一确定单元,用于确定总缓存空间、存储引擎数量;
第一计算单元,用于根据所述总缓存空间和所述存储引擎数量计算平均缓存空间;
比值单元,用于将每个所述存储引擎的实际缓存空间与所述平均缓存空间的比值作为每个所述存储引擎的缓存权重;
其中,所述第二确定模块包括:
分配单元,用于通过均衡算法为每个数据组分配存储引擎;
第二计算单元,用于根据期望primary组数计算公式计算每个所述存储引擎的期望primary组数;其中,所述期望primary组数计算公式为:
其中,所述第三确定模块包括:
第二确定单元,用于将每个所述存储引擎的primary亲和性权重确定为1;
第三计算单元,用于计算每个数据组对应的每个存储引擎的加权值;其中,所述加权值为目标哈希值和所述存储引擎的primary亲和性权重的乘积,所述目标哈希值为所述数据组的标识信息和所述存储引擎的标识信息组成的字段的哈希值;
第三确定单元,用于将每个所述数据组对应的存储引擎中加权值最高的存储引擎确定为所述primary组的存储引擎,并确定每个所述存储引擎的实际primary组数。
6.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述数据组分配方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述数据组分配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910290081.6A CN109992216B (zh) | 2019-04-11 | 2019-04-11 | 一种数据组分配方法、系统及电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910290081.6A CN109992216B (zh) | 2019-04-11 | 2019-04-11 | 一种数据组分配方法、系统及电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109992216A CN109992216A (zh) | 2019-07-09 |
CN109992216B true CN109992216B (zh) | 2023-01-10 |
Family
ID=67133330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910290081.6A Active CN109992216B (zh) | 2019-04-11 | 2019-04-11 | 一种数据组分配方法、系统及电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109992216B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230205421A1 (en) * | 2020-05-24 | 2023-06-29 | (Suzhou Inspur Intelligent Technology Co., Ltd.) | Method and System for Balancing and Optimizing Primary Placement Group, and Device and Medium |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294603A (zh) * | 2016-07-29 | 2017-01-04 | 北京奇虎科技有限公司 | 文件存储方法及装置 |
CN109343798A (zh) * | 2018-09-25 | 2019-02-15 | 郑州云海信息技术有限公司 | 对分布式存储系统的主pg均衡调整的方法、装置及介质 |
-
2019
- 2019-04-11 CN CN201910290081.6A patent/CN109992216B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294603A (zh) * | 2016-07-29 | 2017-01-04 | 北京奇虎科技有限公司 | 文件存储方法及装置 |
CN109343798A (zh) * | 2018-09-25 | 2019-02-15 | 郑州云海信息技术有限公司 | 对分布式存储系统的主pg均衡调整的方法、装置及介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230205421A1 (en) * | 2020-05-24 | 2023-06-29 | (Suzhou Inspur Intelligent Technology Co., Ltd.) | Method and System for Balancing and Optimizing Primary Placement Group, and Device and Medium |
US12118213B2 (en) * | 2020-05-24 | 2024-10-15 | Inspur Suzhou Intelligent Technology Co., Ltd. | Method and system for balancing and optimizing primary placement group, and device and medium |
Also Published As
Publication number | Publication date |
---|---|
CN109992216A (zh) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7127010B2 (ja) | リソースの割り当て方法、装置、電子設備、コンピュータ可読媒体およびコンピュータプログラム | |
CN109542361B (zh) | 一种分布式存储系统文件读取方法、系统及相关装置 | |
US20200327061A1 (en) | Data prefetching method and apparatus, and storage device | |
Xie et al. | Pandas: robust locality-aware scheduling with stochastic delay optimality | |
US9886395B2 (en) | Evicting cached stores | |
CN109446114B (zh) | 一种空间数据缓存方法、装置和存储介质 | |
KR101719500B1 (ko) | 캐싱된 플로우들에 기초한 가속 | |
CN111245732B (zh) | 一种流量控制方法、装置及设备 | |
US20180329825A1 (en) | Optimizing the management of cache memory | |
CN110413228B (zh) | 一种映射表管理方法、系统及电子设备和存储介质 | |
CN109492024A (zh) | 数据处理方法、装置、计算机设备以及存储介质 | |
WO2014117682A1 (en) | Method, apparatus and terminal for releasing memory | |
CN116010300B (zh) | 一种gpu缓存方法及装置、电子设备和存储介质 | |
CN111124304B (zh) | 一种数据迁移方法、装置及电子设备和存储介质 | |
CN111124952B (zh) | 一种数据管理方法、装置、电子设备及可读存储介质 | |
CN109992216B (zh) | 一种数据组分配方法、系统及电子设备和存储介质 | |
CN113886496A (zh) | 区块链的数据同步方法、装置、计算机设备和存储介质 | |
JP6207193B2 (ja) | サーバ数調整システムおよび方法ならびにプログラム | |
CN114428585A (zh) | 数据存储方法、装置及电子设备 | |
CN109976896B (zh) | 业务排重处理方法和装置 | |
CN108628551B (zh) | 一种数据处理方法及装置 | |
CN116149550A (zh) | 数据管理方法、装置、存储介质及设备 | |
JP2016045594A (ja) | データ処理装置、データ処理方法及びデータ処理プログラム | |
KR20170000516A (ko) | 동적 프로파일러를 통한 객체의 특성을 이용한 dram과 플래시 하이브리드 기억장치에서의 가비지 컬렉션 수행 방법 및 그를 위한 시스템 | |
CN107577439B (zh) | 分配处理资源的方法、装置、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |