Idempotentność (idempotency key)
Operacja jest idempotentna, jeśli wykonana dwa razy daje ten sam efekt co raz. Ponowienia stają się bezpieczne.
Sieć potrafi paść po tym, jak serwer wykonał pracę, a zanim klient dostał odpowiedź, więc klient ponawia. Bez idempotentności ponowienie obciąży kartę dwa razy albo wyśle dwa maile. Idempotency key to unikalne id, które klient wysyła z zapytaniem; serwer zapisuje pod nim wynik i przy powtórce zwraca ten sam wynik zamiast robić pracę od nowa.
Powiązane hasła
- Webhook: Zapytanie HTTP, które jeden system wysyła do drugiego, gdy coś się wydarzy, zamiast tego, żeby drugi ciągle pytał.
- Dead letter queue (DLQ): Osobna kolejka, do której trafiają wiadomości po zbyt wielu nieudanych próbach przetworzenia, żeby nie przepadły ani nie wracały w nieskończoność.
- Dostarczenie co najmniej raz (at-least-once delivery): Gwarancja kolejki albo brokera, że każda wiadomość dotrze, być może więcej niż raz, więc konsumenci muszą radzić sobie z duplikatami.
- Wzorzec inbox (idempotentny konsument): Konsument zapisuje id każdej przetworzonej wiadomości w tej samej transakcji co własną zmianę i pomija każde id, które już widział.
- 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.
- Walidacja w runtime (Zod): Sprawdzanie w czasie działania, czy dane z zewnątrz (zapytania, API, pliki, modele) pasują do typu, który zakłada kod.
