From b4349eb840feec2d28a9dc2732b5689c61fd83cc Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sun, 25 Oct 2026 18:52:37 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E7=B3=BB=E7=BB=9F=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=9F=BA=E7=A1=80.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充熔断器的三种状态及状态转换图。 --- notes/pics/circuit-breaker.png | Bin 0 -> 71708 bytes notes/系统设计基础.md | 4 +++ tools/diagram/src/circuit-breaker.svg | 47 ++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 notes/pics/circuit-breaker.png create mode 100644 tools/diagram/src/circuit-breaker.svg diff --git a/notes/pics/circuit-breaker.png b/notes/pics/circuit-breaker.png new file mode 100644 index 0000000000000000000000000000000000000000..3ddc6e37d5922e59b94a3548e35362f64d89c197 GIT binary patch literal 71708 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 DDcMps literal 0 HcmV?d00001 diff --git a/notes/系统设计基础.md b/notes/系统设计基础.md index 959ff9a0..fa9c0e97 100644 --- a/notes/系统设计基础.md +++ b/notes/系统设计基础.md @@ -111,6 +111,10 @@ - 降级:主动关闭部分非核心功能,从而保证核心功能可用; - 熔断:某个依赖的服务持续出错时,暂时不再调用它而是直接返回默认结果,避免故障沿着调用链扩散。 +熔断器有关闭、打开和半开三种状态:失败率超过阈值时打开;打开一段时间后进入半开状态,放行少量请求试探,成功则关闭,失败则重新打开。 + +

+ ## 五、安全性 要求系统在应对各种攻击手段时能够有可靠的应对措施,常见的攻击手段和防范方法见 [攻击技术](攻击技术.md)。 diff --git a/tools/diagram/src/circuit-breaker.svg b/tools/diagram/src/circuit-breaker.svg new file mode 100644 index 00000000..37a27dd7 --- /dev/null +++ b/tools/diagram/src/circuit-breaker.svg @@ -0,0 +1,47 @@ + + + + + + + + + 熔断器状态 + + + + + 关闭 + Closed,正常调用 + + + + + 打开 + Open,直接返回 + + + + + 半开 + Half-Open,少量试探 + + + 失败率超过阈值 + + + 等待一段时间 + + + 试探请求失败 + + + 试探请求成功 +