题目
什么是熔断降级?
答案
熔断降级是分布式系统中保障服务稳定性的重要容错机制,其核心在于通过快速失败和功能裁剪,防止系统因局部故障或过载而全面崩溃。
1. **熔断(Circuit Breaker)**
- **原理**:模拟电路保险丝,当检测到某个服务的失败率超过阈值时,自动切断请求,避免持续调用导致资源耗尽。
- **工作流程**:
- **闭合状态**:正常处理请求,持续监控失败率。
- **打开状态**:当失败率达到阈值(如50%),熔断器开启,直接拒绝请求,返回预设错误或降级响应。
- **半开状态**:经过冷却时间后,尝试放行部分请求,若成功则关闭熔断,恢复服务;否则继续保持开启。
**示例**:支付服务响应超时频繁,触发熔断后,后续请求直接返回“服务暂不可用”,避免用户长时间等待和系统线程阻塞。
2. **降级(Fallback)**
- **原理**:在系统压力过大或部分服务不可用时,暂时关闭非核心功能,确保核心业务可用。
- **策略类型**:
- **自动降级**:基于系统负载或错误率,自动切换至备用方案(如返回缓存数据、简化流程)。
- **手动降级**:运维人员根据监控指标,手动关闭次要功能(如关闭商品评论,保障下单功能)。
**示例**:大促期间,电商平台关闭个性化推荐服务,优先保障商品浏览和下单支付的流畅性。
3. **熔断与降级的协同**
- **熔断触发降级**:当服务熔断后,调用方执行降级逻辑,如返回默认值或调用备用服务。
- **区别与联系**:
- **熔断**:针对依赖服务故障的防护,避免级联雪崩。
- **降级**:侧重资源分配,确保核心功能在高负载下的可用性。
4. **实现工具**
- **Hystrix**(Netflix开源):通过熔断、线程隔离、降级策略保护服务。
- **Resilience4j**:轻量级容错库,支持熔断、限流、重试。
- **Sentinel**(阿里开源):提供流量控制、熔断降级、系统负载保护。
5. **应用场景**
- **微服务调用**:防止某个服务故障扩散至整个链路。
- **高并发场景**:高峰期降级非关键功能,保障核心交易。
- **第三方服务依赖**:如支付网关不可用时,启用备用渠道或提示稍后重试。
