认识
2025年01月05日
一、认识
服务熔断(Circuit Breaking
)是一种保护分布式系统的机制,用于防止单个服务的故障影响整个系统的稳定性。熔断器通过监控服务调用状态,在检测到连续失败时中断后续请求,避免资源过度消耗并快速返回降级响应。
在 Node.js
中,服务熔断通常用于微服务架构,确保在调用其他服务或外部资源(如数据库、API
网关)失败时,能够优雅地处理错误,保护系统的核心功能。
1.1 为什么需要服务熔断?
-
防止雪崩效应:如果目标服务发生故障,大量请求会占用系统资源,可能导致级联故障。熔断器通过快速失败保护系统其他部分。
-
资源保护:避免故障服务耗尽系统资源(线程、内存、连接等)。
-
增强用户体验:提供快速失败和降级响应,而不是让用户等待超时。
-
服务自我恢复:通过半开状态测试目标服务的健康状况,自动恢复正常工作。
二、状态
熔断器 的状态通常分为以下三种:
-
Closed
(关闭):正常工作状态,所有请求正常转发到目标服务。如果连续失败次数超过设定阈值,则切换到Open
状态。 -
Open
(打开):熔断状态,所有请求立即失败,直接返回错误响应或降级处理,避免继续向目标服务发送请求。 -
Half-Open
(半开):测试恢复状态,允许少量请求通过熔断器测试目标服务的健康状况。如果请求成功率达到预期,切换回Closed
状态;否则,重新进入Open
状态。