CN112214269A - 基于zookeeper的滑动窗口限流解决方案 - Google Patents
基于zookeeper的滑动窗口限流解决方案 Download PDFInfo
- Publication number
- CN112214269A CN112214269A CN202011120664.3A CN202011120664A CN112214269A CN 112214269 A CN112214269 A CN 112214269A CN 202011120664 A CN202011120664 A CN 202011120664A CN 112214269 A CN112214269 A CN 112214269A
- Authority
- CN
- China
- Prior art keywords
- sliding window
- current limiting
- zookeeper
- request
- 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
- 230000009471 action Effects 0.000 claims description 3
- 230000000737 periodic effect Effects 0.000 abstract 1
- 238000000034 method Methods 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于zookeeper的滑动窗口限流解决方案,为解决固定窗口计数带来的周期切换处流量突发问题,可以使用滑动窗口计数,与股固定窗口计数法相比较,除了计数周期T及周期内最大访问(调用)数N两个参数,增加一个参数M,用于设置周期T内的滑动窗口数。本发明解决了现有技术中存在的服务器性能低、接口不可配以及多用户并发时服务器可用性低的问题,实现高性能、高可用的分布式的限流目的。
Description
技术领域
本发明涉及互联网金融领域,特别涉及基于zookeeper的滑动窗口限流解决方案。
背景技术
在分布式架构中,一般分为服务提供方和服务调用方。服务提供方对外提供dubbo接口,服务调用方通过提供方提供出的dubbo接口进行服务调用。服务方在系统涉及支出就会有一个预估的tps/qps阈值,如果系统长时间承受高于设计的tps值,应用系统有可能会被压垮,最终扩散到整个一整串的服务,形成雪崩效应,导致服务不可用。为了避免这种情况,就需要对API请求进行限流。限流的目的是通过对并发访问请求进行限速或者一个时间窗口内的请求数量进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待。在金融领域会存在多个服务调用方,服务提供方提供的API接口被调用时,一般是通过设置缓存、队列、令牌、动态滑动窗口计数、分流等技术方式来实现限流,目前的API接口限流的方法都属于限流,即当交易数量发起过多时,服务提供方的应用系统的负载能力有限,如果非预期的请求对系统压力过大而拖垮整个业务应用系统,服务提供方和服务调用方的损失极为惨重,如果仅仅通过上述的被动限流方式将交易进行限流,该类方法灵活性较差,不能够进行灵活配置及精准高效的限流及相应的权限校验,且因金融交易存在业务特性,更需要进行灵活合理的限流。现有技术中存在的问题是:
本地JVM级限流仅仅能在单机服务中进行应用,服务器性能及高可用都会存在问题;不可配的接口限流策略往往不能满足可变的、多样性的用户限流需求;单一的用户级限流在用户日益增长的过程中,多用户并发时容易触发服务器性能瓶颈,影响服务其他功能的可用性。因此,需要一种分布式限流的实现方法,解决现有技术中存在的服务器性能低、接口不可配以及多用户并发时服务器可用性低的问题,实现高性能、高可用的分布式的限流目的。
发明内容
本发明要解决的技术问题是克服现有技术的缺陷,提供基于zookeeper的滑动窗口限流解决方案,解决现有技术中存在的服务器性能低、接口不可配以及多用户并发时服务器可用性低的问题,实现高性能、高可用的分布式的限流目的。
为了解决上述技术问题,本发明提供了如下的技术方案:
本发明一种基于zookeeper的滑动窗口限流解决方案,包括以下步骤:
S1:当前请求过鉴权服务,生成authkey;
S2:判断当前请求是否请求安全策略;
S3:根绝请求的code去zk中/auth/code文件查询出窗口的时长、要访问的目标服务器地址、最大请求量N、滑动窗口的时间间隔、每个滑动窗口的计数器的数值;
S4:算出所有的滑动窗口的时间间隔的所有的计数器的和N1;
S5:判断N1>N;
S6:如果N1>N,那么直接出发限流策略;
S7:如果N1<=N,那么正常接收请求,并且当前滑动窗口的计数器值+1,重复S4动作;
S8:如果当前已经到达下一个滑动窗口时间,则滑动窗口向下移动一格;重复S4动作。
与现有技术相比,本发明的有益效果如下:
本发明解决了现有技术中存在的服务器性能低、接口不可配以及多用户并发时服务器可用性低的问题,实现高性能、高可用的分布式的限流目的。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的步骤图;
图2是本发明的限流流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1
如图1-2所示,本发明提供一种基于zookeeper的滑动窗口限流解决方案,包括以下步骤:
S1:当前请求过鉴权服务,生成authkey;
S2:判断当前请求是否请求安全策略;
S3:根绝请求的code去zk中/auth/code文件查询出窗口的时长、要访问的目标服务器地址、最大请求量N、滑动窗口的时间间隔、每个滑动窗口的计数器的数值;
S4:算出所有的滑动窗口的时间间隔的所有的计数器的和N1;
S5:判断N1>N;
S6:如果N1>N,那么直接出发限流策略;
S7:如果N1<=N,那么正常接收请求,并且当前滑动窗口的计数器值+1,重复S4动作;
S8:如果当前已经到达下一个滑动窗口时间,则滑动窗口向下移动一格;重复S4动作。
实现原理:
滑动窗口计数法与股固定窗口计数法相比较,除了计数周期T及周期内最大访问(调用)数N两个参数,增加一个参数M,用于设置周期T内的滑动窗口数,限流流程如图2所示。
与现有技术相比,本发明的有益效果如下:
本发明解决了现有技术中存在的服务器性能低、接口不可配以及多用户并发时服务器可用性低的问题,实现高性能、高可用的分布式的限流目的。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (1)
1.基于zookeeper的滑动窗口限流解决方案,其特征在于,包括以下步骤:
S1:当前请求过鉴权服务,生成authkey;
S2:判断当前请求是否请求安全策略;
S3:根绝请求的code去zk中/auth/code文件查询出窗口的时长、要访问的目标服务器地址、最大请求量N、滑动窗口的时间间隔、每个滑动窗口的计数器的数值;
S4:算出所有的滑动窗口的时间间隔的所有的计数器的和N1;
S5:判断N1>N;
S6:如果N1>N,那么直接出发限流策略;
S7:如果N1<=N,那么正常接收请求,并且当前滑动窗口的计数器值+1,重复S4动作;
S8:如果当前已经到达下一个滑动窗口时间,则滑动窗口向下移动一格;重复S4动作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011120664.3A CN112214269A (zh) | 2020-10-19 | 2020-10-19 | 基于zookeeper的滑动窗口限流解决方案 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011120664.3A CN112214269A (zh) | 2020-10-19 | 2020-10-19 | 基于zookeeper的滑动窗口限流解决方案 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112214269A true CN112214269A (zh) | 2021-01-12 |
Family
ID=74055888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011120664.3A Pending CN112214269A (zh) | 2020-10-19 | 2020-10-19 | 基于zookeeper的滑动窗口限流解决方案 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112214269A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064293A (zh) * | 2021-11-26 | 2022-02-18 | 江苏安超云软件有限公司 | 一种基于轮询的无锁限速方法、装置及存储介质 |
-
2020
- 2020-10-19 CN CN202011120664.3A patent/CN112214269A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064293A (zh) * | 2021-11-26 | 2022-02-18 | 江苏安超云软件有限公司 | 一种基于轮询的无锁限速方法、装置及存储介质 |
CN114064293B (zh) * | 2021-11-26 | 2022-10-04 | 江苏安超云软件有限公司 | 一种基于轮询的无锁限速方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110276182B (zh) | Api分布式限流的实现方法 | |
US11601512B2 (en) | System and method for throttling service requests having non-uniform workloads | |
CN112003795B (zh) | 一种动态预防流量攻击的方法、系统、设备及存储介质 | |
EP3343426B1 (en) | Database access control method and apparatus | |
JP5484471B2 (ja) | 記憶側記憶要求管理 | |
US10028098B2 (en) | Categorized location identification based on historical locations of a user device | |
US5889956A (en) | Hierarchical resource management with maximum allowable allocation boundaries | |
US9953351B1 (en) | Managing resource requests that exceed reserved resource capacity | |
CN111478857B (zh) | 一种接口限流控制方法、装置以及电子设备 | |
CN107707488A (zh) | 支付联机交易流量控制方法、限流服务端及客户端 | |
CN110545246A (zh) | 一种基于令牌桶的限流方法和装置 | |
JPH1049390A (ja) | リソース共用のためのシステムおよび方法 | |
US20090282406A1 (en) | Method and System for Transaction Resource Control | |
CN108416591B (zh) | 一种金融交易中通过api接口实现交易主动限流的方法 | |
US9794421B2 (en) | Method, system and apparatus for adaptive quota determination for shared resources | |
CN111585913B (zh) | 基于回收令牌的服务流量限制方法及存储介质 | |
US20130117438A1 (en) | Methods for adapting application services based on current server usage and devices thereof | |
CN110297698A (zh) | 一种多优先级动态限流方法、装置、服务器及存储介质 | |
KR20140014285A (ko) | 트래픽 제어 방법과 트래픽 제어 장치 | |
CN112214269A (zh) | 基于zookeeper的滑动窗口限流解决方案 | |
CN107948084B (zh) | 一种限流方法和装置 | |
CN107682316B (zh) | 动态密码发送策略的生成方法和动态密码发送方法 | |
US20130239114A1 (en) | Fine Grained Adaptive Throttling of Background Processes | |
CN110061933A (zh) | 一种数据处理方法及装置、设备、存储介质 | |
CN116192752A (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 |
Application publication date: 20210112 |
|
WD01 | Invention patent application deemed withdrawn after publication |