一种系统限流的方法和装置制造方法及图纸

技术编号:21914161 阅读:23 留言:0更新日期:2019-08-21 12:29
本发明专利技术公开了一种系统限流的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:接收数据请求,获取当前缓存模式;根据当前所述缓存模式,获取相应的缓存和/或数据库的最大并发数,并确定所述缓存和/或数据库当前已支持的并发数;根据所述缓存和/或数据库的最大并发数和当前已支持的并发数,在所述缓存和/或数据库中获取与所述数据请求相应的数据。该实施方式结合当前缓存模式的开关状态,采用不同的限流措施进行分别限流,无论缓存模式是否正常,系统都可以正常对外提供服务。

A Method and Device for System Current Limitation

【技术实现步骤摘要】
一种系统限流的方法和装置
本专利技术涉及计算机
,尤其涉及一种系统限流的方法和装置。
技术介绍
对于服务性系统的数据库查询接口,因为调用量比较大,所以加入数据缓存,并设定缓存过期后刷新。但系统严重依赖缓存,在没有缓存或者缓存过期的情况下,大量请求会穿透缓存直接查询数据库,给数据库带来极大地压力,尤其是业务高峰期,可能会造成雪崩效应。现有技术针对这一情况,通常采用多机房独立部署,即不同机房采用不同的缓存。例如,异地双机房独立部署,当一个机房出现故障时,可以使用另一个机房进行独立服务。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:(1)当各独立机房中的缓存同时出现故障时,系统需依赖数据库,否则仍无法对外提供服务,不能从根本上解决问题。(2)有些系统的启动没有对缓存进行隔离,启动都依赖缓存,但当缓存出现故障时,此时无法对系统进行启动操作,只有等待缓存恢复正常,这对于服务性系统造成的损失严重。
技术实现思路
有鉴于此,本专利技术实施例提供一种系统限流的方法和装置,至少能够解决现有技术中当缓存出现故障时系统服务压力大导致崩溃的现象。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种系统限流的方法,包括:接收数据请求,获取当前缓存模式;根据当前所述缓存模式,获取相应的缓存和/或数据库的最大并发数,并确定所述缓存和/或数据库当前已支持的并发数;根据所述缓存和/或数据库的最大并发数和相应的已支持的并发数,在所述缓存和/或数据库中获取与所述数据请求相应的数据。可选地,所述根据当前所述缓存模式,获取相应的缓存和/或数据库的最大并发数,并确定所述缓存和/或数据库当前已支持的并发数包括:当所述缓存模式当前为关闭状态时,获取所述数据库的第一最大并发数,并确定所述数据库当前第一已支持的并发数;所述根据所述缓存和/或数据库的最大并发数和相应的当前已支持的并发数,在所述缓存和/或数据库中获取与所述数据请求相应的数据包括:当所述数据库的第一最大并发数大于当前第一已支持的并发数时,在所述数据库中获取与数据请求相应的数据。可选地,所述根据当前所述缓存模式,获取相应的缓存和/或数据库的最大并发数,并确定所述缓存和/或数据库当前已支持的并发数包括:当所述缓存模式当前为开启状态时,获取相应的所述缓存的第二最大并发数以及所述数据库的第三最大并发数,并确定所述缓存当前第二已支持的并发数以及所述数据库当前第三已支持的并发数;所述根据所述缓存和/或数据库的最大并发数和相应的当前已支持的并发数,在所述缓存和/或数据库中获取与所述数据请求相应的数据包括:当所述缓存的第二最大并发数大于当前第二已支持的并发数时,在所述缓存中获取与所述数据请求相应的数据;当在所述缓存中未获取到与所述数据请求相应的数据,且所述数据库的第三最大并发数大于当前第三已支持的并发数时,在所述数据库中获取与所述数据请求相应的数据。可选地,在所述缓存中获取与所述数据请求相应的数据还包括:捕获所述缓存模式的异常,当在第一预定周期内捕获到的所述缓存模式的异常次数超出预定阈值时,按照预定切换方式切换所述缓存模式为关闭状态,同时确定在缓存中获取的数据为空。可选地,在所述预定切换方式切换所述缓存模式为关闭状态,同时确定在缓存中获取的数据为空之后,还包括:当在第二预定周期内检测到所述缓存模式恢复正常时,按照所述预定切换方式切换所述缓存模式为开启状态,同时将所捕获到的异常次数置0。可选地,在所述接收数据请求之前,还包括:当检测到系统无法访问异常日志时,确定所述系统当前处于启动状态,创建用于获取所述缓存模式的连接,同时捕获创建过程中所述缓存模式的异常;当捕获到所述缓存模式存在异常时,设置用于获取所述缓存模式的连接为空,同时设置所述缓存模式为关闭状态。为实现上述目的,根据本专利技术实施例的另一方面,提供了一种系统限流的装置,包括:接收模块,用于接收数据请求,获取当前缓存模式;确定模块,用于根据当前所述缓存模式,获取相应的缓存和/或数据库的最大并发数,并确定所述缓存和/或数据库当前已支持的并发数;获取模块,用于根据所述缓存和/或数据库的最大并发数和相应的已支持的并发数,在所述缓存和/或数据库中获取与所述数据请求相应的数据。可选地,所述确定模块还用于:当所述缓存模式当前为关闭状态时,获取所述数据库的第一最大并发数,并确定所述数据库当前第一已支持的并发数;所述获取模块还用于:当所述数据库的第一最大并发数大于当前第一已支持的并发数时,在所述数据库中获取与数据请求相应的数据。可选地,所述确定模块还用于:当所述缓存模式当前为开启状态时,获取相应的所述缓存的第二最大并发数以及所述数据库的第三最大并发数,并确定所述缓存当前第二已支持的并发数以及所述数据库当前第三已支持的并发数;所述获取模块还用于:当所述缓存的第二最大并发数大于当前第二已支持的并发数时,在所述缓存中获取与所述数据请求相应的数据;当在所述缓存中未获取到与所述数据请求相应的数据,且所述数据库的第三最大并发数大于当前第三已支持的并发数时,在所述数据库中获取与所述数据请求相应的数据。可选地,所述获取模块还用于:捕获所述缓存模式的异常,当在第一预定周期内捕获到的所述缓存模式的异常次数超出预定阈值时,按照预定切换方式切换所述缓存模式为关闭状态,同时确定在缓存中获取的数据为空。可选地,还包括检验模块,还用于当在第二预定周期内检测到所述缓存模式恢复正常时,按照所述预定切换方式切换所述缓存模式为开启状态,同时将所捕获到的异常次数置0。可选地,还包括启动模块,用于当检测到系统无法访问异常日志时,确定所述系统当前处于启动状态,创建用于获取所述缓存模式的连接,同时捕获创建过程中所述缓存模式的异常;当捕获到所述缓存模式存在异常时,设置用于获取所述缓存模式的连接为空,同时设置所述缓存模式为关闭状态。为实现上述目的,根据本专利技术实施例的再一方面,提供了一种系统限流的电子设备。本专利技术实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一所述的系统限流的方法。为实现上述目的,根据本专利技术实施例的再一方面,提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现上述任一所述的系统限流的方法。根据本专利技术所述提供的方案,上述专利技术中的一个实施例具有如下优点或有益效果:结合当前缓存模式的开关状态,采用不同的限流措施进行分别限流,无论缓存模式是否正常,系统都可以正常对外提供服务,维护了系统的正常运行。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是根据本专利技术实施例的一种系统限流的方法的主要流程示意图;图2是根据本专利技术实施例的一种可选的系统限流的方法的流程示意图;图3是根据本专利技术实施例的另一种可选的系统限流的方法的流程示意图;图4是根据本专利技术实施例的又一种可选的系统限流的方法的流程示意图;图5是根据本专利技术实施例的又一种可选的系统限流的方法的流程示意图;图6是根据本专利技术实施例的再一种可选的系统限流的方法的流程示意图;图7是根据本专利技术实施例的再一种可选的系统限流的方本文档来自技高网...

【技术保护点】
1.一种系统限流的方法,其特征在于,包括:接收数据请求,获取当前缓存模式;根据当前所述缓存模式,获取相应的缓存和/或数据库的最大并发数,并确定所述缓存和/或数据库当前已支持的并发数;根据所述缓存和/或数据库的最大并发数和相应的当前已支持的并发数,在所述缓存和/或数据库中获取与所述数据请求相应的数据。

【技术特征摘要】
1.一种系统限流的方法,其特征在于,包括:接收数据请求,获取当前缓存模式;根据当前所述缓存模式,获取相应的缓存和/或数据库的最大并发数,并确定所述缓存和/或数据库当前已支持的并发数;根据所述缓存和/或数据库的最大并发数和相应的当前已支持的并发数,在所述缓存和/或数据库中获取与所述数据请求相应的数据。2.根据权利要求1所述的方法,其特征在于,所述根据当前所述缓存模式,获取相应的缓存和/或数据库的最大并发数,并确定所述缓存和/或数据库当前已支持的并发数包括:当所述缓存模式当前为关闭状态时,获取所述数据库的第一最大并发数,并确定所述数据库当前第一已支持的并发数;所述根据所述缓存和/或数据库的最大并发数和相应的当前已支持的并发数,在所述缓存和/或数据库中获取与所述数据请求相应的数据包括:当所述数据库的第一最大并发数大于当前第一已支持的并发数时,在所述数据库中获取与数据请求相应的数据。3.根据权利要求1所述的方法,其特征在于,所述根据当前所述缓存模式,获取相应的缓存和/或数据库的最大并发数,并确定所述缓存和/或数据库当前已支持的并发数包括:当所述缓存模式当前为开启状态时,获取相应的所述缓存的第二最大并发数以及所述数据库的第三最大并发数,并确定所述缓存当前第二已支持的并发数以及所述数据库当前第三已支持的并发数;所述根据所述缓存和/或数据库的最大并发数和相应的当前已支持的并发数,在所述缓存和/或数据库中获取与所述数据请求相应的数据包括:当所述缓存的第二最大并发数大于当前第二已支持的并发数时,在所述缓存中获取与所述数据请求相应的数据;当在所述缓存中未获取到与所述数据请求相应的数据,且所述数据库的第三最大并发数大于当前第三已支持的并发数时,在所述数据库中获取与所述数据请求相应的数据。4.根据权利要求3所述的方法,其特征在于,在所述缓存中获取与所述数据请求相应的数据还包括:捕获所述缓存模式的异常,当在第一预定周期内捕获到的所述缓存模式的异常次数超出预定阈值时,按照预定切换方式切换所述缓存模式为关闭状态,同时确定在缓存中获取的数据为空。5.根据权利要求4所述的方法,其特征在于,在所述按照预定切换方式切换所述缓存模式为关闭状态,同时确定在缓存中获取的数据为空之后,还包括:当在第二预定周期内检测到所述缓存模式恢复正常时,按照所述预定切换方式切换所述缓存模式为开启状态,同时将所捕获到的异常次数置0。6.根据权利要求1所述的方法,其特征在于,在所述接收数据请求之前,还包括:当检测到系统无法访问异常日志时,确定所述系统当前处于启动状态,创建用于获取所述缓存模式的连接,同时捕获创建过程中所述缓存模式的异常;当捕获到所述缓存模式存在异...

【专利技术属性】
技术研发人员:干天星
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1