
Am 5. April 2024 stellte Cloudflare die erste öffentliche Version des Open-Source-Projekts Pingora v0.1.0 (bereits v0.1.1) vor. Es handelt sich um ein asynchrones, multithreaded Framework in Rust, das dabei hilft, HTTP-Proxy-Dienste zu erstellen. Das Projekt wird verwendet, um Dienste bereitzustellen, die einen erheblichen Teil des Traffics bei Cloudflare abwickeln (anstatt Nginx zu verwenden). Der Quellcode von Pingora ist unter der Apache 2.0-Lizenz auf GitHub veröffentlicht.
Pingora bietet Bibliotheken und APIs zur Erstellung von Diensten über HTTP/1 und HTTP/2, TLS oder einfach TCP/UDP. Als Proxy-Server unterstützt es End-to-End-Proxys für HTTP/1 und HTTP/2, gRPC und WebSocket. Die Unterstützung für HTTP/3 ist in Planung. Pingora beinhaltet auch anpassbare Strategien für Lastenverteilung und Failover. Um den Anforderungen und der Sicherheit gerecht zu werden, unterstützt es sowohl die weit verbreiteten Bibliotheken OpenSSL als auch BoringSSL, die den FIPS-Anforderungen (Federal Information Processing Standards der USA) und post-quantum Verschlüsselung entsprechen.
Neben diesen Funktionen bietet Pingora Filter und Rückrufe, mit denen Benutzer vollständig anpassen können, wie der Dienst Anfragen verarbeiten, umwandeln und weiterleiten soll.
Im Betriebsmodus gewährleistet Pingora einen unterbrechungsfreien Neustart für ein selbstständiges Update, ohne dass eingehende Anfragen verloren gehen. Syslog, Prometheus, Sentry, OpenTelemetry und andere benötigte Überwachungstools lassen sich problemlos mit Pingora integrieren.
Funktionen von Pingora: Verwendung von Async Rust, Unterstützung für HTTP 1/2 End-to-End-Proxy, TLS über OpenSSL oder BoringSSL, gRPC und WebSocket-Proxying, sanfter Neustart, anpassbare Strategien für Lastenverteilung und Failover, sowie Unterstützung verschiedener Überwachungswerkzeuge.
In der Version Pingora v0.1.1 wurden zuvor entdeckte Fehler behoben, die Leistung des Pingora-Ketama-Algorithmus verbessert, mehr Benchmarks für TinyUFO hinzugefügt und Tests für das Pingora-Cache-Purge durchgeführt, die Größe des Puffers für die InvalidHTTPHeader-Fehlerprotokolle begrenzt sowie Tippfehler behoben und notwendige Korrekturen in den Kommentaren und der Projektdokumentation vorgenommen.
Quelle: linux.org.ru
