Lansering av Pingora 0.7, ramverket för att skapa nätverkstjänster

Företaget Cloudflare har släppt version 0.7 av ramverket Pingora, som är avsett för utveckling av skyddade, högpresterande nätverkstjänster på Rust. Proxy byggd med Pingora har redan använts i Cloudflares innehållsleveransnätverk i mer än två år istället för nginx och hanterar mer än 40 miljoner förfrågningar per sekund. Koden är skriven på Rust och publicerad under Apache 2.0-licensen.

Huvudfunktioner i Pingora:

  • Stöd för HTTP/1 och HTTP/2 (HTTP/3 är planerat) samt möjlighet att skapa tjänster som använder egna protokoll eller UDP/TCP.
  • Stöd för flerdelad behandling av förfrågningar i asynkront läge.
  • Möjlighet att fästa callback-handledare och filter som möjliggör styrning av olika steg i förfrågningshanteringen, samt att ändra, omdirigera, blockera och logga förfrågningar och svar.
  • Proxy för gRPC och WebSocket.
  • Anpassningsbara lastbalanserare.
  • Möjlighet att ändra konfigurationen utan omstart.
  • Stöd för att uppdatera applikationskoden utan att bryta anslutningar.
  • Verktyg för lastväxling vid fel (failover).
  • Integration med olika övervaknings- och logghanteringssystem (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Stöd för TLS-kryptering (använder OpenSSL, BoringSSL eller Rustls).
  • Färdiga Rust-paket för att skapa HTTP-proxy, arbeta med nätverksprotokoll, analysera HTTP-rubriker, övervaka och begränsa trafik, balansera last, arbeta med den distribuerade hash-tabellen Ketama, upprätthålla cache i minnet samt asynkron hantering av tidsgränser.

Bland förändringarna i den nya versionen:

  • I strukturen SslDigest har ett fält 'extension' lagts till och för typen TlsAccept har en handler för handshake_complete_callback implementerats, vilket möjliggör att fästa applikationsspecifik data till TLS-anslutningen. Som exempel visas hur denna funktion kan användas för att skapa servern, som läser information från klientcertifikatet och returnerar det i HTTP-svaret.
  • En typ ConnectionFilter har lagts till för filtrering av TCP-anslutningar vid steg före TLS-parametrar, vilket sparar resurser genom att avbryta anslutningar i ett tidigt skede.
  • Stöd för virtuella transportnivåflöden (Virtual L4 Streams) har lagts till, vilket möjliggör integration av egna implementationer av nätverksprotokoll i pingora-proxy.
  • Möjlighet att använda alternativen verify_cert och verify_hostname i konfigurationer med rustls har implementerats.
  • För externa crate-paket har åtkomst till HttpProxy-strukturen beviljats för att överskrida logiken för att proxya förfrågningar.
  • Det har blivit tillåtet att separera bakgrundshanterare av delförfrågningar från huvudsessionens hanterare.
  • Möjlighet att spåra storleken på HTTP1 och HTTP2 förfrågningskroppar samt proxyverksamhetsmetrik har tillhandahållits.
  • Möjlighet att skapa egna sessioner för inkapslad HTTP-trafik har lagts till.
  • Det har införts begränsningar för att använda versioner av biblioteket lru (0.16.3 eller nyare) på grund av en sårbarhet i implementationen av iteratorn IterMut, vilket kan leda till krasch på grund av att lånecheckern aktiveras.

Källa: opennet.ru

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster