Cloudflare migrou do NGINX para seu próprio proxy Pingora, escrito em Rust

A Cloudflare anunciou a migração de sua rede de entrega de conteúdo para o uso do proxy Pingora, escrito na linguagem Rust. O novo proxy substituiu a configuração baseada no servidor NGINX com scripts Lua e processa mais de um trilhão de solicitações por dia. Observa-se que a transição para um proxy especializado não só permitiu a implementação de novas funcionalidades e aumentou a segurança através de um uso seguro da memória, mas também resultou em um aumento significativo de desempenho e economia de recursos — a solução baseada no Pingora não requer o uso de Lua, portanto consome 70% menos recursos de CPU e 67% menos memória ao processar o mesmo volume de tráfego.

Por um longo tempo, o sistema para o proxy de tráfego entre usuários e destinatários servidores baseado em NGINX e scripts Lua atendia às necessidades da Cloudflare, mas com o crescimento da rede e o aumento de sua complexidade, uma solução universal se mostrou insuficiente, tanto em termos de desempenho quanto devido a limitações em escalabilidade e implementação de novas funcionalidades para os clientes. Em particular, surgiram dificuldades na adição de funcionalidades que vão além de um simples gateway e balanceador de carga. Por exemplo, foi necessário, em caso de falha no processamento de requisições servidor redirecionar a solicitação para outro servidor, fornecendo um conjunto diferente de cabeçalhos HTTP.

Em vez de uma arquitetura com divisão de solicitações entre processos de manipuladores separados (worker), o Pingora aplica um modelo multithread, que em cenários de uso da Cloudflare (alta concentração de tráfego de diferentes sites com um grande desvio estatístico) mostrou uma distribuição de recursos mais eficaz entre os núcleos da CPU. Em particular, a vinculação de solicitações não balanceadas a processos no nginx levava à carga desbalanceada nos núcleos da CPU, resultando em que requisições intensivas em recursos e E/S bloqueantes atrasavam o processamento de outras requisições. Além disso, a vinculação de pools de conexões a processos de manipuladores não permitia reutilizar conexões já estabelecidas por outros processos de manipuladores, o que diminui a eficiência do trabalho com um grande número de processos de manipuladores.

NGINX:

Cloudflare migrou do NGINX para seu próprio proxy Pingora, escrito em Rust

Pingora:

Cloudflare migrou do NGINX para seu próprio proxy Pingora, escrito em Rust

A implementação do Pingora permitiu reduzir em 160 vezes o número de operações de instalação de novas conexões e aumentar a proporção de requisições reutilizáveis de 87,1% para 99,92%. Além da redução das conexões repetidas e do uso mais eficiente dos núcleos da CPU, o aumento da performance do novo proxy foi principalmente impulsionado pela eliminação dos manipuladores lentos escritos em Lua utilizados com o nginx.

A linguagem Rust foi escolhida por permitir alta performance junto com ferramentas para assegurar um uso seguro da memória. É mencionado que, apesar da alta qualificação dos engenheiros da Cloudflare e da revisão do código escrito em C, não foi possível evitar erros que levam a problemas de memória (por exemplo, a vulnerabilidade no analisador HTML). Quanto ao novo código, são mencionados casos de falhas no Pingora que foram causadas não por problemas no aplicativo, mas por um erro no núcleo do Linux e falhas de hardware.

Adicionalmente, pode-se destacar o comentário feito por Linus Torvalds na conferência Open-Source Summit Europe que está acontecendo agora, sobre a inclusão do suporte à linguagem Rust no núcleo do Linux. No núcleo 6.0, os patches para o desenvolvimento de drivers de dispositivos em Rust não foram incluídos, mas segundo Linus, provavelmente serão aceitos no núcleo 6.1, e ele não pretende delayar a integração. Como motivação para adicionar o suporte ao Rust, além do impacto positivo na segurança, Linus menciona também a possibilidade de aumentar o interesse de novos participantes em trabalhar no núcleo, o que é relevante dado o envelhecimento dos veteranos.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster