Het bedrijf Cloudflare heeft de tweede uitgave van het Pingora-framework gepubliceerd, dat is ontworpen voor de ontwikkeling van beveiligde en hoogpresterende netservices in de programmeertaal Rust. De proxy, gebouwd met behulp van Pingora, wordt al ongeveer een jaar gebruikt in het Cloudflare-content delivery netwerk in plaats van nginx en verwerkt meer dan 40 miljoen verzoeken per seconde. De code is geschreven in Rust en gepubliceerd onder de Apache 2.0-licentie.
Belangrijkste kenmerken van Pingora:
- Ondersteuning voor HTTP/1 en HTTP/2 (met plannen voor HTTP/3), evenals mogelijkheden voor het creƫren van services die hun eigen protocollen of UDP/TCP gebruiken.
- Mogelijkheid tot multithreaded verwerking van verzoeken in asynchrone modus.
- Ondersteuning voor het toevoegen van callback-handlers en filters, waarmee verschillende fasen van de verwerking van verzoeken kunnen worden beheerd en verzoeken en antwoorden kunnen worden gewijzigd, omgeleid, geblokkeerd en gelogd.
- 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 (gebruik van OpenSSL of BoringSSL).
- 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:
- Ondersteuning voor het instellen van filters voor extra HTTP/2-headers is toegevoegd.
- Mogelijkheid om de grootte van de buffer voor binnenkomende pakketten voor TCP te wijzigen is toegevoegd.
- De functie body_bytes_read() is toegevoegd.
- De filter cache_not_modified_filter is toegevoegd.
- Mogelijkheid om TLS-sleutellogs bij te houden is toegevoegd.
- De callback-functie purge_response is toegevoegd.
Bron: opennet.ru
