Veröffentlichung von Pingora 0.6, einem Framework zur Erstellung von Netzservices

Das Unternehmen Cloudflare hat die Veröffentlichung des Frameworks Pingora 0.6 bekannt gegeben, das für die Entwicklung sicherer, leistungsfähiger Netzservices in der Programmiersprache Rust konzipiert ist. Der mit Hilfe von Pingora entwickelte Proxy wird seit über zwei Jahren im Content Delivery Network von Cloudflare anstelle von nginx eingesetzt und verarbeitet über 40 Millionen Anfragen pro Sekunde. Der Code wurde in Rust geschrieben und unter der Lizenz Apache 2.0 veröffentlicht.

Hauptfunktionen von Pingora:

  • Unterstützung von HTTP/1 und HTTP/2 (HTTP/3 ist geplant), sowie die Möglichkeit, Dienste zu erstellen, die eigene Protokolle oder UDP/TCP verwenden.
  • Unterstützung für multithreaded Bearbeitung von Anfragen im asynchronen Modus.
  • Möglichkeit, Callback-Handler und Filter anzuhängen, die es ermöglichen, verschiedene Phasen der Anfrageverarbeitung 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 für TLS-Verschlüsselung (OpenSSL, BoringSSL oder Rustls werden verwendet).
  • 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:

  • Bei der Beendigung der Arbeit wird eine Protokollierung der Namen der Runtime-Komponenten sichergestellt, um die Diagnose von Problemen zu erleichtern, die durch fehlende Runtime-Komponenten verursacht werden und zu Verzögerungen während der Beendigung führen.
  • Die Verfolgung der Ausführungsphasen wurde aktiviert Server, deren Informationen nützlich sein können, um die Überwachung oder Fehlertoleranz zu gewährleisten. Bei einem Phasenwechsel wird eine Nachricht "ExecutionPhase" generiert, die über die API Server::watch_execution_phase abgefangen werden kann.
  • Es ist erlaubt, komprimierte Wörterbücher im Speicher abzulegen.
  • Die Implementierung des HTTP-Servers und des HTTP-Proxys wurde um die Direktiven HttpServerOptions und H2Options erweitert.
  • Ein Schutz gegen den Angriff "MadeYouReset" wurde implementiert, der einen Denial-of-Service-Angriff durch Manipulation von Steuerrahmen in HTTP/2 ermöglicht.

Quelle: opennet.ru

60GB SSD 8Gb DDR4