26 puntos por yunyun0505 2022-09-15 | 5 comentarios | Compartir por WhatsApp

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

 
functor 2022-09-27

Es sorprendente que el 70% de CPU y el 67% de memoria estén sin usarse..

 
ifmkl 2022-09-16

Uf, nginx también se usó muy bien; si esto sale como open source, me dan ganas de probarlo de inmediato.

 
forteleaf 2022-09-16

Aunque estudie Rust, no hay dónde conseguir trabajo.

 
jungmin1237 2022-09-15

Rust, eso me gusta.

 
jjpark78 2022-09-15

Parece que, al menos en programación de sistemas, Rust se está volviendo cada vez más dominante...