大流量限流/消峰案例

大流量限流/消峰案例1 分布式系统为什么需要进行流量管制地铁高峰期流量管制五种分布式系统应对高并发 大流量的常规手段 1 扩容 2 动静分离 3 缓存 4 服务降级 5 限流 2 限流的具体方案 2 1 常见的限流算法令牌桶算法 令牌桶 TokenBucket 算法主要用于限制流量的平均流人速率 并且还允许出现一定程度上的突发流量 如图 2 3 所示

1.分布式系统为什么需要进行流量管制

  • 地铁高峰期流量管制
    在这里插入图片描述
  • 五种分布式系统应对高并发、大流量的常规手段:
    1.扩容
    2.动静分离
    3.缓存
    4.服务降级
    5.限流

2.限流的具体方案

2.1.常见的限流算法

令牌桶算法:令牌桶( Token Bucket)算法主要用于限制流量的平均流人速率,并且还允许出 现一定程度上的突发流量,如图 2-3 所示。基于令牌桶算法的限流场景较多,比如 Nginx 的限流模块就是一个典型的采用令牌桶算法的实现
  • 令牌桶算法基本流程:
    1.每秒会有 r个令牌被放人桶内,也就是说 , 会以 llr秒的平均速率向桶中依次 放人令牌(比如每秒共放人 10 个令牌,那么每 0.1 秒放人 1 个令牌)
    2.桶的容量是固定不变的,假设桶中最多只允许存放 b 个令牌,如果桶满了再 放人令牌,则溢出(新添加的令牌被丢弃)
    3.当一个 n 字节的请求包到达时,将消耗 n 个令牌,然后再发送该数据包
    4.若桶中的可用令牌数小于 n,则该数据包将会被执行限流处理(被抛弃或缓存)。
  • 令牌桶算法流程图:
    在这里插入图片描述
漏桶算法:
  • 漏桶算法的基本流程
    1.可以以任 意速率向桶中流人水滴
    2.桶的容量是固定不变的,如果桶满了则 溢出(新流人的水滴被丢弃)
    3.按照固定的速率从桶中流出水滴
  • 漏桶算法的流程图
    在这里插入图片描述
从本质上来说,令牌桶算法和漏桶算法都可以用于在高并发、大流量场景下对 流量实施管制,让系统的负载处于比较均衡的水位,不会因为峰值流量过大,导致 系统被击垮。但是需要注意,这两种算法的限流方向是截然相反的。令牌桶算法限 制的是流量的平均流人速率,并且可以允许出现一定程度上的突发流量,当桶中令 牌数量不足扣减时,新的请求将被执行限流处理;而漏桶算法限制的是流量的流出 速率,而不是流入速率,并且这种流出速率还是保持固定不变的,不允许像令牌桶 算法那样出现突发流量,当流人的水滴超过桶的容量时,新的请求将被执行限流 处理。

3.基于时间分片的消峰案例

3.1.活动分时段进行实现消峰

大促活动整点的波峰值流量如同 一把尖锐的刺刀,让人不寒而栗,但是如果将 整点的促销活动调整到多个时段进行(比如某一个 SKU 的库存数量为 5000,抢购时 段被分为 10 次,那么运营人员在每个时段放置的库存数量为 500 (SKU/时段),同 一时段聚集的用户流量将会被有效分散,大家都不会火急火燎地在同一个时间点去 抢购心仪的爆款商品,这样系统的负载压力将会大大降低。在业务上做调整来对流量进行消峰,也能够收获非常好的限流效果,这便是站 在业务的角度对系统实施保护的 一个非常典型的案例。

3.2.通过答题验证实现消峰

12306购票网站

4.异步调用需求

4.1.使用 MQ 实现系统之间的解耦

  • 由于 MQ 技术发展至今 已经相当成熟了,目前市面上也汇集了许多优秀的开源 MQ 产品,如 Apache 的 ActiveMQ 和 Kafka、阿里的 RocketMQ ,以及 HometQ、 RabbitMQ、 ZeroMQ 等,笔 者建议用户规模较小的网站使用遵循 JMS (Java Message Service)规范的 ActiveMQ 这种轻量级的 MQ 产品(甚至也可以使用 Redis 提供的 Publish/Subscribe 模型),而 KafKa、 RocketMQ 等类型的 MQ 产品,天生就是为互联网场景下拥有高并发、大流 量的分布式系统量身打造的。因为在这种规模的消息体量上,我们重点需要考虑的 是 MQ 产品的吞吐量、可用性及扩展性等多个方面的问题
  • 通过消息传递实现异步调用
    在这里插入图片描述

4.2.两种消息模型

  • pull拉模型,点对点:
    在这里插入图片描述
  • push推模型,发布订阅:
    在这里插入图片描述
今天的文章 大流量限流/消峰案例分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-25 12:46
下一篇 2024-12-25 12:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/96227.html