一种优化分布式缓存的方法和装置制造方法及图纸

技术编号:24331111 阅读:34 留言:0更新日期:2020-05-29 19:38
本发明专利技术公开了一种优化分布式缓存的方法和装置,涉及计算机技术领域。该方法的一个具体实施方式包括:一级缓存达到最大数据量或者当前时间到达一级缓存的清洗时间,则将所述一级缓存内的部分缓存数据存入二级缓存;将所述部分缓存数据在所述一级缓存中的value值修改为所述部分缓存数据在所述二级缓存中的key值。该实施方式能够解决在大数据量和长时效需求下缓存降级策略带来的性能下降的技术问题。

【技术实现步骤摘要】
一种优化分布式缓存的方法和装置
本专利技术涉及计算机
,尤其涉及一种优化分布式缓存的方法和装置。
技术介绍
缓存的目的主要有以下两方面:1)提升性能:a)绝大多数情况下,SQL中的select语句是出现性能问题最大的地方。一方面,select语句会有很多像join、group、order、like等这样丰富的语义,而这些语义是非常耗性能的;另一方面,大多数应用都是读多写少,所以加剧了慢查询的问题;b)分布式系统中远程调用也会降低系统性能,因为有网络开销,会导致整体的响应时间延长。为了节省这样的性能开销,在业务允许的情况(不需要太实时的数据)下,使用缓存是非常有必要。2)缓解数据库压力:当用户请求增多时,数据库的压力将大大增加,通过缓存能够大大降低数据库的压力。分布式缓存是缓存中的一种,它使得进程间可以共享数据,增加了网络存取成本,降低了内存的使用量,是分布式系统中必不可少的模块,并且已经成为了高并发高性能架构的一个关键组件。磁盘相对CPU的高速缓存和内存来说,是一种慢输入输出(IO)设备,磁盘IO消耗在整个请求响应占比最大,特别是IO密集型计算和高并发情况下。为了提升效率和相应瞬时峰值,大部分系统会选择先将处理过程数据保存在内存缓冲区,异步再进行写入磁盘的操作。当内存缓冲区满时,需要等待落盘过程完成。目前,绝大多数系统都是使用内存对频繁使用的数据进行缓存,内存的大小决定了缓存的数据量。分布式系统的缓存数据范围越来越广,往往不只是本地数据库数据,还会包括大量的远程调用数据,特别是大数据的应用。缓存的数据量最终定会超出内存量,主流的缓存中间件会采用落盘或清理长期不使用的缓存等策略来避免内存堆栈溢出,这其实也是服务降级的保护机制。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:Redis是一个key-value存储系统。为了保证效率,数据都是缓存在内存中。Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,保证掉电重启后缓存能从磁盘文件恢复。Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、接口调用或者是页面渲染的结果。与Redis不同的是,它不支持持久化,也就是掉电重启后缓存不会恢复。分布式系统的缓存数据量需求非常大,寻求利益最大化,不能依赖于增加物理内存来达到目的。如果要提升缓存的性能,势必要采用磁盘落盘的方式来解决成本问题,毕竟磁盘成本远低于内存。如果要缓解数据库压力,势必要解决使用了磁盘之后的性能下降问题。但是,Memcached本身不支持数据持久化,掉电缓存即丢失,注定不能实现缓存的长时效。Redis采用数据落盘的策略,解决了缓存数据量超出物理内存限制的问题,也解决了长时效问题,但是存在服务降级时性能会下降的问题。
技术实现思路
有鉴于此,本专利技术实施例提供一种优化分布式缓存的方法和装置,以解决在大数据量和长时效需求下缓存降级策略带来的性能下降的技术问题。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种优化分布式缓存的方法,包括:若一级缓存达到最大数据量或者当前时间到达第一缓存的清洗时间,则将所述一级缓存内的部分缓存数据存入二级缓存;将所述部分缓存数据在所述一级缓存中的value值修改为所述部分缓存数据在所述二级缓存中的key值。可选地,所述一级缓存为内存型缓存,所述二级缓存为文档型缓存。可选地,所述内存型缓存为Redis或者Memcached,所述文档型缓存为MongoDB、Cassandra或ElasticSearch。可选地,一级缓存达到最大数据量,包括:一级缓存中的缓存数据达到最大个数,或者,一级缓存的已存储空间达到最大存储空间。可选地,将所述一级缓存内的部分缓存数据存入二级缓存,包括:分别计算所述一级缓存内的各个缓存数据的命中率;将命中率小于预设频率阈值的缓存数据存入二级缓存。可选地,还包括:接收并解析业务请求,得到key值;根据所述key值从所述一级缓存中获取所述key值对应的value值;若所述一级缓存中的value值为所述二级缓存中的key值,则从所述二级缓存中获取所述key值对应的value值,并返回所述二级缓存中的value值;否则,直接返回所述一级缓存中的value值。另外,根据本专利技术实施例的另一个方面,提供了一种优化分布式缓存的装置,包括:缓存模块,用于若一级缓存达到最大数据量或者当前时间到达第一缓存的清洗时间,则将所述一级缓存内的部分缓存数据存入二级缓存;优化模块,用于将所述部分缓存数据在所述一级缓存中的value值修改为所述部分缓存数据在所述二级缓存中的key值。可选地,所述一级缓存为内存型缓存,所述二级缓存为文档型缓存。可选地,所述内存型缓存为Redis或者Memcached,所述文档型缓存为MongoDB、Cassandra或ElasticSearch。可选地,一级缓存达到最大数据量,包括:一级缓存中的缓存数据达到最大个数,或者,一级缓存的已存储空间达到最大存储空间。可选地,所述缓存模块还用于:分别计算所述一级缓存内的各个缓存数据的命中率;将命中率小于预设频率阈值的缓存数据存入二级缓存。可选地,还包括获取模块,用于:接收并解析业务请求,得到key值;根据所述key值从所述一级缓存中获取所述key值对应的value值;若所述一级缓存中的value值为所述二级缓存中的key值,则从所述二级缓存中获取所述key值对应的value值,并返回所述二级缓存中的value值;否则,直接返回所述一级缓存中的value值。根据本专利技术实施例的另一个方面,还提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一实施例所述的方法。根据本专利技术实施例的另一个方面,还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例所述的方法。上述专利技术中的一个实施例具有如下优点或有益效果:因为采用将一级缓存内的部分缓存数据存入二级缓存,并将所述部分缓存数据在一级缓存中的value值修改为所述部分缓存数据在二级缓存中的key值的技术手段,所以克服了现有技术中在大数据量和长时效需求下缓存降级策略带来的性能下降的技术问题。本专利技术实施例对缓存分层,内存型缓存作为一级缓存,文档型缓存作为二级缓存。将本地落盘变成分布式落盘,提高落盘效率并保证检索速度。同时,分离了一级缓存和二级缓存的计算资源,命中一级缓存只在内存型缓存检索,命中二级缓存主要计算在文档型缓存,避免在同一节点进行密集计算。上述的非惯用的可选方式所具有的进一步效果将在本文档来自技高网
...

【技术保护点】
1.一种优化分布式缓存的方法,其特征在于,包括:/n若一级缓存达到最大数据量或者当前时间到达第一缓存的清洗时间,则将所述一级缓存内的部分缓存数据存入二级缓存;/n将所述部分缓存数据在所述一级缓存中的value值修改为所述部分缓存数据在所述二级缓存中的key值。/n

【技术特征摘要】
1.一种优化分布式缓存的方法,其特征在于,包括:
若一级缓存达到最大数据量或者当前时间到达第一缓存的清洗时间,则将所述一级缓存内的部分缓存数据存入二级缓存;
将所述部分缓存数据在所述一级缓存中的value值修改为所述部分缓存数据在所述二级缓存中的key值。


2.根据权利要求1所述的方法,其特征在于,所述一级缓存为内存型缓存,所述二级缓存为文档型缓存。


3.根据权利要求2所述的方法,其特征在于,所述内存型缓存为Redis或者Memcached,所述文档型缓存为MongoDB、Cassandra或ElasticSearch。


4.根据权利要求1所述的方法,其特征在于,一级缓存达到最大数据量,包括:
一级缓存中的缓存数据达到最大个数,或者,一级缓存的已存储空间达到最大存储空间。


5.根据权利要求1所述的方法,其特征在于,将所述一级缓存内的部分缓存数据存入二级缓存,包括:
分别计算所述一级缓存内的各个缓存数据的命中率;
将命中率小于预设频率阈值的缓存数据存入二级缓存。


6.根据权利要求1所述的方法,其特征在于,还包括:
接收并解析业务请求,得到key值;
根据所述key值从所述一级缓存中获取所述key值对应的value值;
若所述一级缓存中的value值为所述二级缓存中的key值,则从所述二级缓存中获取所述key值对应的value值,并返回所述二级缓存中的value值;
否则,直接返回所述一级缓存中的value值。


7.一种优化分布式缓存的装置,其特征在于,包括:
缓存模块,用于若一级缓存达到最大数据量或者当前时间到达第一缓存的清洗时间,则将所述一级缓存内的部分缓存数据存入二级缓存;
优化模块...

【专利技术属性】
技术研发人员:黄显龙
申请(专利权)人:中国建设银行股份有限公司建信金融科技有限责任公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1