[发明专利]一种异步延时加载缓存的方法在审
申请号: | 202011617787.8 | 申请日: | 2020-12-30 |
公开(公告)号: | CN112749195A | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 吕源星;陈灿坚 | 申请(专利权)人: | 广州凡科互联网科技股份有限公司 |
主分类号: | G06F16/2455 | 分类号: | G06F16/2455;G06F16/23;G06F16/27 |
代理公司: | 济宁众城专利事务所 37106 | 代理人: | 李效宁 |
地址: | 519000 广东省广州市海珠区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 异步 延时 加载 缓存 方法 | ||
本发明属于服务器数据缓存领域,涉及一种异步延时加载缓存的方法,该方法从客户端发出缓存请求之后依次经过延时缓存集群、业务服务集群,再到延时缓存集群,实现异步延时加载缓存。本发明通过缓存与业务服务的剥离,实现轻量化服务;通过ReentrantLock的等锁超时机制异步不阻塞的加载缓存,并且延时设置该缓存的有效期保证缓存服务的高性能和可用性,从而实现了异步延时加载缓存。
技术领域
本发明属于服务器数据缓存领域,涉及一种异步延时加载缓存的方法。
背景技术
通过服务器的内存作为缓存,同步阻塞的对缓存进行初始化和关系型查找。
同步阻塞的对缓存数据进行初始化,对于一些复杂关系型无法使用非关系型缓存(如reids)进行存储。
现有技术缺陷:
1.缓存初始化的时候需要阻塞等待,对服务器的性能和cpu都是很大的损耗。
2.对于复杂的关系型查询效率低,导致服务阻塞。
3.无法使用非关系型缓存(如redis)进行存储,导致服务和缓存无法剥离做成无状态轻量级服务。
4.服务器内存占用严重,经常触发gc影响性能。
发明内容
本发明针对上述的问题,提供了一种异步延时加载缓存的方法。
为了达到上述目的,本发明采用的技术方案为,
一种异步延时加载缓存的方法,该方法从客户端发出缓存请求之后依次经过延时缓存集群、业务服务集群,再到延时缓存集群,实现异步延时加载缓存,所述业务服务集群包括codis集群和mysql集群。
作为优选,具体包括以下步骤:
1)客户端发起缓存请求,并将该请求发送至延时缓存集群;
2)延时缓存集群会对该缓存库进行相同的该数据检测,若存在该数据,则返回客户端,若不存在该数据,则加载到业务服务集群;
3)业务服务集群中的codis集群和mysql集群则会对该数据进行加载,并将该加载数据返回给延时缓存集群,即完成缓存。
作为优选,延时缓存集群收到业务服务集群退回的数据后,可自定义设置过期时间。
作为优选,该数据在未过期的时间段内,客户端发起的该数据的缓存请求,都会无状态的去到延时缓存服务集群读取数据,其缓存服务集群则将该数据直接返回。
作为优选,该数据超过过期时间,采用被动加载的方式,等下一个客户端发起缓存请求过来时,才去做缓存的异步更新。
作为优选,其缓存更新期间则是通过ReentrantLock锁超时机制,完成上一次加载的数据做返回处理。
作为优选,另起一条线程定期清理超过过期时间且没再被访问的缓存数据。
作为优选,其另起一条线程则是通过java的new Thread创建线程,调用run方法轮询检测。
与现有技术相比,本发明的优点和积极效果在于,
1、本发明通过缓存与业务服务的剥离,实现轻量化服务;通过ReentrantLock的等锁超时机制异步不阻塞的加载缓存,并且延时设置该缓存的有效期保证缓存服务的高性能和可用性,从而实现了异步延时加载缓存。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州凡科互联网科技股份有限公司,未经广州凡科互联网科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011617787.8/2.html,转载请声明来源钻瓜专利网。