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