我来为您详细介绍服务降级、限流、熔断这三个重要的微服务稳定性概念。
在微服务架构中,服务降级、限流 和 熔断 是保障系统稳定性和高可用性的三大核心策略,它们各自解决不同的问题,但常常配合使用。以下是对这三个概念的详细介绍:
✅ 一句话区分(先给你个整体印象)
| 概念 | 一句话理解 |
|---|---|
| 限流 | 控制流量,防止系统被突发请求压垮。 |
| 熔断 | 切断故障传播,防止一个服务挂掉拖垮整个系统。 |
| 降级 | 牺牲非核心功能,保障核心业务可用。 |
一、服务限流(Rate Limiting)
✅ 定义:
限制单位时间内进入系统的请求数量,防止系统因突发高并发而崩溃。
✅ 触发条件:
- 请求量超过系统承载能力(如 QPS、并发数)。
✅ 常见算法:
| 算法 | 特点 |
|---|---|
| 令牌桶 | 允许突发流量,适合 API 接口。 |
| 漏桶 | 匀速处理请求,适合消息队列、写库等。 |
| 计数器 | 简单暴力,适合低频场景。 |
| 滑动窗口 | 更精细,适合高并发场景。 |
✅ 应用场景:
- 秒杀活动接口限流(如每秒最多 1000 次请求)。
- 防止恶意刷接口。
- 保护下游服务(如数据库)不被打爆。
✅ 示例:
// Sentinel 限流规则
FlowRule rule = new FlowRule();
rule.setResource("seckill");
rule.setCount(100); // 每秒最多 100 次
rule.setGrade(RuleConstant.FLOW_GRADE_QPS);
二、服务熔断(Circuit Breaker)
✅ 定义:
当某个服务失败率过高时,自动“切断”对该服务的调用,避免故障扩散,类似电路中的保险丝。
✅ 熔断器三状态:
| 状态 | 描述 |
|---|---|
| 关闭 | 正常调用服务。 |
| 打开 | 直接拒绝调用,走降级逻辑。 |
| 半开 | 允许少量请求试探服务是否恢复。 |
✅ 触发条件:
- 错误率超过阈值(如 50%)。
- 响应时间超时。
- 异常数过多。
✅ 应用场景:
- 下游服务超时或宕机。
- 防止“雪崩效应”。
✅ 示例(Hystrix):
@HystrixCommand(fallbackMethod = "fallback")
public String callService() {
return restTemplate.getForObject("http://user-service/info", String.class);
}
public String fallback() {
return "用户服务暂不可用,请稍后再试";
}
三、服务降级(Degradation)
✅ 定义:
在系统资源紧张或部分服务不可用时,主动关闭非核心功能或返回兜底数据,保障核心功能可用。
✅ 触发方式:
- 手动降级(配置开关)。
- 自动降级(结合熔断触发)。
- 基于系统负载(CPU、内存、线程池)。
✅ 常见策略:
| 策略 | 示例 |
|---|---|
| 返回默认值 | 推荐服务挂了,返回“暂无推荐” |
| 返回缓存数据 | 商品详情服务挂了,返回缓存中的旧数据 |
| 关闭非核心功能 | 秒杀期间关闭“评价”、“推荐”等功能 |
✅ 应用场景:
- 大促期间关闭非核心功能。
- 服务熔断后返回友好提示。
- 系统负载过高时保核心业务。
四、三者关系与协同工作流程
✅ 协同流程图(逻辑顺序):
高并发请求
↓
【限流】→ 拒绝部分请求,保护系统
↓
【熔断】→ 下游服务失败率过高,切断调用
↓
【降级】→ 返回兜底数据或关闭非核心功能
✅ 举个例子:秒杀活动
- 限流:秒杀接口每秒最多处理 1000 个请求,超出直接拒绝。
- 熔断:库存服务响应超时,触发熔断,后续请求不再调用库存服务。
- 降级:返回“库存未知,请稍后再试”或默认“有货”,保障用户能下单。
五、总结对比表
| 特性 | 限流 | 熔断 | 降级 |
|---|---|---|---|
| 目的 | 控制流量,防止系统过载 | 切断故障,防止雪崩 | 保核心业务,牺牲非核心功能 |
| 触发条件 | 请求量超过阈值 | 错误率/超时率超过阈值 | 系统负载高或服务不可用 |
| 结果 | 拒绝部分请求 | 停止调用故障服务 | 返回兜底数据或关闭功能 |
| 是否用户感知 | 是(可能被拒) | 是(走降级逻辑) | 是(功能减少或数据不完整) |
| 是否可恢复 | 是(流量下降后自动恢复) | 是(服务恢复后自动试探) | 是(服务恢复后自动恢复) |
✅ 总结一句话:
限流是“防流量”,熔断是“断故障”,降级是“保核心”。
如需我帮你画一张图或出一份面试速记版,也可以继续说!
转载请注明:学时网 » 服务降级、限流 和 熔断


