大流量限流/消峰案例
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推模型,发布订阅:
大流量限流/消峰案例相关推荐
- 使用Guava的RateLimiter完成简单的大流量限流
限流的一般思路: 1.随机丢弃一定规则的用户(迅速过滤掉90%的用户): 2.MQ削峰(比如设一个MQ可以容纳的最大消息量,达到这个量后MQ给予reject): 3.业务逻辑层使用RateLimite ...
- 从限流削峰到性能优化,谈1号店抽奖系统架构实践
1.前言 抽奖是一个典型的高并发场景应用,平时流量不多,但遇到大促活动,流量就会暴增,今年的周年庆期间的日均UV就超过百万.在过去的一年里,负责过这个项目的多次重构工作,期间各种踩坑无数,就以此文当做 ...
- 限流削峰——限流器的实现
什么是限流削峰 限流削峰是对服务端进行流量控制的常见手段,控制QPS上限以达到减轻服务端负担的目的.一个好的限流削峰方案应该实现以下三条原则: 对系统入侵性小,与业务充分解耦,以降低维护成本 使用合适 ...
- RateLimiter高并发访问限流
使用RateLimiter完成简单的大流量限流,抢购秒杀限流. RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的 ...
- 【服务治理】服务熔断、服务降级、服务限流、流量削峰、错峰
文章目录 服务熔断.服务降级和服务限流 服务熔断 服务降级 服务限流 实现 步骤三.Polly在.NetCore项目中封装 流量错峰.流量限流.流量削峰 流量错峰 服务端错峰策略 客户端错峰策略 流量 ...
- 亿级流量架构之服务限流思路与方法
为什么要限流 日常生活中,有哪些需要限流的地方? 像我旁边有一个国家AAAA景区,平时可能根本没什么人前往,但是一到五一或者春节就人满为患,这时候景区管理人员就会实行一系列的政策来限制进入人流量, 为 ...
- Gateway之限流、熔断
Sentinel–服务容错 高并发带来的问题 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络 原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务 ...
- 我司“双11”限流方案,进来抄作业!
欢迎关注方志朋的博客,回复"666"获面试宝典 日常生活中,有哪些需要限流的地方?像我旁边有一个国家景区,平时可能根本没什么人前往,但是一到十一或者春节就人满为患,这时候景区管理人 ...
- 面试限流、熔断、高可用,好多人一脸懵!
欢迎关注方志朋的博客,回复"666"获面试宝典 日常生活中,有哪些需要限流的地方? 像我旁边有一个国家景区,平时可能根本没什么人前往,但是一到五一或者春节就人满为患,这时候景区管理 ...
最新文章
- 解决每次git pull需要不用输入用户名信息
- 需要反射时使用dynamic
- 计算机计算能力,计算机/电脑为什么拥有计算能力
- *36.操作系统中磁盘的调度算法
- ios Swift 中文学习手册
- Invokedynamic:Java的秘密武器
- ajax php 投票,PHP 实例 AJAX 投票
- 关于计算机航天生物的想像作文,未来的航天器想象作文750字
- 三诺+n20g+微型计算机,原来是他?揭秘三诺永恒系列开山鼻祖
- (08)System Verilog 类继承
- 黑洞效果的粒子背景效果
- 火狐浏览器自动刷新网页插件
- 科技爱好者周刊(第 150 期):当音乐还是稀缺的时候
- 三菱fx2n64mr说明书_FX2N-64MR-001手册三菱FX2N-64MR-001使用说明书 - 广州凌控
- MySQL高级---04
- 软件项目最常见的失败原因分析
- php 字符查询_php中几个常用的字符串查找函数
- 商务软件开发网课答案
- 微信小程序云开发支付
- 常用飞轮构型的角动量包络