HTTP-Proxy: Cloudflare ersetzt Nginx mit Rust-Eigenentwicklung
Der Netzwerk- und Internetdienstleister Cloudflare hat in seinem Blog den HTTP-Proxy Pingora vorgestellt(öffnet im neuen Fenster), der laut Aussagen des Unternehmens komplett in Rust erstellt wurde und intern inzwischen die Verwendung von Nginx als Proxy ersetzt. Dieser soll nicht nur die Umsetzung neuer Funktionen ermöglichen, sondern auch nur ein Drittel der bisherigen CPU-Leistung und Speicherauslastung benötigen. Der Code soll künftig als Open Source bereitgestellt werden.
Für die Suche nach einer Alternative für Nginx habe sich das Unternehmen entschieden, weil Cloudflare den Fähigkeiten der Servers entwachsen sei. Das Unternehmen sei mit Nginx an nicht mehr lösbare Grenzen gestoßen, heißt es. Genutzt wird der neue Server dabei vor allem für die Verbindung vom eigenen Netzwerk zu den Servern der Cloudflare-Kunden, was etwa für das CDN, Worker oder Tunnel verwendet wird.
Cloudflare hatte demnach vor allem Probleme damit, Nginx für Verbindungen in großem Ausmaß wiederzuverwenden. Das Hinzufügen neuer Nginx-Worker vergrößere das Problem, da Verbindungen nur innerhalb eines Worker-Prozesses wiederverwendet werden könnten. Außerdem habe Cloudflare viel eigene Logik um die Fähigkeiten von Nginx selbst drumherum bauen müssen und vermisse vor allem die Speichersicherheit in der Programmiersprache C, die Nginx nutzt.
Eigenentwicklung in Rust
"Irgendwann schien es sich jedoch zu lohnen, einen eigenen Proxy aufzubauen", schreibt Cloudflare und setzte dies mit Pingora um. Für Rust habe sich das Team deshalb vor allem entschieden, weil es trotz Speichersicherheit ähnliche Leistung liefern könne wie C. Dabei erstellte das Team eigenen Aussagen zufolge auch eine eigene HTTP-Bibliothek, statt auf eine bestehende zurückzugreifen.
Cloudflare setzt außerdem auf Multi-Threading und nicht auf eine Multi-Prozessarchitektur. Unter anderem, um den bisherigen Leistungsproblemen zu begegnen, setzt Cloudflare außerdem mit der Neuentwicklung auf das Framework zur asynchronen Programmierung Tokio.
Die neue Architektur helfe dabei, die Zeit zum Aufbau einer HTTP-Verbindung im Schnitt zu verringern. Das liege an der Möglichkeit, Verbindung über Thread-Grenzen hinweg wiederzuverwenden. Das gelte vor allem für TCP-Verbindungen und TLS-Handshakes. Abschließend schreibt Cloudflare: "Zusammenfassend lässt sich sagen, dass wir einen internen Proxy entwickelt haben, der schneller, effizienter und vielseitiger ist und als Plattform für unsere aktuellen und zukünftigen Produkte dient."
- Anzeige Hier geht es zu Programmierung sicherer Systeme mit Rust bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.