数据缓存处理方法、装置以及存储介质
阅读说明:本技术 数据缓存处理方法、装置以及存储介质 (Data caching processing method and device and storage medium ) 是由 胡军军 李嫚 王保中 胡颖茂 丘晖 于 2019-11-28 设计创作,主要内容包括:本公开提供了一种数据缓存处理方法、装置以及存储介质,其中的方法包括:在文件系统中,基于高速存储装置设置一级缓存,基于低速存储装置设置二级缓存;当一级缓存接收到客户端发送的数据请求时,控制一级缓存和/或二级缓存进行与数据请求相对应的操作。本公开的方法、装置以及存储介质,构建分层架构,基于高速存储装置设置一级缓存,基于低速存储装置设置二级缓存;能充分利用高速存储装置的高IOPS、低时延等特点,提升数据读写性能,提高存储效能,也能充分利用低速存储装置,降低实施成本。(The present disclosure provides a data caching processing method, apparatus and storage medium, wherein the method comprises: in the file system, a first-level cache is set based on a high-speed storage device, and a second-level cache is set based on a low-speed storage device; and when the first-level cache receives a data request sent by the client, controlling the first-level cache and/or the second-level cache to perform operation corresponding to the data request. The method, the device and the storage medium of the present disclosure construct a layered architecture, set a first level cache based on a high-speed storage device, and set a second level cache based on a low-speed storage device; the characteristics of high IOPS, low time delay and the like of the high-speed storage device can be fully utilized, the data read-write performance is improved, the storage efficiency is improved, the low-speed storage device can be fully utilized, and the implementation cost is reduced.)
技术领域
本发明涉及通信技术领域,尤其涉及一种数据缓存处理方法、装置以及存储介质。
背景技术
目前,文件系统通过本地缓存与数据分块技术来提高数据的读写性能,文件系统可以为FUSE(Filesystem in Userspace,用户空间文件系统)等。由于FUSE的写操作为单线程,如果采用机械硬盘做缓存,对偏向于小块(数据)写操作的应用来说,机械硬盘I/O操作耗时较长,IOPS较小,磁盘利用率较低;对偏向于大块(数据)写操作的应用来说,机械硬盘自身的读写速度容易成为系统性能瓶颈;如果全部采用高速磁盘阵列或SSD等高速设备做缓存,则价格昂贵,成本过高。
发明内容
有鉴于此,本发明要解决的一个技术问题是提供一种数据缓存处理方法、装置以及存储介质。
根据本公开的一个方面,提供一种数据缓存处理方法,包括:在文件系统中,基于高速存储装置设置一级缓存,基于低速存储装置设置二级缓存;当所述一级缓存接收到客户端发送的数据请求时,控制所述一级缓存和/或所述二级缓存进行与所述数据请求相对应的操作。
可选地,所述数据请求包括:读取数据请求;所述控制所述一级缓存和/或所述二级缓存进行与所述数据请求相对应的操作包括:判断所述一级缓存中是否缓存有与所述读取数据请求相对应的第一数据;如果是,则从所述一级缓存中读取所述第一数据并发送给所述客户端;如果否,则判断所述第一数据是否缓存在所述二级缓存,如果是,则从所述二级缓存中读取所述第一数据并发送给所述客户端,如果否,则从数据存储系统中读取所述第一数据并发送给所述客户端。
可选地,所述数据请求包括:写数据请求;所述控制所述一级缓存和/或所述二级缓存进行与所述数据请求相对应的操作包括:获取预设的数据分块大小,基于所述数据分块大小将与所述写数据请求相对应的第二数据进行分块处理,生成数据块和/或剩余数据块;其中,所述数据块的大小等于所述数据分块大小,所述剩余数据块的大小小于所述数据分块大小;将所述数据块存储在数据存储系统,将所述剩余数据块缓存在所述一级缓存。
可选地,所述将所述剩余数据块缓存在所述一级缓存包括:生成日志文件,将所述剩余数据块存储在所述日志文件中;将所述日志文件缓存在所述一级缓存中。
可选地,如果确定所述一级缓存的剩余容量小于预设的第一容量阈值,则获取所述一级缓存中的全部日志文件;获取所述全部日志文件中的剩余数据块并进行合并处理,生成第三数据;将所述第三数据缓存在所述二级缓存。
可选地,如果确定所述二级缓存的剩余容量小于预设的第二容量阈值,则获取所述二级缓存中的全部第三数据;将所述全部第三数据存储在所述数据存储系统。
可选地,所述文件系统包括:基于FUSE框架的文件系统;所述高速存储装置包括:磁盘阵列、SSD;所述低速存储装置包括:机械硬盘。
根据本公开的另一方面,提供一种数据缓存处理装置,包括:缓存设置模块,用于在文件系统中,基于高速存储装置设置一级缓存,基于低速存储装置设置二级缓存;数据处理模块,用于当所述一级缓存接收到客户端发送的数据请求时,控制所述一级缓存和/或所述二级缓存进行与所述数据请求相对应的操作。
可选地,所述数据请求包括:读取数据请求;所述数据处理模块,包括:读取数据单元,用于判断所述一级缓存中是否缓存有与所述读取数据请求相对应的第一数据;如果是,则从所述一级缓存中读取所述第一数据并发送给所述客户端;如果否,则判断所述第一数据是否缓存在所述二级缓存,如果是,则从所述二级缓存中读取所述第一数据并发送给所述客户端,如果否,则从数据存储系统中读取所述第一数据并发送给所述客户端。
可选地,所述数据请求包括:写数据请求;所述数据处理模块,包括:写数据单元,用于获取预设的数据分块大小,基于所述数据分块大小将与所述写数据请求相对应的第二数据进行分块处理,生成数据块和/或剩余数据块;其中,所述数据块的大小等于所述数据分块大小,所述剩余数据块的大小小于所述数据分块大小;将所述数据块存储在数据存储系统,将所述剩余数据块缓存在所述一级缓存。
可选地,所述写数据单元,还用于生成日志文件,将所述剩余数据块存储在所述日志文件中;将所述日志文件缓存在所述一级缓存中。
可选地,所述写数据单元,还用于如果确定所述一级缓存的剩余容量小于预设的第一容量阈值,则获取所述一级缓存中的全部日志文件;获取所述全部日志文件中的剩余数据块并进行合并处理,生成第三数据;将所述第三数据缓存在所述二级缓存。
可选地,所述写数据单元,还用于如果确定所述二级缓存的剩余容量小于预设的第二容量阈值,则获取所述二级缓存中的全部第三数据;将所述全部第三数据存储在所述数据存储系统。
可选地,所述文件系统包括:基于FUSE框架的文件系统;所述高速存储装置包括:磁盘阵列、SSD;所述低速存储装置包括:机械硬盘。
根据本公开的另一方面,提供一种数据缓存处理装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如上所述的方法。
根据本公开的再一方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行如上所述的方法。
本公开的数据缓存处理方法、装置以及存储介质,构建分层架构,基于高速存储装置设置一级缓存,基于低速存储装置设置二级缓存;能充分利用高速存储装置的高IOPS、低时延等特点,提升数据读写性能,提高存储效能,也能充分利用低速存储装置,降低实施成本。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本公开的数据缓存处理方法的一个实施例的流程示意图;
图2为根据本公开的数据缓存处理方法的一个实施例中的进行读操作的流程示意图;
图3为根据本公开的数据缓存处理方法的一个实施例中的进行写操作的流程示意图;
图4为本公开的数据缓存处理方法的一个实施例中的架构示意图;
图5为根据本公开的数据缓存处理装置的一个实施例的模块示意图;
图6为根据本公开的数据缓存处理装置的一个实施例中的数据处理模块的模块示意图;
图7为根据本公开的数据缓存处理装置的另一个实施例的模块示意图。
具体实施方式
下面参照附图对本公开进行更全面的描述,其中说明本公开的示例性实施例。下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
下文中的“第一”、“第二”等仅用于描述上相区别,并没有其他特殊的含义。
图1为根据本公开的数据缓存处理方法的一个实施例的流程示意图,如图1所示:
步骤101,在文件系统中,基于高速存储装置设置一级缓存,基于低速存储装置设置二级缓存。文件系统包括基于FUSE框架的文件系统等。高速存储装置包括:磁盘阵列、SSD等;低速存储装置包括:机械硬盘等。
步骤102,当一级缓存接收到客户端发送的数据请求时,控制一级缓存和/或二级缓存进行与数据请求相对应的操作。
上述实施例中的数据缓存处理方法,设置两级缓存,基于高速存储装置设置一级缓存,基于低速存储装置设置二级缓存;客户端的读写操作等只与一级缓存交互,一级缓存与二级缓存之间实现读写操作隔离。
通过分层架构,使用少量的高速存储装置(磁盘阵列或SSD等)做一级缓存,使用低速存储装置(机械硬盘)做二级缓存;该分层架构既能充分利用高速存储装置的高IOPS(Input/Output Operations Per Second)、低时延等特点,提升数据读写性能,提高存储效能,也能充分利用低速存储装置,降低实施成本。
图2为根据本公开的数据缓存处理方法的一个实施例中的进行读操作的流程示意图,数据请求包括读取数据请求,如图2所示:
步骤201,判断一级缓存中是否缓存有与读取数据请求相对应的第一数据。
步骤202,如果一级缓存中缓存有第一数据,则从一级缓存中读取第一数据并发送给客户端。
步骤203,如果一级缓存中没有缓存有第一数据,则判断第一数据是否缓存在二级缓存,如果第一数据缓存在二级缓存,则从二级缓存中读取第一数据并发送给客户端,如果第一数据没有缓存在二级缓存,则从数据存储系统中读取第一数据并发送给客户端。
在客户端读取数据时,先从一级缓存读取,如果一级缓存中有与读取数据请求相对应的第一数据,则直接将第一数据返回客户端,如果一级缓存没有缓存第一数据,则从二级缓存读取第一数据;如果二级缓存没有缓存第一数据,则从数据存储系统中读取第一数据;第一数据可以为多种数据,例如为用户信息、业务信息等;数据存储系统包括:源存储介质、云存储系统等。
图3为根据本公开的数据缓存处理方法的一个实施例中的进行写操作的流程示意图,数据请求包括写数据请求,如图3所示:
步骤301,获取预设的数据分块大小,基于数据分块大小将与写数据请求相对应的第二数据进行分块处理,生成数据块和/或剩余数据块;其中,数据块的大小等于数据分块大小,剩余数据块的大小小于数据分块大小。
例如,获取预设的数据分块大小为1K,基于1K将与写数据请求相对应的第二数据进行分块处理,生成数据块和/或剩余数据块,可以采用现有的多种分块处理方法。数据块的大小等于1K,剩余数据块的大小小于1K。
步骤302,将数据块存储在数据存储系统,将剩余数据块缓存在一级缓存。
将剩余数据块缓存在一级缓存可以采用多种方法。例如,生成日志文件,将剩余数据块存储在日志文件中,将日志文件缓存在一级缓存中。
在一个实施例中,如果确定一级缓存的剩余容量小于预设的第一容量阈值,则获取一级缓存中的全部日志文件;获取全部日志文件中的剩余数据块并进行合并处理,生成第三数据,将第三数据缓存在二级缓存。
第一容量阈值可以为10%等,如果确定一级缓存的剩余容量小于10%,则获取一级缓存中的全部日志文件。获取全部日志文件中的剩余数据块并进行合并处理可以采用多种方法,例如,每次对10个日志文件中的剩余数据块进行合并处理,将生成的数据缓存在二级缓存。
在一个实施例中,如果确定二级缓存的剩余容量小于预设的第二容量阈值,则获取二级缓存中的全部第三数据,将全部第三数据存储在数据存储系统。例如,第二容量阈值可以为20%等,如果确定二级缓存的剩余容量小于20%,则获取二级缓存中的全部第三数据,将全部第三数据存储在数据存储系统。
如图4所示,基于FUSE(架构)创建自定义文件系统,文件系统进程启动时,通过配置参数实现高速存储设备(磁盘阵列或SSD等)做一级缓存,低速存储设备(机械硬盘)做二级缓存。客户端从文件系统读取数据时,先从一级缓存读取,如果存在则直接返回数据,如果不存在,则从二级缓存读取,如果数据不在二级缓存中,则从数据存储系统中读取数据。
客户端向文件系统中写入数据时,先基于数据分块大小拆分数据,对于长度小于数据分块大小且不在一级缓存中的数据,记录在操作日志中,将操作日志写入一级缓存即返回。操作日志为脏数据,一级缓存回写线程根据脏数据状态,通过操作日志合并写操作,多线程并发写入数据到二级缓存,数据写入二级缓存即返回;二级缓存回写线程判断脏数据超时后,多线程并发将数据存储到源存储介质。
在一个实施例中,如图5所示,本公开提供一种数据缓存处理装置50,包括:缓存设置模块51和数据处理模块52。缓存设置模块51在文件系统中,基于高速存储装置设置一级缓存,基于低速存储装置设置二级缓存。当一级缓存接收到客户端发送的数据请求时,数据处理模块52控制一级缓存和/或二级缓存进行与数据请求相对应的操作。
如图6所示,数据处理模块52包括:读取数据单元521和写数据单元522。数据请求包括读取数据请求,读取数据单元521判断一级缓存中是否缓存有与读取数据请求相对应的第一数据;如果是,则读取数据单元521从一级缓存中读取第一数据并发送给客户端;如果否,则读取数据单元521判断第一数据是否缓存在二级缓存,如果是,则读取数据单元521从二级缓存中读取第一数据并发送给客户端,如果否,则读取数据单元521从数据存储系统中读取第一数据并发送给客户端。
数据请求包括写数据请求,写数据单元522获取预设的数据分块大小,基于数据分块大小将与写数据请求相对应的第二数据进行分块处理,生成数据块和/或剩余数据块;其中,数据块的大小等于数据分块大小,剩余数据块的大小小于数据分块大小。写数据单元522将数据块存储在数据存储系统,将剩余数据块缓存在一级缓存。
在一个实施例中,写数据单元522生成日志文件,将剩余数据块存储在日志文件中,将日志文件缓存在一级缓存中。写数据单元522如果确定一级缓存的剩余容量小于预设的第一容量阈值,则写数据单元522获取一级缓存中的全部日志文件。写数据单元522获取全部日志文件中的剩余数据块并进行合并处理,生成第三数据;写数据单元522将第三数据缓存在二级缓存。
写数据单元522如果确定二级缓存的剩余容量小于预设的第二容量阈值,则获取二级缓存中的全部第三数据,将全部第三数据存储在数据存储系统。
图7为根据本公开的数据缓存处理装置的另一个实施例的模块示意图。如图7所示,该装置可包括存储器71、处理器72、通信接口73以及总线74。存储器71用于存储指令,处理器72耦合到存储器71,处理器72被配置为基于存储器71存储的指令执行实现上述的数据缓存处理方法。
存储器71可以为高速RAM存储器、非易失性存储器(non-volatile memory)等,存储器71也可以是存储器阵列。存储器71还可能被分块,并且块可按一定的规则组合成虚拟卷。处理器72可以为中央处理器CPU,或专用集成电路ASIC(Application SpecificIntegrated Circuit),或者是被配置成实施本公开的数据缓存处理方法的一个或多个集成电路。
在一个实施例中,本公开提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,指令被处理器执行如上任一实施例中的方法。
上述实施例中提供的数据缓存处理方法、装置以及存储介质,构建分层架构,基于高速存储装置设置一级缓存,基于低速存储装置设置二级缓存;客户端只与一级缓存交互,充分发挥高速存储设备读写性能高的特点;通过操作日志合并一级缓存中缓存的脏数据,减少I/O复杂度;能充分利用高速存储装置的高IOPS、低时延等特点,提升数据读写性能,提高存储效能,也能充分利用低速存储装置,降低实施成本。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
- 上一篇:一种医用注射器针头装配设备
- 下一篇:一种加速硬件页表遍历的方法及装置