Junior — Middle
El tudná magyarázni a Circuit Breaker mintázat működési mechanizmusát és szerepét a rendszer megbízhatóságának biztosításában?
sobes.tech MI
Válasz az MI-től
A Circuit Breaker minta a megbízhatóság növelésére szolgál elosztott rendszerekben, megakadályozva, hogy ismételten hívjuk a nem működő vagy lassan válaszoló szolgáltatást.
Hogyan működik:
- Zárt (zárt állapot): Minden kérés normál módon átmegy.
- Nyitott (nyitott állapot): Ha a hibák száma meghalad egy küszöbértéket, a Circuit Breaker «kinyílik» — az új kérések azonnal hibát kapnak anélkül, hogy megpróbálnák hívni a szolgáltatást.
- Fél-nyitott (fél-nyitott állapot): Egy idő után a Circuit Breaker korlátozott számú kérés engedélyez, hogy ellenőrizze, a szolgáltatás helyreállt-e.
Ha a kérések sikeresek, az állapot visszatér Zártra, különben újra Nyitott lesz.
Ez megakadályozza a nem működő szolgáltatás túlterhelését, és gyorsabban lehetővé teszi a rendszer helyreállását.
Egyszerűsített példa Go nyelven:
// Pseudo-kód
cb := NewCircuitBreaker()
if cb.AllowRequest() {
err := callRemoteService()
if err != nil {
cb.RecordFailure()
} else {
cb.RecordSuccess()
}
} else {
// Azonnal hibát adunk vissza, anélkül, hogy hívnánk a szolgáltatást
}
Így a Circuit Breaker segít a rendszer ellenállóbbá tételében a hibákkal szemben.