[发明专利]一种基于Redis的限流方法在审
申请号: | 202011119315.X | 申请日: | 2020-10-19 |
公开(公告)号: | CN112214268A | 公开(公告)日: | 2021-01-12 |
发明(设计)人: | 段然;吴旭;张小虎;严永峰 | 申请(专利权)人: | 天翼电子商务有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F9/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 102200 北京市昌平*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 redis 限流 方法 | ||
本发明公开了一种基于Redis的限流方法,具体包括以下步骤:S1.服务收到请求;S2.服务对Redis发起请求,判断本次请求是否被限流;S3.服务根据返回结果判断拦截请求或放行请求。本发明具有以下优点:不必使用令牌生成器循环添加令牌,可节省资源;不必持续占用Redis存储资源;使用时间差值计算两次请求之间应恢复的令牌数,来代替循环添加令牌的令牌生成器;对接口信息设置超时时间,如果令牌桶恢复满则自动删除接口信息释放资源,且不影响正常的业务流程。
技术领域
本发明涉及IT与软件开发领域,特别涉及一种基于Redis的限流方法。
背景技术
由于API接口无法控制调用方的行为,因此当遇到瞬时请求量激增时,会导致接口占用过多服务器资源,使得其他请求响应速度降低或是超时,更有甚者可能导致服务器宕机。
限流是目前常用的接口保护手段之一。
限流是通过限制单位时间内接受的请求数,以避免请求数量激增导致服务器压力过大。
目前业内常用的限流框架主要有Sentinel、Hystrix等,但这些第三方框架都需要引入外部依赖,并且占用资源较高。
发明内容
本发明要解决的技术问题是克服现有技术的缺陷,提供一种基于Redis的限流方法。
为了解决上述技术问题,本发明提供了如下的技术方案:
本发明一种基于Redis的限流方法,采用令牌桶算法进行限流,令牌以固定速率生成,生成的令牌放入令牌桶中存放,如果令牌桶满了则多余的令牌会直接丢弃,当请求到达时,会尝试从令牌桶中取令牌,取到了令牌的请求可以执行,如果桶空了,那么尝试取令牌的请求会被限制,令牌桶算法既能够将所有的请求平均分布到时间区间内,又能接受服务器能够承受范围内的突发请求,具体包括以下步骤:
S1.服务收到请求;
S2.服务对Redis发起请求,判断本次请求是否被限流;
S3.服务根据返回结果判断拦截请求或放行请求。
与现有技术相比,本发明的有益效果如下:
1.不必使用令牌生成器循环添加令牌,可节省资源。
2.不必持续占用Redis存储资源。
和现有技术相比,主要创造性在于:
1.使用时间差值计算两次请求之间应恢复的令牌数,来代替循环添加令牌的令牌生成器。
2.对接口信息设置超时时间,如果令牌桶恢复满则自动删除接口信息释放资源,且不影响正常的业务流程。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的流程结构示意图;
图2是本发明的原理图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1
如图1-2所示,本发明提供一种基于Redis的限流方法,采用令牌桶算法进行限流,令牌以固定速率生成,生成的令牌放入令牌桶中存放,如果令牌桶满了则多余的令牌会直接丢弃,当请求到达时,会尝试从令牌桶中取令牌,取到了令牌的请求可以执行,如果桶空了,那么尝试取令牌的请求会被限制,令牌桶算法既能够将所有的请求平均分布到时间区间内,又能接受服务器能够承受范围内的突发请求,具体包括以下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天翼电子商务有限公司,未经天翼电子商务有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011119315.X/2.html,转载请声明来源钻瓜专利网。