Was ist Traefik?
Traefik ist ein moderner Siebenschichtiger Reverse-Proxy und Load Balancer, der auf einem Kernkonzept basiert – Service Discovery First.
Der größte Unterschied zu herkömmlichen Reverse-Proxys (wie Nginx) ist, dass man nicht eine große Anzahl von Konfigurationsdateien manuell schreiben muss; Traefik "beobachtet" proaktiv deine Laufzeitumgebung und generiert automatisch Routing-Regeln.
Aufgrund der Funktion "Service as Configuration" eignet sich Traefik besonders gut für diese Szenarien:
- Docker / Docker Compose
- Kubernetes (Ingress Controller)
- Microservices-Architektur
- Online-Dienste für kleine Teams oder unabhängige Entwickler
Kurz gesagt: Wenn Ihr Service "dynamisch" ist, ist Traefik deutlich weniger unkompliziert als herkömmliche Rückwärtsagenten.
Benchmark
Veranlagung
Ich möchte exoscale.ch VincentBernat danken, der großzügig die Infrastruktur für das Benchmarking bereitgestellt hat.
Ich habe es mit 4 virtuellen Maschinen getestet, die wie folgt konfiguriert sind:
32 GB Speicher 8 CPU-Kerne 10GB Solid-State-Laufwerk Ubuntu 14.04 LTS 64-Bit
Aufstellen
Eine virtuelle Maschine wird verwendet, um das Benchmarking-Tool wrk zu starten Eine virtuelle Maschine für Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Wer konfiguriert zwei virtuelle Maschinen für zwei Backend-Server in Go? Jede virtuelle Maschine wurde unter den folgenden Einschränkungen optimiert:
Nginx
Nachfolgend ist die Nutzungsmethode für die Nginx-Konfigurationsdatei /etc/nginx/nginx.conf aufgeführt:
Nachfolgend sind die verwendeten Nginx-Virtual-Hosting-Konfigurationsdateien aufgeführt:
Traefik
Im Folgenden sind die für traefik.toml verwendeten Dateien:
Ergebnis Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --Latenz http://IP-whoami:80/bench Ich führe einen 1-Meter-Test durch @ http://IP-whoami:80/bench 20 Threads und 1000 Verbindungen Thread-Statistiken durchschnittlich Stdev Max +/- Stdev Latenz 70,28 ms 134,72 ms 1,91 s 89,94 % Voraussetzung/Sekunde 2,92k 742,42 8,78k 68,80 % Latenzverteilung 50 % 10,63 ms 75 % 75,64 ms 90 % 205,65 ms 99 % 668,28 ms 3476705 Anfragen in 1,00 m, 384,61 MB Lesekapazität Socket-Fehler: verbinden 0, 0 lesen, 0 schreiben, Auszeit 103 Anfragen/Sekunde: 57894.35 Übertragung/Sekunde: 6,40 MB nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --Latenz http://IP-nginx:8001/bench Ich führe einen 1-Meter-Test durch @ http://IP-nginx:8001/bench 20 Threads und 1000 Verbindungen Thread-Statistiken durchschnittlich Stdev Max +/- Stdev Latenz 101,25 ms 180,09 ms 1,99 s 89,34 % Voraussetzung/Sek: 1,69k 567,69 9,39k 72,62 % Latenzverteilung 50 % 15,46 ms 75 % 129,11 ms 90 % 302,44 ms 99 % 846,59 ms 2018427 Anfragen in 1,00 Millionen, 298,36 MB Lesekapazität Socket-Fehler: verbinden 0, 0 lesen, 0 schreiben, Auszeit 90 Anfragen/sek: 33591.67 Übertragung/Sekunde: 4,97 MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --Latenz http://IP-traefik:8000/bench Ich führe einen 1-Meter-Test durch @ http://IP-traefik:8000/bench 20 Threads und 1000 Verbindungen Thread-Statistiken durchschnittlich Stdev Max +/- Stdev Latenz 91,72 ms 150,43 ms 2,00s 90,50 % Voraussetzung/Sek. 1,43k 266,37 2,97k 69,77 % Latenzverteilung 50 % 19,74 ms 75 % 121,98 ms 90 % 237,39 ms 99 % 687,49 ms 1705073 Anfragen in 1,00 m, 188,63 MB Lesekapazität Socket-Fehler: verbinden 0, 0 lesen, 0 schreiben, Auszeit 7 Anfragen/sek: 28392.44 Übertragung/sek: 3,14 MB
Schlussfolgerung Traefiks Geschwindigkeit ist deutlich langsamer als die von Nginx, aber der Unterschied ist nicht riesig: Traefik verarbeitet 28.392 Anfragen pro Sekunde, während Nginx 33.591 Anfragen pro Sekunde bearbeitet, mit einem Leistungsverhältnis von 85 %. Für ein junges Projekt ist das ziemlich gute :)!
Einige Verbesserungsmöglichkeiten:
Verwenden Sie GO_REUSEPORT Monitore
Jeder CPU-Kern betreibt eine separate Serverinstanz GOMAXPROCS=1 (Benchmarks zeigen, dass Traefik viel mehr Kontextwechsel hat als nginx).
Original:Der Hyperlink-Login ist sichtbar. |