Sobes.tech
Middle+

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