[发明专利]滑动窗口算法的频次控制方法、系统、设备及介质在审
| 申请号: | 202010124462.X | 申请日: | 2020-02-27 |
| 公开(公告)号: | CN111352967A | 公开(公告)日: | 2020-06-30 |
| 发明(设计)人: | 徐遐龄 | 申请(专利权)人: | 携程旅游网络技术(上海)有限公司 |
| 主分类号: | G06F16/2458 | 分类号: | G06F16/2458 |
| 代理公司: | 上海弼兴律师事务所 31283 | 代理人: | 薛琦;张冉 |
| 地址: | 200335*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 滑动 窗口 算法 频次 控制 方法 系统 设备 介质 | ||
本发明公开了一种滑动窗口算法的频次控制方法、系统、设备及介质,滑动窗口算法的频次控制方法包括:发送访问请求至Redis数据库,Redis数据库用于建立滑动窗口,滑动窗口用于根据访问请求的发送时间统计预设时间片内访问请求的次数;读取Redis数据库并获得预设时间片内对应的次数;统计预设时间段内的次数,判断统计结果是否超出预设阈值,若没有超出,则发送访问请求至服务器,其中,预设时间段包括若干预设时间片。本发明通过将预设时间段的访问请求的次数是否超出预设阈值的判断,从Redis中剥离出来,独立运行,以减少Redis的运算量,从而提高Redis的运算性能,进而提高滑动窗口算法的频次控制的整体性能。
技术领域
本发明涉及数据处理领域,尤其涉及一种滑动窗口算法的频次控制方法、系统、设备及介质。
背景技术
滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题,滑动窗口可以更大限度平滑的控制访问量。
传统的滑动窗口的频次控制都是以一个单位时间内的请求次数与阈值进行比较,实现单位时间内请求总量可控,但这种方式在单位时间内部容易导致较大的访问峰值;滑动窗口算法通过切分更小的单位时间,通过设定更小单位时间片的阈值与单位时间段阈值,可以更平滑地控制访问频次,保护后端服务。
现有的滑动窗口算法方案普遍是基于redis(一种数据库)来实现的,在redis中,利用sortset(一种排序集合类型)数据结构来维持一个循环队列:假设阈值限频是每分钟600次;循环队列对应有60个时间片,每个时间片为1秒,当有请求时,在集合中指定位置做incr(自增长1,原子操作)操作,同时会对前60个时间片做累加计算,看是否超过了600,如果超过,则会在刚才incr的那个时间片上做decr(自减1)操作。以此类推。
redis中的操作是单线程,因此能保证统计的一致性和正确性的功能要求,但在具有大量访问需求时,在性能上无法满足更高要求。
发明内容
本发明要解决的技术问题是为了克服现有技术中滑动窗口算法在应用于大量访问请求的环境下时,性能较差的缺陷,提供一种滑动窗口算法的频次控制方法、系统、设备及介质。
本发明是通过下述技术方案来解决上述技术问题:
一种滑动窗口算法的频次控制方法,所述滑动窗口算法的频次控制方法包括:
发送访问请求至Redis数据库;
所述Redis数据库建立滑动窗口;
所述滑动窗口根据所述访问请求的发送时间记录预设时间片内所述访问请求的次数;
接收所述Redis数据库发出的预设时间片内对应的所述次数;
统计预设时间段内的所述次数;
判断统计结果是否超出预设阈值,若没有超出,则发送访问请求至服务器,其中,所述预设时间段包括若干所述预设时间片。
优选地,所述接收所述Redis数据库发出的预设时间片内对应的所述次数的步骤还包括:
保存所述次数至本地。
优选地,所述保存所述次数至本地的步骤包括:
建立一队列;
保存所述预设时间片内对应的所述次数至所述队列的元素中。
优选地,所述统计预设时间段内的所述次数的步骤包括:
从所述队列的所述元素中分别获取所述预设时间片内对应的所述次数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于携程旅游网络技术(上海)有限公司,未经携程旅游网络技术(上海)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010124462.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种混合区块链架构系统、处理方法及处理系统
- 下一篇:一种数据分发方法及系统





