Idempotenz ist die Eigenschaft einer Operation, bei mehrmaliger Ausführung denselben Effekt zu erzielen wie bei einmaliger Ausführung. Eine idempotente Operation kann also bedenkenlos wiederholt werden, ohne dass Daten doppelt verändert, doppelt gebucht oder doppelt angelegt werden.
Idempotenz in HTTP
Das HTTP-Protokoll definiert mehrere Methoden als idempotent: GET, PUT, DELETE, HEAD und OPTIONS. Ein zweites DELETE auf eine bereits gelöschte Ressource liefert zwar einen Fehler, verändert den Zustand aber nicht erneut. POST ist dagegen nicht idempotent: Jeder Aufruf legt eine neue Ressource an.
Idempotency-Key für sichere Wiederholungen
Will man auch POST-Requests sicher wiederholbar machen, verwendet man einen Idempotency-Key: Der Client erzeugt eine eindeutige Kennung und sendet sie im Header mit. Der Server merkt sich verarbeitete Keys und liefert bei einem erneuten Request mit demselben Key die bereits erzeugte Antwort, statt die Aktion erneut auszuführen. Bekannte APIs wie die von Stripe setzen dieses Muster nativ um.
Bedeutung für verteilte Systeme
In verteilten Systemen ist mehrfache Zustellung der Normalzustand: Netzwerkfehler, Timeouts und Wiederholungen sorgen dafür, dass ein Request mehrfach ankommt. Ohne Idempotenz führen Retries zu Doppelbuchungen oder doppelten Bestellungen. Auch Dead Letter Queues, die fehlgeschlagene Nachrichten später erneut einspielen, setzen voraus, dass die Verarbeitung bei Wiederholung sicher ist.
Verwandte Grundlagen: Timeout-Handling, Graceful Shutdown, Retry-Logik.