26 pontos por yunyun0505 2022-09-15 | 5 comentários | Compartilhar no WhatsApp

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

 
functor 2022-09-27

70% de CPU e 67% de memória são realmente impressionantes..

 
ifmkl 2022-09-16

Nossa, o nginx também foi muito bem usado, mas se isso sair como open source, quero testar na hora.

 
forteleaf 2022-09-16

Mesmo estudando Rust, parece que não tem onde arrumar emprego.

 
jungmin1237 2022-09-15

Rust? Gostei disso.

 
jjpark78 2022-09-15

Pelo menos em programação de sistemas, Rust está aos poucos se tornando cada vez mais dominante...