Udgivelse af Pingora 0.7, en ramme til oprettelse af netværkstjenester

Cloudflare har offentliggjort en udgave af Pingora 0.7-rammeværket, der er designet til udvikling af sikre, højtydende netværkstjenester på Rust. Proxyen bygget med Pingora har allerede været i brug i mere end to år i Cloudflares indholdleveringsnetværk som erstatning for nginx og håndterer over 40 millioner anmodninger per sekund. Koden er skrevet i Rust og offentliggjort under Apache 2.0-licensen.

Funktioner i Pingora:

  • Understøttelse af HTTP/1 og HTTP/2 (HTTP/3 er på vej), samt muligheden for at skabe tjenester med egne protokoller eller UDP/TCP.
  • Understøttelse af flertrådet behandling af anmodninger i asynkront mode.
  • Mulighed for tilknytning af callback-håndterere og filtre, der gør det muligt at styre forskellige faser af anmodningsbehandlingen samt at ændre, omdirigere, blokere og logge anmodninger og svar.
  • Proxyering af gRPC og WebSocket.
  • Plug-in load-balancere.
  • Mulighed for at ændre konfigurationen uden genstart.
  • Understøttelse af opdatering af applikationskoden uden at afbryde forbindelser.
  • Værktøjer til lastskift i tilfælde af fejl (failover).
  • Integration med forskellige overvågnings- og logningssystemer (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Understøttelse af TLS-kryptering (OpenSSL, BoringSSL eller Rustls anvendes).
  • Klare Rust-pakker til opbygning af HTTP-proxy, arbejde med netværksprotokoller, parsing af HTTP-overskrifter, trafikovervågning og -begrænsning, load balancing, arbejde med den distribuerede hashtabel Ketama, vedligeholdelse af cache i hukommelsen og asynkron behandling af tidsafbrud.

Blandt ændringerne i den nye version:

  • Strukturen SslDigest har fået et felt "extension", og for typen TlsAccept er der implementeret en håndterer handshake_complete_callback, der gør det muligt at knytte vilkårlige data specifikke for applikationen til TLS-forbindelsen. Der vises et eksempel på, hvordan denne mulighed kan bruges til at skabe server, der læser information fra klientcertifikatet og returnerer det i HTTP-svaret.
  • Der er tilføjet en type ConnectionFilter til filtrering af TCP-forbindelser før forhandlingen af TLS-parametre, hvilket sparer ressourcer ved at nulstille forbindelser tidligt.
  • Understøttelse af virtuelle transportniveau streams (Virtual L4 Streams) er blevet tilføjet, hvilket gør det muligt at integrere egne implementeringer af netværksprotokoller i pingora-proxy.
  • Muligheden for at bruge indstillingerne verify_cert og verify_hostname i konfigurationerne med rustls er blevet implementeret.
  • Adgang til strukturen HttpProxy for eksterne crate-pakker er blevet tilladt for at overskride logikken i proxiering af anmodninger.
  • Det er nu tilladt at выделение фоновых обработчиков подзапросов fra hovedhåndtereren af sessionen.
  • Muligheden for at spore størrelsen af HTTP/1 og HTTP/2 anmodningskroppe samt proxyens driftsmålinger er blevet tilbudt.
  • Muligheden for at oprette egne sessioner til indkapsling af HTTP-trafik er blevet tilføjet.
  • Der er indført begrænsninger på brugen af versioner af lru-biblioteket (0.16.3 eller nyere) på grund af en sårbarhed i implementeringen af iteratoren IterMut, der kan føre til nedbrud som følge af borrowsystemets (borrow checker) kontrol.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster