频率控制总结

方式一:对http请求在每秒钟的访问次数进行控制

主要思想

获取当前时间(精确到秒)对数组求模得到数组下标,对该下标处的请求数进行原子+1操作,来判断是否达到每秒钟最大访问次数。

主要代码

1.执行http请求代码

2.维护协程定时清理数组中记录的每秒钟请求数量

优点:

1.能够对秒为时间单位的整体请求量进行初步控制

缺点

1.无法处理突发请求

2.无法将每个请求的时间间隔划分细致,合理

3.不能控制一个时间窗口内(>1s)的请求数(如:服务每分钟/每天的调用量)

方式二:对ip地址每秒访问controller:action的总数进行控制

主要思想:

利用redis(失效时间1s)保存该ip地址上一次访问/controller/action的时间,根据设置的频率控制大小计算访问一次的时间间隔,得到:上一次访问后,下次访问时间应该在多少之后。设置抖动值为2,允许某些接口连续访问两次的情况

主要代码:

优点:

1.时间单位为纳秒,增加连续访问的时间间隔,结合抖动值,可以对某个ip访问某个action进行更加精确,细致的频率控制

缺点:

1.无法处理突发请求

2.不能控制一个时间窗口内的请求数(如:服务每秒/每分钟/每天的调用量)

方式三:采用TokenBucket算法,对服务整体进行控制

主要思想:

每个服务对应一个频率控制桶,按照1 / QPS的时间间隔(如果QPS是100,则间隔是10ms),向桶中添加令牌。每次访问服务时,若能从该服务对应的桶中拿走一个可用的token,则没有超过访问频率。若获取不到可用的token,则超过设定的访问频率。

主要代码:

优点:

1.由于桶的容量,允许突发请求

2.根据添加速率,使请求更加均衡

(处理请求的弹性较高)

缺点:

1.不能控制一个时间窗口内的请求数(如:服务每秒/每分钟/每天的调用量)

方式四:使用redis对一个时间窗口内的请求数进行控制

主要思想:

利用缓存的失效时间,对客户端,ip地址,服务整体进行频率控制

优点:

1.可以控制一个时间窗口内的请求数(如:服务每秒/每分钟/每天的调用量)

缺点:

1.无法将每个请求的时间间隔划分细致,合理

2.突发请求存在一定风险(如:失效最后一秒到下次开始第一秒之间的大量请求)

频率控制方式及优缺点总结相关推荐

  1. JavaScript之各种继承方式和优缺点

    2019独角兽企业重金招聘Python工程师标准>>> JavaScript之各种继承方式和优缺点 原型链继承 function Parson(){this.name = 'hy' ...

  2. 单例模式的几种实现方式及优缺点

    参考:单例模式的几种实现方式及优缺点. 转载于:https://www.cnblogs.com/wenxiangchen/p/11343331.html

  3. 利用代码分别实现jdk动态代理和cglib动态代理_代理模式实现方式及优缺点对比...

    作者:爱宝贝丶来源:https://my.oschina.net/zhangxufeng/blog/1633187 代理模式最典型的应用就是AOP,本文结合主要讲解了代理模式的几种实现方式:静态代理和 ...

  4. h5文字垂直居中_CSS居中的常用方式以及优缺点

    前言 居中是页面开发中经常遇到的问题. 使用合适的.简单的.兼容性好的居中方式是我们页面仔在整个工作生涯中都要面对的问题. text-align:center 来看这个例子,一张图片和文字进行居中.如 ...

  5. SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对照注解方式的优缺点)...

    接上一篇 SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP,本篇我们主要是来学习使用配置XML实现AOP 本文採用强制的CGLB代理方式 Security ...

  6. 三电平半桥LLC谐振变换器电路仿真 采用频率控制方式 引入一定的移相角度

    三电平半桥LLC谐振变换器电路仿真 采用频率控制方式 引入一定的移相角度(比较小) 驱动信号采用CMPA CMPB方式产生 增计数模式(参照DSP PWM生成) 相比普通半桥LLC开关管电压应力小 输 ...

  7. 轮询,长连接,长轮询原理及实现方式,优缺点

    轮询,长连接,长轮询原理及实现方式,优缺点 在前一篇文章中我们了解了webSocket,就很有必要了解一点web通信技术.常用的轮询,长连接原理及实现方法. 通常的web应用的交互过程是:客户端发送请 ...

  8. JavaScript中的几种继承方式及优缺点,你知道多少呢?

    原文连接:JavaScript中的几种继承方式及优缺点,你知道多少呢? 继承也是前端里面的重要的一个知识点,在实际工作中或者面试中也会经常的遇到,那么通过这篇文章我们详细的了解一下继承的几种方式以及各 ...

  9. spring依赖注入的三种方式以及优缺点

    spring依赖注入的三种方式以及优缺点 一.依赖注入的三种方式 1.通过构造器注入.(spring4.3之后,推荐使用) 2.通过setter注入.(spring4.3之前,推荐使用) 3通过fil ...

最新文章

  1. Attachment rename issue in Faas
  2. WPF中设置ListView的Items颜色交替显示
  3. mysql 字符串类型 小数_在Mysql中,小数数据类型是指由字符串来表示的数字。(  )...
  4. 最速下降法和牛顿方法的Python实现和MATLAB实现
  5. 一辆车,一年大概要花费多少钱,除了油费?
  6. android的Service
  7. Oracle sql给一列赋值,简单的Oracle变量SQL赋值
  8. 智慧医院信息化建设(整体解决方案)
  9. Windows Server 2016 身份管理 (MCSA 认证 70-742)-李海园-专题视频课程
  10. android设备当广告屏使用方法,Android手机与电视无线HDMI同屏器使用教程
  11. 正则表达式——常用量词
  12. 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-22期...
  13. CTF逆向-[GWCTF 2019]babyvm-WP-虚机模拟流程反向编码和z3约束求解器解方程工具的使用
  14. python 中文转Unicode编码 Unicode编码转中文
  15. python join函数报错_python中join()函数的使用方法
  16. Django实现微电影网站
  17. Markdwon语法讲解
  18. vue v-for 中 img图片渲染不出来的解决方法
  19. 蓄电池单格电压多少伏_蓄电池的输出电压一般是多少
  20. 从校园到职场 - 选择真的比努力重要么?

热门文章

  1. MySQL权限与安全管理之权限表与账户管理
  2. 轻松理解LTE网规网优FAQ基本概念
  3. C#数组维度转换:一维数组二维数组三维数组相互转换
  4. 解决php7.2后报错Warning: Use of undefined constant PRE - assumed问题
  5. 浏览器访问不了localhost
  6. 沪漂IT岗的自我提升
  7. gitlab .gitlab-ci.yml 文件赏析
  8. Android中Uri和Path之间的转换
  9. Unix/Linux下的Curses库开发指南——第一章 Curses库开发简介
  10. redis命令之string类型incr/decr命令用法详情