Videostreaming: Netflix stellt sein Cloud-Gateway Zuul 2 unter offene Lizenz

Für sämtliche Browser- und Geräte-Anfragen, die in die Cloud des Streaminganbieters Netflix gehen, dient die Software Zuul 2 als Eingangsportal, so zumindest beschreibt es das Unternehmen in der Ankündigung zur Offenlegung wichtiger Funktionen von Zuul 2(öffnet im neuen Fenster) . Das zuständige Team betreibe mehr als 80 Zuul-2-Cluster. Die sind wiederum mit etwa 100 Backend-Service-Clustern verbunden und bewältigen mehr als 1 Million Anfragen pro Sekunde.
Die äußere Schicht von Zuul 2 besteht aus Netty(öffnet im neuen Fenster) -Handlern für Clients und Server, die sich um Traffic kümmern, der technisch mit Netzwerkprotokollen, Webservern, Verbindungsverwaltungen und Proxy-Einsätzen zu tun hat. Hinzu kommen mehrere sogenannte Filter. Die Inbound-Filter kommen vor dem Weiterleiten von Anfragen zum Einsatz, sie kümmern sich um Authentifizierung, Routing und Tagging von Traffic. Die Endpoint-Filter geben eine statische Antwort oder leiten den Traffic an das eigentliche Ziel weiter. Die Outbound-Filter komprimieren letztlich den ausgehenden Traffic, ergänzen und entfernen Header und sammeln Telemetriedaten.

Die Filter lassen sich dabei nach eigenen Wünschen anpassen und nehmen in der Regel sämtlichen Traffic von außen in Empfang. Netflix verwende sie in leicht abgewandelter und vor allem reduzierter Form jedoch auch für internen Traffic, um etwa Load Balancing umzusetzen und auf interne Dienste zu routen.
Zuul-2-Kernfunktion stehen bereit
Zu den Kernbestandteilen, die Netflix nun unter eine offene Lizenz stellt, gehört ein vollständiger Support für eingehende HTTP/2-Verbindungen und Mutual TLS, um Zuul 2 auch in Szenarios mit höheren Sicherheitsanforderungen einzusetzen. Anpassbare Limits für wiederholte und konkurrierende Anfragen erhöhen die Widerstandsfähigkeit gegen DDoS-Angriffe.
Mit Request Passport lassen sich die Ereignisse im Lebenszyklus jeder Anfrage verfolgen, was beim Debuggen hilft. Status Categories geben Erfolgs- und Fehlermeldungen von Anfragen feingranularer wieder als HTTP-Statuscodes. Request Attempts prüfen den Erfolg von Weiter- und Umleitungen der Anfragen, was für Probleme mit dem Routing und wiederholten Anfragen aufschlussreich ist.
Darüber hinaus sind bereits weitere Funktion in Arbeit, die in der Ankündigung aufgezählt werden. So soll es dank Websocket/SSE-Support Push-Nachrichten über Seitenkanäle geben. Throttling und Rate-Limiting soll die Effekte von bösartigen Client-Verbindungen und -Anfragen abmildern. Sogenannte Brownout Filter deaktivieren bestimmte CPU-intensive Funktionen, wenn Zuul überlastet ist. Und Routen sollen sich auch über Dateien anlegen lassen, um nicht jedes Mal eigene Filter zu entwickeln.
Der Quellcode der Software(öffnet im neuen Fenster) findet sich auf Github. Dort bieten die Entwickler auch eine Einführung in die Verwendung von Zuul 2(öffnet im neuen Fenster) an.



