后端限流思考

本文探讨了服务雪崩的产生原因,并详细解释了限流的重要性。介绍了前端限流、代理层限流和服务层限流的不同层面。接着阐述了四种常见的限流算法:固定窗口、滑动窗口、漏桶和令牌桶算法,分析了各自的优缺点。此外,还讨论了集群限流的实现,如利用Redis+Lua脚本进行限流。最后,列举了限流的常见应用方式。
摘要由CSDN通过智能技术生成

一、雪崩是怎么产生的?

有四个服务 A、B、C、D,A 调用 B,B 调用 C 和 D。其中,A、B、D 服务是系统的核心服务(像是电商系统中的订单服务、支付服务等等),C 是非核心服务(像反垃圾服务、审核服务)。

一旦作为入口的 A 流量增加,你可能会考虑把 A、B 和 D 服务扩容,忽略 C。那么 C 就有可能因为无法承担这么大的流量,导致请求处理缓慢,进一步会让 B 在调用 C 的时候,B 中的请求被阻塞,等待 C 返回响应结果。这样一来,B 服务中被占用的线程资源就不能释放。久而久之,B 就会因为线程资源被占满,无法处理后续的请求。那么从 A 发往 B 的请求,就会被放入 B 服务线程池的队列中,然后 A 调用 B 响应时间变长,进而拖垮 A 服务。

因为非核心服务 C 的响应时间变长,就可以导致整体服务宕机,这就是我们经常遇到的一种服务雪崩情况。

保证系统高可用,在系统设计上我们能做些啥?

1.Failover(故障转移)

2.超时控制

3.降级/熔断

4.限流(本次重点)

二、限流是什么?

限流指的是通过限制到达系统的并发请求数量,保证系统能够正常响应部分用户请求。而对于超过限制的流量
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值