CN114025019A - 基于arc算法的cdn缓存实现方法、装置和计算机设备 - Google Patents
基于arc算法的cdn缓存实现方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN114025019A CN114025019A CN202210003975.4A CN202210003975A CN114025019A CN 114025019 A CN114025019 A CN 114025019A CN 202210003975 A CN202210003975 A CN 202210003975A CN 114025019 A CN114025019 A CN 114025019A
- Authority
- CN
- China
- Prior art keywords
- queue
- lru
- content request
- lfu
- response data
- 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.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及一种基于ARC算法的CDN缓存实现方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。采用本方法能够提高在使用同等内存资源的情况下用户请求的命中率。
Description
技术领域
本申请涉及内容分发网络技术领域,特别是涉及一种基于ARC算法的CDN缓存实现方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着互联网的高速发展,由于网络流量分布的不均衡性使得互联网局部信息传递性能随着网络流量的增加而恶化,并逐渐成为互联网发展的一大瓶颈,用户往往需要忍受较长时间的访问延迟,对此用户对网络服务质量提出了更高的要求,希望能够更快更好地通过Web浏览器从Web服务器上获得网页,内容分发网络应运而生。
内容分发网络(Content Delivery Network,CDN),目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度。而CDN能够成功主要是用户可以就近的从CDN缓存服务器上获取内容,而提高缓存的命中率是提升CDN应用效率的因素之一,因此如何在同等内存资源的情况下提高用户请求命中率成为亟需解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够在同等内存资源下提高用户请求的命中率的基于ARC算法的CDN缓存实现方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种基于ARC算法的CDN缓存实现方法。所述方法包括:
接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;
根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
在其中一个实施例中,所述根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应包括:
若所述内容请求的响应数据在所述LRU队列或LFU队列中,更新所述响应数据在对应缓存队列的访问时间和访问次数,根据所述LRU队列或LFU队列中的响应数据对所述内容请求进行响应;
若所述内容请求的响应数据不在所述LRU队列或LFU队列中,判断所述内容请求的响应数据是否在LRU Ghost队列或LFU Ghost队列中,根据判断结果对所述内容请求进行响应。
在其中一个实施例中,所述根据判断结果对所述内容请求进行响应包括:
若所述内容请求的响应数据不在所述LRU队列或LFU队列中,按照预设的更新周期从所述LRU队列中淘汰在更新周期内未被访问的数据和/或从所述LFU队列中淘汰在更新周期内访问频率低于预设的访问频率阈值的数据;
判断所述内容请求的响应数据是否在LRU Ghost队列中,若在,将所述LRU队列的长度加一同时将所述LFU队列的长度减一,将所述请求内容从所述LRU Ghost队列中重新加入到所述LRU队列中;
根据重新加入到所述LRU队列中的数据对所述内容请求进行响应。
在其中一个实施例中,所述根据判断结果对所述内容请求进行响应还包括:
判断所述内容请求的响应数据是否在LFU Ghost队列中,若在,将所述LFU队列的长度加一同时将所述LRU队列的长度减一,将所述请求内容从所述LFU Ghost队列中重新加入到所述LFU队列中;
根据重新加入到所述LFU队列中的数据对所述内容请求进行响应。
在其中一个实施例中,所述根据判断结果对所述内容请求进行响应还包括:
若所述内容请求的响应数据既不在LFU Ghost队列中也不在LRU Ghost队列中,从源站拉取所述响应数据,并将所述响应数据加入到所述LRU队列中;
根据加入到所述LRU队列中的响应数据对所述内容请求进行响应。
在其中一个实施例中,所述并将所述响应数据加入到所述LRU队列中包括:
若所述LRU队列中有空余位置,将所述响应数据直接加入到所述LRU队列中;
若所述LRU队列中没有空余位置,从所述LRU队列中淘汰掉未被访问时长最久的数据,并将所述响应数据加入到所述LRU队列中。
第二方面,本申请还提供了一种基于ARC算法的CDN缓存实现装置。所述装置包括:
判断模块,用于接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;
响应模块,用于根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
在其中一个实施例中,所述响应模块具体包括:
第一响应子模块,用于当所述内容请求的响应数据在所述LRU队列或LFU队列中时,更新所述响应数据在对应缓存队列的访问时间和访问次数,根据所述LRU队列或LFU队列中的响应数据对所述内容请求进行响应;
第二响应子模块,用于当所述内容请求的响应数据不在所述LRU队列或LFU队列中时,判断所述内容请求的响应数据是否在LRU Ghost队列或LFU Ghost队列中,根据判断结果对所述内容请求进行响应。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;
根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;
根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;
根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
上述基于ARC算法的CDN缓存实现方法、装置、计算机设备、存储介质和计算机程序产品,通过内容分发网络接收用户发送的内容请求,判断内容请求的响应数据是否在LRU队列或LFU队列中,并根据内容请求的响应数据是否存在于LRU队列或LFU队列中,对内容请求进行响应,实现了综合考虑基于响应数据的历史访问记录和历史访问频率两个维度信息来进行缓存替换,提高了在使用同等内存资源的情况下用户请求的命中率。
附图说明
图1为一个实施例中基于ARC算法的CDN缓存实现方法的应用环境图;
图2为一个实施例中基于ARC算法的CDN缓存实现方法的流程示意图;
图3为一个实施例中基于ARC算法的CDN缓存实现步骤的流程示意图;
图4为一个实施例中基于ARC算法的CDN缓存实现装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的基于ARC算法的CDN缓存实现方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种基于ARC算法的CDN缓存实现方法,以该方法应用于图1中的服务器中的内容分发网络为例进行说明,包括以下步骤:
步骤202,接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中。
其中,内容分发网络(Content Delivery Network,CDN),是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容。最近最少使用算法(Least Recently used,LRU),其根据数据的历史访问记录来进行淘汰数据,核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。最近最不常使用算法(Least Frequently Used,LFU),其根据数据的历史访问频率来淘汰数据,核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。
本实施例中的自适应缓存替换算法(Adaptive Replacement Cache,ARC),结合了LRU和LFU算法的长处,能够在LRU和LFU之间不断平衡,以提高组合结果。ARC能够通过被淘汰的数据的访问情况来动态调整期内维护的LRU和LFU队列的大小。ARC算法维护4个队列(LRU和LRU Ghost,LFU和LFU Ghost),Ghost队列为对应列表的影子队列,其内不记录数据,只记录数据对应的指针地址。当数据 A 加入 LRU 后,如果 A 再次被访问,则同时被放到LFU 队列中。所以 LFU 队列的缓存为 LRU 队列的多次访问的数据。当 LRU 队列淘汰了B,那么 B 的信息则进入到 LRU Ghost 队列。如果 B 在之后再次被访问,则增加 LRU 队列的大小,同时缩减 LFU 队列的大小。LFU 队列同理。
具体地,内容分发网络接收终端用户发送的内容请求,判断接收的内容请求的响应数据是否在LRU队列或LFU队列中;其中LRU队列和LFU队列是动态调整的,ARC包含了四个队列,LRU队列和LRU Ghost队列,LFU队列和LFU Ghost队列。其中,Ghost队列为对应淘汰的数据记录指针,指向磁盘中的数据内容。LRU队列和LRU Ghost队列是对应的,LFU队列和LFUGhost队列是对应的。
步骤204,根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
具体地,根据内容请求的响应数据是否存在于LRU队列或LFU队列中,对内容请求进行响应,当内容请求的响应数据存在于LRU队列或LFU队列中时,直接从LRU队列或LFU队列中获取对应的响应数据,并对内容请求进行响应。若内容请求的响应数据不存在于LRU队列或LFU队列中时,判断响应数据是否存在于LRU Ghost和LFU Ghost中,并根据是否存在于LRU Ghost和LFU Ghost中的结果对内容请求进行响应。
上述基于ARC算法的CDN缓存实现方法中,通过内容分发网络接收用户发送的内容请求,判断内容请求的响应数据是否在LRU队列或LFU队列中,并根据内容请求的响应数据是否存在于LRU队列或LFU队列中,对内容请求进行响应,实现了综合考虑基于响应数据的历史访问记录和历史访问频率两个维度信息来进行缓存替换,提高了在使用同等内存资源的情况下用户请求的命中率。
在一个实施例中,所述根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应包括:
若所述内容请求的响应数据在所述LRU队列或LFU队列中,更新所述响应数据在对应缓存队列的访问时间和访问次数,根据所述LRU队列或LFU队列中的响应数据对所述内容请求进行响应;
若所述内容请求的响应数据不在所述LRU队列或LFU队列中,判断所述内容请求的响应数据是否在LRU Ghost队列或LFU Ghost队列中,根据判断结果对所述内容请求进行响应。
具体地,通过响应数据是否在LRU或LFU队列中的判定,若内容请求的响应数据在LRU队列或者响应数据在LFU队列中时,更新响应数据在对应缓存队列的访问时间和访问次数,并根据LRU队列或LFU队列中的响应数据对用户的内容请求进行响应。当内容请求的响应数据不在LRU队列,且响应数据也不在LFU队列中时,判断内容请求的响应数据是否在LRUGhost队列或LFU Ghost队列中,根据内容请求的响应数据是否在LRU Ghost队列或LFUGhost对内容请求进行响应。
本实施例中,根据内容请求的响应数据是否在LRU队列或LFU队列中,当在时根据队列中的响应数据对内容请求进行响应;当不在时,判断内容请求的响应数据是否在LRUGhost队列或LFU Ghost队列中,并根据判断结果对内容请求进行响应,实现了基于ARC算法的4个队列对响应数据的判断以及对内容请求的响应,提高了在使用同等内存资源的情况下用户请求的命中率。
在一个实施例中,所述根据判断结果对所述内容请求进行响应包括:
若所述内容请求的响应数据不在所述LRU队列或LFU队列中,按照预设的更新周期从所述LRU队列中淘汰在更新周期内未被访问的数据和/或从所述LFU队列中淘汰在更新周期内访问频率低于预设的访问频率阈值的数据;
判断所述内容请求的响应数据是否在LRU Ghost队列中,若在,将所述LRU队列的长度加一同时将所述LFU队列的长度减一,将所述请求内容从所述LRU Ghost队列中重新加入到所述LRU队列中;
根据重新加入到所述LRU队列中的数据对所述内容请求进行响应。
具体地,当内容请求的响应数据不在LRU队列,同时也不在LFU队列中时,按照预设的更新周期从LRU队列中淘汰在更新周期内未被访问的数据和/或从所述LFU队列中淘汰在更新周期内访问频率低于预设的访问频率阈值的数据,并判断内容请求的响应数据是否在LRU Ghost队列中,当响应数据在LRU Ghost队列中时,将LRU队列的长度加一,同时将LFU队列的长度减一,并将请求内容从LRU Ghost队列中重新加入到LRU队列中,对LRU队列更新完成以后,根据重新加入到LRU队列中的数据对内容请求进行响应。
本实施例中,当内容请求的响应数据不在LRU队列或LFU队列中,判断内容请求的响应数据是否在LRU Ghost队列中,当在时将LRU队列的长度加一同时将LFU队列的长度减一,将请求内容从所述LRU Ghost队列中重新加入到所述LRU队列中,并根据重新加入到LRU队列中的数据对内容请求进行响应,实现了对LRU队列和LFU队列的动态更新,同时提高了在使用同等内存资源的情况下用户请求的命中率。
在一个实施例中,所述根据判断结果对所述内容请求进行响应还包括:
判断所述内容请求的响应数据是否在LFU Ghost队列中,若在,将所述LFU队列的长度加一同时将所述LRU队列的长度减一,将所述请求内容从所述LFU Ghost队列中重新加入到所述LFU队列中;
根据重新加入到所述LFU队列中的数据对所述内容请求进行响应。
具体地,根据判断结果对内容请求进行响应时,若响应数据不在LRU Ghost队列中,判断内容请求的响应数据是否在LFU Ghost队列中,当内容请求的响应数据在LFUGhost队列中时,将LFU队列的长度加一同时将LRU队列的长度减一,实现LFU队列和LRU队列的动态调整,并将请求内容从LFU Ghost队列中重新加入到LFU队列中,根据重新加入到LFU队列中的数据对内容请求进行响应。
本实施例中,当响应数据不在LRU Ghost队列中时,判断内容请求的响应数据是否在LFU Ghost队列中,并根据判断结果对内容请求进行响应,提高了在使用同等内存资源的情况下用户请求的命中率。
在一个实施例中,所述根据判断结果对所述内容请求进行响应还包括:
若所述内容请求的响应数据既不在LFU Ghost队列中也不在LRU Ghost队列中,从源站拉取所述响应数据,并将所述响应数据加入到所述LRU队列中;
根据加入到所述LRU队列中的响应数据对所述内容请求进行响应。
具体地,根据判断结果对内容请求进行响应时,通过判断若内容请求的响应数据既不在LFU Ghost队列中也不在LRU Ghost队列中,此时无法实现从缓存数据中获取响应数据并进行响应。此时,从源站拉取所需的响应数据,并将从源站拉取的响应数据加入到LRU队列中,之后根据加入到LRU队列中的响应数据对内容请求进行响应。
本实施例中,当响应数据既不在LFU Ghost队列中也不在LRU Ghost队列中时,从源站拉取响应数据,并将响应数据加入到所述LRU队列中,并根据加入到LRU队列中的响应数据对内容请求进行响应,实现了对于LRU队列的动态更新,并根据拉取的响应数据对内容请求进行响应,实现了对于LRU队列的动态更新,提高了在使用同等内存资源的情况下用户请求的命中率。
在一个实施例中,所述并将所述响应数据加入到所述LRU队列中包括:
若所述LRU队列中有空余位置,将所述响应数据直接加入到所述LRU队列中;
若所述LRU队列中没有空余位置,从所述LRU队列中淘汰掉未被访问时长最久的数据,并将所述响应数据加入到所述LRU队列中。
具体地,将响应数据加入到LRU队列中时,判断LRU队列中是否有空余位置,当LRU队列中有空余位置时,将响应数据直接加入到LRU队列中,实现对LRU队列的更新;若LRU队列中没有空余位置时,从LRU队列中淘汰掉未被访问时长最久的数据,并将响应数据加入到LRU队列中,实现对LRU队列中最不常被访问数据的动态淘汰。
本实施例中,当LRU队列中有空余位置时,将响应数据直接加入到LRU队列中,当LRU队列中没有空余位置时,从LRU队列中淘汰掉未被访问时长最久的数据,并将响应数据加入到LRU队列中,实现了对LRU队列的动态更新,同时提高了在使用同等内存资源的情况下用户请求的命中率。
图3为一个实施例中基于ARC算法的CDN缓存实现步骤的流程示意图,如图3所示,1、用户向CDN节点发起一个内容请求;2、CDN节点判断该用户请求是否在LRU/LFU队列中,如果是则执行步骤3,8;否则执行步骤4,5,6,7,8;3、CDN节点缓存策略更新请求数据在对应的缓存队列的时间、访问次数等标记;4、缓存队列在给定周期内对LRU/LFU队列数据中较长时间未访问,访问频率低的进行淘汰,并将数据移交至其对应的Ghost影子队列中;5、CDN节点判断该用户请求是否在LRU Ghost或LFU Ghost队列中,如果是则执行步骤6,8;否则执行步骤7,8;6、如果用户请求在LRU Ghost队列中则将LRU队列长度加1,LFU队列减1并将该用户请求从LRU Ghost队列移交至LRU队列;如果用户请求在LFU Ghost队列中则将LFU队列加1,LFU队列减1并将该用户请求从LFU Ghost队列移交至LFU队列;7、CDN节点从源站重新拉取内容并加入LRU缓存队列中;8、CDN节点对用户的请求进行响应,流程结束。
本发明实施例提供一种通过ARC自适应缓存替换算法的CDN缓存替换机制,使用ARC算法来实现CDN中的缓存数据的替换。当用户向CDN节点发起一个内容请求时,先将内容通过ARC算法进行缓存淘汰计算,判断内容是否可以从本地CDN节点的缓存中命中,如果是则向用户返回请求响应,否则CDN节点向源站点拉取用户的请求内容并将结果响应给用户。通过ARC算法综合考虑了基于数据的历史访问记录和历史访问频率两个维度信息来进行缓存替换,达到在使用同等内存资源的情况下提高用户请求命中率的效果。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的基于ARC算法的CDN缓存实现方法的基于ARC算法的CDN缓存实现装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个基于ARC算法的CDN缓存实现装置实施例中的具体限定可以参见上文中对于基于ARC算法的CDN缓存实现方法的限定,在此不再赘述。
在一个实施例中,如图4所示,提供了一种基于ARC算法的CDN缓存实现装置,包括:判断模块401和响应模块402,其中:
判断模块401,用于接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中。
响应模块402,用于根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
在一个实施例中,所述响应模块402还用于:若所述内容请求的响应数据在所述LRU队列或LFU队列中,更新所述响应数据在对应缓存队列的访问时间和访问次数,根据所述LRU队列或LFU队列中的响应数据对所述内容请求进行响应;若所述内容请求的响应数据不在所述LRU队列或LFU队列中,判断所述内容请求的响应数据是否在LRU Ghost队列或LFUGhost队列中,根据判断结果对所述内容请求进行响应。
在一个实施例中,所述响应模块402还用于:若所述内容请求的响应数据不在所述LRU队列或LFU队列中,按照预设的更新周期从所述LRU队列中淘汰在更新周期内未被访问的数据和/或从所述LFU队列中淘汰在更新周期内访问频率低于预设的访问频率阈值的数据;判断所述内容请求的响应数据是否在LRU Ghost队列中,若在,将所述LRU队列的长度加一同时将所述LFU队列的长度减一,将所述请求内容从所述LRU Ghost队列中重新加入到所述LRU队列中;根据重新加入到所述LRU队列中的数据对所述内容请求进行响应。
在一个实施例中,所述响应模块402还用于:判断所述内容请求的响应数据是否在LFU Ghost队列中,若在,将所述LFU队列的长度加一同时将所述LRU队列的长度减一,将所述请求内容从所述LFU Ghost队列中重新加入到所述LFU队列中;根据重新加入到所述LFU队列中的数据对所述内容请求进行响应。
在一个实施例中,所述响应模块402还用于:若所述内容请求的响应数据既不在LFU Ghost队列中也不在LRU Ghost队列中,从源站拉取所述响应数据,并将所述响应数据加入到所述LRU队列中;根据加入到所述LRU队列中的响应数据对所述内容请求进行响应。
在一个实施例中,所述响应模块402还用于:若所述LRU队列中有空余位置,将所述响应数据直接加入到所述LRU队列中;若所述LRU队列中没有空余位置,从所述LRU队列中淘汰掉未被访问时长最久的数据,并将所述响应数据加入到所述LRU队列中。
上述基于ARC算法的CDN缓存实现装置,内容分发网络接收用户发送的内容请求,判断内容请求的响应数据是否在LRU队列或LFU队列中,并根据内容请求的响应数据是否存在于LRU队列或LFU队列中,对内容请求进行响应,实现了综合考虑基于响应数据的历史访问记录和历史访问频率两个维度信息来进行缓存替换,提高了在使用同等内存资源的情况下用户请求的命中率。
上述基于ARC算法的CDN缓存实现装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于ARC算法的CDN缓存实现方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;
根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若所述内容请求的响应数据在所述LRU队列或LFU队列中,更新所述响应数据在对应缓存队列的访问时间和访问次数,根据所述LRU队列或LFU队列中的响应数据对所述内容请求进行响应;若所述内容请求的响应数据不在所述LRU队列或LFU队列中,判断所述内容请求的响应数据是否在LRUGhost队列或LFU Ghost队列中,根据判断结果对所述内容请求进行响应。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若所述内容请求的响应数据不在所述LRU队列或LFU队列中,按照预设的更新周期从所述LRU队列中淘汰在更新周期内未被访问的数据和/或从所述LFU队列中淘汰在更新周期内访问频率低于预设的访问频率阈值的数据;判断所述内容请求的响应数据是否在LRU Ghost队列中,若在,将所述LRU队列的长度加一同时将所述LFU队列的长度减一,将所述请求内容从所述LRU Ghost队列中重新加入到所述LRU队列中;根据重新加入到所述LRU队列中的数据对所述内容请求进行响应。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:判断所述内容请求的响应数据是否在LFU Ghost队列中,若在,将所述LFU队列的长度加一同时将所述LRU队列的长度减一,将所述请求内容从所述LFU Ghost队列中重新加入到所述LFU队列中;根据重新加入到所述LFU队列中的数据对所述内容请求进行响应。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若所述内容请求的响应数据既不在LFU Ghost队列中也不在LRU Ghost队列中,从源站拉取所述响应数据,并将所述响应数据加入到所述LRU队列中;根据加入到所述LRU队列中的响应数据对所述内容请求进行响应。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若所述LRU队列中有空余位置,将所述响应数据直接加入到所述LRU队列中;若所述LRU队列中没有空余位置,从所述LRU队列中淘汰掉未被访问时长最久的数据,并将所述响应数据加入到所述LRU队列中。
上述计算机设备,通过内容分发网络接收用户发送的内容请求,判断内容请求的响应数据是否在LRU队列或LFU队列中,并根据内容请求的响应数据是否存在于LRU队列或LFU队列中,对内容请求进行响应,实现了综合考虑基于响应数据的历史访问记录和历史访问频率两个维度信息来进行缓存替换,提高了在使用同等内存资源的情况下用户请求的命中率。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;
根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若所述内容请求的响应数据在所述LRU队列或LFU队列中,更新所述响应数据在对应缓存队列的访问时间和访问次数,根据所述LRU队列或LFU队列中的响应数据对所述内容请求进行响应;若所述内容请求的响应数据不在所述LRU队列或LFU队列中,判断所述内容请求的响应数据是否在LRU Ghost队列或LFU Ghost队列中,根据判断结果对所述内容请求进行响应。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若所述内容请求的响应数据不在所述LRU队列或LFU队列中,按照预设的更新周期从所述LRU队列中淘汰在更新周期内未被访问的数据和/或从所述LFU队列中淘汰在更新周期内访问频率低于预设的访问频率阈值的数据;判断所述内容请求的响应数据是否在LRU Ghost队列中,若在,将所述LRU队列的长度加一同时将所述LFU队列的长度减一,将所述请求内容从所述LRUGhost队列中重新加入到所述LRU队列中;根据重新加入到所述LRU队列中的数据对所述内容请求进行响应。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:判断所述内容请求的响应数据是否在LFU Ghost队列中,若在,将所述LFU队列的长度加一同时将所述LRU队列的长度减一,将所述请求内容从所述LFU Ghost队列中重新加入到所述LFU队列中;根据重新加入到所述LFU队列中的数据对所述内容请求进行响应。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若所述内容请求的响应数据既不在LFU Ghost队列中也不在LRU Ghost队列中,从源站拉取所述响应数据,并将所述响应数据加入到所述LRU队列中;根据加入到所述LRU队列中的响应数据对所述内容请求进行响应。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若所述LRU队列中有空余位置,将所述响应数据直接加入到所述LRU队列中;若所述LRU队列中没有空余位置,从所述LRU队列中淘汰掉未被访问时长最久的数据,并将所述响应数据加入到所述LRU队列中。
上述存储介质,通过内容分发网络接收用户发送的内容请求,判断内容请求的响应数据是否在LRU队列或LFU队列中,并根据内容请求的响应数据是否存在于LRU队列或LFU队列中,对内容请求进行响应,实现了综合考虑基于响应数据的历史访问记录和历史访问频率两个维度信息来进行缓存替换,提高了在使用同等内存资源的情况下用户请求的命中率。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;
根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若所述内容请求的响应数据在所述LRU队列或LFU队列中,更新所述响应数据在对应缓存队列的访问时间和访问次数,根据所述LRU队列或LFU队列中的响应数据对所述内容请求进行响应;若所述内容请求的响应数据不在所述LRU队列或LFU队列中,判断所述内容请求的响应数据是否在LRU Ghost队列或LFU Ghost队列中,根据判断结果对所述内容请求进行响应。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若所述内容请求的响应数据不在所述LRU队列或LFU队列中,按照预设的更新周期从所述LRU队列中淘汰在更新周期内未被访问的数据和/或从所述LFU队列中淘汰在更新周期内访问频率低于预设的访问频率阈值的数据;判断所述内容请求的响应数据是否在LRU Ghost队列中,若在,将所述LRU队列的长度加一同时将所述LFU队列的长度减一,将所述请求内容从所述LRUGhost队列中重新加入到所述LRU队列中;根据重新加入到所述LRU队列中的数据对所述内容请求进行响应。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:判断所述内容请求的响应数据是否在LFU Ghost队列中,若在,将所述LFU队列的长度加一同时将所述LRU队列的长度减一,将所述请求内容从所述LFU Ghost队列中重新加入到所述LFU队列中;根据重新加入到所述LFU队列中的数据对所述内容请求进行响应。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若所述内容请求的响应数据既不在LFU Ghost队列中也不在LRU Ghost队列中,从源站拉取所述响应数据,并将所述响应数据加入到所述LRU队列中;根据加入到所述LRU队列中的响应数据对所述内容请求进行响应。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若所述LRU队列中有空余位置,将所述响应数据直接加入到所述LRU队列中;若所述LRU队列中没有空余位置,从所述LRU队列中淘汰掉未被访问时长最久的数据,并将所述响应数据加入到所述LRU队列中。
上述计算机程序产品,通内容分发网络接收用户发送的内容请求,判断内容请求的响应数据是否在LRU队列或LFU队列中,并根据内容请求的响应数据是否存在于LRU队列或LFU队列中,对内容请求进行响应,实现了综合考虑基于响应数据的历史访问记录和历史访问频率两个维度信息来进行缓存替换,提高了在使用同等内存资源的情况下用户请求的命中率。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于ARC算法的CDN缓存实现方法,应用于CDN节点,其特征在于,所述方法包括:
接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;
根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
2.根据权利要求1所述的方法,其特征在于,所述根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应包括:
若所述内容请求的响应数据在所述LRU队列或LFU队列中,更新所述响应数据在对应缓存队列的访问时间和访问次数,根据所述LRU队列或LFU队列中的响应数据对所述内容请求进行响应;
若所述内容请求的响应数据不在所述LRU队列或LFU队列中,判断所述内容请求的响应数据是否在LRU Ghost队列或LFU Ghost队列中,根据判断结果对所述内容请求进行响应。
3.根据权利要求2所述的方法,其特征在于,所述根据判断结果对所述内容请求进行响应包括:
若所述内容请求的响应数据不在所述LRU队列或LFU队列中,按照预设的更新周期从所述LRU队列中淘汰在更新周期内未被访问的数据和/或从所述LFU队列中淘汰在更新周期内访问频率低于预设的访问频率阈值的数据;
判断所述内容请求的响应数据是否在LRU Ghost队列中,若在,将所述LRU队列的长度加一同时将所述LFU队列的长度减一,将所述请求内容从所述LRU Ghost队列中重新加入到所述LRU队列中;
根据重新加入到所述LRU队列中的数据对所述内容请求进行响应。
4.根据权利要求3所述的方法,其特征在于,所述根据判断结果对所述内容请求进行响应还包括:
判断所述内容请求的响应数据是否在LFU Ghost队列中,若在,将所述LFU队列的长度加一同时将所述LRU队列的长度减一,将所述请求内容从所述LFU Ghost队列中重新加入到所述LFU队列中;
根据重新加入到所述LFU队列中的数据对所述内容请求进行响应。
5.根据权利要求4所述的方法,其特征在于,所述根据判断结果对所述内容请求进行响应还包括:
若所述内容请求的响应数据既不在LFU Ghost队列中也不在LRU Ghost队列中,从源站拉取所述响应数据,并将所述响应数据加入到所述LRU队列中;
根据加入到所述LRU队列中的响应数据对所述内容请求进行响应。
6.根据权利要求5所述的方法,其特征在于,所述并将所述响应数据加入到所述LRU队列中包括:
若所述LRU队列中有空余位置,将所述响应数据直接加入到所述LRU队列中;
若所述LRU队列中没有空余位置,从所述LRU队列中淘汰掉未被访问时长最久的数据,并将所述响应数据加入到所述LRU队列中。
7.一种基于ARC算法的CDN缓存实现装置,其特征在于,所述装置包括:
判断模块,用于接收用户发送的内容请求,判断所述内容请求的响应数据是否在LRU队列或LFU队列中;
响应模块,用于根据所述内容请求的响应数据是否存在于所述LRU队列或所述LFU队列中,对所述内容请求进行响应。
8.根据权利要求7所述的装置,其特征在于,所述响应模块具体包括:
第一响应子模块,用于当所述内容请求的响应数据在所述LRU队列或LFU队列中时,更新所述响应数据在对应缓存队列的访问时间和访问次数,根据所述LRU队列或LFU队列中的响应数据对所述内容请求进行响应;
第二响应子模块,用于当所述内容请求的响应数据不在所述LRU队列或LFU队列中时,判断所述内容请求的响应数据是否在LRU Ghost队列或LFU Ghost队列中,根据判断结果对所述内容请求进行响应。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210003975.4A CN114025019A (zh) | 2022-01-05 | 2022-01-05 | 基于arc算法的cdn缓存实现方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210003975.4A CN114025019A (zh) | 2022-01-05 | 2022-01-05 | 基于arc算法的cdn缓存实现方法、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114025019A true CN114025019A (zh) | 2022-02-08 |
Family
ID=80069487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210003975.4A Pending CN114025019A (zh) | 2022-01-05 | 2022-01-05 | 基于arc算法的cdn缓存实现方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114025019A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512053A (zh) * | 2015-12-07 | 2016-04-20 | 中南大学 | 移动透明计算系统服务器端多用户访问的镜像缓存方法 |
CN107368608A (zh) * | 2017-08-07 | 2017-11-21 | 杭州电子科技大学 | 基于arc替换算法的hdfs小文件缓存管理方法 |
CN109359095A (zh) * | 2018-09-11 | 2019-02-19 | 东华大学 | 一种大数据快速读取的dlk方法 |
CN111522509A (zh) * | 2020-04-20 | 2020-08-11 | 上海霄云信息科技有限公司 | 分布式存储系统的缓存方法及设备 |
CN112433814A (zh) * | 2020-11-24 | 2021-03-02 | 中信银行股份有限公司 | 一种本地镜像仓库管理方法、装置和系统 |
-
2022
- 2022-01-05 CN CN202210003975.4A patent/CN114025019A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512053A (zh) * | 2015-12-07 | 2016-04-20 | 中南大学 | 移动透明计算系统服务器端多用户访问的镜像缓存方法 |
CN107368608A (zh) * | 2017-08-07 | 2017-11-21 | 杭州电子科技大学 | 基于arc替换算法的hdfs小文件缓存管理方法 |
CN109359095A (zh) * | 2018-09-11 | 2019-02-19 | 东华大学 | 一种大数据快速读取的dlk方法 |
CN111522509A (zh) * | 2020-04-20 | 2020-08-11 | 上海霄云信息科技有限公司 | 分布式存储系统的缓存方法及设备 |
CN112433814A (zh) * | 2020-11-24 | 2021-03-02 | 中信银行股份有限公司 | 一种本地镜像仓库管理方法、装置和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10049051B1 (en) | Reserved cache space in content delivery networks | |
EP3507694B1 (en) | Message cache management for message queues | |
CN104915319B (zh) | 高速缓存信息的系统及方法 | |
US6442651B2 (en) | Shared cache parsing and pre-fetch | |
US9569742B2 (en) | Reducing costs related to use of networks based on pricing heterogeneity | |
US9665658B2 (en) | Non-blocking queue-based clock replacement algorithm | |
CN109240946A (zh) | 数据的多级缓存方法及终端设备 | |
US9614925B2 (en) | Intelligent file pre-fetch based on access patterns | |
US10862992B2 (en) | Resource cache management method and system and apparatus | |
US10007615B1 (en) | Methods and apparatus for performing fast caching | |
US20090055468A1 (en) | Selectively delivering cached content or processed content to clients based upon a result completed percentage | |
CN111597213B (zh) | 一种缓存方法、软件服务器及存储介质 | |
CN114153754B (zh) | 用于计算集群的数据传输方法、装置及存储介质 | |
CN115086706B (zh) | 数据缓存方法及芯片 | |
Meizhen et al. | The design and implementation of LRU-based web cache | |
CN111680210B (zh) | 信息搜索方法、装置、搜索网关及存储介质 | |
CN112764948A (zh) | 数据发送方法、数据发送装置、计算机设备及存储介质 | |
CN114697683A (zh) | 流媒体文件的智能调度方法、设备和计算机程序产品 | |
CN113094392A (zh) | 数据缓存的方法和装置 | |
US7792845B1 (en) | Network acceleration device having logically separate views of a cache space | |
CN109190071A (zh) | 移动端缓存方法及装置 | |
CN114025019A (zh) | 基于arc算法的cdn缓存实现方法、装置和计算机设备 | |
CN106326143B (zh) | 一种缓存分配、数据访问、数据发送方法、处理器及系统 | |
CN105144099A (zh) | 通信系统 | |
Cheluvaraju et al. | Anticipatory retrieval and caching of data for mobile devices in variable-bandwidth environments |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220208 |