一种基于文件为客户端分配缓存配额的方法及其装置与流程

文档序号:12463698阅读:238来源:国知局
一种基于文件为客户端分配缓存配额的方法及其装置与流程

本发明涉及分配缓存配额领域,尤其涉及一种基于文件为客户端分配缓存配额的方法及其装置。



背景技术:

从事分布式存储产品的客户端软件开发时,往往会用到缓存的概念。它的本质是在计算机中申请一块内存空间,用于暂存用户写入或读取的数据,这样既可以提高写入性能,又能在用户对最近访问过的数据再次发起请求时迅速响应,降低延迟;但是缓存的大小是有限制的,目前的缓存管理机制将所有文件占用的缓存混合在一起进行管理,不具体细分每路文件分别占用的缓存大小,这样会存在以下问题:

1.极限读写时,文件读写速度不同导致占用的缓存空间不均衡,反过来又制约了文件的读写速度,快的更快,慢的更慢;

2.各路文件使用的缓存大小具有随机性,无法满足恒定码流场景下的读写要求;

3.当缓存空间用完时,新加入的文件必须等缓存释放后才能开始读写,导致文件读或写时出现卡顿甚至阻塞的现象,影响读写效果。



技术实现要素:

本发明针对目前需求以及现有技术发展的不足之处,提供一种基于文件为客户端分配缓存配额的方法及其装置,以文件为单位控制文件占用的缓存大小,使得每路文件可以均匀的读写;同时引入预留缓存空间,允许新加入的文件快速达到恒定读写的速度。

为了实现上述目的,本发明采用以下的技术方案:

一种基于文件为客户端分配缓存配额的方法,包括以下步骤:

在内存空间中划分出可分配缓存空间和预留缓存空间;

为请求的每路文件均匀分配缓存配额;

判断请求的每路文件可占用的缓存配额是否达到上限,若是,则释放长时间未被客户端访问过的该路文件的缓存;若否,则继续对该路文件进行缓存;

为新文件分配预留缓存空间。

优选地,在内存空间中划分出可分配缓存空间和预留缓存空间之前,包括:向服务器申请内存空间。

优选地,在向服务器申请内存空间之后,包括:预设阈值。

优选地,在为请求的文件均匀分配缓存配额之前,包括:预设时间戳;接收客户端的读或写请求。

优选地,在接收客户端的读或写请求之后,包括:查看客户端访问过的每路文件索引节点,判断每路文件当前时间和最后一次访问时间间隔是否大于时间戳,若是,即释放出该路文件所占用的缓存,若否,则不释放。

优选地,为请求的每路文件均匀分配缓存配额,包括:统计当前可分配的缓存空间的大小,查看客户端访问过的每路文件索引节点,统计出每路文件可占用的缓存配额的上限,为请求的每路文件均匀分配可分配缓存空间内的缓存配额。

优选地,释放长时间未被客户端访问过的该路文件的缓存,包括:释放当前时间和最后一次访问时间间隔大于时间戳的该路文件的缓存。

优选地,为新文件分配预留缓存空间,包括:当可分配的缓存空间已用完且有新文件发起读或写请求时,从预留缓存空间中为新文件分配缓存配额,并将新文件的缓存存放至缓存队列中,同时,从其他路文件中释放出未被客户端访问的缓存作为新的预留缓存空间。

一种基于文件为客户端分配缓存配额的装置,包括:

划分模块,用于在内存空间中划分出可分配缓存空间和预留缓存空间;

第一分配模块,用于为请求的每路文件均匀分配缓存配额;

第一判断模块,用于判断请求的每路文件可占用的缓存配额是否达到上限;

第二分配模块,用于为新文件分配预留缓存空间。

优选地,还包括:申请模块,用于向服务器申请内存空间;

优选地,还包括:预设模块,用于预设阈值和时间戳;

优选地,还包括:接收模块,用于接收客户端的读或写请求;

优选地,还包括:第二判断模块,用于判断每路文件当前时间和最后一次访问时间间隔是否大于时间戳。

本发明的有益效果:

1.本发明通过申请内存空间,并在内存空间中划分出可分配缓存空间和预留缓存空间,将当前缓存均匀分配给可分配缓存空间内的各路文件,使所有文件都能以恒定速度进行读写,互不干扰,可以很好的满足恒定码流场景下的读写,不会制约文件的读写速度;同时允许多个客户端并发访问同一个缓存空间时,以文件为单位控制各路文件占用的缓存大小,使得每路文件可以均匀的读写;通过时间戳的配合,初步释放出该文件所占用的缓存,进行作业,同时加入预留缓存空间,当可分配的缓存空间已用完且有新文件发起读或写请求时,从预留缓存空间内为新文件分配缓存配额,使新加入的文件快速达到恒定读写速度的目的;

2.新加入的文件可以申请到预留缓存空间,同时,从其他路文件中释放出未被客户端访问的缓存作为新的预留缓存空间,从而不会出现卡顿或阻塞的情况,提高效率。

附图说明

图1为本发明一种基于文件为客户端分配缓存配额的方法的流程示意图之一。

图2为本发明一种基于文件为客户端分配缓存配额的方法的结构示意图之二。

图3为本发明一种基于文件为客户端分配缓存配额的装置的流程示意图之一。

图4为本发明一种基于文件为客户端分配缓存配额的装置的结构示意图之二。

具体实施方式

为了便于理解,对本发明中出现的部分名词作以下解释说明:

LRU链表,LRU是Least Recently Used 的缩写,即最近最少使用,LRU链表把最近最少使用的数据移除,让给最新读取的数据。

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:

实施例一:如图1所示,本发明的一种基于文件为客户端分配缓存配额的方法,包括以下步骤:

步骤S101,向服务器申请内存空间。

步骤S102,预设阈值。

步骤S103,在内存空间中划分出可分配缓存空间和预留缓存空间,其中可分配缓存空间的大小为申请的内存空间的缓存大小乘以预设的阈值;预留缓存空间的大小为申请的内存空间的大小减去可分配缓存空间的大小。

步骤S104,预设时间戳;接收客户端发出的读或写请求,作为一种可实施的方式,本实施例中允许三个客户端并发访问内存空间。

步骤S105,查看客户端访问过的三路文件索引节点,判断每路文件当前时间和最后一次访问时间间隔是否大于时间戳;若是,即释放出该路文件所占用的缓存,若否,则不释放。

步骤S106,遍历当前缓存的各路文件,确定文件没有正在等待读或写的请求,统计当前可分配的缓存空间的大小,查看客户端访问过的三路文件索引节点,统计出每路文件可占用的缓存配额的上限,为请求的每路文件均匀分配可分配缓存空间内的缓存配额。

步骤S107,判断请求的每路文件可占用的缓存配额是否达到上限,若是,则释放长时间未被客户端访问过的该路文件的缓存,即释放当前时间和最后一次访问时间间隔大于时间戳的该路文件的缓存;若否,则继续对该路文件进行缓存;

步骤S108,当可分配的缓存空间已用完且有新文件发起读或写请求时,重新计算各路文件可占用的缓存上限,即通过可分配缓存空间内的缓存配额的大小减去预留缓存空间的大小再除以文件路数,再从预留缓存空间中为新文件分配缓存配额,并将新文件的缓存存放至缓存队列中,同时,从其他路文件中释放出未被客户端访问的缓存作为新的预留缓存空间。

作为一种可实施的方式,本实施例中的阈值预设为90%;即当内存空间的缓存大小为10G时,分配缓存空间的大小为9G,预留缓存空间的大小为1G。

作为一种可实施的方式,本实施例中的时间戳预设为30天。

作为一种可实施的方式,使用LRU链表作为本实施例中的缓存队列。

实施例二:如图2所示,本发明的一种基于文件为客户端分配缓存配额的装置,包括申请模块201、预设模块202、划分模块203、第一分配模块204、接收模块205、第一判断模块206、第二判断模块207和第二分配模块208,申请模块201依次连接预设模块202、划分模块203、第一分配模块204、接收模块205、第一判断模块206、第二判断模块207和第二分配模块208。

申请模块201,用于向服务器申请内存空间;预设模块202,用于预设阈值和时间戳;划分模块203,用于在内存空间中划分出可分配缓存空间和预留缓存空间;接收模块204,用于接收客户端的读或写请求;第一分配模块205,用于为请求的每路文件均匀分配缓存配额;第一判断模块206,用于判断请求的每路文件可占用的缓存配额是否达到上限;第二判断模块207,用于判断每路文件当前时间和最后一次访问时间间隔是否大于时间戳;第二分配模块208,用于为新文件分配预留缓存空间。

实施例三:如图3所示,本发明的另一种基于文件为客户端分配缓存配额的方法,包括以下步骤:

步骤S301,在内存空间中划分出可分配缓存空间和预留缓存空间。

步骤S302,为请求的每路文件均匀分配缓存配额。

步骤S303,判断请求的每路文件可占用的缓存配额是否达到上限,若是,则释放长时间未被客户端访问过的该路文件的缓存,若否,则继续对该路文件进行缓存。

步骤S304,为新文件分配预留缓存空间。

实施例四:如图4所示,本发明的另一种基于文件为客户端分配缓存配额的装置,包括划分模块401、第一分配模块402、第一判断模块403和第二分配模块404,划分模块401依次连接第一分配模块402、第一判断模块403和第二分配模块404。

划分模块401,用于在内存空间中划分出可分配缓存空间和预留缓存空间;

第一分配模块402,用于为请求的每路文件均匀分配缓存配额;第一判断模块403,用于判断请求的每路文件可占用的缓存配额是否达到上限;第二分配模块404,用于为新文件分配预留缓存空间。

以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1