Sobes.tech
Middle+

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