Beim Verfassen eines Beitrags über Hatchets neues Idempotency-Keys-Feature stellte sich Mitgründer Alexander Belanger eine scheinbar triviale Frage: Was war der erste Idempotency-Key? Idempotency-Keys sind eindeutige Bezeichner, mit denen API-Handler mehrfach zugestellte Nachrichten deduplizieren können — ein Workaround, weil Exactly-once-Delivery in verteilten Systemen unmöglich ist und Exactly-once-Processing daher nachgerüstet werden muss.
Claude lieferte auf Anfrage zunächst selbstbewusst „um 2011, mit Stripes Idempotency-Key-Header" — eine Antwort, die das Modell nach einem Bluff des Autors zurücknahm mit dem Eingeständnis, dass es keinen maßgeblichen Beleg für einen „ersten" Key gibt. Stripes Header stammt offenbar von etwa 2015; Stripe hat den Namen populär gemacht. AWS EC2s ClientToken bot ähnliches Verhalten: Wiederholt man einen Request mit gleichem Token und gleichen Parametern, erhält man das ursprüngliche Ergebnis; bei geänderten Parametern einen IdempotentParameterMismatch-Fehler. Dieses Muster wurde kürzlich in einem IETF-Entwurf für einen Idempotency-Key-HTTP-Header kodifiziert, der auch Mark Nottinghams Internet-Draft „POST Once Exactly" (POE) von 2005 würdigt. Bei POE holt der Client per GET zunächst eine Einmal-POST-URL ab — der eindeutige Teil der URL fungiert faktisch als Idempotency-Key. POE setzte sich kaum durch.
Weiter zurück führen die Spec-Kriege der frühen 2000er: Die OASIS-ebXML-Message-Service-Spezifikation und WS-ReliableMessaging (gemeinsam veröffentlicht von Microsoft, IBM, BEA und TIBCO) implementierten Deduplizierung auf Transportebene, wenn ein Dienst NoDuplicateDelivery deklarierte — im Gegensatz zum REST-Stil, bei dem die Anwendungsschicht einen eigenen Header verarbeitet.
Nach kurzen Abstechern zu Inka-Quipus und mittelalterlichen Kerbhölzern — beide gewissermaßen Systeme zur Duplikatvermeidung — stellte der Autor eine neue Regel auf: Die Antwort muss elektronische Computer betreffen. Das führte zu Birrell und Nelsons Paper „Implementing Remote Procedure Calls" von 1984 aus dem Xerox PARC, das auf Nelsons Dissertation aufbaut, in der der Begriff RPC geprägt wurde. Der dort beschriebene Call-Identifier erlaubt es dem Aufrufer, Ergebnisse zuzuordnen, und dem Callee, doppelte Call-Pakete anhand einer Tabelle der zuletzt aufgerufenen Sequenznummern zu verwerfen. Ob es das definitiv älteste Beispiel ist, bleibt offen — es ist das früheste, das der Autor finden konnte.
Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Warte auf deinen Klick …
·