[{"data":1,"prerenderedAt":392},["ShallowReactive",2],{"term-c\u002Fcircuit-breaker":3,"related-c\u002Fcircuit-breaker":379},{"id":4,"title":5,"acronym":6,"body":7,"category":361,"description":362,"difficulty":363,"extension":364,"letter":365,"meta":366,"navigation":139,"path":367,"related":368,"seo":373,"sitemap":374,"stem":377,"subcategory":6,"__hash__":378},"terms\u002Fterms\u002Fc\u002Fcircuit-breaker.md","Circuit Breaker",null,{"type":8,"value":9,"toc":355},"minimark",[10,15,19,23,26,30,344,348,351],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"Circuit Breaker is like the electrical circuit breaker in your house. If a service keeps failing, instead of hammering it with more requests, the circuit 'trips' and starts failing fast for a while. This gives the failing service time to recover without being drowned in traffic.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"The Circuit Breaker pattern prevents cascading failures in distributed systems. It wraps service calls and monitors for failures. After a threshold is exceeded, it opens the circuit (fails immediately for a period) before attempting recovery. States: Closed (normal), Open (failing fast), Half-Open (testing).",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Conceptual Circuit Breaker\nclass CircuitBreaker {\n  private failures = 0;\n  private state: 'CLOSED' | 'OPEN' | 'HALF_OPEN' = 'CLOSED';\n\n  async call(fn: () => Promise\u003Cunknown>) {\n    if (this.state === 'OPEN') throw new Error('Circuit open');\n    try {\n      const result = await fn();\n      this.onSuccess();\n      return result;\n    } catch (e) {\n      this.onFailure();\n      throw e;\n    }\n  }\n}\n","typescript","",[38,39,40,49,64,84,134,141,179,231,239,261,274,284,303,315,326,332,338],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"sHwdD","\u002F\u002F Conceptual Circuit Breaker\n",[41,50,52,56,60],{"class":43,"line":51},2,[41,53,55],{"class":54},"spNyl","class",[41,57,59],{"class":58},"sBMFI"," CircuitBreaker",[41,61,63],{"class":62},"sMK4o"," {\n",[41,65,67,70,74,77,81],{"class":43,"line":66},3,[41,68,69],{"class":54},"  private",[41,71,73],{"class":72},"swJcz"," failures",[41,75,76],{"class":62}," =",[41,78,80],{"class":79},"sbssI"," 0",[41,82,83],{"class":62},";\n",[41,85,87,89,92,95,98,102,105,108,110,113,115,117,119,122,124,126,128,130,132],{"class":43,"line":86},4,[41,88,69],{"class":54},[41,90,91],{"class":72}," state",[41,93,94],{"class":62},":",[41,96,97],{"class":62}," '",[41,99,101],{"class":100},"sfazB","CLOSED",[41,103,104],{"class":62},"'",[41,106,107],{"class":62}," |",[41,109,97],{"class":62},[41,111,112],{"class":100},"OPEN",[41,114,104],{"class":62},[41,116,107],{"class":62},[41,118,97],{"class":62},[41,120,121],{"class":100},"HALF_OPEN",[41,123,104],{"class":62},[41,125,76],{"class":62},[41,127,97],{"class":62},[41,129,101],{"class":100},[41,131,104],{"class":62},[41,133,83],{"class":62},[41,135,137],{"class":43,"line":136},5,[41,138,140],{"emptyLinePlaceholder":139},true,"\n",[41,142,144,147,150,153,157,159,162,165,168,171,174,177],{"class":43,"line":143},6,[41,145,146],{"class":54},"  async",[41,148,149],{"class":72}," call",[41,151,152],{"class":62},"(",[41,154,156],{"class":155},"s2Zo4","fn",[41,158,94],{"class":62},[41,160,161],{"class":62}," ()",[41,163,164],{"class":54}," =>",[41,166,167],{"class":58}," Promise",[41,169,170],{"class":62},"\u003C",[41,172,173],{"class":58},"unknown",[41,175,176],{"class":62},">)",[41,178,63],{"class":62},[41,180,182,186,189,192,196,199,201,203,205,208,211,214,217,219,221,224,226,229],{"class":43,"line":181},7,[41,183,185],{"class":184},"s7zQu","    if",[41,187,188],{"class":72}," (",[41,190,191],{"class":62},"this.",[41,193,195],{"class":194},"sTEyZ","state",[41,197,198],{"class":62}," ===",[41,200,97],{"class":62},[41,202,112],{"class":100},[41,204,104],{"class":62},[41,206,207],{"class":72},") ",[41,209,210],{"class":184},"throw",[41,212,213],{"class":62}," new",[41,215,216],{"class":155}," Error",[41,218,152],{"class":72},[41,220,104],{"class":62},[41,222,223],{"class":100},"Circuit open",[41,225,104],{"class":62},[41,227,228],{"class":72},")",[41,230,83],{"class":62},[41,232,234,237],{"class":43,"line":233},8,[41,235,236],{"class":184},"    try",[41,238,63],{"class":62},[41,240,242,245,248,250,253,256,259],{"class":43,"line":241},9,[41,243,244],{"class":54},"      const",[41,246,247],{"class":194}," result",[41,249,76],{"class":62},[41,251,252],{"class":184}," await",[41,254,255],{"class":155}," fn",[41,257,258],{"class":72},"()",[41,260,83],{"class":62},[41,262,264,267,270,272],{"class":43,"line":263},10,[41,265,266],{"class":62},"      this.",[41,268,269],{"class":155},"onSuccess",[41,271,258],{"class":72},[41,273,83],{"class":62},[41,275,277,280,282],{"class":43,"line":276},11,[41,278,279],{"class":184},"      return",[41,281,247],{"class":194},[41,283,83],{"class":62},[41,285,287,290,293,295,298,300],{"class":43,"line":286},12,[41,288,289],{"class":62},"    }",[41,291,292],{"class":184}," catch",[41,294,188],{"class":72},[41,296,297],{"class":194},"e",[41,299,207],{"class":72},[41,301,302],{"class":62},"{\n",[41,304,306,308,311,313],{"class":43,"line":305},13,[41,307,266],{"class":62},[41,309,310],{"class":155},"onFailure",[41,312,258],{"class":72},[41,314,83],{"class":62},[41,316,318,321,324],{"class":43,"line":317},14,[41,319,320],{"class":184},"      throw",[41,322,323],{"class":194}," e",[41,325,83],{"class":62},[41,327,329],{"class":43,"line":328},15,[41,330,331],{"class":62},"    }\n",[41,333,335],{"class":43,"line":334},16,[41,336,337],{"class":62},"  }\n",[41,339,341],{"class":43,"line":340},17,[41,342,343],{"class":62},"}\n",[11,345,347],{"id":346},"when-youll-hear-this","When You'll Hear This",[16,349,350],{},"\"Add a circuit breaker to the payment service calls to prevent cascading failures.\" \u002F \"The circuit is open — the recommendation service is down.\"",[352,353,354],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":51,"depth":51,"links":356},[357,358,359,360],{"id":13,"depth":51,"text":14},{"id":21,"depth":51,"text":22},{"id":28,"depth":51,"text":29},{"id":346,"depth":51,"text":347},"architecture","Circuit Breaker is like the electrical circuit breaker in your house.","intermediate","md","c",{},"\u002Fterms\u002Fc\u002Fcircuit-breaker",[369,370,371,372],"Retry Pattern","Bulkhead Pattern","API Gateway Pattern","Microservices",{"title":5,"description":362},{"changefreq":375,"priority":376},"weekly",0.7,"terms\u002Fc\u002Fcircuit-breaker","vL7DzabbQY-lDU_retcpC2kOdwbQHiLU1jnp51kwgEY",[380,385,388],{"title":371,"path":381,"acronym":6,"category":382,"difficulty":383,"description":384},"\u002Fterms\u002Fa\u002Fapi-gateway-pattern","backend","advanced","An API gateway is the front door for all your microservices.",{"title":370,"path":386,"acronym":6,"category":382,"difficulty":383,"description":387},"\u002Fterms\u002Fb\u002Fbulkhead-pattern","The bulkhead pattern isolates different parts of your system so one failure doesn't sink everything. Named after ship bulkheads that contain flooding.",{"title":369,"path":389,"acronym":6,"category":361,"difficulty":390,"description":391},"\u002Fterms\u002Fr\u002Fretry-pattern","beginner","Retry Pattern is trying something again when it fails, because sometimes failures are temporary (network hiccup, brief overload).",1776518265210]