Jaetussa järjestelmässä kaikki epäonnistuu lopulta. Resilienssikaaviot estävät yksittäisen virheen kaskadoitumisen täydelliseksi käyttökatkeeksi.
Jaetussa järjestelmässä kaikki epäonnistuu lopulta. Resilienssikaaviot estävät yksittäisen virheen kaskadoitumisen täydelliseksi käyttökatkeeksi.
const breaker = new CircuitBreaker(callPaymentService, {
timeout: 3000, // fail the call after 3s
errorThresholdPercentage: 50, // open if >50% of calls fail
resetTimeout: 10000 // after 10s, try one request (half-open)
});
breaker.fallback(() => ({ status: 'queued' })); // graceful degradation
CLOSED ──(failures exceed threshold)──▶ OPEN
▲ │ (after resetTimeout)
│ (trial succeeds) ▼
└────────────── HALF-OPEN ◀──────────────┘
(one trial request)
[ pool A: 10 threads ] → payment calls
[ pool B: 10 threads ] → search calls
If search hangs, it drains pool B only — payments keep working.
Uudelleenyritykset ilman backoff:ia lisäävät kuormaa jo kamppailevan palvelun päälle (uudelleenyritysviikari). Lisää aina backoff, jitter ja uudelleenyritysraja.
Nämä kaaviot muuttavat väistämättömän yksittäisen palvelun virheen hajonneeksi ominaisuudeksi täydellisen sivuston käyttökatkon sijaan.
Ne toimivat yhdessä: timeout:it rajoittavat odottamista, circuit breaker:it pysäyttävät kuolleiden palveluiden jatkuvat kutsut, bulkhead:it sisältävät räjähdysreaktion ja uudelleenyritykset toipuvat lyhytkestoisista virheistä — jätä mikä tahansa pois ja virheet silti kaskadoituvat.
Kirjasto IT-haastattelukysymyksiä yksityiskohtaisine vastauksineen — Juniorista Senioriin.
Lahjoita