大家好,这里是程序员阿亮,今天来给大家讲解一下咱们平时在学习分布式或者面对分布式场景、项目时经常会遇到的几个词—-限流、熔断、降级

前言
在构建高可用的分布式系统时,限流、熔断、降级是三个至关重要的稳定性保障机制。它们如同系统的三道防线,共同守护着服务的稳定运行。
一、限流
1.1 限流是什么
限流是指对系统的请求量进行限制,防止系统被突发流量冲垮。
在高并发场景下,防止大量的请求瞬间耗尽服务器资源,让服务器宕机,也可以防止一些恶意的流量攻击。
一般是被调用者对调用者进行限流,比如说我们有一个服务,我们提供给我们公司里面多个项目去调用,为了保证这个服务的可用性,我们会对每个调用方进行限流,防止突发流量打爆我们的服务器。
1.2 常见限流算法
实际上常见的限流算法在我的其他博客有讲解
限流算法
大家可以通过这篇文章仔细学习这些算法。
实际上常见的算法有令牌限流、桶限流、固定窗口限流、滑动窗口限流等,这里不过多叙述。
二、熔断
2.1 熔断是什么
熔断机制类似于电路保险丝,当服务调用失败率达到一定阈值时,自动切断服务调用,避免故障扩散。熔断的核心目标是快速失败或者返回降级结果,防止雪崩效应。
雪崩(Avalanche Effect) 在微服务架构中,是指由单个服务故障引发的一系列连锁反应,最终导致整个系统瘫痪的现象。
就好像我们在微服务里面有一个调用链,下游的服务无法提供正常服务,上游又有大量的请求打来,这样上游的请求堆积,线程耗尽,就这样逐级传播,最终整个服务都瘫痪了,这就是雪崩。
熔断的重要性:
- 快速失败,减少等待时间
- 防止故障扩散,保护调用方
- 给故障服务恢复的时间
- 提供降级方案,保证核心业务
2.2 熔断器的状态机
熔断器通常有三种状态:
三、降级
3.1 降级是什么
降级是指在系统压力过大或部分服务不可用时,暂时关闭或简化某些非核心功能,保证核心业务的正常运行。降级的核心目标是牺牲部分功能,保障系统整体可用性。
降级的重要性:
- 保证核心业务的可用性
- 提升系统整体稳定性
- 为故障恢复争取时间
- 提供更好的用户体验
就好像在双十一的购物节上,淘宝会在高峰期把退款功能关闭,这就是一种降级
某次腾讯视频挂了之后,用户名默认显示腾讯用户,这也是一种降级
一般都是在流量高压期把非核心业务先关闭,为核心抗压服务提供资源的一种做法,在高压期结束后再恢复。
总结
|
目的 |
控制系统的流量,防止过度的流量导致系统崩溃。 |
主动关闭一些非核心功能,以确保核心功能的正常运行。 |
防止系统因某个服务的故障而整体崩溃,类似于电路的熔断器(快速失败保护)。 |
|
手段 |
各种限流算法:滑动窗口、漏桶、令牌桶 |
开关;通过开关控制某些功能直接被降级。 |
熔断器机制(如 Circuit Breaker):基于错误率/超时率自动熔断,支持半开状态恢复检测。 |
|
工具 |
Sentinel |
Sentinel |
Sentinel(也支持 Hystrix、Resilience4j 等) |
|
示例 |
查询用户信息服务对每个调用方做限流,防止单一调用方不守规矩拖垮服务。 |
• 双十一期间淘宝关闭退款功能 • 腾讯视频挂了时,用户名默认显示“腾讯用户”(兜底展示) |
电商平台支付时,若微信支付失败率突增、超时严重,临时熔断该支付渠道。 |
|
发起方 |
被调用方(服务端) / 调用方(客户端) |
被调用方(服务端) / 调用方(客户端) |
调用方(客户端)——由下游服务的调用端主动触发熔断判断与隔离 |
实际上限流熔断降级都是系统在高并发、高负载场景下的保护策略,在生产环境中,这三者往往协同工作:限流保护系统不被打满,熔断隔离故障服务,降级确保核心体验。只有将它们有机结合,才能构建真正高可用的分布式系统。






