Zuul 2 heißt das Cloud-Gateway von Netflix, es kommt mit riesigen Mengen an Anfragen der weltweiten Film- und Serienfans zurecht. Die Streaming-Firma stellt nun viele Kern-Features der Software unter die Apache-2-Lizenz.
Als Eingangsportal für sämtliche Browser- und Geräte-Anfragen, die in die Cloud von Netflix gehen, beschreibt die Ankündigung zu Zuul 2. Das 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.
Wie Zuul 2 grob funktioniert, zeigt die Abbildung. Die Netty-Handler kümmern sich um Traffic, der technisch mit Netzwerkprotokollen, Webservern, Verbindungsverwaltungen und Proxy-Einsätzen zu tun hat. 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 den ausgehenden Traffic, ergänzen und entfernen Header und sammeln Telemetriedaten.

Zuul 2 leitet sämtliche Anfragen der Netflix-Kunden weiter, die von Außerhalb des Netzwerks kommen. (Quelle: https://medium.com/netflix-techblog/)
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 abgespeckter Form jedoch auch für internen Traffic, um etwa Load Balancing umzusetzen und auf interne Dienste zu routen.
Zuul-2-Features
Zu den Kernbestandteilen, die Netflix nun unter eine offene Lizenz stellt, gehört ein vollständiger Support für eingehende HTTP/2-Verbindungen und 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 tracken den Erfolg von Weiter- und Umleitungen der Anfragen, was für Probleme mit Routing und wiederholten Anfragen aufschlussreich ist.
Weitere Features sind bereits in Arbeit, auch sie zählt die Ankündigung auf. So soll es dank Websocket/SSE-Support Push-Nachrichten über Sidechannel geben. Throttling und Rate-Limiting soll die Effekte von bösartigen Client-Verbindungen und -Anfragen abmildern. 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. Zu finden ist die Software auf Github.






