Cloudflare remove o nginx e passa a usar um proxy HTTP (Pingora) feito em Rust
(blog.cloudflare.com)O nginx tinha limitações
- como usa apenas um único worker por requisição, havia desequilíbrio no uso dos núcleos de CPU
- como existe um connection pool por worker, a taxa de reutilização de conexões TCP e TLS era ruim -> o TTFB ficava mais alto
- além disso, eles já implementavam internamente os recursos necessários para operar o nginx, mas como o nginx foi projetado em C, não era memory-safe, então até engenheiros experientes cometiam erros
Pingora
- a Cloudflare recebe muitas requisições fora do padrão RFC, mas bibliotecas de terceiros (
hyper) são implementadas de forma estrita às RFCs, então seria necessário trabalho extra para expandi-las; por isso, decidiram construir a própria solução - Rust foi escolhido porque consegue substituir o que C faz de forma memory-safe, sem perda de desempenho
- para compartilhar o pool de conexões com facilidade, adotaram um sistema de escalonamento com work-stealing, aumentando a taxa de reutilização. Em comparação com antes, agora estabelecem cerca de 1/3 das conexões por segundo
- em comparação com antes, usam 70% menos CPU e 67% menos memória
- pretendem abrir o código como open source no futuro
5 comentários
70% de CPU e 67% de memória são realmente impressionantes..
Nossa, o nginx também foi muito bem usado, mas se isso sair como open source, quero testar na hora.
Mesmo estudando Rust, parece que não tem onde arrumar emprego.
Rust? Gostei disso.
Pelo menos em programação de sistemas, Rust está aos poucos se tornando cada vez mais dominante...