A empresa Cloudflare anunciou a abertura do código-fonte do framework Pingora, projetado para o desenvolvimento de serviços de rede de alto desempenho e sistemas de rede programáveis em Rust. O framework foi amplamente testado e já está em uso em sistemas de alta carga — um proxy baseado nele tem estado em operação na rede de entrega de conteúdo da Cloudflare por mais de um ano, substituindo o nginx e processando mais de 40 milhões de solicitações por segundo. O código é escrito em Rust e publicado sob a licença Apache 2.0.
O Pingora pode ser usado para processamento de solicitações em multithreading de forma assíncrona, suporta HTTP/1 e HTTP/2 (com planos para HTTP/3), proxy para gRPC e WebSocket, balanceadores de carga plugáveis, alteração de configurações sem reinício, atualização de código sem desconexão, definição de estratégias de failover e integração com diversos sistemas de monitoramento e registro de logs (Syslog, Prometheus, Sentry, OpenTelemetry). O Pingora também suporta criptografia TLS, mas isso é implementado como uma camada sobre as bibliotecas C OpenSSL e BoringSSL.
Pacotes Rust prontos são fornecidos para criar proxies HTTP, trabalhar com protocolos de rede, analisar cabeçalhos HTTP, contabilizar e limitar tráfego, balancear carga, trabalhar com a tabela hash distribuída Ketama, manter cache em memória e processar limitações de tempo de forma assíncrona. Além do HTTP, suporta a criação de serviços que utilizam seus próprios protocolos ou UDP/TCP.
A prioridade fundamental do projeto é garantir a segurança — para reduzir a probabilidade de erros relacionados ao uso de memória, foi escolhida a linguagem Rust para o desenvolvimento. Também foi dada grande atenção à eficiência, desempenho e escalabilidade. Por exemplo, ao criar proxies e balanceadores de carga com base no Pingora, há a possibilidade de anexar manipuladores de callback e filtros que permitem gerenciar diferentes estágios do processamento de solicitações, além de modificar, redirecionar, bloquear e registrar as solicitações e respostas.servidores e no caso de balanceadores de carga baseados no Pingora, a possibilidade de anexar manipuladores de callback e filtros é prevista, permitindo o gerenciamento de várias etapas do processamento de solicitações, além de modificar, redirecionar, bloquear e registrar solicitações e respostas.
Em colaboração com a ISRG (Internet Security Research Group), que é a fundadora do projeto Let’s Encrypt e apoia o desenvolvimento de tecnologias para aumentar a segurança da internet, uma proxy reversa chamada River será criada com base no Pingora, visando sua aplicação em elementos críticos. da infraestrutura de rede. O código do River será escrito em Rust e distribuído sob a licença Apache 2.0. O desenvolvimento começará no segundo trimestre de 2024. Atualmente, o projeto está na fase de design e definição da arquitetura. O projeto está sendo desenvolvido sob a liderança de James Munns do Rust Embedded Working Group.
O principal objetivo do projeto River é implementar um proxy capaz de retransmitir solicitações de clientes para servidores de backend, terminando conexões TLS de entrada e roteando, alterando e filtrando solicitações de acordo com regras definidas. Entre as características do River, destaca-se o modelo de processamento de solicitações multithread, que permite um uso mais eficiente da reutilização de conexões em comparação com proxies como o nginx. Para expandir a funcionalidade do proxy e criar filtros, módulos compilados no formato WebAssembly serão suportados (qualquer linguagem de programação que suporte compilação em WASM poderá ser usada para o desenvolvimento). O formato da configuração está planejado para ser o mais simples e familiar possível.
Fonte: opennet.ru
