Cloudflare elimina nginx y crea un proxy HTTP (Pingora) en Rust para usarlo
(blog.cloudflare.com)nginx tenía limitaciones
- Solo usa un único worker por cada solicitud, así que había un uso desequilibrado de los núcleos de CPU
- Como existe un connection pool por worker, la tasa de reutilización de conexiones TCP y TLS era mala -> el TTFB aumentaba
- Además, ya estaban implementando por su cuenta las funciones necesarias para operar nginx, pero como nginx, diseñado en C, no es memory-safe, incluso ingenieros experimentados cometían errores
Pingora
- Cloudflare recibe muchas solicitudes que no siguen el estándar RFC, pero las bibliotecas de terceros (
hyper) están implementadas de forma estricta según el RFC, así que extenderlas requería trabajo adicional y por eso lo construyeron internamente - Eligieron Rust porque puede reemplazar lo que C puede hacer, de una forma memory-safe y sin pérdida de rendimiento
- Para compartir fácilmente el pool de conexiones, introdujeron un sistema de planificación con work-stealing, y la tasa de reutilización aumentó. En comparación con antes, establecen alrededor de 1/3 de las conexiones por segundo
- En comparación con antes, usan 70% menos CPU y 67% menos memoria
- Más adelante planean publicarlo como open source
5 comentarios
Es sorprendente que el 70% de CPU y el 67% de memoria estén sin usarse..
Uf, nginx también se usó muy bien; si esto sale como open source, me dan ganas de probarlo de inmediato.
Aunque estudie Rust, no hay dónde conseguir trabajo.
Rust, eso me gusta.
Parece que, al menos en programación de sistemas, Rust se está volviendo cada vez más dominante...