Junior — Middle
Можете ли објаснити механизам функционисања патерна Circuit Breaker и његову улогу у обезбеђивању поузданости система?
sobes.tech АИ
Одговор од АИ
Модел Circuit Breaker се користи за повећање поузданости распоређених система, спречавајући поновне позиве ка нерадном или споро одговарајућем сервису.
Како ради:
- Затворено (затворено стање): Сви захтеви пролазе као и обично.
- Отворено (отворено стање): Ако број грешака прелази праг, Circuit Breaker се «отвара» — нови захтеви одмах добијају грешку без покушаја да се позове сервис.
- Полуотворено (полуотворено стање): После одређеног времена, Circuit Breaker дозвољава ограничен број захтева да провери да ли је сервис обновљен.
Ако су захтеви успешни — стање се враћа у Затворено, у супротном поново у Отворено.
Ово спречава претерано оптерећење нерадног сервиса и омогућава систему да се брже опорави.
Пример употребе у Go (поједностављено):
// Псеудо-код
cb := NewCircuitBreaker()
if cb.AllowRequest() {
err := callRemoteService()
if err != nil {
cb.RecordFailure()
} else {
cb.RecordSuccess()
}
} else {
// Одмах враћамо грешку, без позива сервиса
}
Овим начином, Circuit Breaker помаже да систем буде отпорнији на кварове.