Was ist Varnish?
Varnish ist ein plattformunabhängiger Caching-HTTP-Reverse-Proxy, der Webplattformen beschleunigt.
Schauen wir uns das mal genauer an:
Plattformunabhängig
Varnish ist softwarebasiert und läuft auf Standardhardware, virtuellen Maschinen, in Containern, in der Cloud und vor Ort.
Caching
Varnish beschleunigt die HTTP-Bereitstellung, indem es Inhalte zwischenspeichert und an mehrere Clients weiterleitet.
HTTP
Varnish verarbeitet HTTP-Anfragen und -Antworten und kann so die Bereitstellung von Inhalten, die das HTTP-Protokoll verwenden, beschleunigen.
Reverse-Proxy
Varnish sitzt zwischen Clients und HTTP-Servern (dem Ursprung oder Backend) und fungiert als Proxy.
Wie Varnish funktioniert
Varnish nutzt HTTP-Caching-Mechanismen, um schnell zwischengespeicherte Versionen von Webseiten, Videosegmenten, APIs und allen anderen Inhalten, die über HTTP übertragen werden, bereitzustellen. Wenn ein Benutzer einen Inhalt anfordert, speichert Varnish eine Kopie in seinem Speicher und möglicherweise auf der Festplatte. Wenn ein anderer Benutzer denselben Inhalt anfordert, liefert Varnish die gespeicherte Kopie blitzschnell und überspringt den ressourcenintensiven Prozess der Generierung und Bereitstellung vom Ursprung. Dadurch wird die Serverlast verringert und die Nutzer erhalten ein schnelleres Erlebnis.
Varnish Configuration Language
Das Besondere an Varnish ist, dass das Anfragebearbeitungs- und Caching-Verhalten mit einer eigens entwickelten Sprache erheblich modifiziert und erweitert werden kann: Varnish Configuration Language (VCL) Mit einem Stil, der sich an C, C++ und Java anlehnt, bietet es Unterprogramme, If-Else-Anweisungen und Funktionsaufrufe. Der VCL-Code klinkt sich in den endlichen Zustandsautomaten von Varnish ein und gibt Ihnen die Kontrolle über jede Phase des Anforderungsbearbeitungsprozesses. Da VCL in C transpiliert und zu Maschinencode kompiliert wird, anstatt zur Laufzeit interpretiert zu werden, ist sie sehr, sehr schnell.
Festlegen von Caching-Richtlinien
Die Flexibilität der VCL ist beispiellos und bietet volle Kontrolle über Caching-Richtlinien, um personalisierte Caching-Erlebnisse, die Integration mit anderen Systemen und Edge Computing zu ermöglichen. VCL-Funktionen umfassen:
- Anfragebearbeitung und Routing
- Anfrage- und Antwortmanipulation
- Lastausgleich und Zustandsüberwachung
- Cache-Kontrollen
- Anfragebereinigung
- Edge-side Includes (ESI)
- Cookieverarbeitung
- Authentifizierung
- Cache-Umgehung
- Einstellung der Cache-Lebensdauer
- Kopfzeilenmanipulation
- Lastausgleich.
- Cache-Invalidierung
Varnish-Module (VMODs)
Eine robuste Bibliothek mit zusätzlichen Modulen erweitert das Standardverhalten von Varnish. Diese Varnish-Module, oder VMODs, fügen eine Vielzahl von Funktionen hinzu und stellen eine Reihe von Funktionen zur Verfügung, die direkt von der VCL aus aufgerufen werden können. Beispiele für VMODs sind:
- Erweiterte Bereinigung / Invalidierung.
- Inhaltsumwandlung
- Inhalts- / Bildkomprimierung
- Verschlüsselung
- Geräteerkennung
- Dateisystemzugriff
- JSON-Parsing
- JWT
- Speicherzugriff / MSE
- TLS-Informationen / TLS im Prozess
- Drosselung / Ratenbegrenzung
- Prometheus-Ausgabe
Funktionen von Varnish Enterprise
Varnish Enterprise bietet einen größeren Funktionsumfang als die Open-Source-Software Varnish Cache. Zu den wichtigsten Funktionen von Varnish Enterprise gehören:
- Massive Storage Engine (MSE). Zwischenspeicherung auf der Festplatte mit direkter E/A, die die Cache-Kapazität kostengünstig erhöht und die Cache-Persistenz ermöglicht
- Varnish High Availability (VHA). Replizieren von zwischengespeicherten Objekten über mehrere Varnish-Server
- HTTPS und integrierte Client- und Backend-TLS/SSL-Terminierung
- Browser-basierte Verwaltungs- und Überwachungskonsole mit dem Namen Varnish Controller
- Zusammenfassen von Anfragen. Kombiniert mehrere Anfragen für dasselbe Objekt in einer einzigen Backend-Anfrage
- Protokollierung. Vollständige Protokollierung bietet eine Flut von Informationen, mit Filtermechanismen und Ratenbegrenzungen zur Reduzierung der pro Zeitintervall gespeicherten Protokolleinträge
- Statistik. Umfangreicher Satz von Echtzeitzählern, mit Statistiken pro Traffic Slice und direktem Export im JSON- oder Prometheus-Format
- Grace Mode. Stellen Sie leicht veraltete Inhalte an Clients bereit, während Sie asynchrone Revalidierungsanfragen senden, um die neueste Version abzurufen. Auch „Stale-While-Revalidate“ genannt
- Erweiterte Cache-Invalidierung.
Varnish-Architektur
Effiziente Software ermöglicht Skalierung, weshalb der Kern der Caching-Engine in Varnish schlank gehalten ist und nur die für den Betrieb notwendigen Funktionen enthält. Varnish hat außerdem viele Threads, so dass jede Client-Verbindung von einem separaten Worker-Thread bearbeitet wird. Ein weiteres Ziel ist es, die Ressourcennutzung durch optimale Speicherzuweisung so effizient wie möglich zu gestalten, während der hochoptimierte schnelle Pfad Kontextwechsel, Sperren und Speicherzuweisungen/-freigaben minimiert. Varnish Enterprise unterstützt auch Non-Uniform Memory Access (NUMA)-APIs, die notwendig sind, um die höchste Leistung von Servern mit mehr als einem NUMA-Knoten zu erreichen.