参考:

服务限流

1. 限流的作用

限流主要的作用是保护服务节点或者集群后面的数据节点,防止瞬时流量过大使服务和数据崩溃(如前端缓存大量实效),造成不可用;还可用于平滑请求。

2. 限流算法

限流算法有两种:

  • 一种就是简单的请求总量计数
  • 一种就是时间窗口限流(一般为1s),如令牌桶算法和漏牌桶算法就是时间窗口的限流算法

令牌桶算法(token Bucket)

  1. 系统以固定速率将令牌放入一个固定容量的令牌桶中,当令牌桶满时,系统将放弃添加新的令牌到桶中
  2. 客户的每一次请求都会消耗桶中的令牌,当桶中没有令牌时则放弃这次请求或者等待直到桶有新的令牌添加。

漏桶算法(Leaky Bucket)

漏桶算法和令牌桶算法思路一样

 
  1. 每一次请求都将令牌放入令牌桶中,如果桶满则放弃这次请求或者等到桶为空
  2. 系统以固定的速度消耗令牌直到桶为空

可以看出来和令牌桶思路一样,只是角色互换,方向相反,实现上可以使用第三方框架来学习,也可以使用Java阻塞队列来实现,或者使用Redis的List来实现。

最新文章

  1. Mysql数据库的一些命令_LInux
  2. JavaWeb 的学习一
  3. 像编程一样写文章—Markdown
  4. 腾讯 or 华为 =》 求职者的困惑
  5. vim颜色选择+按<F9>自动编译运行+其他基本配置(ubuntu)
  6. NOIP201103瑞士轮
  7. 关于.net中的脚本语言使用
  8. [git] github 使用简单记录
  9. DataTable.DataRow的复制
  10. GitHub使用(四) - 关于分支Branch
  11. app个推(透传消息)
  12. Python面试笔记一
  13. 一步一步安装SQL Server 2017
  14. AX2009里调用.NET DLL的效率问题
  15. 笔记-Android中打开各种格式的文件(apk、word、excel、ppt、pdf、音视频、图片等)
  16. Expression的烦恼
  17. C++雾中风景番外篇3:GDB与Valgrind ,调试代码内存的工具
  18. Linux下批量修改文件名(rename)
  19. CMake结合PCL库学习(3)
  20. background属性解释

热门文章

  1. Oracle 备份与恢复基础
  2. strcmp与strncmp的区别
  3. rails的respond to format
  4. HDLM命令dlnkmgr详解之一__命令格式
  5. elasticsearch(4) 安装 (两台)
  6. LNMP 1.5 php-fpm配置文件
  7. C语言学习笔记--内存操作常见错误
  8. python爬虫--编码问题y
  9. Java线程池拒绝策略
  10. JavaScript问题01 js代码放在header和body的区别