一种缓存设备的数据处理方法、装置、设备及介质与流程

文档序号:26586621发布日期:2021-09-10 19:27阅读:93来源:国知局
一种缓存设备的数据处理方法、装置、设备及介质与流程

1.本公开涉及通信技术领域,尤其涉及一种缓存设备的数据处理方法、装置、设备及介质。


背景技术:

2.由于机械硬盘(hard disk drive,hdd)的性能较慢,在实际使用场景中,通常需要使用固态硬盘(solid state drive,ssd)作为机械硬盘的缓存设备来加速其性能。
3.当固态硬盘作为缓存写满之后,应用和回写(writeback)的负载同时加载到机械磁盘,导致整个存储系统性能大大下降。目前,一般是通过获取缓存磁盘的脏数据的数据量,并根据脏数据的数据量控制是否执行写操作,在每一个写操作之前都需要进行判断,只有满足条件,写操作才会执行,当出现缓存写满的情况时,根据回写的速率对应用负载进行限流。但是上述方式存在额外消耗处理器资源以及无法应对复杂的负载情况的问题。


技术实现要素:

4.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种缓存设备的数据处理方法、装置、设备及介质。
5.本公开实施例提供了一种缓存设备的数据处理方法,所述方法包括:
6.获取目标数据,所述目标数据包括读写数据、设备使用率和脏数据占比;
7.根据所述目标数据确定缓存设备当前对应的目标模式;
8.基于所述目标模式执行数据处理;
9.其中,所述缓存设备包括基于固态硬盘的第一设备和基于机械硬盘的第二设备,所述第一设备和所述第二设备包括不同类型的存储桶,所述目标模式包括多个模式,不同模式下所述不同类型的存储桶的分配比例不同。
10.本公开实施例还提供了一种缓存设备的数据处理装置,所述装置包括:
11.数据获取模块,用于获取目标数据,所述目标数据包括读写数据、设备使用率和脏数据占比;
12.模式确定模块,用于根据所述目标数据确定缓存设备当前对应的目标模式;
13.数据处理模块,用于基于所述目标模式执行数据处理;
14.其中,所述缓存设备包括基于固态硬盘的第一设备和基于机械硬盘的第二设备,所述第一设备和所述第二设备包括不同类型的存储桶,所述目标模式包括多个模式,不同模式下所述不同类型的存储桶的分配比例不同。
15.本公开实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开实施例提供的缓存设备的数据处理方法。
16.本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开实施例提供的缓存设备的数据处理方法。
17.本公开实施例提供的技术方案与现有技术相比具有如下优点:本公开实施例提供的缓存设备的数据处理方案,获取目标数据,目标数据包括读写数据、设备使用率和脏数据占比;根据目标数据确定缓存设备当前对应的目标模式;基于目标模式执行数据处理;其中,缓存设备包括基于固态硬盘的第一设备和基于机械硬盘的第二设备,第一设备和第二设备包括不同类型的存储桶,目标模式包括多个模式,不同模式下不同类型的存储桶的分配比例不同。采用上述技术方案,由于对包括固态硬盘和机械硬盘的缓存设备进行不同类型的存储桶的划分,根据缓存设备的读写、使用等数据可以实时确定当前的模式,基于当前模式下的不同类型的存储桶的分配比例执行数据读写,实现了对缓存设备处理数据的模式状态的动态调整,极大提升了缓存设备的性能,避免了相关技术中对资源的消耗和无法应对复杂的负载情况的缺陷,增强了缓存设备的可用性。
附图说明
18.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
19.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
20.图1为本公开实施例提供的一种缓存设备的数据处理方法的流程示意图;
21.图2为本公开实施例提供的一种缓存设备的示意图;
22.图3为本公开实施例提供的缓存设备中的存储桶的示意图;
23.图4为本公开实施例提供的另一种缓存设备的数据处理方法的流程示意图;
24.图5为本公开实施例提供的一种模式转换的示意图;
25.图6为本公开实施例提供的一种b+树的示意图;
26.图7为本公开实施例提供的一种节点的示意图;
27.图8为本公开实施例提供的一种缓存设备的数据处理装置的结构示意图;
28.图9为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
29.为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
30.在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
31.由于机械硬盘(hard disk drive,hdd)的性能较慢,在实际使用场景中,通常需要使用固态硬盘(solid state drive,ssd)作为机械硬盘的缓存设备来加速其性能,例如linux中的bcache、flashcache等都是使用快速的固态硬盘为缓慢的机械磁盘进行加速。
32.当固态硬盘作为缓存写满之后,应用和回写(writeback)的负载同时加载到机械磁盘,导致整个存储系统性能大大下降。目前,一般是通过获取缓存磁盘的脏数据的数据
量,并根据脏数据的数据量控制是否执行写操作,在每一个写操作之前都需要进行判断,只有满足条件,写操作才会执行,当出现缓存写满的情况时,根据回写的速率对应用负载进行限流。但是上述方式仅根据缓存磁盘的脏数据的数据量来控制写操作,无法准确根据后端磁盘的刷脏速率,来控制缓存磁盘写入速率;并且每次写操作都要进行缓存磁盘容量判断,额外消耗中央处理器(central processing unit,cpu)的资源;仅仅通过简单的限流方法无法应对复杂的应用负载。
33.为了解决上述问题,本公开实施例提供了一种缓存设备的数据处理方法,下面结合具体的实施例对该方法进行介绍。
34.图1为本公开实施例提供的一种缓存设备的数据处理方法的流程示意图,该方法可以由缓存设备的数据处理装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在电子设备中。如图1所示,该方法应用于缓存设备中,包括:
35.步骤101、获取目标数据。
36.本实施例中,缓存设备可以包括基于固态硬盘的第一设备和基于机械硬盘的第二设备,第一设备和第二设备包括不同类型的存储桶。
37.示例性的,图2为本公开实施例提供的一种缓存设备的示意图,如图2所示,缓存设备可以包括第一设备和第二设备,缓存设备可以为一种逻辑缓存设备,将基于固态硬盘的第一设备和基于机械硬盘的第二设备进行打包抽象成一个设备,该缓存设备由操作系统虚拟生成,通过块设备驱动实现数据读取/写入(input/output,i/o)的导向和分流,最终将数据落地到第一设备或第二设备中。
38.存储桶(bucket)可以理解为是设备中包括的存储空间,是存储对象的容器,可以等于物理扇区的大小,典型值是512字节。本公开实施例中,缓存设备中的第一设备和第二设备均被划分为固定大小的存储桶,用于对数据进行管理。本实施例中的缓存设备的逻辑空间由第一设备和第二设备组成。
39.本实施例中的缓存设备中可以设置有多个类型的存储桶,用于表示不同的存储位置和状态,存储桶的类型支持动态调整。可选的,不同类型的存储桶包括第一存储桶、第二存储桶和第三存储桶,第一存储桶位于第一设备中,第二存储桶位于第二设备中,第三存储桶位于第一设备和第二设备中。
40.示例性的,图3为本公开实施例提供的缓存设备中的存储桶的示意图,如图3所示,本实施例中可以设置三种类型的存储桶,包括第一存储桶、第二存储桶和第三存储桶,图中采用数字为1的方块表征第一存储桶,采用数字为2的方块表征第二存储桶,采用数字为3的方块表征第三存储桶,未标记数字的方块可以是空闲存储桶,该空闲存储桶的类型可以动态调整。第一存储桶设置在第一设备中,其中的数据只存储在第一设备,并且禁止回收;第二存储桶设置在第二设备中,其中的数据只存储在第二设备;第三存储桶可以设置在第一设备和第二设备中,其中的数据在第一设备和第二设备中均存储有相同的副本,并且第一设备中的第三存储桶支持回收。
41.目标数据可以是缓存设备中影响数据处理性能的相关数据,可以包括多种类型的数据,本实施例中的目标数据可以包括读写数据、设备使用率和脏数据占比,读写数据可以是数据读取和数据写入的相关数据,例如读写数据可以包括读写数据量、读数据负载占比和写数据负载占比等;设备使用率可以是缓存设备中的第一设备的使用率;脏数据占比可
以是缓存设备中的脏数据占总数据的比值。
42.具体的,缓存设备可以按照预设时间间隔获取目标数据,预设时间间隔可以为定量值或增量值,具体可以根据实际情况设置。
43.步骤102、根据目标数据确定缓存设备当前对应的目标模式。
44.其中,目标模式包括多个模式,本实施例中目标模式可以包括空闲模式、读模式、写模式和均衡模式,不同模式下不同类型的存储桶的分配比例不同。
45.空闲模式可以是缓存设备中整体的数据读取操作和数据写入操作的数量较低的场景下的模式。读模式可以是缓存设备中的数据读取操作较多的场景的模式。写模式可以是缓存设备中的数据写入操作较多的场景的模式。均衡模式可以是缓存设备中的数据读取操作和数据写入操作较为均衡的场景的模式。
46.本公实施例中,根据目标数据确定缓存设备当前对应的目标模式,可以包括:如果目标数据中读写数据的读写数据量小于读写阈值,则确定目标模式为空闲模式;否则,将第一设备的设备使用率与使用率阈值的进行比对;如果第一设备的设备使用率大于使用率阈值,并且读写数据中读负载占比大于第一预设阈值,则确定目标模式为读模式。
47.其中,读写数据量可以是数据读取操作和数据写入操作的总数量。使用率阈值可以根据实际情况设置,例如使用率阈值可以为60%。读负载占比是指数据读取操作占读写数据量的比值。第一预设阈值是指读负载占比的阈值,可以根据实际情况设置,例如第一预设阈值可以为65%。
48.本实施例中,获取到目标数据之后,可以提取目标数据中读写数据的读写数据量,并将读写数据量与读写阈值进行比对,如果读写数据量小于读写阈值,则可以确定目标模式为空闲模式。如果读写数据量大于或等于读写阈值,则可以将第一设备的设备使用率与使用率阈值进行比对。如果第一设备的设备使用率大于使用率阈值,并且读负载占比大于第一预设阈值,则可以确定目标模式为读模式。
49.本公开实施例中,根据目标数据确定缓存设备当前对应的目标模式,可以包括:如果第一设备的设备使用率大于使用率阈值,读写数据中写负载占比大于第二预设阈值,并且脏数据占比大于第三预设阈值,则确定目标模式为写模式。可选的,根据目标数据确定缓存设备当前对应的目标模式,可以包括:如果第一设备的设备使用率大于使用率阈值,读写数据中写负载占比和读负载占比相同,并且脏数据占比大于第四预设阈值,则确定目标模式为均衡模式。
50.写负载占比是指数据写入操作占读写数据量的比值。第二预设阈值是指写负载占比的阈值,可以根据实际情况设置,第二预设阈值可以与第一预设阈值相同,也可以不同。第三预设阈值和第四预设阈值可以是针对脏数据占比设置的两个阈值,例如第三预设阈值可以为60%,第四预设阈值可以为50%。
51.本实施例中,当第一设备的设定使用率大于使用率阈值时,可以根据读写数据中写负载占比、脏数据占比确定目标模式,当读写数据中写负载占比大于第二预设阈值,并且脏数据占比大于第三预设阈值,则可以确定目标模式为写模式;当读写数据中写负载占比和读负载占比相同,均为50%,并且脏数据占比大于第四预设阈值,则可以确定目标模式为均衡模式。
52.步骤103、基于目标模式执行数据处理。
53.其中,数据处理可以包括上述数据读取操作和数据写入操作。
54.本公开实施例中,缓存设备获取目标模式之后,可以根据目标模式对应的不同类型的存储桶的分配比例,执行数据处理。
55.可选的,当目标模式为空闲模式,则将待写入数据写入第一设备中的第一存储桶,并且读取第一设备和第二设备中的数据。当目标设备为空闲模式,由于读写数据量较低,对缓存设备中不同类型的存储桶的分配比例不作限制,针对待写入数据可以直接写入第一设备中的第一存储桶中;如果第一设备中的存储桶中包括数据可以直接执行数据读取操作,否则可以从第二设备中读取数据,并将读取的数据写入第一设备中的空闲存储桶中,该空闲存储桶的类型变化为第三存储桶。
56.可选的,当目标模式为读模式,则将第三存储桶的占比设置为大于第一占比阈值;如果第一设备中存在可用的第一存储桶,则将待写入数据写入可用的第一存储桶;否则,对第一设备中被占用的第三存储桶进行回收之后,写入待写入数据。
57.当目标模式为读模式,由于数据写入操作较少,则可以将第三存储桶的占比设置为大于第一占比阈值,第一存储桶和第二存储桶的占比之和可以小于或等于第一占比阈值,设置的较小。第一占比阈值可以是一个较大的占比值,例如第一占比阈值可以为80%。在读模式下,如果接收到数据写入请求,则可以将待写入数据写入第一设备的可用的第一存储桶中;如果第一设备中不存在可用的第一存储桶,则可以对第一设备中被占用的第三存储桶采用回收算法进行回收,之后可以针对回收的空闲存储桶写入待写入数据,该空闲存储桶的类型变换为第一存储桶。上述回收算法可以根据实际情况设置,例如回收算法可以采用最近最少使用(least recently used,lru)算法。
58.可选的,当目标模式为写模式,则将第一存储桶的占比设置为大于第二占比阈值;如果第一存储桶的占比大于第三占比阈值,则将第一存储桶中的数据回写至第二设备之后,写入待写入数据,其中,第三占比阈值大于述第二占比阈值。第二占比阈值和第三占比阈值均是针对第一存储桶的占比值,不同的是第三占比阈值大于第二占比阈值,具体的值可以根据实际情况设置。
59.当目标模式为写模式,由于数据读取操作较少,则可以将第一存储桶的占比设置为大于第二占比阈值,并根据第一设备中的可用的存储桶的数量来控制写入速率。在写模式下,随着数据写入操作的执行,第一存储桶的数量会越来越多,可以将第一存储桶的占比与第三占比阈值进行比对,如果第一存储桶的占比大于第三占比阈值,则可以将部分第一存储桶的数据回写至第二设备,回写完成之后则该第一存储桶的类型调整为第三存储桶,之后可以回收该第三存储桶,也即将该第三存储桶的类型调整为空闲存储桶,将待写入数据写入该空闲存储桶,该空闲存储桶的类型变换为第一存储桶。
60.可选的,当目标模式为均衡模式,则将第一设备中第一存储桶的数量设置大于第三存储桶的数量。
61.当目标模式为均衡模式,由于数据读取操作和数据写入操作的比例接近,基于应用角度,数据写入操作通常是需要先读取并修改数据之后再写入新数据,因此,在均衡模式下可以将第一设备中的存储桶优先分片为第一存储桶,也即第一存储桶的数量设置大于第三存储桶的数量,以优先满足数据写入操作。随着数据写入操作的执行,第一存储桶的数量会越来越多,可以将部分第一存储桶的数据回写至第二设备,回写完成之后则该第一存储
桶的类型调整为第三存储桶,之后可以回收该第三存储桶,也即将该第三存储桶的类型调整为空闲存储桶,将待写入数据写入该空闲存储桶,该空闲存储桶的类型变换为第一存储桶,如此循环。上述存储桶的分配比例的动态调整,可以加快了数据写入性能,抑制了读取性能,进而从另一个层面控制了应用程序的数据写入操作的数量,避免第一设备中的第一存储桶耗而对应程序正常运行的影响。
62.上述方案中,缓存设备的第一设备和第二设备中通过设置三种不同类型的存储桶用于执行数据处理,在不同模式下动态调整不同类型的存储桶的分配比例,可以使缓存设备达到最优的数据读写性能,增强了缓存设备的可用性。
63.本公开实施例中,缓存设备可以采用b+树索引记录存储桶在第一设备和第二设备的位置,b+树节点中记录的结构为ckey。
64.由于缓存设备的存储容量较大,划分的存储桶的数量较多,本实施例中可以采用b+树管理存储桶,采用b+树索引记录存储桶在第一设备和第二设备的位置,也即映射关系,每个b+树节点对应一个存储桶,记录的结构为ckey。
65.通过上述ckey可以同时管理缓存设备中第一设备和第二设备的存储桶,避免针对两个设备均需要建立索引,大大增加了搜索性能。并且通过ckey可以在第二设备满的时候使用第一设备,也即将第二设备的存储桶全部设置为第二存储桶,第一设备的存储桶全部设备为第一存储桶,避免磁盘满影响应用的正常运行。
66.本公开实施例提供的缓存设备的数据处理方案,获取目标数据,目标数据包括读写数据、设备使用率和脏数据占比;根据目标数据确定缓存设备当前对应的目标模式;基于目标模式执行数据处理;其中,缓存设备包括基于固态硬盘的第一设备和基于机械硬盘的第二设备,第一设备和第二设备包括不同类型的存储桶,目标模式包括多个模式,不同模式下不同类型的存储桶的分配比例不同。采用上述技术方案,由于对包括固态硬盘和机械硬盘的缓存设备进行不同类型的存储桶的划分,根据缓存设备的读写、使用等数据可以实时确定当前的模式,基于当前模式下的不同类型的存储桶的分配比例执行数据读写,实现了对缓存设备处理数据的模式状态的动态调整,极大提升了缓存设备的性能,避免了相关技术中对资源的消耗和无法应对复杂的负载情况的缺陷,增强了缓存设备的可用性。
67.图4为本公开实施例提供的另一种缓存设备的数据处理方法的流程示意图,本实施例在上述实施例的基础上,进一步优化了上述缓存设备的数据处理方法。如图4所示,该方法包括:
68.步骤201、获取目标数据。
69.其中,目标数据包括读写数据、设备使用率和脏数据占比。
70.步骤202、根据目标数据确定缓存设备当前对应的目标模式。
71.其中,缓存设备包括基于固态硬盘的第一设备和基于机械硬盘的第二设备,第一设备和第二设备包括不同类型的存储桶,目标模式包括多个模式,不同模式下不同类型的存储桶的分配比例不同。可选的,不同类型的存储桶包括第一存储桶、第二存储桶和第三存储桶,第一存储桶位于第一设备中,第二存储桶位于第二设备中,第三存储桶位于第一设备和第二设备中,存储桶的类型支持动态调整。
72.目标模式可以包括空闲模式、读模式、写模式和均衡模式。
73.可选的,根据目标数据确定缓存设备当前对应的目标模式,可以包括:如果目标数
据中读写数据的读写数据量小于读写阈值,则确定目标模式为空闲模式;否则,将第一设备的设备使用率与使用率阈值的进行比对;如果第一设备的设备使用率大于使用率阈值,并且读写数据中读负载占比大于第一预设阈值,则确定目标模式为读模式。
74.可选的,根据目标数据确定缓存设备当前对应的目标模式,可以包括:如果第一设备的设备使用率大于使用率阈值,读写数据中写负载占比大于第二预设阈值,并且脏数据占比大于第三预设阈值,则确定目标模式为写模式。
75.可选的,根据目标数据确定缓存设备当前对应的目标模式,可以包括:如果第一设备的设备使用率大于使用率阈值,读写数据中写负载占比和读负载占比相同,并且脏数据占比大于第四预设阈值,则确定目标模式为均衡模式。
76.步骤202之后,可以执行步骤203、步骤204

步骤205、步骤206

步骤207或步骤208,具体可以根据实际情况确定。
77.步骤203、当目标模式为空闲模式,则将待写入数据写入第一设备中的第一存储桶,并且读取第一设备和第二设备中的数据。
78.步骤204、当目标模式为读模式,则将第三存储桶的占比设置为大于第一占比阈值。
79.步骤205、如果第一设备中存在可用的第一存储桶,则将待写入数据写入可用的第一存储桶;否则,对第一设备中被占用的第三存储桶进行回收之后,写入待写入数据。
80.步骤206、当目标模式为写模式,则将第一存储桶的占比设置为大于第二占比阈值。
81.步骤207、如果第一存储桶的占比大于第三占比阈值,则将第一存储桶中的数据回写至第二设备之后,写入待写入数据,其中,第三占比阈值大于第二占比阈值。
82.步骤208、当目标模式为均衡模式,则将第一设备中第一存储桶的数量设置大于第三存储桶的数量。
83.示例性的,图5为本公开实施例提供的一种模式转换的示意图。如图5所示,缓存设备的目标模式可以根据预设时间内的负载情况和设备使用等数据来确定以及动态调整,图中展示了空闲模式分别与读模式、写模式、均衡模式之间可以实现动态切换,并基于切换后的模式进行数据读取操作和数据写入操作。可以理解的是读模式、写模式和均衡模式之间也可以根据实际情况实现动态切换(图中未示出)。
84.本公开实施例中,缓存设备可以采用b+树索引记录存储桶在第一设备和第二设备的位置,b+树节点中记录的结构为ckey。
85.示例性的,图6为本公开实施例提供的一种b+树的示意图,采用b+树索引记录存储桶在第一设备和第二设备的位置,也即映射关系,每个b+树节点都是已排好序的一组ckey,对应一个存储桶,记录的结构为ckey。
86.示例性的,图7为本公开实施例提供的一种节点的示意图。如图7所示,b+树节点的记录ckey可以包括逻辑区块地址(logical block address,lba)、第一设备标识、第二设备标识、第一设备偏移、第二设备偏移、世代号和类型标识。其中,lba用于表示存储桶在缓存设备的编号,表示逻辑位置,b+树也基于此进行对节点内的ckey排序,并且以该节点最大的lba作为节点的值,用于在b+树中排序。第一设备标识可以采用cid表征,用于表示第一设备的标识,本方案中第一设备的数量可以为多个。第二设备标识可以采用bid表征,用于表示
第二设备的标识,本方案中第二设备的数量可以为多个。第一设备偏移可以采用coffset表征,用于表示缓存设备的存储桶对应第一设备的存储桶编号,结合cid即可以找到具体的位置。第二设备偏移可以采用boffset表征,用于表示缓存设备的存储桶对应第二设备的存储桶编号,结合bid即可以找到具体的位置。世代号可以采用gen表征,用于表示ckey的世代号,由于b+树不仅在内存中存在,还需要持久化到磁盘中,调整磁盘中的b+树对性能损耗是巨大的,世代号用于基于日志修改磁盘的b+树。类型标识可以采用type表征,用于表示存储桶的类型,具体可以包括上述第一存储桶、第二存储桶和第三存储桶。
87.通过上述ckey可以同时管理缓存设备中第一设备和第二设备的存储桶,避免针对两个设备均需要建立索引,大大增加了搜索性能。并且通过ckey可以在第二设备满的时候使用第一设备,也即将第二设备的存储桶全部设置为第二存储桶,第一设备的存储桶全部设备为第一存储桶,避免磁盘满影响应用的正常运行。
88.本方案中,可以将缓存设备中的基于固态硬盘的第一设备和基于机械硬盘的第二设备统一划分固定大小的存储桶,采用一颗b+树管理两种设备的存储桶,并针对实时的读写情况和设备使用情况,动态调整ckey中的值,使用不同的负载模式算法,采用动态灵活的算法解决相关技术中读写流量控制不佳导致缓存设备整体性能低下的问题,可以达到性能最大化,避免传统缓存设备容易满以及无法增大整体存储空间的问题,增加了可用性。
89.本公开实施例提供的缓存设备的数据处理方案,获取目标数据,目标数据包括读写数据、设备使用率和脏数据占比;根据目标数据确定缓存设备当前对应的目标模式;基于目标模式执行数据处理;其中,缓存设备包括基于固态硬盘的第一设备和基于机械硬盘的第二设备,第一设备和第二设备包括不同类型的存储桶,目标模式包括多个模式,不同模式下不同类型的存储桶的分配比例不同。采用上述技术方案,由于对包括固态硬盘和机械硬盘的缓存设备进行不同类型的存储桶的划分,根据缓存设备的读写、使用等数据可以实时确定当前的模式,基于当前模式下的不同类型的存储桶的分配比例执行数据读写,实现了对缓存设备处理数据的模式状态的动态调整,极大提升了缓存设备的性能,避免了相关技术中对资源的消耗和无法应对复杂的负载情况的缺陷,增强了缓存设备的可用性。
90.图8为本公开实施例提供的一种缓存设备的数据处理装置的结构示意图,该装置可由软件和/或硬件实现,一般可集成在电子设备中。
91.如图8所示,该装置包括:
92.数据获取模块301,用于获取目标数据,所述目标数据包括读写数据、设备使用率和脏数据占比;
93.模式确定模块302,用于根据所述目标数据确定缓存设备当前对应的目标模式;
94.数据处理模块303,用于基于所述目标模式执行数据处理;
95.其中,所述缓存设备包括基于固态硬盘的第一设备和基于机械硬盘的第二设备,所述第一设备和所述第二设备包括不同类型的存储桶,所述目标模式包括多个模式,不同模式下所述不同类型的存储桶的分配比例不同。
96.可选的,所述目标模式包括空闲模式、读模式、写模式和均衡模式。
97.可选的,所述模式确定模块302具体用于:
98.如果所述目标数据中所述读写数据的读写数据量小于读写阈值,则确定所述目标模式为所述空闲模式;否则,将所述第一设备的设备使用率与使用率阈值的进行比对;
99.如果所述第一设备的设备使用率大于使用率阈值,并且所述读写数据中读负载占比大于第一预设阈值,则确定所述目标模式为所述读模式。
100.可选的,所述模式确定模块302具体用于:
101.如果所述第一设备的设备使用率大于使用率阈值,所述读写数据中写负载占比大于第二预设阈值,并且所述脏数据占比大于第三预设阈值,则确定所述目标模式为所述写模式。
102.可选的,所述模式确定模块302具体用于:
103.如果所述第一设备的设备使用率大于使用率阈值,所述读写数据中写负载占比和读负载占比相同,并且所述脏数据占比大于第四预设阈值,则确定所述目标模式为所述均衡模式。
104.可选的,所述不同类型的存储桶包括第一存储桶、第二存储桶和第三存储桶,所述第一存储桶位于所述第一设备中,所述第二存储桶位于所述第二设备中,所述第三存储桶位于所述第一设备和所述第二设备中,所述存储桶的类型支持动态调整。
105.可选的,所述数据处理模块303具体用于:
106.当所述目标模式为所述空闲模式,则将待写入数据写入所述第一设备中的第一存储桶,并且读取所述第一设备和所述第二设备中的数据。
107.可选的,所述数据处理模块303具体用于:
108.当所述目标模式为所述读模式,则将所述第三存储桶的占比设置为大于第一占比阈值;
109.如果所述第一设备中存在可用的第一存储桶,则将待写入数据写入所述可用的第一存储桶;否则,对所述第一设备中被占用的第三存储桶进行回收之后,写入所述待写入数据。
110.可选的,所述数据处理模块303具体用于:
111.当所述目标模式为所述写模式,则将所述第一存储桶的占比设置为大于第二占比阈值;
112.如果所述第一存储桶的占比大于第三占比阈值,则将所述第一存储桶中的数据回写至所述第二设备之后,写入待写入数据,其中,所述第三占比阈值大于所述第二占比阈值。
113.可选的,所述数据处理模块303具体用于:
114.当所述目标模式为所述均衡模式,则将所述第一设备中所述第一存储桶的数量设置大于所述第三存储桶的数量。
115.可选的,所述缓存设备采用b+树索引记录存储桶在所述第一设备和所述第二设备的位置,所述b+树节点中记录的结构为ckey。
116.本公开实施例所提供的缓存设备的数据处理装置可执行本公开任意实施例所提供的缓存设备的数据处理方法,具备执行方法相应的功能模块和有益效果。
117.图9为本公开实施例提供的一种电子设备的结构示意图。如图9所示,电子设备400包括一个或多个处理器401和存储器402。
118.处理器401可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备400中的其他组件以执行期望的功能。
119.存储器402可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器401可以运行所述程序指令,以实现上文所述的本公开的实施例的缓存设备的数据处理方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
120.在一个示例中,电子设备400还可以包括:输入装置403和输出装置404,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
121.此外,该输入装置403还可以包括例如键盘、鼠标等等。
122.该输出装置404可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置404可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
123.当然,为了简化,图9中仅示出了该电子设备400中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备400还可以包括任何其他适当的组件。
124.除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的缓存设备的数据处理方法。
125.所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
126.此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的缓存设备的数据处理方法。
127.所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
128.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设
备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
129.以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1