高并发之限流设计

高并发之限流设计

前言介绍

高并发系统保护的三把利器 : 缓存、降级和限流

  • 缓存缓存的目的是提升系统访问速度和增大系统处理容量
  • 降级降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开
  • 限流限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理

限流方式

  • 限制总并发数(比如数据库连接池、线程池)

  • 限制瞬时并发数(如nginx的limit_conn模块,用来限制瞬时并发连接数)

  • 限制时间窗口内的平均速率(如Guava的RateLimiter、nginx的limit_req模块,限制每秒的平均速率)

  • 限制远程接口调用速率

  • 限制MQ的消费速率。

  • 可以根据网络连接数、网络流量、CPU或内存负载等来限流

限流算法

常用的限流算法有: 漏桶算法和令牌桶算法, 还有简单粗暴的计数器。

漏桶算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大会直接溢出,可以看出漏桶算法能强行限制数据的传输速率。

在这里插入图片描述

对于很多应用场景来说,除了要求能够限制数据的平均传输速率外,还要求允许某种程度的突发传输。这时候漏桶算法可能就不合适了,令牌桶算法更为适合。

令牌桶算法的原理是系统会以一个恒定的速度往桶里放入令牌,而如果请求需要被处理,则需要先从桶里获取一个令牌,当桶里没有令牌可取时,则拒绝服务。

在这里插入图片描述

令牌桶vs漏桶

令牌桶限制的是平均流入速率,允许突发请求,并允许一定程度突发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值