javascript / expert
Snippet
Das Circuit-Breaker-Muster für Service-Resilienz
Das Circuit-Breaker-Muster verhindert, dass eine Anwendung wiederholt versucht, eine Operation auszuführen, die wahrscheinlich fehlschlägt, sodass sich das System erholen kann, während ein Fallback oder eine sofortige Fehlermeldung bereitgestellt wird.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class CircuitBreaker {private state = 'CLOSED';private failures = 0;private threshold = 3;async execute(requestFn) {if (this.state === 'OPEN') throw new Error('Circuit is open');try {const result = await requestFn();this.failures = 0;return result;} catch (err) {this.failures++;if (this.failures >= this.threshold) this.state = 'OPEN';throw err;}}}
nextjs
Erklärung
1
if (this.state === 'OPEN') throw ...
Lehnt Anfragen sofort ab, wenn der Fehlerschwellenwert erreicht wurde, um den Downstream-Service zu schützen.
2
this.failures = 0;
Setzt den Fehlerzähler bei einer erfolgreichen Operation zurück und stellt die 'CLOSED'-Logik wieder her.
3
if (this.failures >= this.threshold) this.state = 'OPEN';
Löst den Unterbrecher nach aufeinanderfolgenden Fehlern aus und leitet eine Abkühlphase für das System ein.