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

L'azienda Cloudflare ha pubblicato il rilascio del framework Pingora 0.7, progettato per lo sviluppo di servizi di rete protetti e ad alte prestazioni in linguaggio Rust. Un proxy costruito con Pingora è già utilizzato da oltre due anni nella rete di distribuzione dei contenuti Cloudflare in sostituzione di nginx e gestisce oltre 40 milioni di richieste al secondo. Il codice è scritto in linguaggio Rust ed è pubblicato con licenza Apache 2.0.

Caratteristiche principali di Pingora:

  • Supporto per HTTP/1 e HTTP/2 (in programma HTTP/3), e possibilità di creare servizi che utilizzano i propri protocolli o UDP/TCP.
  • Supporto per l'elaborazione multithreading delle richieste in modalità asincrona.
  • Possibilità di allegare callback e filtri che permettono di gestire le varie fasi dell'elaborazione della richiesta, oltre a modificare, reindirizzare, bloccare e registrare richieste e risposte.
  • Proxy per gRPC e WebSocket.
  • Bilanciatori di carico plug-in.
  • Possibilità di modifica della configurazione senza riavvio.
  • Supporto per l'aggiornamento del codice dell'app senza interruzione delle connessioni.
  • Strumenti per il failover in caso di guasti.
  • Integrazione con vari sistemi di monitoraggio e logging (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Supporto per la crittografia TLS (viene utilizzato OpenSSL, BoringSSL o Rustls).
  • Pacchetti Rust pronti per la creazione di proxy HTTP, lavorare con protocolli di rete, analizzare gli header HTTP, monitorare e limitare il traffico, bilanciamento del carico, lavorare con tabelle hash distribuite Ketama, mantenere una cache in memoria e gestione asincrona dei timeout.

Tra le novità nella nuova versione:

  • Nella struttura SslDigest è stato aggiunto il campo "extension", e per il tipo TlsAccept è stato implementato il gestore handshake_complete_callback, che consente di allegare dati arbitrari specifici dell'applicazione alla connessione TLS. Come esempio, viene mostrato come utilizzare questa possibilità per creare server, che legge le informazioni dal certificato del cliente e le restituisce nella risposta HTTP.
  • È stato aggiunto il tipo ConnectionFilter per filtrare le connessioni TCP nella fase di pre-negoziazione dei parametri TLS, risparmiando risorse e resettando le connessioni nelle fasi iniziali.
  • È stato aggiunto il supporto per flussi virtuali di livello di trasporto (Virtual L4 Streams), che permette di integrare nel pingora-proxy implementazioni personalizzate di protocolli di rete.
  • È stata implementata la possibilità di utilizzare le opzioni verify_cert e verify_hostname nelle configurazioni con rustls.
  • Per i pacchetti esterni crate è stato consentito l'accesso alla struttura HttpProxy per ridefinire la logica di proxy delle richieste.
  • È stato consentito di isolare gestori di richieste secondarie dal gestore principale della sessione.
  • È stata fornita la possibilità di monitorare le dimensioni del corpo delle richieste HTTP1 e HTTP2, così come le metriche di funzionamento del proxy.
  • È stata aggiunta la possibilità di creare sessioni personalizzate per il traffico HTTP incapsulato.
  • È stata impostata una limitazione sull'uso delle versioni della libreria lru (0.16.3 o più recenti) a causa di una vulnerabilità nell'implementazione dell'iteratore IterMut, che può portare a terminazioni anomale a causa dell'attivazione del controllo dei prestiti (borrow checker).

Fonte: opennet.ru

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