Was ist Idempotenz?

Zuletzt aktualisiert: 15.10.2026

In der Informatik ist Idempotenz eine Eigenschaft einer Operation, bei der die mehrfache Anwendung denselben Effekt hat wie die einmalige Anwendung. Wenn Sie dieselbe Anfrage fünfmal an einen Server senden, sorgt ein idempotentes System dafür, dass sich das Ergebnis auf dem Server nach dem ersten erfolgreichen Versuch nicht ändert.

Neben der Sicherstellung desselben Ergebnisses ist ein wesentliches Merkmal idempotenter Vorgänge, dass sie bei zusätzlichen Aufrufen keine Nebenwirkungen haben. Dies ist eine Kernanforderung für den Aufbau robuster verteilter Systeme, bei denen vorübergehende Netzwerkausfälle oder Zeitüberschreitungen dazu führen können, dass ein Client dieselbe Nachricht mehr als einmal sendet.

Definition von Idempotenz

Idempotenz ist eine Eigenschaft einer Operation in der Mathematik und Informatik, bei der die mehrfache Ausführung derselben Anfrage genau denselben Systemstatus und dasselbe Ergebnis liefert wie die einmalige Ausführung.

In verteilten Cloud-Architekturen, APIs und Zahlungsverarbeitungssystemen ist die Idempotenz entscheidend für die Fehlertoleranz: Sie ermöglicht es Clients und Diensten, fehlgeschlagene oder abgelaufene Netzwerkanfragen sicher zu wiederholen, ohne unbeabsichtigte Nebenwirkungen wie doppelte Datensätze oder doppelte Gebühren zu verursachen.

Wichtigste Vorteile idempotenter Systeme

Sie können Anfragen nach einem Timeout oder Verbindungsabbruch sicher wiederholen, ohne Aktionen zu duplizieren (z. B. eine Kreditkarte doppelt zu belasten).

Nutzer müssen nicht aufwendig den Status verfolgen, um zu wissen, ob eine vorherige Anfrage erfolgreich war. Sie können einfach „wiederholen, bis es klappt“.

Verteilte Systeme können sich von Abstürzen erholen, indem sie Protokolle wiedergeben oder fehlende Nachrichten neu senden, ohne Daten zu beschädigen.

Idempotente und nicht idempotente HTTP-Methoden

Der REST-Standard definiert, wie sich verschiedene Arten von Webanfragen verhalten sollen. Einige HTTP-Methoden sind von Natur aus „sicher“ oder idempotent, d. h., die Spezifikation erwartet, dass sie sich auch bei Wiederholung vorhersagbar verhalten. Andere sind so konzipiert, dass sie neue Daten erstellen, und erfordern besondere Sorgfalt, um sie für Wiederholungen sicher zu machen.

Idempotente Methoden (GET, PUT, DELETE)

Gemäß RFC 9110 sind mehrere Standardmethoden von Natur aus idempotent. Durch das Wiederholen dieser Aktionen sollte sich der Zustand des Servers über die ursprüngliche Anfrage hinaus nicht ändern.

  • GET: Diese Methode ruft Daten ab. Da sich auf dem Server nichts ändert, können Sie sie eine Million Mal aufrufen und die Ressource bleibt gleich.
  • PUT: Mit dieser Methode wird eine Ressource vollständig ersetzt. Wenn Sie die E-Mail-Adresse eines Nutzers dreimal auf „user@example.com“ aktualisieren, ist der Endzustand immer noch „user@example.com“.
  • DELETE: Damit wird eine Ressource entfernt. Wenn Sie „Bestellung #123“ löschen und dann versuchen, sie noch einmal zu löschen, bleibt sie gelöscht. Das Ergebnis (die Reihenfolge ist weg) bleibt gleich.

Nicht idempotente Methoden (POST, PATCH)

Einige Methoden sind nicht idempotent, weil ihre Hauptaufgabe darin besteht, Daten so zu ändern, dass etwas Neues entsteht oder ein Teil eines vorhandenen Datensatzes geändert wird.

  • POST: Entwickler verwenden POST, um neue Ressourcen zu erstellen. Ohne Idempotenzlogik würde das zweimalige Senden derselben POST-Anfrage (z. B. „Zahlung senden“) in der Regel zu zwei separaten Datensätzen und zwei Belastungen für den Kunden führen.
  • PATCH: Mit dieser Methode werden Teilaktualisierungen angewendet. Sie kann zwar idempotent gemacht werden, ist es aber oft nicht standardmäßig, da eine wiederholte relative Änderung (wie „5 zum Guthaben hinzufügen“) jedes Mal zu einem anderen Endwert führen würde.

Idempotente API implementieren

  1. Eindeutigen Schlüssel generieren: Der Client erstellt einen eindeutigen String (z. B. eine UUID) und fügt ihn in einen benutzerdefinierten HTTP-Header ein.
  2. Abfangen und validieren: Der Server prüft in einem schnellen Datenspeicher wie Memorystore, ob dieser Schlüssel kürzlich verarbeitet wurde.
  3. Zustand verwalten: Wenn der Schlüssel neu ist, verarbeiten Sie die Anfrage und speichern Sie das Ergebnis. Wenn es sich um ein Duplikat handelt, geben Sie das gespeicherte Ergebnis sofort zurück, ohne die Geschäftslogik erneut auszuführen.

Gängige Anwendungsfälle für Idempotenz

Idempotenz ist oft in den Systemen erforderlich, die wir entwickeln. In einigen Fällen wird das für uns erledigt. In anderen Fällen müssen wir als Entwickler aktiv werden, um dies zu ermöglichen.

Das bekannteste Beispiel ist das Problem der „doppelten Auszahlung“. Wenn der Browser eines Nutzers beim Bezahlen eines Fluges hängt, klickt er möglicherweise noch einmal auf „Bezahlen“. Eine Zahlungs-API, die einen Idempotenzschlüssel verwendet, sorgt dafür, dass der zweite Klick als Wiederholung erkannt wird. Das schützt das Bankkonto des Kunden und reduziert die Betriebskosten für die Bearbeitung von Rückerstattungen für doppelte Transaktionen.

  • Maßnahmen durch Entwickler erforderlich: Sie müssen einen Idempotenzschlüssel (oft eine UUID) in Ihre API-Anfrage einfügen, damit der zweite Klick als Wiederholungsversuch erkannt wird und das Bankkonto des Kunden geschützt ist.

Tools wie Terraform und Ansible basieren auf Idempotenz. Wenn Sie ein Script ausführen, um einen 10 GB großen Speicher-Bucket zu erstellen, prüft das Tool den aktuellen Zustand Ihrer Cloud.

  • Für Sie erledigt: Die Idempotenz wird vom IaC-Tool selbst verwaltet. Als Entwickler müssen Sie keine zusätzliche Logik schreiben, um doppelte Ressourcen zu vermeiden.

Moderne Web-APIs implementieren oft den Idempotency-Key-Header (jetzt ein standardisierter IETF-Entwurf), damit Entwickler robustere Integrationen erstellen können.

  • Entwickler müssen aktiv werden: Beim Erstellen des Backends müssen Sie die Logik implementieren, um diese Schlüssel abzufangen, nach vorherigen Versuchen zu suchen und die Antwort aus dem Cache zurückzugeben.

Ein „Upsert“ (Update oder Insert) ist ein klassischer idempotenter Datenbankvorgang. Anstelle eines einfachen „Einfügen“ bedeutet „Upsert“: „Wenn dieser Datensatz vorhanden ist, aktualisiere ihn; wenn nicht, erstelle ihn.“

  • Für Sie erledigt: Diese Logik wird nativ vom Datenbankmodul verarbeitet, sodass Datensätze immer in den richtigen Zustand überführt werden, unabhängig davon, wie oft das Script ausgeführt wird.

Meistern Sie Ihre geschäftlichen Herausforderungen mit Google Cloud

Neukunden erhalten ein Guthaben im Wert von 300 $ für Google Cloud.
Sprechen Sie mit einem Google Cloud-Vertriebsexperten, um Ihre besonderen Herausforderungen im Detail zu besprechen.

Zuverlässige Mikrodienste in Google Cloud entwickeln

Google Cloud bietet mehrere Tools, die Entwicklern die Implementierung dieser Muster erleichtern. Wenn Sie auf einer verwalteten Plattform aufbauen, müssen Sie weniger „Boilerplate“-Code schreiben, um Ihre Daten zu schützen.

  • Cloud Run: Wenn Sie Cloud Run verwenden, um Ereignisse aus Pub/Sub zu verarbeiten, denken Sie daran, dass Pub/Sub Nachrichten standardmäßig mehr als einmal zustellen kann. Wenn Sie in Ihren Cloud Run-Diensten idempotenten Code schreiben, können Sie sicherstellen, dass Ihre KI-Agents oder Datenpipelines dasselbe Ereignis nicht zweimal verarbeiten.
  • Hinweis zu Pub/Sub: Die Standardeinstellung ist die Push-basierte Zustellung, aber die genau einmalige Zustellung ist für Pull-basierte Abos verfügbar. Es ist hilfreich, diese beiden Typen zu kennen, um den richtigen Komplexitätsgrad für Ihren Dienst zu wählen.

Bereit zum Erstellen?

Hier erfahren Sie, wie Sie resiliente, idempotente Dienste in Cloud Run bereitstellen.

Google Cloud