Necesitas construir un proxy HTTP de alta performance en Rust que maneje 100K conexiones simultáneas con latencia <1ms de overhead. ¿Cómo lo diseñas?
Contexto
CDN startup. El proxy debe agregar headers, hacer rate limiting y enrutar a diferentes backends basándose en el path. Zero downtime en deploys.
Respuesta modelo
Diseño: 1) Tokio runtime con multi-threaded scheduler para aprovechar todos los cores. 2) hyper como HTTP layer (zero-copy, async). 3) Tower para middleware (add headers, rate limit) como services composables con layers. 4) Connection pooling con hyper-util para backends. 5) Rate limiting con dashmap (concurrent HashMap lock-free) + token bucket por IP. 6) Hot reload de configuración sin restart: watch un config file con notify crate, actualizar rutas con Arc<RwLock<Config>>. 7) Graceful shutdown: dejar de aceptar nuevas conexiones, drenar las existentes con timeout. 8) Métricas con prometheus crate, histogramas de latencia por ruta.
Claves
- hyper + Tower = stack de proxy de producción en Rust.
- dashmap para estado compartido sin locks pesados entre threads.
- Arc<RwLock<>> para config que se lee mucho y escribe poco.