5. Zuverlässigkeit der Zahlungen: "Wie wurde das Problem der Idempotenz in gRPC gelöst?"
Ziel des Interviewers: Zahlungen — der gefährlichste Bereich für Duplikate (Double Spending).
Mögliche Frage:
"Die Zahlungsanfrage wurde über gRPC gesendet, ist aber aufgrund eines Timeouts (DEADLINE_EXCEEDED) fehlgeschlagen. Wurde das Geld abgezogen — unbekannt. Was macht das Zahlungssystem?"
So antworten:
"Im finanziellen Transaktionskontext muss jede wiederholte Anfrage einen Idempotency Key haben:
1. In den Metadaten der gRPC-Anfrage (metadata=((‘x-idempotency-key’, key_uuid),)) haben wir immer einen eindeutigen Transaktionsschlüssel übertragen.
2. Beim Empfang von DEADLINE_EXCEEDED konnte der Client sicher erneut versuchen, mit demselben Schlüssel.
3. Der Akquisitionsdienst prüfte die Präsenz dieses Schlüssels in seiner Datenbank / Redis und gab entweder den Status der bereits verarbeiteten Transaktion zurück oder verarbeitete sie zum ersten Mal."