[发明专利]一种分布式限流方法有效

专利信息
申请号: 202011479920.8 申请日: 2020-12-15
公开(公告)号: CN112637082B 公开(公告)日: 2023-03-31
发明(设计)人: 康少雄;江海龙;吴海波;郭倩;李兆楠 申请(专利权)人: 银盛支付服务股份有限公司
主分类号: H04L47/20 分类号: H04L47/20;H04L47/215
代理公司: 深圳市深可信专利代理有限公司 44599 代理人: 刘昌刚
地址: 518000 广东省深圳市龙华*** 国省代码: 广东;44
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 分布式 限流 方法
【权利要求书】:

1.一种分布式限流方法,其特征在于:包括以下的步骤:

S1、调用方调用尝试限流tryAcquire方法限流,输入方法入参信息,方法入参信息包括第一限流关键字key、第一限流时间limitTime、第一限流时间内最大限流数limitMax、第一当前获取流量个数acquireNum和第一尝试等待时间tryTimeMills;

S2、使用System.currentTimeMillis()获取当前系统毫秒时间,记为尝试限流开始时间tryStartTime,System.currentTimeMillis()即Java提供的API,其作用是返回毫秒为单位的当前系统时间;

S3、组装限流key;所述步骤S3,包括以下的步骤:

S31、使用System.currentTimeMillis()获取当前系统时间毫秒值,记为当前限流时间curLimitTime;

S32、将第一限流时间limitTime乘以1000,得到第一限流时间limitTime的毫秒值;

S33、使用当前限流时间curLimitTime除以第一限流时间limitTime的毫秒值,得到当前系统时间所属的限流区间值;

S34、使用第一限流关键字key加上当前系统时间所属的限流区间值,得到限流key;

S4、采用Redis执行Lua脚本,获取返回值;

S5、判断获取的返回值是否等于1,当返回值等于1时,则返回true给目标业务,即放行;当返回值不等于1时,则返回false给目标业务,即限流;

所述步骤S5,当返回值不等于1时,使用System.currentTimeMillis()获取当前系统毫秒时间,记为尝试限流结束时间tryEndTime,用尝试限流结束时间tryEndTime减去尝试限流开始时间tryStartTime得到尝试限流总耗时,判断尝试限流总耗时是否小于第一尝试等待时间tryTimeMills,当尝试限流总耗时小于第一尝试等待时间tryTimeMills时,则调用线程睡眠Thread.sleep(50)方法,让当前线程限时等待50毫秒后,跳转至步骤S3;当尝试限流总耗时大于或等于第一尝试等待时间tryTimeMills时,则返回false给目标业务,即限流。

2.如权利要求1所述的一种分布式限流方法,其特征在于:所述步骤S4,包括以下的步骤:

S41、获取Lua脚本入参信息,Lua脚本入参信息包括第二限流关键字key、第二限流时间内最大限流数limitMax、第二限流时间limitTime和第二当前获取流量个数acquireNum;

S42、使用Lua脚本执行Redis的GET指令,获取当前第二限流关键字key累计值,记为current,如果第二限流关键字key存在,则返回累计值给current;如果第二key不存在,则默认第二key累计值为0;

S43、判断current加上第二当前获取流量个数acquireNum的和是否大于第二限流时间内最大限流数limitMax,当current加上第二当前获取流量个数acquireNum的和大于第二限流时间内最大限流数limitMax时,则Lua脚本执行结束,获取返回值0,跳转至步骤S5;当current加上第二当前获取流量个数acquireNum的和小于或等于第二限流时间内最大限流数limitMax时,则跳转至步骤S44;

S44、使用Lua脚本执行Redis的Incyby指令,将当前第二限流关键字key累计值加上第二当前获取流量个数acquireNum;

S45、使用Lua脚本执行Redis的TTL指令,获取当前第二限流关键字key的剩余过期时间,当剩余过期时间值小于0时,则执行Redis的Expire指令,设置当前第二限流关键字key的过期时间为第二限流时间limitTime加上2,获取返回值1;当剩余过期时间值大于或等于0时,则直接获取返回值1。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于银盛支付服务股份有限公司,未经银盛支付服务股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202011479920.8/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top