Das Unternehmen Cloudflare hat die zweite Version des Pingora-Frameworks veröffentlicht, das fĂŒr die Entwicklung sicherer, leistungsstarker Netzwerkdienste in der Programmiersprache Rust vorgesehen ist. Der mit Pingora entwickelte Proxy wird seit etwa einem Jahr im Cloudflare Content Delivery Network anstelle von Nginx eingesetzt und verarbeitet ĂŒber 40 Millionen Anfragen pro Sekunde. Der Code ist in Rust geschrieben und unter der Apache 2.0-Lizenz veröffentlicht.
Hauptfunktionen von Pingora:
- UnterstĂŒtzung von HTTP/1 und HTTP/2 (geplant ist HTTP/3) sowie Funktionen zur Erstellung von Diensten, die ihre eigenen Protokolle oder UDP/TCP verwenden.
- Die Möglichkeit, Anfragen im asynchronen Modus multithreaded zu verarbeiten.
- UnterstĂŒtzung von Callback-Handlern und Filtern, die es ermöglichen, verschiedene Phasen der Anfragverarbeitung zu steuern sowie Anfragen und Antworten zu Ă€ndern, umzuleiten, zu blockieren und zu protokollieren.
- Proxy fĂŒr gRPC und WebSocket.
- Erweiterbare Lastenausgleichsmechanismen.
- Die Möglichkeit, die Konfiguration ohne Neustart zu Àndern.
- UnterstĂŒtzung fĂŒr die Aktualisierung des Anwendungscodes ohne Unterbrechung der Verbindungen.
- Werkzeuge zum Lastenwechsel im Falle eines Ausfalls (Failover).
- Integration mit verschiedenen Ăberwachungs- und Protokollierungssystemen (Syslog, Prometheus, Sentry, OpenTelemetry).
- UnterstĂŒtzung von TLS-VerschlĂŒsselung (unter Verwendung von OpenSSL oder BoringSSL).
- Fertige Rust-Pakete zur Erstellung von HTTP-Proxys, zur Arbeit mit Netzwerkprotokollen, zur Analyse von HTTP-Headern, zur Erfassung und Begrenzung des Datenverkehrs, zur Lastenverteilung, zur Arbeit mit einer verteilten Hash-Tabelle Ketama, zur Cache-Verwaltung im RAM und zur asynchronen Bearbeitung von ZeitĂŒberschreitungen.
Zu den Neuerungen in der neuen Version gehören:
- UnterstĂŒtzung fĂŒr die Installation von Filtern fĂŒr zusĂ€tzliche HTTP/2-Header hinzugefĂŒgt.
- Die Möglichkeit zur Ănderung der PaketpuffergröĂe fĂŒr TCP wurde hinzugefĂŒgt.
- Die Funktion body_bytes_read() wurde hinzugefĂŒgt.
- Der Filter cache_not_modified_filter wurde hinzugefĂŒgt.
- Die Möglichkeit zum Protokollieren von TLS-SchlĂŒsseln wurde hinzugefĂŒgt.
- Die Callback-Funktion purge_response wurde hinzugefĂŒgt.
Quelle: opennet.ru
