Radek Musil
About meSkills
Services
My Projects
AI news
Contact me
Zpět na slovník

Idempotence

VývojIdempotency key

Také známo jako Idempotent request, Idempotenční klíč

Stručně

Stejný požadavek odeslaný dvakrát musí mít stejný efekt jako jeden — jinak opakování strhne zákazníkovi peníze znovu.

Idempotence znamená, že opakování operace nechá systém ve stejném stavu jako první volání. Čtení je idempotentní samo o sobě, stržení platby ne. Proto se přidává idempotenční klíč — unikátní identifikátor, který klient vygeneruje pro jednu logickou akci — a server si pamatuje, které klíče už zpracoval.

Jak vznikne dvojí stržení

Zákazník klikne na Zaplatit, požadavek dojde do brány, karta se strhne a pak spojení padne dřív, než odpověď dorazí zpět. Zákazník nic nevidí, klikne znovu a druhý klik je úplně nový požadavek — ničím nerozeznatelný od prvního.

Z pohledu zákazníka jde o jednu akci, z pohledu serveru o dvě. Spolehlivá oprava je klíč vygenerovaný jednou při potvrzení objednávky a posílaný s každým pokusem: druhý pokus najde uložený výsledek a vrátí ho místo dalšího stržení.

Kde klíč žije na serveru

Držte tabulku použitých klíčů s unikátním constraintem a hotovou odpovědí: klíč, uživatel, endpoint, hash požadavku, stav, tělo. Při opakování server klíč najde a vrátí původní odpověď, obvykle s hlavičkou, že jde o replay. Právě unikátní index to ochrání ve chvíli, kdy dva stejné požadavky přijdou ve stejné milisekundě.

Záleží na rozsahu klíče. Jeden klíč na pokladnu znamená „druhý požadavek je ta samá objednávka“, klíč na řádek znamená opak. Uložte klíč k objednávce dřív, než zákazník může kliknout znovu, a nechte ho vypršet až po době, kdy opakování přestane být reálné.

Kdy klíč nepřidávat

Idempotence něco stojí: úložiště pro každý klíč, pravidlo o expiraci a další případy v testech. Formulář ukládající koncept ani filtr objednávek ji nepotřebují — opakovaný zápis tam nic nezkazí. Přidejte ji tam, kde operace hýbe penězi, posílá zprávu mimo váš systém nebo se nedá vzít zpět.

Upřímné omezení: idempotenční klíč nespraví rozbitý proces. Když stejný zákazník může legitimně koupit stejnou věc dvakrát s odstupem minuty, musí být klíč svázaný s novou akcí, ne s produktem. Klíč chrání před opakováním, ne před lidmi.

Zdroje

  • Stripe — Idempotent requests

Související pojmy

Webhook

Služba zavolá váš server ve chvíli, kdy se něco stalo, místo abyste se stokrát ptali, jestli se to už stalo.

REST API

HTTP API postavené kolem zdrojů: podstatná jména v URL, metody jako slovesa a stavové kódy, které nelžou.

Fronta zpráv

Pomalá nebo riskantní práce opouští požadavek: worker ji vyzvedne z fronty a při selhání ji bezpečně zopakuje.

Zpět na slovník
i18n (lokalizace)Optimalizace obrázků
Radek Musil|Product Engineer
Čeština·English
|Helper·Privacy Policy·Cookies·Terms of Use|

© 2026 Radek Musil. All rights reserved.