Ponawianie z backoffem i jitterem
Ponawianie nieudanego wywołania po coraz dłuższych przerwach, z dodaną losowością, żeby wielu klientów nie ponawiało w tej samej chwili.
Wiele awarii jest krótkich: timeout, restart, limit zapytań. Natychmiastowe ponowienie dobija serwis, który już ma kłopoty; czekanie 1, 2, 4, 8 sekund daje mu oddech, a losowy jitter rozkłada klientów, żeby nie wracali falami (thundering herd). Każde wywołanie potrzebuje też timeoutu, inaczej nie ma czego ponawiać. Ponawiaj tylko operacje idempotentne albo z idempotency key.
Powiązane hasła
- Idempotentność (idempotency key): Operacja jest idempotentna, jeśli wykonana dwa razy daje ten sam efekt co raz. Ponowienia stają się bezpieczne.
- Thundering herd: Wielu klientów albo procesów uderza w jeden zasób w tej samej chwili, np. tuż po końcu awarii albo po wygaśnięciu popularnego wpisu w cache.
- Circuit breaker (bezpiecznik): Osłona wywołań zależności, która po serii błędów przestaje ją wołać i od razu zwraca błąd, dopóki zależność nie wróci.
