5. Надеждност на плащанията: "Как беше решен проблемът с идемпотентността в gRPC?"
Цел на интервюиращия: Плащания — най-опасната област за дублиране (Double Spending).
Възможен въпрос:
"Заявката за плащане премина през gRPC, но се провали поради таймаут (DEADLINE_EXCEEDED). Парите бяха изтеглени — неизвестно. Какво прави модулът за плащания?"
Как да отговорите:
"Във финансов контекст, всяка повторна заявка трябва да има Идентичностен ключ:
1. В метаданните на gRPC заявката (metadata=((‘x-idempotency-key’, key_uuid),)) винаги предавахме уникален транзакционен ключ.
2. При получаване на DEADLINE_EXCEEDED, клиентът можеше безопасно да опита отново със същия ключ.
3. Службата за придобиване проверяваше наличието на този ключ в своята база данни / Redis и или връщаше статуса на вече обработената транзакция, или я обработваше за първи път."