Cloudflare har udgivet version 0.6 af Pingora-rammen, der er designet til at udvikle sikre højtydende netværkstjenester på Rust. Proxyen bygget med Pingora er blevet brugt i Cloudflares indholdsleveringsnetværk i mere end to år som erstatning for nginx og håndterer mere end 40 millioner forespørgsler pr. 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:
- Under nedlukningen er navnet på runtime-komponenterne blevet gemt i loggen for at lette fejlfinding af problemer, der skyldes fravær af runtime-komponenter, som kan forårsage forsinkelser under nedlukningen.
- Overvågning af udførelsesfaser er blevet aktiveret server, hvis information kan være nyttig til overvågning eller for at sikre fejltolerance. Når udførelsesfasen skiftes, genereres en meddelelse ExecutionPhase, som kan opfanges via API'en Server::watch_execution_phase.
- Det er tilladt at placere komprimerede ordbøger i hukommelsen.
- Direktiverne HttpServerOptions og H2Options er blevet tilføjet til implementeringen af http-serveren og http-proxyen.
- Beskyttelse mod MadeYouReset-angrebet er blevet implementeret, hvilket kan forårsage nedetid ved at manipulere kontrolrammer for HTTP/2.
Kilde: opennet.ru
