System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术实施例涉及业务限流,尤其涉及一种业务访问限流方法、装置、计算机设备及介质。
技术介绍
1、限流是一种非常重要的服务保护机制,它可以确保系统在高负载情况下依然能够稳定运行,防止因流量突增导致的服务崩溃。目前常见的限流策略有:固定窗口计数器、滑动窗口限流、漏桶算法、令牌桶算法以及分布式限流等。其中,漏桶算法通过固定速率流出请求的方式,使流出速率始终保持一致,用以实现平滑地处理突发流量。令牌桶算法则允许一定程度的突发流量,同时系统以固定速率生成令牌,请求需要持有令牌才能被处理,若令牌不足则拒绝服务。在分布式限流中,需要设定一种机制来协调不同服务实施例的限流策略,以确保整体系统的稳定性。
2、然而,专利技术人意识到,目前的常见的限流策略难以进行统一管理配置,且普遍存在不易维护、难以统计、共用限流器风险等问题。
技术实现思路
1、本申请针对上述不足或缺点,本申请提供了一种业务访问限流方法、装置、计算机设备及介质。本申请通过在业务代码执行前,拦截预设了类级别、嵌入方法级别限流注解的限流代码的方式,实现了限流器的统一管理,提高代码维护的便利性,避免了共用限流器的风险。
2、本申请根据第一方面提供了一种业务访问限流方法,该方法包括:
3、接收业务请求,确定用于响应业务请求的目标业务代码;
4、若目标业务代码属于限流代码,在目标业务代码执行之前进行拦截;限流代码是指预设了类级别的限流注解和/或嵌入方法级别的限流注解的方法代码;
5
6、使用目标限流器执行限流操作。
7、在一些实施例中,当目标业务代码被设置的限流注解是类级别的限流注解时,目标限流器为针对目标业务代码对应的类代码设置的第一限流器;
8、当限流注解是嵌入方法级别的限流注解时,目标限流器为针对目标业务代码设置的第二限流器;
9、当限流注解是类级别的限流注解和嵌入方法级别的限流注解时,目标限流器包括第一限流器和第二限流器。
10、在一些实施例中,使用目标限流器执行限流操作,该方法包括:
11、当目标业务代码被设置的限流注解是类级别的限流注解和嵌入方法级别的限流注解时,使用第一限流器进行限流检查;
12、当检查通过时,使用第二限流器再次进行限流检查,当检查再次通过时,执行目标业务代码。
13、在一些实施例中,在单线程环境下,使用第二限流器再次进行限流检查时所使用的最大限流值等于使用第一限流器进行限流检查时所使用的最大限流值;
14、在多线程环境下,使用第二限流器再次进行限流检查时所使用的最大限流值小于使用第一限流器进行限流检查时所使用的最大限流值。
15、在一些实施例中,该方法还包括:
16、在项目启动时,读取项目配置文件中设置的限流配置信息,根据限流配置信息确定所有设有限流注解的方法代码,以及每一设有限流注解的方法代码对应的限流器;
17、以每一设有限流注解的方法代码对应的方法标识和类标识为键,对应的限流器为值生成限流器集合。
18、在一些实施例中,确定与目标业务代码对应的方法标识和类标识匹配的目标限流器,该方法包括:
19、将目标业务代码对应的方法标识和类标识进行组装,得到目标键值;
20、从限流器集合中查询与目标键值匹配的限流器,将与目标键值匹配的限流器作为目标限流器。
21、在一些实施例中,在使用第一限流器或第二限流器进行限流检查时,该方法还包括:
22、检查当前的业务流量是否大于当前使用的最大限流值;
23、若是,则判定为检查不通过,执行预设的限流策略;限流策略为等待限流或抛异常;
24、若否,则判定为检查通过。
25、本申请根据第二方面提供了一种业务访问的限流装置,该限流装置包括:
26、业务代码获取模块,用于接收业务请求,确定用于响应业务请求的目标业务代码;
27、限流代码拦截模块,用于当目标业务代码属于限流代码时,在目标业务代码执行之前进行拦截;限流代码是指预设了类级别的限流注解和/或嵌入方法级别的限流注解的方法代码;
28、限流器匹配模块,用于确定与目标业务代码对应的方法标识和类标识匹配的目标限流器;
29、限流执行模块,用于使用目标限流器执行限流操作。
30、本申请根据第三方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中任一项业务访问限流方法的步骤。
31、本申请根据第四方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中任一项业务访问限流方法的步骤。
32、上述实施例的方法可以应用于用于处理业务请求的业务服务器,业务服务器在接收到业务请求时,会确定用于响应业务请求的目标业务代码,然后判断该目标业务代码是否预设有类级别的限流注解和/或嵌入方法级别的限流注解,以确定该目标业务代码是否属于限流代码。若目标业务代码属于限流代码,则在目标业务代码执行之前通过面向切面编程spring aop(spring aspect-oriented programming)功能执行拦截操作,接着确定与目标业务代码对应的方法标识和类标识匹配的目标限流器,并使用目标限流器执行限流操作,通过这样的方式,实现了限流器的统一管理,提高代码维护的便利性。并由于在项目启动时,还会生成限流器集合以便于后续根据目标键值匹配的目标限流器,通过这样的方式,进一步地避免了共用限流器的风险。
本文档来自技高网...【技术保护点】
1.一种业务访问限流方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,当所述目标业务代码被设置的限流注解是类级别的限流注解时,所述目标限流器为针对所述目标业务代码对应的类代码设置的第一限流器;
3.根据权利要求2所述的方法,其特征在于,使用所述目标限流器执行限流操作,包括:
4.根据权利要求3所述的方法,其特征在于,在单线程环境下,使用所述第二限流器再次进行限流检查时所使用的最大限流值等于使用所述第一限流器进行限流检查时所使用的最大限流值;
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,确定与所述目标业务代码对应的方法标识和类标识匹配的目标限流器,包括:
7.根据权利要求3所述的方法,其特征在于,在使用所述第一限流器或所述第二限流器进行限流检查时,所述方法还包括:
8.一种业务访问的限流装置,其特征在于,该限流装置包括:
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
...【技术特征摘要】
1.一种业务访问限流方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,当所述目标业务代码被设置的限流注解是类级别的限流注解时,所述目标限流器为针对所述目标业务代码对应的类代码设置的第一限流器;
3.根据权利要求2所述的方法,其特征在于,使用所述目标限流器执行限流操作,包括:
4.根据权利要求3所述的方法,其特征在于,在单线程环境下,使用所述第二限流器再次进行限流检查时所使用的最大限流值等于使用所述第一限流器进行限流检查时所使用的最大限流值;
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方...
【专利技术属性】
技术研发人员:张名文,
申请(专利权)人:北京白龙马云行科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。