一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于分布式配置中心的动态可调节限流解决方法与流程

2022-04-27 03:11:30 来源:中国专利 TAG:


1.本发明涉及java应用软件开发技术领域,特别涉及一种基于分布式配置中心的动态可调节限流解决方法。


背景技术:

2.随着用户量和业务量的飞速发展,生产服务器频繁遇到高并发场景,比如双十一订单量瞬间暴增、代扣日接口访问量增大,给服务器带来海量访问压力,这时需要用到接口限流方案,保证服务器业务链路正常提供业务服务。市面上成熟的限流方案包括:hystrix、sentinel等,但这些限流方案需要集成组件;还有基于zookeeper或者redis的限流方案,存在的问题是这些限流方案限流参数不可调节、zookeeper访问压力过大及集群系统中各个节点的访问限流参数不可调。
3.综上所述,本文公开一种基于分布式配置中心阿波罗及zookeeper技术的限流解决方案。


技术实现要素:

4.本发明要解决的技术问题是克服现有技术的缺陷,提供一种基于分布式配置中心的动态可调节限流解决方法。
5.本发明提供了如下的技术方案:
6.本发明提供一种基于分布式配置中心的动态可调节限流解决方法,系统主要包括:监听分布式配置中心模块,监听zookeeper节点模块及请求限流处理模块;具体包括以下方法:
7.1)监听分布式配置中心模块:设置对分布式配置中心(阿波罗)的监听,动态将设置的初始相关限流参数(包括滑动窗口的计数周期period、周期内最大访问数maxcounts、滑动窗口数wincounts及服务器节点ip数目ips) 刷新到zookeeper的相应目录节点下(/limit/flow);当阿波罗配置限流参数有改动,比如最大访问数maxcounts或者服务器节点ip数据,该模块会实时将改动值刷新到zookeeper目录节点下;
8.2)监听zookeeper节点模块:该模块监听zookeeper目录节点 (/limit/flow)下的值并及时同步到服务器本地缓存中,本地缓存只存储该服务器需要存储的限流参数数据(包括滑动窗口的计数周期period、周期内本服务器最大访问数maxcountsforserver、滑动窗口数wincounts);当 zookeeper配置限流参数有改动,比如最大访问数maxcounts或者服务器节点 ip数据,该模块会依据变动值实时更新本地缓存值;
9.注:周期内本服务器最大访问数初值maxcountsforserver=maxcounts /ips;
10.3)请求限流处理模块:当请求过来时,将本地缓存记录的所有滑动窗口内的请求数目总和requestsum与本服务器最大访问数maxcountsforserver 比较,
11.当requestsum》=maxcountsforserver直接触发限流逻辑,拒绝请求;
12.当requestsum《maxcountsforserver,允许请求通过,并将requestsum 加一,同时
本窗口内的访问请求requestcount也需加一;
13.注:每个请求过来时需要判断当前时间戳是否达到下个滑动窗口,如果达到下个滑动窗口,需要将滑动窗口的计数周期period内的第一个滑动窗口去掉,并且将requestsum减去落到第一个滑动窗口的访问请求量;
14.requestsum=requestcount*wincounts。
15.与现有技术相比,本发明的有益效果如下:
16.1.应用分布式配置中心对限流参数进行动态可调节,避免了传统方式无法手动改参数的问题,尤其在服务器负载瞬间增大或减少时合理利用应用服务器资源;
17.2.应用服务器存在本地缓存减少对zookeeper或redis的访问压力,降低出现服务不可用的情况。
附图说明
18.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
19.图1是本发明的框架流程图;
20.图2是本发明的实施例示意图。
具体实施方式
21.以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。其中附图中相同的标号全部指的是相同的部件。
22.实施例1
23.如图1-2,本发明提供一种基于分布式配置中心的动态可调节限流解决方法,系统主要包括:监听分布式配置中心模块,监听zookeeper节点模块及请求限流处理模块;具体包括以下方法:
24.1)监听分布式配置中心模块:设置对分布式配置中心(阿波罗)的监听,动态将设置的初始相关限流参数(包括滑动窗口的计数周期period、周期内最大访问数maxcounts、滑动窗口数wincounts及服务器节点ip数目ips) 刷新到zookeeper的相应目录节点下(/limit/flow);当阿波罗配置限流参数有改动,比如最大访问数maxcounts或者服务器节点ip数据,该模块会实时将改动值刷新到zookeeper目录节点下,如图2所示;
25.2)监听zookeeper节点模块:该模块监听zookeeper目录节点 (/limit/flow)下的值并及时同步到服务器本地缓存中,本地缓存只存储该服务器需要存储的限流参数数据(包括滑动窗口的计数周期period、周期内本服务器最大访问数maxcountsforserver、滑动窗口数wincounts)。当 zookeeper配置限流参数有改动,比如最大访问数maxcounts或者服务器节点ip数据,该模块会依据变动值实时更新本地缓存值;
26.注:周期内本服务器最大访问数初值maxcountsforserver=maxcounts /ips;
27.3)请求限流处理模块:当请求过来时,将本地缓存记录的所有滑动窗口内的请求数目总和requestsum与本服务器最大访问数maxcountsforserver 比较,
28.当requestsum》=maxcountsforserver直接触发限流逻辑,拒绝请求;
29.当requestsum《maxcountsforserver,允许请求通过,并将requestsum 加一,同时本窗口内的访问请求requestcount也需加一;
30.注:每个请求过来时需要判断当前时间戳是否达到下个滑动窗口,如果达到下个滑动窗口,需要将滑动窗口的计数周期period内的第一个滑动窗口去掉,并且将requestsum减去落到第一个滑动窗口的访问请求量;
31.requestsum=requestcount*wincounts。
32.最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。


技术特征:
1.一种基于分布式配置中心的动态可调节限流解决方法,其特征在于,系统主要包括:监听分布式配置中心模块,监听zookeeper节点模块及请求限流处理模块;具体包括以下方法:1)监听分布式配置中心模块:设置对分布式配置中心(阿波罗)的监听,动态将设置的初始相关限流参数(包括滑动窗口的计数周期period、周期内最大访问数maxcounts、滑动窗口数wincounts及服务器节点ip数目ips)刷新到zookeeper的相应目录节点下(/limit/flow);当阿波罗配置限流参数有改动,比如最大访问数maxcounts或者服务器节点ip数据,该模块会实时将改动值刷新到zookeeper目录节点下;2)监听zookeeper节点模块:该模块监听zookeeper目录节点(/limit/flow)下的值并及时同步到服务器本地缓存中,本地缓存只存储该服务器需要存储的限流参数数据(包括滑动窗口的计数周期period、周期内本服务器最大访问数maxcountsforserver、滑动窗口数wincounts);当zookeeper配置限流参数有改动,比如最大访问数maxcounts或者服务器节点ip数据,该模块会依据变动值实时更新本地缓存值;3)请求限流处理模块:当请求过来时,将本地缓存记录的所有滑动窗口内的请求数目总和requestsum与本服务器最大访问数maxcountsforserver比较,当requestsum>=maxcountsforserver直接触发限流逻辑,拒绝请求;当requestsum<maxcountsforserver,允许请求通过,并将requestsum加一,同时本窗口内的访问请求requestcount也需加一;注:每个请求过来时需要判断当前时间戳是否达到下个滑动窗口,如果达到下个滑动窗口,需要将滑动窗口的计数周期period内的第一个滑动窗口去掉,并且将requestsum减去落到第一个滑动窗口的访问请求量;requestsum=requestcount*wincounts。

技术总结
本发明公开了一种基于分布式配置中心的动态可调节限流解决方法,系统主要包括:监听分布式配置中心模块,监听zookeeper节点模块及请求限流处理模块;具体包括以下方法:1)监听分布式配置中心模块:设置对分布式配置中心的监听,动态将设置的初始相关限流参数刷新到zookeeper的相应目录节点下;当阿波罗配置限流参数有改动,比如最大访问数maxCounts或者服务器节点ip数据,该模块会实时将改动值刷新到zookeeper目录节点下。本发明应用分布式配置中心对限流参数进行动态可调节,避免了传统方式无法手动改参数的问题,尤其在服务器负载瞬间增大或减少时合理利用应用服务器资源;应用服务器存在本地缓存减少对zookeeper或redis的访问压力,降低出现服务不可用的情况。降低出现服务不可用的情况。降低出现服务不可用的情况。


技术研发人员:马光春 刘永富
受保护的技术使用者:甜橙融资租赁(上海)有限公司
技术研发日:2021.12.14
技术公布日:2022/4/26
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献