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推模型,发布订阅:

大流量限流/消峰案例相关推荐

  1. 使用Guava的RateLimiter完成简单的大流量限流

    限流的一般思路: 1.随机丢弃一定规则的用户(迅速过滤掉90%的用户): 2.MQ削峰(比如设一个MQ可以容纳的最大消息量,达到这个量后MQ给予reject): 3.业务逻辑层使用RateLimite ...

  2. 从限流削峰到性能优化,谈1号店抽奖系统架构实践

    1.前言 抽奖是一个典型的高并发场景应用,平时流量不多,但遇到大促活动,流量就会暴增,今年的周年庆期间的日均UV就超过百万.在过去的一年里,负责过这个项目的多次重构工作,期间各种踩坑无数,就以此文当做 ...

  3. 限流削峰——限流器的实现

    什么是限流削峰 限流削峰是对服务端进行流量控制的常见手段,控制QPS上限以达到减轻服务端负担的目的.一个好的限流削峰方案应该实现以下三条原则: 对系统入侵性小,与业务充分解耦,以降低维护成本 使用合适 ...

  4. RateLimiter高并发访问限流

    使用RateLimiter完成简单的大流量限流,抢购秒杀限流. RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的 ...

  5. 【服务治理】服务熔断、服务降级、服务限流、流量削峰、错峰

    文章目录 服务熔断.服务降级和服务限流 服务熔断 服务降级 服务限流 实现 步骤三.Polly在.NetCore项目中封装 流量错峰.流量限流.流量削峰 流量错峰 服务端错峰策略 客户端错峰策略 流量 ...

  6. 亿级流量架构之服务限流思路与方法

    为什么要限流 日常生活中,有哪些需要限流的地方? 像我旁边有一个国家AAAA景区,平时可能根本没什么人前往,但是一到五一或者春节就人满为患,这时候景区管理人员就会实行一系列的政策来限制进入人流量, 为 ...

  7. Gateway之限流、熔断

    Sentinel–服务容错 高并发带来的问题 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络 原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务 ...

  8. 我司“双11”限流方案,进来抄作业!

    欢迎关注方志朋的博客,回复"666"获面试宝典 日常生活中,有哪些需要限流的地方?像我旁边有一个国家景区,平时可能根本没什么人前往,但是一到十一或者春节就人满为患,这时候景区管理人 ...

  9. 面试限流、熔断、高可用,好多人一脸懵!

    欢迎关注方志朋的博客,回复"666"获面试宝典 日常生活中,有哪些需要限流的地方? 像我旁边有一个国家景区,平时可能根本没什么人前往,但是一到五一或者春节就人满为患,这时候景区管理 ...

最新文章

  1. 解决每次git pull需要不用输入用户名信息
  2. 需要反射时使用dynamic
  3. 计算机计算能力,计算机/电脑为什么拥有计算能力
  4. *36.操作系统中磁盘的调度算法
  5. ios Swift 中文学习手册
  6. Invokedynamic:Java的秘密武器
  7. ajax php 投票,PHP 实例 AJAX 投票
  8. 关于计算机航天生物的想像作文,未来的航天器想象作文750字
  9. 三诺+n20g+微型计算机,原来是他?揭秘三诺永恒系列开山鼻祖
  10. (08)System Verilog 类继承
  11. 黑洞效果的粒子背景效果
  12. 火狐浏览器自动刷新网页插件
  13. 科技爱好者周刊(第 150 期):当音乐还是稀缺的时候
  14. 三菱fx2n64mr说明书_FX2N-64MR-001手册三菱FX2N-64MR-001使用说明书 - 广州凌控
  15. MySQL高级---04
  16. 软件项目最常见的失败原因分析
  17. php 字符查询_php中几个常用的字符串查找函数
  18. 商务软件开发网课答案
  19. 微信小程序云开发支付
  20. 常用飞轮构型的角动量包络

热门文章

  1. html文字自动铺满页面,body height:100%让页面容器元素铺满窗口
  2. 第三章 模糊查询与分组查询 ② 代码
  3. JAVA通用分页代码
  4. 房贷利息怎么算, 千万别被砖家叫兽误导
  5. python错误类型翻译_17个新手常见的Python运行时错误
  6. 小乌龟html5小游戏,晨会互动小游戏之《抓乌龟》
  7. Java学习查漏补缺及知识点整理
  8. 顺序查找(利用监视哨)的实现
  9. python采用函数式_python -- 函数以及函数式编程
  10. 天瑞地安电子锁APP应用 为安全家居保驾护航