一种基于Linux文件系统文件链接的缓存LRU方法

【技术领域】

[0001]本发明涉及信息技术领域,特别是涉及一种基于Linux文件系统文件链接的缓存LRU方法。

【背景技术】

[0002]目前,随着家庭宽带网络、无线宽带技术,以及终端设备性能的不断发展,基于多媒体的应用越来越广泛,特别是互联网视频的应用更是成为推动这些技术发展的源动力。作为互联网视频VOD的应用,提高视频播放的流畅度是一个非常重要的指标之一。除了编解码技术,视频CDN技术是解决用户视频播放流畅度的首要环节,而CDN技术中除了智能调度技术,边缘服务器的性能优化也是非常重要的环节之一。

【发明内容】

[0003]本发明所要解决的技术问题是边缘缓存服务器缓存管理的问题,通过采用一种基于Linux文件系统文件“软硬链接”功能的缓存LRU方法,能够提升缓存系统的效率,从而提升用户体验。

[0004]本发明解决其技术问题所采用的技术方案是:提供一种基于Linux文件系统文件链接的缓存LRU方法,利用Linux系统所提供的文件链接的功能,对被缓存的文件对象采用硬链接来记录文件的被访问时间,用软链接来指向最近被访问的Cache对象的硬链接版本,并通过按时间顺序批量淘汰的方式来实现LRU的功能。

[0005]当Cache对象进行存入时,包括以下步骤:

[0006]当有请求进入的时候,将请求的URL映射为相对路径;

[0007]根据计算得到的该Cache对象的相对路径,得到当前访问时间对应的“/.v_日期/”的物理文件存储目录,并将Cache对象存储到该路径中;

[0008]创建一个软链接文件指向所述相对路径。

[0009]当Cache对象进行查找时,包括以下步骤:

[0010]当有请求进入的时候,将请求的URL映射为相对路径;

[0011]根据计算得到的该Cache对象的相对路径,查找磁盘中的软链接文件,如果没有找到,直接返回Cache对象没有找到,并结束;

[0012]打开软链接文件,读取到对应的最近一次访问的该文件的物理路径;

[0013]如果以上软链接文件中对应的物理路径的文件在磁盘上存在,并且当前访问的时间对应的“/.v_日期/”目录和当前软链接文件对应的物理文件路径中的“/.v_日期/”目录不相同,则重新硬链接一个新的“/.v_日期/相对路径”的物理文件,并修改软链接文件指向该物理文件;

[0014]如果以上软链接文件中对应的物理路径的文件在磁盘上不存在,则直接返回Cache对象没有找到。

[0015]当Cache对象进行淘汰时,包括以下步骤:

[0016]淘汰程序对所有当前磁盘上带有“/.v_日期/”的目录进行搜索,得到“/.v_日期/”目录列表;

[0017]对得到的目录列表按照ASCII顺序从小到大进行排序,也就是得到了按照访问日期排序的目录列表;

[0018]对这个经过排序的目录列表从头到尾进行扫描,并执行相应删除操作,直至可用空间已经达到阈值规定的要求或者所有”/.v_日期/”目录被删除完。

[0019]所述对这个经过排序的目录列表从头到尾进行扫描,并执行相应删除操作具体包括:

[0020]对当前“/.v_日期/”下面的文件采用目录深度优先的方式进行扫描,对文件进行删除,如果扫描到的子目录为空,则同时把子目录删除;

[0021]每次删除一个文件后,判断可用空间是否已经高于设定的阈值,如果没有达到这个阈值,则持续进行递归删除;

[0022]如果整个当前”/.v_日期/”下面的所有文件和子目录被删除完之后,空间仍然不够,则获取下一个”/.v_日期/”目录,执行删除操作。

[0023]当Cache对象进行删除时,包括以下步骤:

[0024]当有请求进入的时候,将请求的URL映射为相对路径;

[0025]根据计算得到的该Cache对象的相对路径,查找磁盘中的软链接文件,如果没有找到,直接返回Cache对象没有找到,并结束;

[0026]打开软链接文件,读取到对应的最近一次访问的该文件的物理路径;如果这个物理路径对应的文件存在,则删除该物理文件,同时删除该软链接文件。

[0027]当Cache对象进行更新时,采用对Cache对象进行删除后存入的方式进行处理。

[0028]有益效果

[0029]由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明利用Linux文件系统本身提供的文件链接的功能(包括软硬链接)实现对缓存对象实现LRU的管理,能够有效实现缓存系统冷门内容的淘汰和热点内容的保护,从而在有限的磁盘空间上尽可能提高内容访问命中率,提升缓存系统的效率,提升用户体验,从技术上降低整体运营成本。本发明主要应用于CDN(内容分发网络)领域的边缘缓存服务器,对于提升边缘服务器文件请求命中率和服务性能能够起到显著的效果。

【具体实施方式】

[0030]下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。

[0031]本发明的实施方式涉及一种利用Linux系统(或者类Unix系统)所提供的文件链接的功能,对被缓存的文件对象采用硬链接来记录文件的被访问时间,用软链接来指向最近被访问的Cache对象的硬链接版本,并通过按时间顺序批量淘汰的方式来实现LRU的功能。

[0032]以下对本方法的具体实现方式进行说明。

[0033]首先,先说明一下Cache对象在磁盘上的存储方式。

[0034]1.Cache对象是以文件的方式存储到磁盘上的。每个Cache对象会对应一个URL,这个URL是用户访问的路径,将URL的相对路径部分(除了 http://domain部分)进行HASH,映射成磁盘中的存储路径。譬如,对于URL为http://vod.test, com/movie/file/path/name, ts 的 Cache 对象,我们用 /movie/f ile/path/name.ts 部分进行 MD5hash,计算得到MD5值是8f595e5b69f86bfb905ff6b9167f8138,然后把这个MD5值分为三段,第一个字节为一段,第二第三个字节为第二段,第四个及之后的字节为第三段,加上最后的文件名扩展名部分,映射成磁盘上的相对路径,如:8/f5/95e5b69f86bfb905ff6b9167f8138.ts,从而可以存储到磁盘上。

[0035]2.对于存储到磁盘上的Cache对象,为了实现LRU的管理,需要对它们标识访问时间。本身Linux文件系统可以对每个文件记录其最后访问时间的,但是如果不进行一些处理,本身Linux文件系统是不能对位于不同目录下面的所有文件自然地按照访问时间进行排序,并能够被程序按照访问时间的递增顺序进行扫描的。这样,必然导致实现LRU淘汰的时候计算复杂并且性能低下。而且,一般情况下,在对于i/o性能要求极高的Cache系统中,默认都会关闭Iinux文件系统的对文件和目录的访问时间的自动修改功能来减少不必要的磁盘1,从而也限制了利用文件系统自己记录的文件访问时间来进行LRU的实现。

[0036]为了解决这个问题,对于每个Cache对象对应的文件,本方法按照其访问日期,采用硬链接的方式,存储到以日期为根目录的路径中去。如上面的http://vod.test, com/movie/f ile/path/name.ts的Cache对象,如果2015-01-01日有访问这个文件,则在磁盘的 /.v_20150101/ 目录下面,存储相对路径为 8/f5/95e5b69f86bfb905ff6b9167f8138.ts这样一个文件。如有2015-01-02日又有该文件的访问,则在磁盘的/.v_20150102/目录下面,存储相对路径为8/f5/95e5b69f86bfb905ff6b9167f8138.ts这样一个文件。由于相同相对路径的文件,实际上对应同一个Cache对象,为了减少磁盘空间的消耗,采用/.v_20150101/8/f5/95e5b69f86bfb905ff6b9167f8138.ts 和 /.v_20150102/8/f5/95e5b69f86bfb905ff6b9167f8138.ts相互之间硬链接的方式进行链接,这样子虽然看到的是两个文件,但是实际上在磁盘上保存的只是一份Copy。

[0037]这样子,每个/.v_日期/的目录自然就对Cache对象按照访问日期进行了排序。从而能够对文件的访问时间根据所在的目录来进行识别。不失一般性,本方法中描述的按照日期来划分文件访问时间的方式,也可以进行更细粒度的划分,譬如按照小时,甚至分钟,这个需要根据缓存系统的实际业务需要来确定。

[0038]3.另外,对Cache对象最近一次被访问的记录用Linux文件系统软链接的方式进行标注,存储在不带“/.v_日期/”的相对目录中。譬如,对于以上http://vod.test, com/movie/f ile/path/name.ts对应的Cache对象,它映射到磁盘的相对路径为:8/f5/95e5b69f86bfb905ff6b9167f8138.ts,它在2015年10月I日被最后一次访问,那么在磁盘上对应存放一个路径为/8/f5/95e5b69f86bfb905ff6b9167f8138.ts软链接,并将该软链接指向路径为 1.v_20151001/8/f5/95e5b69f86bfb905ff6b9167f8138.ts 的真实物理文件。

[0039]依据以上文件存储方式,下面对Cache对象的存入、查找、淘汰、删除、更新五个必要环节的处理流程分别进行阐述。

[0040]Cache对象的存入:将一个原本在Cache系统里面不存在的Cache对象存储到磁盘上。

[0041]1.当有请求进入的时候,将请求的URL映射为相对路径。如将http://vod.test,com/movie/file/path/name.ts 对应的 Cache 对象,映射为:8/f5/95e5b69f86bfb905ff6b9167f813

linux文件中链接文件系统,一种基于Linux文件系统文件链接的缓存LRU方法相关推荐

  1. 怎样实现linux的网络通信协议是,一种基于Linux系统的TCP/IP协议栈的实现

    一种基于Linux系统的TCP/IP协议栈的实现 本文分析了Linux内核TCP/IP协议栈的实现,给出了Linux网络数据处理流程,探讨了Linux的I (本文共3页) 阅读全文>> 介 ...

  2. linux网卡握手速率模式,一种基于Linux平台下的网卡速率和双工模式测试的方法与流程...

    本发明涉及计算机技术领域,更具体的说是涉及一种基于Linux平台下的网卡速率和双工模式测试的方法. 背景技术: 随着社会经济的发展和互联网技术的进步,如今把计算机网络使得我们的生活变得更加方便,快捷. ...

  3. matlab血糖预测,一种基于VMD-PACF-BP模型的动态血糖在线预测方法与流程

    本发明属于血糖预测技术领域,尤其涉及一种基于VMD-PACF-BP模型的动态血糖在线预测方法. 背景技术: 目前,中国患有糖尿病人数已成为在世界上拥有糖尿病患者最多的国家.为了降低糖尿病患者长期处于高 ...

  4. linux 目录防篡改,一种基于Linux虚拟文件系统的防篡改方法及系统的制作方法

    一种基于Linux虚拟文件系统的防篡改方法及系统的制作方法 [技术领域] [0001]本发明涉及文件防护技术领域,特别涉及一种基于Linux虚拟文件系统的防篡改方法及系统. [背景技术] [0002] ...

  5. linux 网络监控 邮件,一种基于Linux的邮件监控方法与流程

    本发明涉及计算机安全技术领域,具体地说是一种实用性强.基于Linux的邮件监控方法. 背景技术: 随着计算机的普及以及人们对个人信息安全的重视,如何保障计算机乃至个人信息的安全成为了一个至关重要的问题 ...

  6. linux测试自动化,一种基于Linux系统下自动化测试RoCE性能的方法及系统与流程

    本发明涉及自动化测试的技术领域,特别涉及一种基于Linux系统下自动化测试roce性能的方法及其系统. 背景技术: 现在迅速发展的服务器行业,对网络服务性能提出了越来越高的要求.特别是在互联网行业以及 ...

  7. linux内核中链表代码分析---list.h头文件分析(一)

    linux内核中链表代码分析---list.h头文件分析(一) 16年2月27日17:13:14 在学习数据结构时,有一个重要的知识点就是链表.对于链表的一些基本操作,它的最好学习资料就是内核中的li ...

  8. Linux系统中常见文件系统格式

    Linux系统中常见文件系统格式 Windows常用的分区格式有三种,分别是FAT16.FAT32.NTFS格式. 在Linux操作系统里有Ext2.Ext3.Linux swap和VFAT四种格式. ...

  9. Linux系统中的文件系统格式区别及详解

    Linux系统中常见文件系统格式 Windows常用的分区格式有三种,分别是FAT16.FAT32.NTFS格式 在Linux操作系统里有Ext2.Ext3.Linux swap和VFAT 种格式. ...

最新文章

  1. C语言学习之时钟函数clock()函数
  2. html5/css3响应式布局介绍及设计流程
  3. openwrt上wifi探针的实现
  4. 20 个使用 Java CompletableFuture的例子
  5. express 4.*升级后带来的影响
  6. YFI 核心开发者 banteg 推出 1:100 万拆分 YFI 代币的新项目 Woofy
  7. HDU6322 Problem D. Euler Function【欧拉函数+数学规律】
  8. Security+ 学习笔记37 脚本和命令行
  9. 微信小程序开发【前端+后端(Java)】附完整源码
  10. java错误找不到符号怎么办_java错误找不到符号
  11. 5G时代将给智能营销笔记本带来什么样的改变
  12. 利用JAVA求定积分
  13. 宇宙简史——星光中有什么秘密?
  14. 中华成语宝典 xp v1.0.2 下载
  15. 基于AI+RT-THREAD的人检测入侵检测摄像头(一 AI模型的导入及处理)
  16. 集装箱式数据中心机房
  17. Python中除法取整以及求余数(模)的方式
  18. 电动汽车整车控制SIMULINK仿真
  19. yum安装软件时,出现“No package XXX available“的解决办法
  20. web前端开发经验总结

热门文章

  1. PMP-【第2章 项目运行环境与项目经理】-2020-12-29(35页-48页)
  2. oracle sql 执行计划分析_《真正读懂Oracle SQL执行计划》
  3. java集合的加减_在JAVA中,对List集合的加减操作
  4. str_pad函数php,str_pad
  5. mysql怎么用命令行导出sql文件_使用mysql命令行导出sql_MySQL
  6. pdf 加深 扫描件_为什么PDF文档不能像Word文档一样随便编辑?如何免费将PDF转换为Word?...
  7. asp.net接受表单验证格式后再提交数据_创建一个注册界面,并记录到数据库中...
  8. 指定在此oracle主目录中配置,oracle11g卸载
  9. java 2维数据便利_计算机等级考试二级java数组辅导
  10. python随机生成字符串_Python 2.6中的随机字符串(可以吗?)