Cloudflare heeft de release van het Pingora 0.6-framework aangekondigd, dat is ontworpen voor de ontwikkeling van beveiligde, hoogwaardige netwerksystemen in de programmeertaal Rust. De proxy die met Pingora is gebouwd, wordt al meer dan twee jaar gebruikt in het Cloudflare Content Delivery Network in plaats van nginx en verwerkt meer dan 40 miljoen verzoeken per seconde. De code is geschreven in Rust en is gepubliceerd onder de Apache 2.0-licentie.
Belangrijkste kenmerken van Pingora:
- Ondersteuning voor HTTP/1 en HTTP/2 (HTTP/3 is gepland) en de mogelijkheid om diensten te creƫren die hun eigen protocollen of UDP/TCP gebruiken.
- Ondersteuning voor multithreading en asynchrone verwerking van verzoeken.
- Mogelijkheid om callback-handlers en filters toe te voegen die verschillende stadia van het verwerking van verzoeken kunnen beheren, evenals verzoeken en antwoorden kunnen wijzigen, omleiden, blokkeren en loggen.
- Proxy-ondersteuning voor gRPC en WebSocket.
- Plug-in load balancers.
- Mogelijkheid om configuraties te wijzigen zonder herstart.
- Ondersteuning voor het updaten van de toepassingscode zonder verbindingen te breken.
- Hulpmiddelen voor failover bij storingen.
- Integratie met verschillende monitoring- en loggingsystemen (Syslog, Prometheus, Sentry, OpenTelemetry).
- Ondersteuning voor TLS-encryptie (gebruikmakend van OpenSSL, BoringSSL of Rustls).
- Klaar-to-go Rust-pakketten voor het creƫren van HTTP-proxy's, werken met netwerkprotocollen, het parseren van HTTP-headers, het bijhouden en limiteren van verkeer, load balancing, werken met de gedistribueerde hash-tabel Ketama, onderhouden van cache in het geheugen en asynchrone verwerking van timeouts.
Onder de wijzigingen in de nieuwe versie:
- Tijdens het afsluiten van processen worden de namen van runtime-componenten in de log vastgelegd om de diagnose van problemen, veroorzaakt door ontbrekende runtime-componenten die leiden tot vertragingen tijdens het afsluiten, te vergemakkelijken.
- Fasetracking is ingeschakeld, de serverinformatie die nuttig kan zijn voor monitoring of om de fouttolerantie te waarborgen. Bij het wisselen van uitvoeringsfase wordt er een ExecutionPhase-bericht gegenereerd dat kan worden opgevangen via de API Server::watch_execution_phase.
- Het is toegestaan om gecomprimeerde woordenboeken in het geheugen te plaatsen.
- In de implementatie van de http-server en http-proxy zijn de richtlijnen HttpServerOptions en H2Options toegevoegd.
- Er is bescherming geĆÆmplementeerd tegen de MadeYouReset-aanval, die een denial-of-service kan veroorzaken door manipulatie van de controleframes van HTTP/2.
Bron: opennet.ru
