<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>熔断 on Leanku 的博客</title><link>https://www.leanku.com/tags/%E7%86%94%E6%96%AD/</link><description>Recent content in 熔断 on Leanku 的博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 11 Jul 2025 20:46:01 +0800</lastBuildDate><atom:link href="https://www.leanku.com/tags/%E7%86%94%E6%96%AD/index.xml" rel="self" type="application/rss+xml"/><item><title>高并发系统设计-熔断</title><link>https://www.leanku.com/post/microservice/%E9%AB%98%E5%B9%B6%E5%8F%91%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1-%E7%86%94%E6%96%AD/</link><pubDate>Fri, 11 Jul 2025 20:46:01 +0800</pubDate><guid>https://www.leanku.com/post/microservice/%E9%AB%98%E5%B9%B6%E5%8F%91%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1-%E7%86%94%E6%96%AD/</guid><description>&lt;h1 id="高并发系统设计-熔断"&gt;高并发系统设计-熔断&lt;/h1&gt;&#10;&lt;h2 id="一概述"&gt;一、概述&lt;/h2&gt;&#10;&lt;h3 id="11-什么是熔断"&gt;1.1 什么是熔断&lt;/h3&gt;&#10;&lt;p&gt;熔断（Circuit Breaker）的核心思想来自电路保险丝：&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;当电流过大时，保险丝会断开，保护整个电路。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;在分布式系统中：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;服务A → 服务B → 服务C → 数据库&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果服务C异常：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;超时&lt;/li&gt;&#10;&lt;li&gt;报错&lt;/li&gt;&#10;&lt;li&gt;响应缓慢&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;那么如果不做控制：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;A 等 BB 等 CC 卡住→ 线程全部阻塞→ 请求堆积→ 系统雪崩&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;熔断的作用就是：&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;当下游服务异常时，直接停止调用它，快速失败。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h3 id="12-为什么需要熔断"&gt;1.2 为什么需要熔断&lt;/h3&gt;&#10;&lt;p&gt;在高并发系统中，最危险的问题不是“服务失败”，而是：&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;失败被放大并传播&lt;/strong&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;例如：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;数据库慢查询&#10; ↓&#10;所有请求阻塞&#10; ↓&#10;连接池耗尽&#10; ↓&#10;Redis压力上升&#10; ↓&#10;Gateway超时&#10; ↓&#10;全链路崩溃&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这就是：&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;级联故障（Cascade Failure）&lt;/strong&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h3 id="13-熔断解决的问题"&gt;1.3 熔断解决的问题&lt;/h3&gt;&#10;&lt;p&gt;熔断解决三类问题：&lt;/p&gt;&#10;&lt;h4 id="1-防止线程阻塞"&gt;1. 防止线程阻塞&lt;/h4&gt;&#10;&lt;p&gt;避免请求一直等待下游：&lt;/p&gt;&#10;&lt;p&gt;请求 → 卡住 → 不释放资源&lt;/p&gt;&#10;&lt;h4 id="2防止错误放大"&gt;2.防止错误放大&lt;/h4&gt;&#10;&lt;p&gt;错误不会扩散到上游系统：&lt;/p&gt;&#10;&lt;p&gt;错误服务 → 不再调用&lt;/p&gt;&#10;&lt;h3 id="14-企业典型场景"&gt;1.4 企业典型场景&lt;/h3&gt;&#10;&lt;h4 id="场景1支付服务异常"&gt;场景1：支付服务异常&lt;/h4&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;订单服务 → 支付服务（异常）&#10;&#10;不熔断：&#10;→ 一直等待&#10;→ 订单线程堆积&#10;&#10;熔断后：&#10;→ 直接返回“支付处理中”&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="场景2库存服务不可用"&gt;场景2：库存服务不可用&lt;/h4&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;库存服务挂了&#10;&#10;熔断：&#10;→ 不再调用库存&#10;→ 返回“库存未知”&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="场景3第三方接口超时"&gt;场景3：第三方接口超时&lt;/h4&gt;&#10;&lt;p&gt;例如：&lt;/p&gt;</description></item></channel></rss>