Uscita di Pingora 0.7, un framework per la creazione di servizi di rete

La società Cloudflare ha pubblicato la versione 0.7 del framework Pingora, progettato per lo sviluppo di servizi di rete ad alte prestazioni e sicuri in linguaggio Rust. Già da oltre due anni, i proxy costruiti con Pingora vengono utilizzati nella rete di distribuzione dei contenuti di Cloudflare al posto di nginx e gestiscono oltre 40 milioni di richieste al secondo. Il codice è scritto in Rust ed è pubblicato con licenza Apache 2.0.

Principali funzionalità di Pingora:

  • Supporto per HTTP/1 e HTTP/2 (presto anche HTTP/3), con la possibilità di creare servizi che utilizzano i propri protocolli o UDP/TCP.
  • Supporto per l'elaborazione multithreading delle richieste in modalità asincrona.
  • Possibilità di ancorare gestori di callback e filtri, che permettono di gestire diverse fasi dell'elaborazione della richiesta, oltre a modificare, reindirizzare, bloccare e registrare richieste e risposte.
  • Proxy gRPC e WebSocket.
  • Bilanciatori di carico plug-and-play.
  • Possibilità di modificare la configurazione senza riavviare.
  • Supporto per l'aggiornamento del codice dell'applicazione senza interrompere le connessioni.
  • Strumenti per il failover in caso di guasti.
  • Integrazione con diversi sistemi di monitoraggio e registrazione (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Supporto per la crittografia TLS (utilizza OpenSSL, BoringSSL o Rustls).
  • Pacchetti Rust pronti per creare proxy HTTP, lavorare con protocolli di rete, analizzare intestazioni HTTP, contare e limitare il traffico, bilanciare il carico, gestire una tabella hash distribuita Ketama, mantenere una cache in memoria e gestire in modo asincrono i timeout.

Tra le modifiche nella nuova versione:

  • Nel modello SslDigest è stato aggiunto il campo "extension", e per il tipo TlsAccept è stato implementato un gestore handshake_complete_callback che consente di allegare dati arbitrari, specifici per l'applicazione, alla connessione TLS. Viene mostrato come utilizzare questa funzionalità per creare server, leggendone le informazioni dal certificato del client e restituendole nella risposta HTTP.
  • Aggiunto il tipo ConnectionFilter per filtrare le connessioni TCP nella fase precedente alla negoziazione dei parametri TLS, che consente di risparmiare risorse chiudendo le connessioni in una fase iniziale.
  • Aggiunto il supporto per flussi virtuali di livello di trasporto (Virtual L4 Streams), che consentono di integrare in pingora-proxy le proprie implementazioni di protocolli di rete.
  • È stata implementata la possibilità di utilizzare le opzioni verify_cert e verify_hostname nelle configurazioni con rustls.
  • Per i pacchetti crate esterni, è stato consentito l'accesso alla struttura HttpProxy per sovrascrivere la logica di proxying delle richieste.
  • È consentita l'assegnazione di gestori in background per le sotto-richieste dal gestore principale della sessione.
  • È stata fornita la possibilità di monitorare le dimensioni del corpo delle richieste HTTP1 e HTTP2, oltre a metriche di funzionamento del proxy.
  • È stata aggiunta la possibilità di creare sessioni personalizzate per il traffico HTTP incapsulato.
  • Sono state imposte restrizioni all'uso di versioni della libreria lru (0.16.3 o successive) a causa di una vulnerabilità nell'implementazione dell'iteratore IterMut, che porta a crash a causa dell'interruzione delle variabili (borrow checker).

Fonte: opennet.ru

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster