Uitgave van Pingora 0.4, een raamwerk voor het creëren van netwerkdiensten

Cloudflare heeft de release gepubliceerd van het Pingora 0.4-framework, ontworpen voor het ontwikkelen van veilige, krachtige netwerkdiensten in de Rust-taal. De proxy die met Pingora is gebouwd, wordt al meer dan twee 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 (HTTP/3 in abonnementen), evenals de mogelijkheid om services te creëren met behulp van hun eigen protocollen of UDP/TCP.
  • Ondersteuning voor multi-threaded verwerking van verzoeken in asynchrone modus.
  • De mogelijkheid om callback-handlers en filters toe te voegen waarmee u verschillende stadia van de verwerking van verzoeken kunt beheren, en verzoeken en antwoorden kunt wijzigen, omleiden, blokkeren en loggen.
  • Proxy-gRPC en WebSocket.
  • Aansluitbare load balancers.
  • Mogelijkheid om de configuratie te wijzigen zonder opnieuw op te starten.
  • Ondersteuning voor het bijwerken van applicatiecode zonder verbindingen te verbreken.
  • Middelen voor het schakelen van belastingen in geval van storing (failover).
  • Integratie met verschillende monitoring- en loggingsystemen (Syslog, Prometheus, Sentry, OpenTelemetry).
  • Ondersteuning voor TLS-codering (met behulp van OpenSSL, BoringSSL of Rustls).
  • Kant-en-klare Rust-pakketten voor het maken van HTTP-proxy's, het werken met netwerkprotocollen, het parseren van HTTP-headers, het administreren en beperken van verkeer, load-balancing, het werken met de Ketama gedistribueerde hash-tabel, het onderhouden van een cache in RAM en het asynchrone verwerken van time-outs.

Onder de veranderingen in de nieuwe versie:

  • Initiële ondersteuning voor de Rustls-cryptografiebibliotheek met behulp van cryptoproviders op basis van de aws-lc-rs en ringbibliotheken op basis van BoringSSL.
  • Experimentele ondersteuning voor het Windows-platform.
  • Dummy TLS-modus, die kan worden gebruikt in situaties waarin het niet mogelijk is om een ​​echte TLS-implementatie te gebruiken.
  • Ondersteuning toegevoegd voor de gRPC-web-module om gRPC-web-clientverzoeken om te zetten in verzoeken aan server gRPC.
  • Biedt de mogelijkheid om H2C- (HTTP/2 via kale TCP, geen codering) en HTTP/1-verbindingen op dezelfde netwerkpoort af te handelen.
  • De mogelijkheid toegevoegd om uw eigen implementaties van de connect()-functie te verbinden om het gedrag te veranderen bij het tot stand brengen van een netwerkverbinding, bijvoorbeeld om extra opties voor de socket in te stellen of fouten te simuleren tijdens het testen.
  • Biedt de mogelijkheid om informatieve reacties te negeren bij proxying, zoals reacties met de header 'Expect: 100-continue'.
  • Ondersteuning toegevoegd voor het uitpakken van met gzip gecomprimeerde reacties.
  • Geïmplementeerde boekhouding van de backend-status voor monitoringdoeleinden.
  • De mogelijkheid toegevoegd om te binden aan een reeks lokale poorten.

Bron: opennet.ru

Voeg een reactie