Diseña una aplicación de chat (como WhatsApp).
Respuesta
- Funciones: mensajes 1:1 y de grupo, estado en línea, confirmaciones de entrega y lectura, historial, entrega sin conexión.
- Los clientes mantienen conexiones WebSocket con servidores de chat; un servicio de sesiones mapea usuario → servidor.
- Flujo de envío: mensaje → servidor → persistir (particionado por conversación, ordenado por tiempo o ID) → enrutar al servidor del destinatario con pub/sub → enviar; si está desconectado, notificación push y entrega al reconectar.
- IDs de mensaje por conversación para ordenar y deduplicar (reintentos del cliente).
- Grupos: fan-out on write en grupos pequeños.
- Presencia con heartbeats y TTLs; multimedia en object storage + CDN; menciona el cifrado de extremo a extremo.
Practica esta pregunta en Repaso