[发明专利]支持动态配置细粒度流控方法和系统在审
| 申请号: | 202211325694.7 | 申请日: | 2022-10-27 | 
| 公开(公告)号: | CN115801688A | 公开(公告)日: | 2023-03-14 | 
| 发明(设计)人: | 韦成强;徐重振 | 申请(专利权)人: | 兴业银行股份有限公司;兴业数字金融服务(上海)股份有限公司 | 
| 主分类号: | H04L47/215 | 分类号: | H04L47/215;H04L47/20 | 
| 代理公司: | 上海段和段律师事务所 31334 | 代理人: | 郭国中 | 
| 地址: | 350014 福建省福州*** | 国省代码: | 福建;35 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 支持 动态 配置 细粒度 方法 系统 | ||
1.一种支持动态配置细粒度流控方法,其特征在于,包括:
流控核心步骤:拦截经过前台系统的业务请求,获取当前业务请求的接口地址;判断所述接口地址判断是否需要流控限制;
若需要流控,则根据配置数据指示的令牌桶策略获取令牌;若令牌获取成功,则继续处理业务请求的业务逻辑;若令牌没有获取成功,则阻断业务请求;
若不需要流控,则继续处理业务请求的业务逻辑。
2.根据权利要求1所述的支持动态配置细粒度流控方法,其特征在于,在所述流控核心步骤中:
根据业务请求生成相应的url地址,根据url地址查询配置数据,查询相应的入口方法是否有流控注解,若有流控注解,则认为需要流控,否则,则认为不需要流控;
根据配置数据的令牌桶类型获取相应的令牌桶策略,并按照配置数据中令牌桶限制类型和请求地址生成对应的令牌桶关键字key,在当前令牌桶策略中获取令牌;其中,令牌桶类型包括本地令牌桶、redis令牌桶;
阻断请求后,返回相应的流控提示信息给前台系统的前台页面。
3.根据权利要求2所述的支持动态配置细粒度流控方法,其特征在于,还包括:
流控注解步骤:在前台系统使用流控注解,来标注需要流控的业务页面入口方法,前台系统启动时,扫描代码中的入口方法,若当前入口方法被标注,则加入到强制注解配置流控清单中,从而获取到前台系统所有强制流控的清单,将强制流控的清单数据放到内存中;所述注解包含流控类型;所述流控类型包括请求地址、IP、客户号、设备号这些细粒度类型可选,以指定流控粒度;其中,客户号、IP分别限制客户、IP的请求频率,每个客户都有各自对于接口的独立令牌桶,以用于每个客户的请求流控;
流控配置步骤:在后台系统通过独立配置菜单进行接口流控配置,提供流控接口配置及流程策略配置;实现流程策略配置与流控接口的动态绑定,并将流程策略配置与流控接口绑定关系持久化;
流控日志步骤:通过流控日志记录流控请求地址、IP、用户信息的参数。
4.根据权利要求2所述的支持动态配置细粒度流控方法,其特征在于,获取令牌的步骤包括:
步骤S1:调用lua脚本,传入参数,所述参数包括:令牌生成速率rate、令牌桶数量capacity、当前时间戳now、请求令牌数量requested、令牌桶关键字key,并在远程字典服务redis执行lua脚本;
步骤S2:根据所述传入参数,通过令牌桶数量capacity和令牌生成速率rate,计算达到最大数量所需时长fill_time:
fill_time=capacity/rate
通过达到最大数量所需时长fill_time*2后设置为相应的令牌桶关键字key失效时间ttl:
ttl=fill_time*2
通过令牌桶关键字key在远程字典服务redis查询当前令牌桶数量last_tokens;如果查询为空,则赋值当前令牌桶数量last_tokens为令牌桶数量capacity;
通过令牌桶关键字key在远程字典服务redis查询当前令牌桶最后更新时间戳last_refreshed;若为空,则赋值当前令牌桶最后更新时间戳last_refreshed为0;
步骤S3:通过所述当前令牌桶最后更新时间戳last_refreshed和所述当前时间戳now,计算出调用时间间隔delta:
delta=math.max(0,now-last_refreshed)
其中,函数math.max()表示取最大值;
步骤S4:通过所述令牌桶数量capacity、令牌生成速率rate、当前令牌桶数量last_tokens、调用时间间隔delta,计算得出最终需要添加到令牌桶的令牌数filled_tokens:
filled_tokens=math.min(capacity,last_tokens+(delta*rate))
其中,函数math.min()表示取最小值;
步骤S5:通过所述请求令牌数量requested、最终需要添加到令牌桶的令牌数filled_tokens进行大小比对,得出比对结果allowed:
如果最终需要添加到令牌桶的令牌数filled_tokens大于等于请求令牌数量requested,则标记为可获得令牌,并计算当前令牌桶数量last_tokens:
last_tokens=filled_tokens-requested
如果最终需要添加到令牌桶的令牌数filled_tokens小于请求令牌数量requested,则标记为获取令牌失败,赋值last_tokens=filled_tokens;
步骤S6:将剩余令牌数last_tokens和当前时间戳now存入远程字典服务redis,并设置失效时间为所述令牌桶关键字key失效时间ttl。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于兴业银行股份有限公司;兴业数字金融服务(上海)股份有限公司,未经兴业银行股份有限公司;兴业数字金融服务(上海)股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211325694.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种测具样板三维轮廓检测方法
 - 下一篇:雷达航迹撤销小搜波位的选择方法和系统
 





