CN112214268A - 一种基于Redis的限流方法 - Google Patents

一种基于Redis的限流方法 Download PDF

Info

Publication number
CN112214268A
CN112214268A CN202011119315.XA CN202011119315A CN112214268A CN 112214268 A CN112214268 A CN 112214268A CN 202011119315 A CN202011119315 A CN 202011119315A CN 112214268 A CN112214268 A CN 112214268A
Authority
CN
China
Prior art keywords
request
token
redis
tokens
token bucket
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011119315.XA
Other languages
English (en)
Inventor
段然
吴旭
张小虎
严永峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Electronic Commerce Co Ltd
Original Assignee
Tianyi Electronic Commerce Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianyi Electronic Commerce Co Ltd filed Critical Tianyi Electronic Commerce Co Ltd
Priority to CN202011119315.XA priority Critical patent/CN112214268A/zh
Publication of CN112214268A publication Critical patent/CN112214268A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

本发明公开了一种基于Redis的限流方法,具体包括以下步骤:S1.服务收到请求;S2.服务对Redis发起请求,判断本次请求是否被限流;S3.服务根据返回结果判断拦截请求或放行请求。本发明具有以下优点:不必使用令牌生成器循环添加令牌,可节省资源;不必持续占用Redis存储资源;使用时间差值计算两次请求之间应恢复的令牌数,来代替循环添加令牌的令牌生成器;对接口信息设置超时时间,如果令牌桶恢复满则自动删除接口信息释放资源,且不影响正常的业务流程。

Description

一种基于Redis的限流方法
技术领域
本发明涉及IT与软件开发领域,特别涉及一种基于Redis的限流方法。
背景技术
由于API接口无法控制调用方的行为,因此当遇到瞬时请求量激增时,会导致接口占用过多服务器资源,使得其他请求响应速度降低或是超时,更有甚者可能导致服务器宕机。
限流是目前常用的接口保护手段之一。
限流是通过限制单位时间内接受的请求数,以避免请求数量激增导致服务器压力过大。
目前业内常用的限流框架主要有Sentinel、Hystrix等,但这些第三方框架都需要引入外部依赖,并且占用资源较高。
发明内容
本发明要解决的技术问题是克服现有技术的缺陷,提供一种基于Redis的限流方法。
为了解决上述技术问题,本发明提供了如下的技术方案:
本发明一种基于Redis的限流方法,采用令牌桶算法进行限流,令牌以固定速率生成,生成的令牌放入令牌桶中存放,如果令牌桶满了则多余的令牌会直接丢弃,当请求到达时,会尝试从令牌桶中取令牌,取到了令牌的请求可以执行,如果桶空了,那么尝试取令牌的请求会被限制,令牌桶算法既能够将所有的请求平均分布到时间区间内,又能接受服务器能够承受范围内的突发请求,具体包括以下步骤:
S1.服务收到请求;
S2.服务对Redis发起请求,判断本次请求是否被限流;
S3.服务根据返回结果判断拦截请求或放行请求。
与现有技术相比,本发明的有益效果如下:
1.不必使用令牌生成器循环添加令牌,可节省资源。
2.不必持续占用Redis存储资源。
和现有技术相比,主要创造性在于:
1.使用时间差值计算两次请求之间应恢复的令牌数,来代替循环添加令牌的令牌生成器。
2.对接口信息设置超时时间,如果令牌桶恢复满则自动删除接口信息释放资源,且不影响正常的业务流程。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的流程结构示意图;
图2是本发明的原理图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1
如图1-2所示,本发明提供一种基于Redis的限流方法,采用令牌桶算法进行限流,令牌以固定速率生成,生成的令牌放入令牌桶中存放,如果令牌桶满了则多余的令牌会直接丢弃,当请求到达时,会尝试从令牌桶中取令牌,取到了令牌的请求可以执行,如果桶空了,那么尝试取令牌的请求会被限制,令牌桶算法既能够将所有的请求平均分布到时间区间内,又能接受服务器能够承受范围内的突发请求,具体包括以下步骤:
S1.服务收到请求;
S2.服务对Redis发起请求,判断本次请求是否被限流;
S3.服务根据返回结果判断拦截请求或放行请求。
具体的,以下是完整实现流程:
1.当客户端收到请求时,将接口编号作为参数,调用Lua脚本;
2.Lua脚本通过接口编号查询此接口的Hash,Hash中存放有接口的令牌恢复速率、令牌桶大小、令牌桶当前令牌数量、上次被请求时间;
3.如果没有查询到,则视为首次请求,令牌桶令牌数量设置为与令牌桶大小相同;
4.如果查询到,则视为非首次请求,按照上次被请求时间与本次被请求时间之差,即可与令牌桶恢复速率计算得出两次请求中应恢复的令牌数量;将这部分数量加到令牌桶中,若超过令牌桶大小则以令牌桶大小为最大值;
5.如果令牌数为0,则返回接口被限流;
6.如果令牌数不为0,则令牌数减一,并将其与被请求时间写入接口对应的Hash中。
与现有技术相比,本发明的有益效果如下:
1.不必使用令牌生成器循环添加令牌,可节省资源。
2.不必持续占用Redis存储资源。
和现有技术相比,主要创造性在于:
1.使用时间差值计算两次请求之间应恢复的令牌数,来代替循环添加令牌的令牌生成器。
2.对接口信息设置超时时间,如果令牌桶恢复满则自动删除接口信息释放资源,且不影响正常的业务流程。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (1)

1.一种基于Redis的限流方法,其特征在于,采用令牌桶算法进行限流,令牌以固定速率生成,生成的令牌放入令牌桶中存放,如果令牌桶满了则多余的令牌会直接丢弃,当请求到达时,会尝试从令牌桶中取令牌,取到了令牌的请求可以执行,如果桶空了,那么尝试取令牌的请求会被限制,令牌桶算法既能够将所有的请求平均分布到时间区间内,又能接受服务器能够承受范围内的突发请求,具体包括以下步骤:
S1.服务收到请求;
S2.服务对Redis发起请求,判断本次请求是否被限流;
S3.服务根据返回结果判断拦截请求或放行请求。
CN202011119315.XA 2020-10-19 2020-10-19 一种基于Redis的限流方法 Pending CN112214268A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011119315.XA CN112214268A (zh) 2020-10-19 2020-10-19 一种基于Redis的限流方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011119315.XA CN112214268A (zh) 2020-10-19 2020-10-19 一种基于Redis的限流方法

Publications (1)

Publication Number Publication Date
CN112214268A true CN112214268A (zh) 2021-01-12

Family

ID=74055824

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011119315.XA Pending CN112214268A (zh) 2020-10-19 2020-10-19 一种基于Redis的限流方法

Country Status (1)

Country Link
CN (1) CN112214268A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116074384A (zh) * 2023-01-10 2023-05-05 安芯网盾(北京)科技有限公司 一种控制业务请求数量的方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116074384A (zh) * 2023-01-10 2023-05-05 安芯网盾(北京)科技有限公司 一种控制业务请求数量的方法及系统
CN116074384B (zh) * 2023-01-10 2024-01-30 安芯网盾(北京)科技有限公司 一种控制业务请求数量的方法及系统

Similar Documents

Publication Publication Date Title
CN110611623B (zh) 限流方法和装置
CN112165436B (zh) 流量控制方法、装置及系统
CN111245732B (zh) 一种流量控制方法、装置及设备
CN111198759B (zh) 一种内存优化方法、系统、终端设备及可读存储介质
CN111585913B (zh) 基于回收令牌的服务流量限制方法及存储介质
CN112650575B (zh) 资源调度方法、装置和云端服务系统
US20230185772A1 (en) Inode number distribution management method for distributed storage system and related component
CN113517985B (zh) 文件数据处理方法、装置、电子设备及计算机可读介质
CN112214268A (zh) 一种基于Redis的限流方法
JP4347416B2 (ja) 通信ネットワークにおけるトラヒック制御
CN111897791B (zh) 一种业务分流方法、装置、设备和存储介质
CN109471989A (zh) 一种页面请求处理方法及相关装置
CN101526959A (zh) 一种数据存储方法和装置
CN113038394B (zh) 会话绑定关系处理方法、装置、电子设备和可读介质
CN113886082A (zh) 请求处理方法、装置、计算设备及介质
CN114157717B (zh) 一种微服务动态限流的系统及方法
WO2017050121A1 (zh) 计费请求消息的过载控制方法及装置
CN111859877A (zh) 一种excel导入导出的实现方法及装置
CN112600941B (zh) 自动更新传输数据大小优化的方法、装置及存储介质
CN1332531C (zh) 一种动态调整业务管理点系统服务性能的方法
CN117793204A (zh) 一种业务请求的处理方法和装置
CN110944343B (zh) 一种aac和pcrf之间的交互方法
CN116402510B (zh) 一种基于高并发网络服务的无感支付方法、介质以及设备
CN113312234B (zh) 一种健康检测的优化方法及终端
CN115509763B (zh) 指纹计算方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20210112