限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。常用的限流算法有令牌桶法和漏桶法,而Google开源项目Guava中的RateLimiter使用的就是令牌桶算法。在使用令牌桶算法时需要引入如下依赖:

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>29.0-jre</version>
</dependency>

令牌桶算法的概念:以固定的频率向桶中放入令牌,例如一秒钟2枚令牌,实际业务在每次响应请求之前都从桶中获取令牌,只有取到令牌的请求才会被成功响应。

令牌桶法的原理图如下:

示例代码如下:

import com.google.common.util.concurrent.RateLimiter;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.Res

限流算法-令牌桶算法相关推荐

  1. 网关限流(令牌桶算法)

    一.需求: 每个ip地址1秒内只能发送1次请求,多出来的请求返回429错误. 二.引入依赖 spring cloud gateway 默认使用redis的RateLimter限流算法来实现.所以我们要 ...

  2. 服务治理---限流(令牌桶算法)

    1.最近在写一个分布式服务的框架,对于分布式服务的框架来说,除了远程调用,还要进行服务的治理 当进行促销的时候,所有的资源都用来完成重要的业务,就比如双11的时候,主要的业务就是让用户查询商品,以及购 ...

  3. 接口限流算法:漏桶算法令牌桶算法。

    背景 每一个对外提供的API接口都是需要做流量控制的,不然会导致系统直接崩溃.很简单的例子,和保险丝的原理一样,如果用电符合超载就会烧断保险丝断掉电源以达到保护的作用.API限流的意义也是如此,如果A ...

  4. 什么是限流?为什么会限流呢?常见的限流算法【固定窗口限流、滑动窗口限流、漏桶限流、令牌桶限流】是什么呢?

    什么是限流?为什么会限流呢?常见的限流算法[固定窗口限流.滑动窗口限流.漏桶限流.令牌桶限流]是什么呢? 什么是限流? 为什么会限流? 1. 固定窗口限流算法 1.1 什么是固定窗口限流算法 1.2 ...

  5. java漏桶算法 令牌桶算法_coding++:Semaphore—RateLimiter-漏桶算法-令牌桶算法

    java中对于生产者消费者模型,或者小米手机营销 1分钟卖多少台手机等都存在限流的思想在里面. 关于限流 目前存在两大类,从线程个数(jdk1.5 Semaphore)和RateLimiter速率(g ...

  6. 漏桶算法令牌桶算法理解及常用的算法

    令牌与漏桶的区别 1. 漏桶是出,令牌是进 2. 令牌是允许伸缩 漏桶算法 漏桶算法(Leaky Bucket)是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limiti ...

  7. 接口限流算法:漏桶算法令牌桶算法

    工作中对外提供的API 接口设计都要考虑限流,如果不考虑限流,会成系统的连锁反应,轻者响应缓慢,重者系统宕机,整个业务线崩溃,如何应对这种情况呢,我们可以对请求进行引流或者直接拒绝等操作,保持系统的可 ...

  8. 令牌桶算法和漏桶算法python_限流之漏桶算法与令牌桶算法

    在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流 缓存:缓存的目的是提升系统访问速度和增大系统处理容量 降级:降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降 ...

  9. 一种限流算法-令牌桶算法

    业务背景 一般做接口限流主要是为了应对突发流量,避免突发流量拖垮服务.如下面一些场景就有可能发生突发流量 微博热搜 恶意刷单 恶意爬虫 促销活动 令牌桶算法 我们用一个桶来盛放令牌,假设桶的上限为10 ...

最新文章

  1. 初识hibernate小案例
  2. C++中关于类中常数静态成员初始化的问题
  3. MaintainableCSS 《可维护性 CSS》 --- 模板篇
  4. linux使用openssl查看文件的md5数值
  5. plt的纵坐标的百分号显示
  6. Sql Server2005安装图解
  7. 数据预处理和数据特征工程
  8. javascript二叉树基本功能实现
  9. AutoCad多层嵌套图块的颜色显示规则
  10. 大健康产业B2B2C多用户电商平台开发,开启数字化消费新蓝海
  11. 【PyTorch教程】P27、28、29 完整的模型套路
  12. Mac上键入数学符号怎样输入
  13. CSR867x 之充电配置开发
  14. c语言课程设计自我评价,学生成长卡,个人表现,自评
  15. 笔记本RTX3060比2060性能高多少 RTX3060和2060笔记本差距多大
  16. KISSY基础篇乄目录
  17. 后端开发常见面试题目
  18. ping是什么,有什么作用?
  19. 拼多多关键字搜索,拼多多商品列表,根据关键词取商品列表
  20. 设计模式之----Java动态代理模式

热门文章

  1. 关于技嘉主板使用win10操作系统关机自动重启的一种解决办法。其他厂家主板也可以尝试一下此方法。
  2. vue打包运行并解决404问题
  3. 【报告分享】2022年零售行业消费趋势新主张-京东+罗兰贝格.pdf(附下载链接)...
  4. StackRec: 通过迭代堆叠实现推荐系统的高效训练
  5. 【干货】深度学习及在推荐中的实践-美团点评.pdf(附下载链接)
  6. pytorch一天速成第一部分——基础入门Tensor和cuda
  7. 【训练计划】ACM题集以及各种总结大全
  8. NLP简报(Issue#1)
  9. ROS入门-13.服务数据的定义与使用
  10. Java-Collection、List