In der Informatik ist Idempotenz eine Eigenschaft eines Vorgangs, bei dem die mehrfache Anwendung den gleichen Enderfolg 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 mehr ändert.
Neben dem gleichen Ergebnis ist ein wichtiges Merkmal idempotenter Vorgänge, dass sie bei zusätzlichen Aufrufen keine Nebenwirkungen haben. Dies ist eine Grundvoraussetzung für den Aufbau ausfallsicherer verteilter Systeme, bei denen zeitweilige Netzwerkausfälle oder Zeitüberschreitungen dazu führen können, dass ein Client dieselbe Nachricht mehrmals sendet.
Analogie: Stellen Sie sich die Aufwärtstaste in einem Aufzug vor. Wenn Sie sie einmal drücken, wird der Aufzug in Ihr Stockwerk gerufen. Wenn Sie noch zehnmal drücken, während Sie warten, kommt trotzdem nur ein Aufzug. Wenn Sie mehrmals auf die Taste drücken, kommen nicht zehn Aufzüge gleichzeitig. Das Hinzufügen eines Artikels zu einem digitalen Einkaufswagen ist dagegen in der Regel nicht idempotent. Wenn Sie fünfmal auf den Button „In den Einkaufswagen“ klicken, landen wahrscheinlich fünf Artikel im Warenkorb.
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.
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.
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.
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.
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.
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.
Moderne Web-APIs implementieren oft den Idempotency-Key-Header (jetzt ein standardisierter IETF-Entwurf), damit Entwickler robustere Integrationen erstellen können.
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.“
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.


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