多级缓存系统及其访问控制方法、设备和存储介质与流程

文档序号:18301456发布日期:2019-07-31 10:11阅读:136来源:国知局
多级缓存系统及其访问控制方法、设备和存储介质与流程

本发明涉及云存储技术领域,特别涉及一种多级缓存系统及其访问控制方法、装置、计算设备和计算机可读存储介质。



背景技术:

随着互联网带宽和规模的增长,越来越多的大规模数据分析、处理系统面临着数据访问性能的瓶颈。数据规模的不断膨胀和数据加速访问需求的增加,令缓存系统的扩容成本成倍地增加,导致缓存系统的经济性大幅下降。为了降低缓存的扩容成本,提高缓存的性能,需要一种效率更高的新型缓存系统。



技术实现要素:

为解决以上问题中的一个或多个,本发明实施例提供了一种多级缓存系统及其访问控制方法、装置、计算设备和计算机可读存储介质。

根据本申请的第一方面,提供一种用于多级缓存系统的访问控制方法,所述多级缓存系统包括一级缓存和二级缓存,所述访问控制方法包括:

响应于接收到数据请求而访问一级缓存;

在一级缓存中没有所请求的数据的情况下,访问二级缓存;

在二级缓存中存在所请求的数据的情况下,将二级缓存中的所请求的数据的过期时间延长预定时间。

根据一示例性实施例,所述访问控制方法还包括:

在二级缓存中存在所请求的数据的情况下,从二级缓存中获取所请求的数据,并将所述数据同步到一级缓存中。

根据一示例性实施例,所述一级缓存为caffeine一级缓存,其为包括一个或多个caffeine节点的本地缓存;所述二级缓存为redis二级缓存,其为包括多个redis节点的分布式缓存。

根据一示例性实施例,所述访问控制方法还包括:

在由于用户操作而导致数据库的相应数据发生更新的情况下,发生所述用户操作的caffeine节点向redis二级缓存发送缓存过期消息;

收到缓存过期消息的redis二级缓存将缓存过期消息发布到redis消息队列;

redis节点和caffeine节点通过订阅redis消息队列而收到所述缓存过期消息;

每个redis节点和caffeine节点根据所述缓存过期消息使其所缓存的所述相应数据失效。

根据一示例性实施例,所述缓存过期消息中包含发生更新的所述相应数据的字段名称。

根据一示例性实施例,每个redis节点和caffeine节点根据所述缓存过期消息使其所缓存的所述相应数据失效包括:

每个redis节点和caffeine节点根据所述缓存过期消息中包含的所述字段名称在其缓存的数据中查找所述字段名称;

每个redis节点和caffeine节点使查找到的所述字段名称及其对应的值失效。

根据本申请的第二方面,提供一种多级缓存系统,其包括一级缓存和二级缓存,其中,所述多级缓存系统被配置为:在针对所请求的数据访问一级缓存、而一级缓存中没有所请求的数据的情况下,从二级缓存中获取所请求的数据并将所述数据同步到一级缓存中,

其中,所述多级缓存系统还被配置为:在一级缓存中没有所请求的数据、而二级缓存中有所请求的数据的情况下,将二级缓存中的所请求的数据的过期时间延长预定时间。

根据本申请的第三方面,提供一种用于多级缓存系统的访问控制装置,所述多级缓存系统包括一级缓存和二级缓存,所述访问控制装置包括:

一级缓存访问模块,其被配置为:响应于接收到数据请求而访问一级缓存;

二级缓存访问模块,其被配置为:在一级缓存中没有所请求的数据的情况下,访问二级缓存;

延期模块,其被配置为:在二级缓存中存在所请求的数据的情况下,将二级缓存中的所请求的数据的过期时间延长预定时间。

根据一示例性实施例,所述访问控制装置还包括:

同步模块,其被配置为:在二级缓存中存在所请求的数据的情况下,从二级缓存中获取所请求的数据,并将所述数据同步到一级缓存中。

根据一示例性实施例,其中:

所述一级缓存为caffeine一级缓存,其为包括一个或多个caffeine节点的本地缓存;

所述二级缓存为redis二级缓存,其为包括多个redis节点的分布式缓存。

根据一示例性实施例,所述访问控制装置还包括:

过期消息发送模块,其被配置为:在由于用户操作而导致数据库的相应数据发生更新的情况下,使发生所述用户操作的caffeine节点向redis二级缓存发送缓存过期消息;

redis消息队列模块,其被配置为:使收到缓存过期消息的redis二级缓存将缓存过期消息发布到redis消息队列;

订阅模块,其被配置为:使redis节点和caffeine节点通过订阅redis消息队列而收到所述缓存过期消息;

失效模块,其被配置为:使每个redis节点和caffeine节点根据所述缓存过期消息使其所缓存的所述相应数据失效。

根据一示例性实施例,所述缓存过期消息中包含发生更新的所述相应数据的字段名称。

根据一示例性实施例,所述失效模块包括:

查找单元,其被配置为:使每个redis节点和caffeine节点根据所述缓存过期消息中包含的所述字段名称在其缓存的数据中查找所述字段名称;

失效单元,其被配置为:使每个redis节点和caffeine节点使查找到的所述字段名称及其对应的值失效。

根据本申请的第四方面,提供一种计算设备,其与多级缓存系统可通信地相连接,所述多级缓存系统包括一级缓存和二级缓存,所述计算设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时,使得所述计算设备执行如上所述的方法实施例中的任一个。

根据本申请的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被一个或多个处理器执行时实现如上所述的方法实施例中的任一个。

本申请的实施例提供的技术方案可以包括以下有益效果:

通过本申请如上所述以及如下所述的各实施例,可以提高缓存效率,降低缓存扩容成本。另外,在一些实施例中,在caffeine一级缓存中没有所请求的数据、而redis二级缓存中有所请求的数据的情况下,将redis二级缓存中的所请求的数据的过期时间延长(例如延长预定时间),使得用户可能频繁需要获取的热点数据可以长时间保留在缓存中,提高了缓存性能。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

图1是根据一示例性实施例示出的本申请所涉及的实施环境的示意简图。

图2是根据本申请一示例性实施例示出的访问控制方法的示意流程图。

图3是根据本申请另一示例性实施例示出的包括数据更新过程的访问控制方法的示意流程图。

图4是根据图3对应实施例示出的访问控制方法中步骤s340的示例具体实现方式的示意流程图。

图5是根据本申请一示例性实施例示出的访问控制装置的示意组成框图。

图6是根据本申请一示例性实施例示出的计算设备的示意组成框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的示例性实施例进行进一步详细说明。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。

图1是根据一示例性实施例示出的本申请所涉及的实施环境的示意简图。如图1所示,本申请实施例所涉及的多级缓存系统可以包括一级缓存110和二级缓存120。其中,一级缓存110为本地缓存,其过期算法为最近访问过期算法,即数据在最后一次写入或访问后经过固定时间过期。二级缓存120为分布式缓存,其淘汰策略为volatile-ttl,即在设置了过期时间的键空间中,将具有更早过期时间的key优先移除。针对数据请求,首先访问一级缓存110,在一级缓存110中不存在所请求的数据的情况下才去访问二级缓存120,从二级缓存120获取数据并将所述数据同步到一级缓存110中,当缓存系统的多级缓存中都没有所请求的数据时,从数据库获取数据并将所述数据同步到二级缓存120。在一个实施例中,该多级缓存系统被配置为:在一级缓存110中没有所请求的数据、而二级缓存120中有所请求的数据的情况下,将二级缓存120中的所请求的数据的过期时间延长预定时间。在一个实施例中,一级缓存110为caffeine一级缓存,其为包括一个或多个caffeine节点111(在图1中示出为两个)的本地缓存,二级缓存为redis二级缓存,其为包括多个redis节点121(在图1中示出为三个)的分布式缓存。在一个示例中,多级缓存系统是为一个或多个应用(例如java应用)提供缓存服务的,caffeine一级缓存位于部署应用的虚拟机(例如jvm)内,其访问速度最快。图1及以上描述只是本申请所涉及的实施环境的示例性实施例,可以理解的是,适用于本申请的实施环境存在多种变形。

图2是根据本申请的一示例性实施例示出的用于多级缓存系统的访问控制方法的示意流程图。所述多级缓存系统如上面参考图1所述。如图2的示例性实施例所示,该方法可以包括步骤:

s210,响应于接收到数据请求而访问一级缓存。

在一级缓存中具有所请求的数据的情况下,从一级缓存中直接获取所请求的数据,否则,进入步骤s220。

s220,在一级缓存中没有所请求的数据的情况下,访问二级缓存。

如果一级缓存没有被命中,则访问二级缓存尝试获取所请求的数据。

s230,在二级缓存中存在所请求的数据的情况下,将二级缓存中的所请求的数据的过期时间延长预定时间。

所述预定时间例如可以是一个过期周期(例如5分钟)。二级缓存中存在的数据为已被请求过的数据,现在的数据请求是对其的至少第二次获取,这表明该数据为热点数据,很可能会被频繁获取。为了提高数据访问速度,提升缓存访问性能,可以让该热点数据在缓存系统的二级缓存中以有效状态存在的时间更长,以便于从二级缓存、而非访问速度更慢的数据库获取该热点数据。为此,通过步骤s230,使该热点数据的过期时间延长。

在一个实施例中,当二级缓存中也不存在所请求的数据的情况下,系统将访问数据库获取所请求的数据,并把该数据同步到二级缓存中。

图3是根据本申请另一示例性实施例示出的包括数据更新过程的访问控制方法的示意流程图。在该实施例中,如在图1的实施例中所述,一级缓存为caffeine一级缓存,其为包括一个或多个caffeine节点的本地缓存,二级缓存为redis二级缓存,其为包括多个redis节点的分布式缓存。如图3所示,该实施例方法包括步骤:

s310,在由于用户操作而导致数据库的相应数据发生更新的情况下,发生所述用户操作的caffeine节点向redis二级缓存发送缓存过期消息。

在一示例中,在步骤s310中,发生所述用户操作的caffeine节点不仅发送缓存过期消息,还使其缓存的所述相应数据失效,例如,将相应数据置为过期状态或者直接将其删除。

s320,收到缓存过期消息的redis二级缓存将缓存过期消息发布到redis消息队列。

在一示例中,由redis二级缓存的一个redis节点接收到该缓存过期消息并将其发布到redis消息队列。具体是由哪个redis节点接收,是由预先配置的路由决定的。

s330,redis节点和caffeine节点通过订阅redis消息队列而收到所述缓存过期消息。

redis消息队列可以通过发布-订阅机制将消息传达给订阅redis消息队列的redis节点和caffeine节点。通过订阅redis消息队列,redis节点和caffeine节点可以收到所述缓存过期消息。

s340,每个redis节点和caffeine节点根据所述缓存过期消息使其所缓存的所述相应数据失效。

“使其所缓存的所述相应数据失效”可以指将该相应数据的状态置为过期,或者是直接将其删除。

图4是根据图3对应实施例示出的访问控制方法中步骤s340的示例具体实现方式的示意流程图。在该实施例中,redis消息队列中所发布的缓存过期消息包含发生更新的所述相应数据的字段名称。如图4所示,步骤s340可以包括步骤:

s410,每个redis节点和caffeine节点根据缓存过期消息中包含的字段名称在其缓存的数据中查找所述字段名称。

例如,缓存过期消息表明,如下字段为已过期数据:“设备id”字段、“用户类型”字段,则每个redis节点和caffeine节点在其缓存的数据中查找字段“设备id”、“用户类型”。

s420,每个redis节点和caffeine节点使查找到的所述字段名称及其对应的值失效。

例如,如果一redis或caffeine节点在其缓存的数据中查找到“设备id”字段以及其值“13300881234”,则使该字段“设备id”以及其值“13300881234”在其缓存中失效。

通过将过期数据的字段名称包含在缓存过期消息中,并通过查找其值来使得这部分数据失效,可以方便快捷地去除缓存中过期的数据,以免使用错误的数据。

根据本申请的另一方面,还公开了用于上述多级缓存系统的访问控制装置。

图5是根据本申请一示例性实施例示出的访问控制装置的示意组成框图。该装置501用于执行如上所述的访问控制方法的各实施例。如图5所示,示例用户访问控制装置501包括:

一级缓存访问模块510,其被配置为:响应于接收到数据请求而访问一级缓存;

二级缓存访问模块520,其被配置为:在一级缓存中没有所请求的数据的情况下,访问二级缓存;

延期模块530,其被配置为:在二级缓存中存在所请求的数据的情况下,将二级缓存中的所请求的数据的过期时间延长预定时间。

根据图5所示的实施例,装置501还可以包括:

同步模块540,其被配置为:在二级缓存中存在所请求的数据的情况下,从二级缓存中获取所请求的数据,并将所述数据同步到一级缓存中。

根据图5所示的实施例,装置501还可以包括:

过期消息发送模块550,其被配置为:在由于用户操作而导致数据库的相应数据发生更新的情况下,使发生所述用户操作的caffeine节点向redis二级缓存发送缓存过期消息;

redis消息队列模块560,其被配置为:使收到缓存过期消息的redis二级缓存将缓存过期消息发布到redis消息队列;

订阅模块570,其被配置为:使redis节点和caffeine节点通过订阅redis消息队列而收到所述缓存过期消息;

失效模块580,其被配置为:使每个redis节点和caffeine节点根据所述缓存过期消息使其所缓存的所述相应数据失效。

根据图5所示的实施例,在缓存过期消息包含发生更新的所述相应数据的字段名称的情况下,失效模块580可以包括:

查找单元581,其被配置为:使每个redis节点和caffeine节点根据所述缓存过期消息中包含的所述字段名称在其缓存的数据中查找所述字段名称;

失效单元582,其被配置为:使每个redis节点和caffeine节点使查找到的所述字段名称及其对应的值失效。

上述装置中各个单元/模块的功能和作用的实现过程以及相关细节具体详见上述方法实施例中对应步骤的实现过程,在此不再赘述。

以上各实施例中的装置实施例可以通过硬件、软件、固件或其组合的方式来实现,并且其可以被实现为一个单独的装置,也可以被实现为各组成单元/模块分散在一个或多个计算设备中并分别执行相应功能的逻辑集成系统。

以上各实施例中组成该装置的各单元/模块是根据逻辑功能而划分的,它们可以根据逻辑功能被重新划分,例如可以通过更多或更少的单元/模块来实现该装置。这些组成单元/模块分别可以通过硬件、软件、固件或其组合的方式来实现,它们可以是分别的独立部件,也可以是多个组件组合起来执行相应的逻辑功能的集成单元/模块。所述硬件、软件、固件或其组合的方式可以包括:分离的硬件组件,通过编程方式实现的功能模块、通过可编程逻辑器件实现的功能模块,等等,或者以上方式的组合。

根据一个示例性实施例,该装置可被实现为一种计算设备,其与多级缓存系统可通信地相连接,所述多级缓存系统包括一级缓存和二级缓存,该计算设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时,使得所述处理器执行如上所述的各方法实施例中的任一个,或者,所述计算机程序在被所述处理器执行时使得该计算设备实现如上所述的用于多级缓存系统的访问控制装置各实施例的组成单元/模块所实现的功能。

上面的实施例中所述的处理器可以指单个的处理单元,如中央处理单元cpu,也可以是包括多个分散的处理单元的分布式处理器系统。

上面的实施例中所述的存储器可以包括一个或多个存储器,其可以是计算设备的内部存储器,例如暂态或非暂态的各种存储器,也可以是通过存储器接口连接到计算设备的外部存储装置。

图6示出了这样的计算设备601的一个示例性实施例的示意组成框图。如图6所示,计算设备601可以包括:处理器610、通信接口620、存储器630和总线640。存储器630内存储有可被处理器610执行的计算机程序。处理器610执行所述计算机程序时实现上述实施例中的方法及装置的功能。存储器630和处理器610的数量分别可以为一个或多个。通信接口620用于处理器610与外部设备之间的通信。

其中,处理器610可以是中央处理单元、通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的流程步骤、功能单元/模块和/或电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合、数字信号处理器等等。

存储器630可以包括易失性存储器和/或非易失性存储器,例如非易失性动态随机存取存储器、相变随机存取存储器、磁阻式随机存取存储器、磁盘存储器、电子可擦除可编程只读存储器、闪存器件、半导体器件(例如固态硬盘)等。存储器630可选地还可以是外部远程存储装置。

总线640可以是工业标准体系结构(isa,industrystandardarchitecture)总线、外部设备互连(pci,peripheralcomponent)总线或扩展工业标准体系结构(eisa,extendedindustrystandardcomponent)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。可选地,如果存储器630、处理器610及通信接口620集成在一块芯片上,则存储器630、处理器610及通信接口620可以通过内部接口完成相互间的通信。

以上各方法和装置实施例还可以被实现为计算机程序的形式,被存储在存储介质上,并且可被分发。因此,根据本公开的另一方面,还提供一种计算机程序产品,该计算机程序产品被存储在计算机可读存储介质上,并且在被处理器执行时实现如上所述的各方法和装置实施例中的任一个。根据本公开的又一方面,还提供一种计算机可读存储介质,其上存储有可供处理器执行的计算机程序,所述计算机程序在被处理器执行时实现如上所述的各方法和装置实施例中的任一个。

该计算机可读存储介质可以是任何可以保持和存储可由指令执行设备使用的指令的有形设备。例如,其可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。

这里所描述的计算机程序/计算机指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

本公开中所述的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。但本领域技术人员应当清楚的是,上述各实施例可以根据需要单独使用或者相互结合使用。另外,对于装置实施例而言,由于其是与方法实施例相对应,所以描述得比较简单,相关之处参见方法实施例的对应部分的说明即可。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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