一种分布式限流方法技术

技术编号:28045886 阅读:34 留言:0更新日期:2021-04-09 23:30
本发明专利技术提供了一种分布式限流方法,包括以下步骤:S1、调用方调用尝试限流tryAcquire方法限流,输入方法入参信息;S2、使用System.currentTimeMillis()获取当前系统毫秒时间,记为尝试限流开始时间tryStartTime;S3、组装限流key;S4、采用Redis执行Lua脚本,获取返回值;S5、判断获取的返回值是否等于1,当返回值等于1时,则返回true给目标业务,即放行;当返回值不等于1时,则返回false给目标业务,即限流。实现了业务接口的限流,有效屏蔽异常请求,降低系统负载,实现了调用外部接口的分布式限流控制,降低系统负载,提升系统可用性,提升接口成功率。

【技术实现步骤摘要】
一种分布式限流方法
本专利技术涉及流量管理
,具体的,本专利技术涉及一种分布式限流方法。
技术介绍
现有业务系统仅支持接入层限流,比如通过Array硬件负载均衡或Nginx负载均衡,配置单IP在单位时间内的应用访问次数限制,例如每个ip的应用访问次数限制在300次/s。但业务接口缺乏限制,致使恶意请求或无用请求过多时会导致系统负载高,甚至出现宕机风险。部分第三方接口如微信特约商户报备,限制接口每秒调用1次,报备系统一般采用分布式部署,必须采用分布式限流方案,控制请求速率,降低系统负载。现有系统业务限流方案如Guava和Hystrix等仅支持单机令牌桶和漏桶算法限流,Sentinel虽支持分布式限流,但需要集群部署,部署复杂度高,实现原理复杂,可控性低。
技术实现思路
为了克服现有技术的不足,本专利技术提供了一种分布式限流方法,以解决上述的技术问题。本专利技术解决其技术问题所采用的技术方法是:一种分布式限流方法,其改进之处在于:包括以下的步骤:S1、调用方调用尝试限流tryAcquire方法限流,输入方法本文档来自技高网...

【技术保护点】
1.一种分布式限流方法,其特征在于:包括以下的步骤:/nS1、调用方调用尝试限流tryAcquire方法限流,输入方法入参信息,方法入参信息包括但不限于第一限流关键字key、第一限流时间limitTime、第一限流时间内最大限流数limitMax、第一当前获取流量个数acquireNum和第一尝试等待时间tryTimeMills;/nS2、使用System.currentTimeMillis()获取当前系统毫秒时间,记为尝试限流开始时间tryStartTime,System.currentTimeMillis()即Java提供的API,其作用是返回毫秒为单位的当前系统时间;/nS3、组装限流k...

【技术特征摘要】
1.一种分布式限流方法,其特征在于:包括以下的步骤:
S1、调用方调用尝试限流tryAcquire方法限流,输入方法入参信息,方法入参信息包括但不限于第一限流关键字key、第一限流时间limitTime、第一限流时间内最大限流数limitMax、第一当前获取流量个数acquireNum和第一尝试等待时间tryTimeMills;
S2、使用System.currentTimeMillis()获取当前系统毫秒时间,记为尝试限流开始时间tryStartTime,System.currentTimeMillis()即Java提供的API,其作用是返回毫秒为单位的当前系统时间;
S3、组装限流key;
S4、采用Redis执行Lua脚本,获取返回值;
S5、判断获取的返回值是否等于1,当返回值等于1时,则返回true给目标业务,即放行;当返回值不等于1时,则返回false给目标业务,即限流。


2.如权利要求1所述的一种分布式限流方法,其特征在于:所述步骤S3,包括以下的步骤:
S31、使用System.currentTimeMillis()获取当前系统时间毫秒值,记为当前限流时间curLimitTime;
S32、将第一限流时间limitTime乘以1000,得到第一限流时间limitTime的毫秒值;
S33、使用当前限流时间curLimitTime除以第一限流时间limitTime的毫秒值,得到当前系统时间所属的限流区间值;
S34、使用第一限流关键字key加上当前系统时间所属的限流区间值,得到限流key。


3.如权利要求1所述的一种分布式限流方法,其特征在于:所述步骤S4,包括以下的步骤:
S41、获取Lua脚本入参信息,Lua脚本入参信息包括但不限于第二限流关键字key、第二限流时间内最大限流数limitMax、第二限流时间limitTime和第二当前获取流量个数acquireNum;
S42、使用Lua脚本...

【专利技术属性】
技术研发人员:康少雄江海龙吴海波郭倩李兆楠
申请(专利权)人:银盛支付服务股份有限公司
类型:发明
国别省市:广东;44

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

1