缓存健康度检测方法及装置制造方法及图纸

技术编号:13179011 阅读:41 留言:0更新日期:2016-05-11 10:33
本发明专利技术提供一种缓存健康度检测方法及装置,所述方法包括:每一预设周期,若服务器未处于满负载状态,则在服务器的访问请求中抽取至少一个作为抽样请求;将抽样请求通过异步线程查询服务器的数据库和缓存中的数据,得到相对应的原始数据和缓存数据;比对上述缓存数据和原始数据,并根据比对结果判断缓存健康度。本发明专利技术的缓存健康度检测方法及装置,在高并发查询请求且不改变系统整体负载的前提下,可实时的进行抽样,并根据抽样请求获取数据库和缓存中的数据,以判断缓存的健康度,如此,即可在缓存和数据库中数据不一致时,即时发现问题。

【技术实现步骤摘要】

本专利技术涉及计算机领域,尤其是涉及一种缓存健康度检测方法及装置
技术介绍
分布式缓存在当今互联网中有着广泛的运用。常见的分布式缓存,如:Redis,Memcache,Tair等,在对于并发查询压力较大的应用场景,分布式缓存发挥了极其重要的作用。但是,在一些对缓存一致性要求特别高的场合,如:用户在支付宝的账务流水交易记录等场景中,如果缓存的数据与实际不一致,会导致用户从缓存中返回的查询数据不完整或不准确,从而引起用户的疑惑或用户投诉等。目前,通常在更新缓存和数据库时,仅仅从保存缓存和数据库的源头保证数据的一致性来保证两者更新完全一致。相应的,当缓存操作失败,采用数据库对应的本地事务回滚来解决缓存与数据库一致性的问题。然而,该种方式在出现不可预见因素时,无法保证缓存与数据库的数据一致性。例如:缓存服务器意外重启或者缓存数据被意外踢出等情况,都会使得查询请求从缓存中得到的数据不完整或与实际数据存在一定差异,此种差异的出现对缓存一致性要求很高的应用场合,是无法接受的。然而,现有技术无法对缓存健康度做有效地实时监控,进而当出现类似上述不可预见因素发生时,无法及时解决发现问题,导致整个系统出错概率很高,严重影响用户使用。
技术实现思路
本专利技术的目的之一在于提供一种缓存健康度检测方法及装置。为实现上述专利技术目的之一,本专利技术一实施方式提供了一种缓存健康度检测方法,其包括:每一预设周期,若服务器未处于满负载状态,则在服务器的访问请求中抽取至少一个作为抽样请求;将抽样请求通过异步线程查询服务器的数据库和缓存中的数据,得到相对应的原始数据和缓存数据;比对上述缓存数据和原始数据,并根据比对结果判断缓存健康度。作为本专利技术一实施方式的进一步改进,所述“每一预设周期,若服务器未处于满负载状态,则在服务器的访问请求中抽取至少一个作为抽样请求”具体包括:每一预设周期,根据所述服务器的负载获取对应所述负载的抽样比例,并根据所述抽样比例以及访问的请求数量计算抽样请求的数量;其中,服务器负载越高,抽样比例越低;服务器负载越低,抽样比例越高。作为本专利技术一实施方式的进一步改进,抽样请求的数量=所述抽样比例*访问请求的数量;所述抽样比例=1-服务器当前负载百分比,若所述服务器当前负载百分比大于或等于1,则表示所述服务器处于满负载状态,不进行抽样。作为本专利技术一实施方式的进一步改进,所述服务器的当前负载百分比=R1*CPU负载+R2*内存负载+R3*IO负载+R4*网络负载,其中,R1、R2、R3、R4为相应参数的权重值,所述R1>R2>R3。作为本专利技术一实施方式的进一步改进,所述CPU负载为:服务器当前的CPU负载/(服务器的CPU核数*单核CPU的负载基准值);所述内存负载为:服务器当前的内存负载/内存的负载基准值;所述IO负载为:服务器当前的IO负载/IO的负载基准值;所述网络负载为:服务器当前的网络负载/网络的负载基准值。作为本专利技术一实施方式的进一步改进,所述方法还包括:若所述缓存数据和所述原始数据相同,则表示缓存健康度良好;若所述缓存数据和所述原始数据不相同,则依据所述原始数据更新所述缓存数据。为实现上述专利技术目的之一,本专利技术一实施方式提供了一种缓存健康度检测装置,其包括:抽样模块,用于在每一预设周期,若服务器未处于满负载状态,则在服务器的访问请求中抽取至少一个作为抽样请求;查询模块,用于将抽样请求通过异步线程查询服务器的数据库和缓存中的数据,得到相对应的原始数据和缓存数据;比对模块,用于比对上述缓存数据和原始数据,并根据比对结果判断缓存健康度。作为本专利技术一实施方式的进一步改进,所述抽样模块用于:每一预设周期,根据所述服务器的负载获取对应所述负载的抽样比例,并根据所述抽样比例以及访问请求的数量计算抽样请求的数量;其中,服务器负载越高,抽样比例越低;服务器负载越低,抽样比例越高。作为本专利技术一实施方式的进一步改进,抽样请求的数量=所述抽样比例*访问请求的数量;所述抽样比例=1-服务器当前负载百分比,若所述服务器当前负载百分比大于或等于1,则表示所述服务器处于满负载状态,不进行抽样。作为本专利技术一实施方式的进一步改进,所述服务器的当前负载百分比=R1*CPU负载+R2*内存负载+R3*IO负载+R4*网络负载,其中,R1、R2、R3、R4为相应参数的权重值,所述R1>R2>R3。作为本专利技术一实施方式的进一步改进,所述CPU负载为:服务器当前的CPU负载/(服务器的CPU核数*单核CPU的负载基准值);所述内存负载为:服务器当前的内存负载/内存的负载基准值;所述IO负载为:服务器当前的IO负载/IO的负载基准值;所述网络负载为:服务器当前的网络负载/网络的负载基准值。作为本专利技术一实施方式的进一步改进,所述比对模块还用于判断所述缓存数据和所述原始数据是否相同,若所述缓存数据和所述原始数据相同,则表示缓存健康度良好;若所述缓存数据和所述原始数据不相同,则依据所述原始数据更新所述缓存数据。与现有技术相比,本专利技术的有益效果是:本专利技术的缓存健康度检测方法及装置,在高并发查询请求且不改变系统整体负载的前提下,可实时的进行抽样,并根据抽样请求获取数据库和缓存中的数据,以判断缓存的健康度,如此,即可在缓存和数据库中数据不一致时,即时发现问题。附图说明图1是本专利技术一实施方式中缓存健康度检测方法的流程图;图2是本专利技术一实施方式中影响服务器当前负载百分比的各种主要的参数列表;图3是本专利技术一实施方式的缓存健康度检测装置的模块图。具体实施方式以下将结合附图所示的各实施方式对本专利技术进行详细描述。但这些实施方式并不限制本专利技术,本领域的普通技术人员根据这些实施方式所轻易做出的结构、方法、或功能上的变换均包含在本专利技术的保护范围内。一般地,缓存是将数据以key-value的形式存储在相对较高访问速度存储介质的Hash表中,以便于在查询数据时,只需要从存储介质中根据Key获取对应的Value。存储于缓存中的数据具有访问速度快、数据易丢失等特点。所述健康度指缓存中的数据与实际数据库的数据一致性的比例。当缓存中的数据与实际数据库的数据完全一致时,则健康度为百分之百,相应的,所述缓存的健康度是衡量缓存数据有效性的重要指标。如图1所示,在本专利技术一实施方式中本文档来自技高网...

【技术保护点】
一种缓存健康度检测方法,其特征在于,所述方法包括:每一预设周期,若服务器未处于满负载状态,则在服务器的访问请求中抽取至少一个作为抽样请求;将抽样请求通过异步线程查询服务器的数据库和缓存中的数据,得到相对应的原始数据和缓存数据;比对上述缓存数据和原始数据,并根据比对结果判断缓存健康度。

【技术特征摘要】
1.一种缓存健康度检测方法,其特征在于,所述方法包括:
每一预设周期,若服务器未处于满负载状态,则在服务器的访问请求中抽
取至少一个作为抽样请求;
将抽样请求通过异步线程查询服务器的数据库和缓存中的数据,得到相对
应的原始数据和缓存数据;
比对上述缓存数据和原始数据,并根据比对结果判断缓存健康度。
2.根据权利要求1所述的缓存健康度检测方法,其特征在于,所述“每一
预设周期,若服务器未处于满负载状态,则在服务器的访问请求中抽取至少一
个作为抽样请求”具体包括:
每一预设周期,根据所述服务器的负载获取对应所述负载的抽样比例,并
根据所述抽样比例以及访问请求的数量计算抽样请求的数量;其中,服务器负
载越高,抽样比例越低;服务器负载越低,抽样比例越高。
3.根据权利要求2所述的缓存健康度检测方法,其特征在于,抽样请求的
数量=所述抽样比例*访问请求的数量;
所述抽样比例=1-服务器当前负载百分比,若所述服务器当前负载百分比大
于或等于1,则表示所述服务器处于满负载状态,不进行抽样。
4.根据权利要求3所述的缓存健康度检测方法,其特征在于,所述服务器
的当前负载百分比=R1*CPU负载+R2*内存负载+R3*IO负载+R4*网络负载,其
中,R1、R2、R3、R4为相应参数的权重值,所述R1>R2>R3。
5.根据权利要求4所述的缓存健康度检测方法,其特征在于,
所述CPU负载为:服务器当前的CPU负载/(服务器的CPU核数*单核CPU
的负载基准值);
所述内存负载为:服务器当前的内存负载/内存的负载基准值;
所述IO负载为:服务器当前的IO负载/IO的负载基准值;
所述网络负载为:服务器当前的网络负载/网络的负载基准值。
6.根据权利要求1所述的缓存健康度检测方法,其特征在于,所述方法还
包括:
若所述缓存数据和所述原始数据相同,则表示缓存健康度良好;
若所述缓存数据和所述原始数据不相同,则依据所述原始数据更新所述缓
存数据。
7....

【专利技术属性】
技术研发人员:湛滨瑜于君泽
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1