前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式限流

分布式限流

原创
作者头像
冰寒火
修改2022-09-15 11:45:37
3010
修改2022-09-15 11:45:37
举报
文章被收录于专栏:软件设计

一、本地限流

1 令牌桶

以固定的速率向桶中加入令牌,达到上限为止。拿到令牌的请求继续往下执行,没拿到令牌的请求则根据具体的拒绝策略来处理。拒绝策略可以类似于线程池一样,例如:进阻塞队列、抛弃等等。

如果配置多种限流策略,则可以使用责任链设计模式,将每种限流策略作为一个节点,请求只有顺利通过每个节点的规则才能够继续往下执行业务逻辑。

2 漏桶

以固定的速率离开桶,限制桶的流出速度,其他的跟令牌桶一样。

3 滑动窗口

假如一个时间窗口能够通过n个请求,将这个窗口划分为m小窗口,每个小窗口只能通过n/m个请求,每次滑动一个小窗口,可以解决窗口边界的突刺情况,让流量尽可能平稳。

二、分布式限流

分布式限流可以达到一个全局的限流控制,一般是增加一个中间组件,这个组件是全局且中心化的,以此达到全局限流,比如:nginx就可以。我们需要考虑是否会将这个中心组件打垮,尽量减少请求这个中心组件的频率。比如,每个服务每次申请50个令牌,然后本地限流,令牌使用完再向中心组件申请。

三、小结

  1. 令牌桶能够支持突然流量,而漏桶比较平稳,相对来说令牌桶更适合真实场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、本地限流
    • 1 令牌桶
      • 2 漏桶
        • 3 滑动窗口
        • 二、分布式限流
        • 三、小结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档