限流

作者: 夜雨听风_b3d5 | 来源:发表于2019-10-27 17:18 被阅读0次

限流算法:

1、漏桶算法:①流入水滴流入速率任意;②如果流入速率过快,超过了桶的容量,则直接丢弃水滴;③按照常量速率留出水滴;

2、令牌桶算法:①按照100毫秒固定速率填充令牌,填满了则丢弃令牌;②请求;③获取令牌;④处理请求;⑤令牌不足则拒绝请求;

如:springboot项目中,通过采用谷歌开发包下的ratelimiter方法去限流,可注解的形式和spring的切面编程方式去实现对controller层的请求过滤限流拦截,仅实现单节点。

不同点:

1、令牌桶允许一定程度的突发,而漏桶主要目的是平滑流入速率;

2、两个算法实现可以一样,但是方向是相反的,对于相同的参数得到的限流效果是一样的。

        计数器来限流,限制总并发数,例如:数据库连接池大小、线程池大小、秒杀并发数计数器的用法。只要全局总请求数或者一定时间段总请求数达到设定阈值,则进行限流。

应用级限流:

为了限制TPS/QPS,比如设置acceptCount(允许的进入队列的数量);maxConnections(最大的连接);maxThread最大的线程数。

其中mysql和redis都可以设置限制连接数的配置。

限流某个接口总并发数/请求数:

java中的AtomicLong或者Semaphore进行限流;Guava的cache来存储计数器,过期时间设置为2秒(保证能记录1秒内的计划数)。然后,我们获取当前时间戳,取秒数来作key进行计数统计和限流。

Guava RateLimiter提供的令牌桶算法可用于平滑突发限流和平滑预热限流实现。

guava提供了三种缓存回收的策略:基于容量回收、定时回收和基于引用回收。

分布式限流:

redis+lua或Nginx+lua

通过消息队列

相关文章

  • 高并发环境下的限流策略

    本文将从以下几个方面分析限流策略: 什么是限流限流算法限流算法的应用 什么是限流 在开发高并发系统时,有很多手段来...

  • 聊聊高并发系统之限流特技-2

    摘要:上一篇《聊聊高并发系统限流特技-1》讲了限流算法、应用级限流、分布式限流;本篇将介绍接入层限流实现。 接入层...

  • 限流框架系列之常见限流算法

    四种常见的限流算法 固定时间窗口限流算法 滑动时间窗口限流算法 令牌桶限流算法 漏桶限流算法 算法比较 算法确定参...

  • Semaphore CountDownLatch CyclicB

    限流可分为并发限流和速率限流。 Semaphore就属于并发限流的实现。 插句话:速率限流一般限的是QPS,即一秒...

  • 聊聊高并发系统限流特技-2

    转载来自开涛的聊聊高并发系统限流特技-2 上一篇《聊聊高并发系统限流特技-1》讲了限流算法、应用级限流、分布式限流...

  • 图解+代码|常见限流算法以及限流在单机分布式场景下的思考

    大家好,我是 yes。 今天来说说限流的相关内容,包括常见的限流算法、单机限流场景、分布式限流场景以及一些常见限流...

  • 限流降级方案

    限流算法 并发数限流 计数器并发数限流:使用共享变量实现 信号量:使用java中的Semaphore QPS限流 ...

  • 高并发下的Nginx实用配置 - 限流和黑白名单

    1. 限流算法 漏桶算法 令牌桶算法 更多限流算法相关知识,请查看【单机限流 - 限流算法及隔离策略】[https...

  • 服务限流

    保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。限流可是Nginx接入层面的限流,也可以是服务层面的限流。 ...

  • 限流算法

    前言 保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。限流包括Nginx层面的限流以及业务代码逻辑上的限流。...

网友评论

      本文标题:限流

      本文链接:https://www.haomeiwen.com/subject/lnxmvctx.html