Sobes.tech
Middle+

5. Fiabilidad del pago: "¿Cómo se resolvió el problema de la idempotencia en gRPC?" Objetivo del entrevistador: Los pagos — la área más peligrosa para duplicados (Doble gasto). Posible pregunta: "La solicitud de pago pasó por gRPC pero falló por timeout (DEADLINE_EXCEEDED). ¿Se descontó el dinero? — no se sabe. ¿Qué hace el módulo de pago?" Cómo responder: "En un contexto de transacción financiera, cualquier solicitud repetida debe tener una Clave de Idempotencia: 1. En los metadatos de la solicitud gRPC (metadata=((‘x-idempotency-key’, key_uuid),)) siempre transmitimos una clave de transacción única. 2. Al recibir DEADLINE_EXCEEDED, el cliente podía reintentar de forma segura con la misma clave. 3. El servicio de adquisición verificaba la presencia de esta clave en su base de datos / Redis y devolvía el estado de la transacción ya procesada o la procesaba por primera vez."