美文网首页
一毛不拔 —— 漏斗限流

一毛不拔 —— 漏斗限流

作者: DreamsonMa | 来源:发表于2019-03-22 15:34 被阅读0次

漏斗限流是最常用的限流方法之一,顾名思义,这个算法的灵感源于漏斗(funnel)的结
构。

漏斗限流

漏洞的容量是有限的,如果将漏嘴堵住,然后一直往里面灌水,它就会变满,直至再也装不进去。如果将漏嘴放开,水就会往下流,流走一部分之后,就又可以继续往里面灌水。如果漏嘴流水的速率大于灌水的速率,那么漏斗永远都装不满。如果漏嘴流水速率小于灌水的速率,那么一旦漏斗满了,灌水就需要暂停并等待漏斗腾空。

所以,漏斗的剩余空间就代表着当前行为可以持续进行的数量,漏嘴的流水速率代表着系统允许该行为的最大频率。

Redis 4.0 提供了一个限流 Redis 模块,它叫 redis-cell。该模块也使用了漏斗算法,并提供了原子的限流指令。有了这个模块,限流问题就非常简单了。该模块只有 1 条指令 cl.throttle,它的参数和返回值都略显复杂,接下来让我们来看看这个指令具体该如何使用。

redis-cell限流使用

上面这个指令的意思是允许「用户老钱回复行为」的频率为每 60s 最多 30 次(漏水速率),漏斗的初始容量为 15,也就是说一开始可以连续回复 15 个帖子,然后才开始受漏水速率的影响。

redis-cell限流返回值

在执行限流指令时,如果被拒绝了,就需要丢弃或重试。cl.throttle 指令考虑的非常周到,连重试时间都帮你算好了,直接取返回结果数组的第四个值进行 sleep 即可,如果不想阻塞线程,也可以异步定时任务来重试。

本文基于《Redis深度历险:核心原理和应用实践》一文的JAVA实践。更多文章请参考:高性能缓存中间件Redis应用实战(JAVA)

备注:其他开源限流工具 https://github.com/crossoverJie/distributed-redis-tool

相关文章

  • 一毛不拔 —— 漏斗限流

    漏斗限流是最常用的限流方法之一,顾名思义,这个算法的灵感源于漏斗(funnel)的结构。 漏洞的容量是有限的,如果...

  • 9.【Redis系列】Redis的高级应用-漏斗限流

    漏斗限流是最常用的限流方法之一,顾名思义,这个算法的灵感源于漏斗(funnel)的结构。 漏斗的容量是有限的,如果...

  • 基于redis的漏斗限流的实现

    漏斗限流是最常用的限流方法之一,顾明思义,这个算法的灵感源于漏斗(funnel)的结构。 如下图所示,漏斗的容量是...

  • redis007--漏斗限流

    漏斗限流是最常用的限流方法之一,顾名思义,这个算法的灵感源于漏斗(funnel)的结构。 漏洞的容量是有限的,如果...

  • 漏斗限流模型

    原文出处:老钱的 Redis 深度历险:核心原理与应用实践 关于思路:Funnel 对象的 make_space ...

  • (9)弹力设计篇之“限流设计”

    1、限流的策略 2、限流的算法:计数器、队列、漏斗和令牌桶。 3、如何基于响应时间来限流。 4、限流设计的要点 限...

  • 08_redis_漏斗限流

    漏斗限流是最常用的限流方法之一漏斗的剩余空间就代表着当前行为可以持续进行的数量,漏嘴的流水速率代表着系统允许该行为...

  • Redis-简单分布式限流

    Redis-简单分布式限流 限流方式 漏斗式: 应对突发会直接溢出,拒绝服务了.令牌桶式: 应对突发会比较好,毕竟...

  • 物流系统高可用架构案例

    系统可用率 多级缓存 动态分组切换 DB物理隔离 服务分组隔离 跨机房隔离 漏斗模型 DB限流 系统一般可...

  • 限流器系列(1) -- Leaky Bucket 漏斗桶

    限流器(Rate Limiter)在微服务中的重要性不言而喻了. 下游服务的稳定性, 防止过载, 全靠这个组件来保...

网友评论

      本文标题:一毛不拔 —— 漏斗限流

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