Sobes.tech
Middle+

5. Niezawodność płatności: "Jak rozwiązano problem idempotencji w gRPC?" Cel rozmówcy: Płatności — najbardziej niebezpieczna dziedzina dla duplikatów (Double Spending). Możliwe pytanie: "Żądanie płatności przeszło przez gRPC, ale nie powiodło się z powodu przekroczenia limitu czasu (DEADLINE_EXCEEDED). Czy pieniądze zostały odjęte — nie wiadomo. Co robi moduł płatności?" Jak odpowiedzieć: "W kontekście transakcji finansowej każde powtarzające się żądanie musi mieć Klucz Idempotencji: 1. W metadanych żądania gRPC (metadata=((‘x-idempotency-key’, key_uuid),)) zawsze przesyłaliśmy unikalny klucz transakcji. 2. Po otrzymaniu DEADLINE_EXCEEDED, klient mógł bezpiecznie ponowić próbę z tym samym kluczem. 3. Usługa przejęcia sprawdzała obecność tego klucza w swojej bazie danych / Redis i albo zwracała status już przetworzonej transakcji, albo przetwarzała ją po raz pierwszy."