De release van Pingora 0.7, een framework voor het bouwen van netwerksystemen.

Cloudflare heeft een nieuwe release van het Pingora-framework 0.7 gepubliceerd, dat is ontworpen voor het ontwikkelen van beveiligde, hoogpresterende netservices in Rust. De proxy die met Pingora is gebouwd, wordt al meer dan twee jaar gebruikt in het content delivery netwerk van Cloudflare 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 (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:

  • Het SslDigest-structuur bevat nu een veld 'extension', en voor de TlsAccept-type is een handler voor handshake_complete_callback geĆÆmplementeerd, waardoor het mogelijk is om willekeurige applicatiespecifieke gegevens aan de TLS-verbinding toe te voegen. Als voorbeeld wordt getoond hoe deze mogelijkheid kan worden gebruikt voor het maken de server, die informatie uit het klantcertificaat leest en deze terugstuurt in de HTTP-respons.
  • Een ConnectionFilter-type is toegevoegd voor het filteren van TCP-verbindingen in de fase vóór de TLS-parameteronderhandeling, waardoor middelen worden bespaard door verbindingen in een vroeg stadium te beĆ«indigen.
  • Ondersteuning voor virtuele laag 4 stromen (Virtual L4 Streams) is toegevoegd, waarmee het mogelijk is om eigen implementaties van netwerkprotocollen in de pingora-proxy te integreren.
  • De mogelijkheid om de opties verify_cert en verify_hostname te gebruiken in configuraties met rustls is geĆÆmplementeerd.
  • Toegang tot de HttpProxy-structuur voor het overschrijven van de proxyverzoeklogica is toegestaan voor externe crate-pakketten.
  • Het is toegestaan om achtergrondbehandelaars voor subverzoeken van de hoofdverwerkingshandler te scheiden.
  • Mogelijkheid tot het bijhouden van de grootte van HTTP1- en HTTP2-verzoeklichamen, evenals de statistieken van de proxy-werking, is geboden.
  • De mogelijkheid om eigen sessies te creĆ«ren voor ingekapseld HTTP-verkeer is toegevoegd.
  • Er zijn beperkingen ingesteld op het gebruik van versies van de lru bibliotheek (0.16.3 of nieuwer) vanwege een kwetsbaarheid in de IterMut-iteratorimplementatie, die kan leiden tot een crash door het activeren van de borrow checker.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster