CN110995611A - 一种用于针对高并发请求分布式限流方法 - Google Patents
一种用于针对高并发请求分布式限流方法 Download PDFInfo
- Publication number
- CN110995611A CN110995611A CN201911326987.5A CN201911326987A CN110995611A CN 110995611 A CN110995611 A CN 110995611A CN 201911326987 A CN201911326987 A CN 201911326987A CN 110995611 A CN110995611 A CN 110995611A
- Authority
- CN
- China
- Prior art keywords
- token
- current limiting
- high concurrency
- redis
- distributed current
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种用于针对高并发请求分布式限流方法,包括以下步骤:S1:令牌生成器的设定参数从Redis中获取;S2:令牌生成器生成的令牌发送到网关层的令牌桶;S3:网关层获取令牌;S4:后台管理层对Redis中的设定参数进行修改,返回步骤S1中。本发明利用Redis的特性结合令牌桶算法实现对分布式集群服务系统的出入流量进行控制,防止大流量出入,导致资源不足,系统不稳定。
Description
技术领域
本发明涉及一种流量管理方法,尤其是涉及一种用于针对高并发请求分布式限流方法。
背景技术
目前令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(RateLimiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。
如图1所示的令牌桶限流原理图,令牌桶算法生成令牌的速度是恒定的,而请求去拿令牌是没有速度限制的。这意味,面对瞬时大流量,该算法可以在短时间内请求拿到大量令牌,而且拿令牌的过程并不是消耗很大的事情。
不论是对于令牌桶拿不到令牌被拒绝,还是漏桶的水满了溢出,都是为了保证大部分流量的正常使用,而牺牲掉了少部分流量,这是合理的,如果因为极少部分流量需要保证的话,那么就可能导致系统达到极限而挂掉,得不偿失。
发明内容
本发明提供了一种用于针对高并发请求分布式限流方法,解决了控制网络流量的问题,其技术方案如下所述:
一种用于针对高并发请求分布式限流方法,包括以下步骤:
S1:令牌生成器的设定参数从Redis中获取;
S2:令牌生成器生成的令牌发送到网关层的令牌桶;
S3:网关层获取令牌;
S4:后台管理层对Redis中的设定参数进行修改,返回步骤S1中。
进一步的,步骤S1中,令牌生成器采用令牌桶算法,所述算法涉及使用到的参数放置在Redis中。
其中,参数包括令牌桶最大容量和令牌生成速率。
其中,所述令牌生成速率为平均速率r,即每隔1/r秒一个令牌被生成。
进一步的,步骤S3中,网关层设置的令牌桶首先获取令牌,如果拿到令牌,对客户端的请求进行路由转发到服务层。
其中,网关层获取令牌时,其令牌桶的可用令牌数量,决定服务能够处理的最大瞬时流量值。
如果获取不到令牌,令牌桶无可用令牌时,走熔断逻辑,返回默认值给客户端,然后进行流量削峰,降级处理,防止服务承载过大流量。
进一步的,步骤S4中,后台管理层采用运维人员维护的管理网站,通过修改限流器的配置信息,发布并实时更新到Redis中。
本发明利用Redis的特性结合令牌桶算法实现对分布式集群服务系统的出入流量进行控制,防止大流量出入,导致资源不足,系统不稳定。
附图说明
图1是令牌桶限流原理图;
图2是本发明中限流熔断架构的示意图;
图3是本发明中业务架构示意图。
具体实施方式
如图2所示,在本发明中依据令牌桶算法,配置令牌生成的放入桶中的平均速率r,即每隔1/r秒一个令牌被加入到桶中。配置桶中最多可以存放b个令牌,如果令牌到达时令牌桶已经满了,则这个令牌会被丢弃;当流量以速率v进入,从桶中以速率v取令牌,拿到令牌的流量放行,执行业务逻辑,拿不到令牌的流量不放行,执行熔断逻辑。
配置令牌时,要注意最大令牌数和当前令牌数。
本发明正常的流量处理相对比较平滑,并且可以抵挡一定的流量突发情况;另外当令牌桶中剩余令牌数持续一段时间多次达到系统设置的最低下线时,自动通知运维人员处理,运维人员根据系统运行情况,在后台管理系统适当的调整令牌生成速率然后发布,此时线上环境在不需要重启的情况下,拿到最新设置的生成速率值,继续运行服务,此情况可以应对处理系统持续一定时间处于大流量请求的业务场景。
本发明业务架构的描述如下:
为了让后台管理能够动态实时更新限流器配置信息,达到不重启线上服务,就可以对限流器的最大令牌容量、令牌生成速率等参数的动态调整,实时运用到线上服务环境,本发明将限流器的所有参数缓存到Redis,同时存入数据库中。通过此发明架构,运维人员可在后台管理页面动态配置限流器参数信息,更加高效的管理整套限流服务。如下业务架构的方案流程图。
Redis特性包括:1)Redis的并发量大;2)Redis中key的过期机制;3)Redis中key的自增机制;4)可应用于分布式或者集群下。
如图3所示,本业务架构对涉及到的如下几个角色做出解释:
用户层:客户端层,表示用户。
网关层:先获取令牌,如果拿到令牌,对请求进行路由转发到服务层;如果获取不到令牌,走熔断逻辑,返回默认值给客户端。此处令牌桶的可用令牌数量,决定服务能够处理的最大瞬时流量值。
熔断:当令牌桶无可用令牌时,走此逻辑,返回默认值给客户端,进行流量削峰,降级处理,防止服务承载过大流量,导致服务不可用。
令牌生成器:此架构方案,对令牌桶算法涉及使用到的参数,如令牌桶最大容量,令牌生成速率等,放入Redis中,当另一线程对Redis中这些参数进行更新时,令牌生成器线程会拿到新的参数值继续进行生成令牌任务。
后台管理层:运维人员维护的管理网站,通过在此平台修改内置的限流器的配置信息,然后发布,实时更新到线上的Redis中,如提高令牌的生成速率,以应对即将到来的大流量。
本发明具有以下技术效果:
1)限流与熔断控制:网关层通过Redis获取令牌,对持有令牌的请求进行转发,访问服务资源,对未获取到令牌的请求执行熔断逻辑,返回默认值,防止过多请求打在后台服务层,导致后台服务资源消耗多度,影响系统性能,甚至导致系统宕机。
2)分布式限流:网关层的各网关节点能够接入Redis集群,基于Redis本身单线程的特性,天然保证令牌的生产与消费全局可控,不存在单机限流问题。同时Redis采用集群部署,若master节点宕机,则可进行重新选主操作,继续提供服务,进一步增强服务健壮性,实现分布式限流。
3)动态限流:后台动态配置限流器参数,实时对线上流量限制控制。在可预知流量高峰的情况下,动态提高令牌生成速率,应对即将到来的流量高峰。
Claims (8)
1.一种用于针对高并发请求分布式限流方法,包括以下步骤:
S1:令牌生成器的设定参数从Redis中获取;
S2:令牌生成器生成的令牌发送到网关层的令牌桶;
S3:网关层获取令牌;
S4:后台管理层对Redis中的设定参数进行修改,返回步骤S1中。
2.根据权利要求1所述的用于针对高并发请求分布式限流方法,其特征在于:步骤S1中,令牌生成器采用令牌桶算法,所述算法涉及使用到的参数放置在Redis中。
3.根据权利要求2所述的用于针对高并发请求分布式限流方法,其特征在于:参数包括令牌桶最大容量和令牌生成速率。
4.根据权利要求3所述的用于针对高并发请求分布式限流方法,其特征在于:所述令牌生成速率为平均速率r,即每隔1/r秒一个令牌被生成。
5.根据权利要求1所述的用于针对高并发请求分布式限流方法,其特征在于:步骤S3中,网关层设置的令牌桶首先获取令牌,如果拿到令牌,对客户端的请求进行路由转发到服务层。
6.根据权利要求5所述的用于针对高并发请求分布式限流方法,其特征在于:网关层获取令牌时,其令牌桶的可用令牌数量,决定服务能够处理的最大瞬时流量值。
7.根据权利要求5所述的用于针对高并发请求分布式限流方法,其特征在于:如果获取不到令牌,令牌桶无可用令牌时,走熔断逻辑,返回默认值给客户端,然后进行流量削峰,降级处理,防止服务承载过大流量。
8.根据权利要求1所述的用于针对高并发请求分布式限流方法,其特征在于:步骤S4中,后台管理层采用运维人员维护的管理网站,通过修改限流器的配置信息,发布并实时更新到Redis中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911326987.5A CN110995611A (zh) | 2019-12-20 | 2019-12-20 | 一种用于针对高并发请求分布式限流方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911326987.5A CN110995611A (zh) | 2019-12-20 | 2019-12-20 | 一种用于针对高并发请求分布式限流方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110995611A true CN110995611A (zh) | 2020-04-10 |
Family
ID=70074058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911326987.5A Pending CN110995611A (zh) | 2019-12-20 | 2019-12-20 | 一种用于针对高并发请求分布式限流方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110995611A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111740920A (zh) * | 2020-08-17 | 2020-10-02 | 广东睿江云计算股份有限公司 | 一种基于用户令牌的灰度发布和限流方法及其系统 |
CN111835562A (zh) * | 2020-07-01 | 2020-10-27 | 北京爱笔科技有限公司 | 日志上传方法、日志查询方法、系统 |
CN113098793A (zh) * | 2021-04-19 | 2021-07-09 | 南京甄视智能科技有限公司 | 分布式服务系统限流方法及分布式服务系统 |
CN113285975A (zh) * | 2021-03-30 | 2021-08-20 | 紫光云技术有限公司 | 一种高并发资源检测方法 |
CN113282902A (zh) * | 2021-07-26 | 2021-08-20 | 南京蓝鲸人网络科技有限公司 | 一种业务行为安全控制方法、系统与设备 |
CN113382080A (zh) * | 2021-06-25 | 2021-09-10 | 中关村智慧城市产业技术创新战略联盟 | 一种微服务治理系统和方法 |
CN113765818A (zh) * | 2020-06-28 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 分布式限流方法、装置、设备、存储介质和系统 |
CN114615203A (zh) * | 2022-01-30 | 2022-06-10 | 阿里云计算有限公司 | 访问控制方法、装置、存储介质及处理器 |
CN114745562A (zh) * | 2022-04-07 | 2022-07-12 | 深圳小鹅网络技术有限公司 | 业务请求的处理方法、装置 |
CN117294655A (zh) * | 2023-11-27 | 2023-12-26 | 深圳市杉岩数据技术有限公司 | 一种高可用分布式网关系统与管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160227042A1 (en) * | 2014-03-18 | 2016-08-04 | Gubagoo, Inc. | Systems and methods for call backup and takeover using web and mobile interfaces |
CN110099009A (zh) * | 2018-01-31 | 2019-08-06 | 北京易真学思教育科技有限公司 | 基于接口响应时间趋势的动态限流方法及计算机可读介质 |
CN110276182A (zh) * | 2019-06-10 | 2019-09-24 | 必成汇(成都)科技有限公司 | Api分布式限流的实现方法 |
CN110545246A (zh) * | 2018-05-29 | 2019-12-06 | 北京京东尚科信息技术有限公司 | 一种基于令牌桶的限流方法和装置 |
-
2019
- 2019-12-20 CN CN201911326987.5A patent/CN110995611A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160227042A1 (en) * | 2014-03-18 | 2016-08-04 | Gubagoo, Inc. | Systems and methods for call backup and takeover using web and mobile interfaces |
CN110099009A (zh) * | 2018-01-31 | 2019-08-06 | 北京易真学思教育科技有限公司 | 基于接口响应时间趋势的动态限流方法及计算机可读介质 |
CN110545246A (zh) * | 2018-05-29 | 2019-12-06 | 北京京东尚科信息技术有限公司 | 一种基于令牌桶的限流方法和装置 |
CN110276182A (zh) * | 2019-06-10 | 2019-09-24 | 必成汇(成都)科技有限公司 | Api分布式限流的实现方法 |
Non-Patent Citations (4)
Title |
---|
JAVA思维导图: "短小强悍!一个基于Redis的限流系统的设计", 《腾讯云 HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/1374199》 * |
RO9ER: "基于redis和lua的分布式限流器设计与实现", 《简书,HTTPS://WWW.JIANSHU.COM/P/C8CEE1507CCC?FROM=SINGLEMESSAGE》 * |
张永清: "如何利用redis来进行分布式集群系统的限流设计", 《博客园,HTTPS://WWW.CNBLOGS.COM/LAOQING/P/9190430.HTML》 * |
陆良伟,黄晓芳: "安全可扩展的SaaS服务开放平台框架设计", 《计算机测量与控制》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113765818A (zh) * | 2020-06-28 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 分布式限流方法、装置、设备、存储介质和系统 |
CN111835562A (zh) * | 2020-07-01 | 2020-10-27 | 北京爱笔科技有限公司 | 日志上传方法、日志查询方法、系统 |
CN111835562B (zh) * | 2020-07-01 | 2023-10-17 | 北京爱笔科技有限公司 | 日志上传方法、日志查询方法、系统 |
CN111740920B (zh) * | 2020-08-17 | 2020-12-11 | 广东睿江云计算股份有限公司 | 一种基于用户令牌的灰度发布和限流方法及其系统 |
CN111740920A (zh) * | 2020-08-17 | 2020-10-02 | 广东睿江云计算股份有限公司 | 一种基于用户令牌的灰度发布和限流方法及其系统 |
CN113285975A (zh) * | 2021-03-30 | 2021-08-20 | 紫光云技术有限公司 | 一种高并发资源检测方法 |
CN113098793A (zh) * | 2021-04-19 | 2021-07-09 | 南京甄视智能科技有限公司 | 分布式服务系统限流方法及分布式服务系统 |
CN113382080A (zh) * | 2021-06-25 | 2021-09-10 | 中关村智慧城市产业技术创新战略联盟 | 一种微服务治理系统和方法 |
CN113382080B (zh) * | 2021-06-25 | 2023-03-28 | 中关村智慧城市产业技术创新战略联盟 | 一种微服务治理系统和方法 |
CN113282902A (zh) * | 2021-07-26 | 2021-08-20 | 南京蓝鲸人网络科技有限公司 | 一种业务行为安全控制方法、系统与设备 |
CN114615203A (zh) * | 2022-01-30 | 2022-06-10 | 阿里云计算有限公司 | 访问控制方法、装置、存储介质及处理器 |
CN114745562A (zh) * | 2022-04-07 | 2022-07-12 | 深圳小鹅网络技术有限公司 | 业务请求的处理方法、装置 |
CN117294655A (zh) * | 2023-11-27 | 2023-12-26 | 深圳市杉岩数据技术有限公司 | 一种高可用分布式网关系统与管理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110995611A (zh) | 一种用于针对高并发请求分布式限流方法 | |
WO2021213004A1 (zh) | 一种微服务管理系统、部署方法及相关设备 | |
CN109743415B (zh) | 一种公有云网络弹性ip实现方法及系统 | |
US9124592B2 (en) | Method and system for application level load balancing in a publish/subscribe message architecture | |
CN110896371B (zh) | 一种虚拟网络设备及相关方法 | |
US20030236887A1 (en) | Cluster bandwidth management algorithms | |
WO2017214932A1 (zh) | 一种网络切片的资源管理方法和装置 | |
WO2018130162A1 (zh) | 一种管控云计算终端和云服务器运作的方法和装置 | |
CN106453625B (zh) | 信息同步方法及高可用性集群系统 | |
JP5276589B2 (ja) | 遠隔通信ネットワークにおける情報転送の最適化方法 | |
US8386607B2 (en) | Method and system for utilizing a resource conductor to optimize resource management in a distributed computing environment | |
CN112789832B (zh) | 动态切片优先级处理 | |
CN106462389A (zh) | 消息通讯行为的上下文感知策略选择 | |
US20200296603A1 (en) | Deploying network functions in a communication network based on geo-social network data | |
US20240126673A1 (en) | Methods and systems for status determination | |
US20080307438A1 (en) | Status hub used by autonomic application servers | |
CN103957237A (zh) | 一种弹性云的体系结构 | |
CN109040308A (zh) | 一种基于ipfs的文件分发系统及文件分发方法 | |
CN106713378A (zh) | 实现多个应用服务器提供服务的方法和系统 | |
WO2021120633A1 (zh) | 一种负载均衡方法及相关设备 | |
Liu et al. | Service resource management in edge computing based on microservices | |
CN115277577A (zh) | 数据处理方法、装置、计算机设备和计算机可读存储介质 | |
EP1246394A1 (en) | System for personalised information distribution | |
CN105049255B (zh) | 一种网元数据同步的方法及其装置 | |
WO2008151491A1 (fr) | Un système réseau p2p et son procédé d'application |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200410 |