Cloudflare har offentliggjort den anden udgave af Pingora-rammen, der er designet til at udvikle sikre, højtydende netværkstjenester i Rust. Proxyen bygget med Pingora har været i brug i netværket af Cloudflares indholdleveringstjeneste i omkring et år som erstatning for nginx og håndterer mere end 40 millioner anmodninger per sekund. Koden er skrevet i Rust og offentliggjort under Apache 2.0-lisensen.
Funktioner i Pingora:
- Understøttelse af HTTP/1 og HTTP/2 (med planer om HTTP/3), samt muligheden for at oprette tjenester, der bruger deres egne protokoller eller UDP/TCP.
- Mulighed for multitrådet anmodningsbehandling i asynkron tilstand.
- Understøttelse af tilkaldte callback-håndterere og filtre, som gør det muligt at styre forskellige faser af behandling af forespørgslen samt ændre, omdirigere, blockere og logge forespørgsler 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 (bruger OpenSSL eller BoringSSL).
- 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:
- Tilføjet support til installation af filtre for ekstra HTTP/2-headere.
- Tilføjet mulighed for at ændre størrelsen på buffer til indgående TCP-pakker.
- Tilføjet funktionen body_bytes_read().
- Tilføjet filteret cache_not_modified_filter.
- Tilføjet mulighed for at føre log over TLS-nøgler.
- Tilføjet callback-funktionen purge_response.
Kilde: opennet.ru
