跳到主要内容

认识

2025年01月05日
柏拉文
越努力,越幸运

一、认识


服务熔断(Circuit Breaking)是一种保护分布式系统的机制,用于防止单个服务的故障影响整个系统的稳定性。熔断器通过监控服务调用状态,在检测到连续失败时中断后续请求,避免资源过度消耗并快速返回降级响应。

Node.js 中,服务熔断通常用于微服务架构,确保在调用其他服务或外部资源(如数据库、API 网关)失败时,能够优雅地处理错误,保护系统的核心功能。

1.1 为什么需要服务熔断?

  1. 防止雪崩效应:如果目标服务发生故障,大量请求会占用系统资源,可能导致级联故障。熔断器通过快速失败保护系统其他部分。

  2. 资源保护:避免故障服务耗尽系统资源(线程、内存、连接等)。

  3. 增强用户体验:提供快速失败和降级响应,而不是让用户等待超时。

  4. 服务自我恢复:通过半开状态测试目标服务的健康状况,自动恢复正常工作。

二、状态


熔断器 的状态通常分为以下三种:

  • Closed(关闭):正常工作状态,所有请求正常转发到目标服务。如果连续失败次数超过设定阈值,则切换到 Open 状态。

  • Open(打开):熔断状态,所有请求立即失败,直接返回错误响应或降级处理,避免继续向目标服务发送请求。

  • Half-Open(半开):测试恢复状态,允许少量请求通过熔断器测试目标服务的健康状况。如果请求成功率达到预期,切换回 Closed 状态;否则,重新进入 Open 状态。