Co je Traefik?
Traefik je moderní sedmivrstvý reverzní proxy a load balancer, založený na základním konceptu — Service Discovery First.
Největší rozdíl oproti tradičním reverzním proxy (jako je Nginx) je, že nemusíte ručně zapisovat velké množství konfiguračních souborů; Traefik proaktivně "sleduje" vaše runtime prostředí a automaticky generuje směrovací pravidla.
Díky funkci "service as configuration" je Traefik obzvlášť vhodný pro tyto scénáře:
- Docker / Docker Compose
- Kubernetes (Ingress Controller)
- Architektura mikroslužeb
- Online služby pro malé týmy nebo nezávislé vývojáře
Jednoduše řečeno, pokud je vaše služba "dynamická", Traefik je mnohem méně komplikovaný než tradiční reverzní agenti.
Benchmark
uspořádání
Chci poděkovat exoscale.ch VincentBernatovi, který štědře poskytl infrastrukturu potřebnou pro benchmarking.
Testoval jsem to pomocí 4 virtuálních strojů, nakonfigurovaných následovně:
32 GB paměti 8 CPU jader 10GB SSD disk Ubuntu 14.04 LTS 64-bit
Ustavit
K spuštění benchmarkovacího nástroje wrk se používá virtuální stroj Virtuální stroj pro Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Kdo konfiguruje dva virtuální stroje pro dva backend servery v Go? Každý virtuální stroj byl naladěn podle následujících omezení:
Nginx
Níže je použita metoda pro konfigurační soubor Nginx /etc/nginx/nginx.conf:
Níže jsou použity konfigurační soubory virtuálního hostingu Nginx:
Traefik
Následující soubory jsou použity pro traefik.toml:
výsledek Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latence http://IP-whoami:80/bench Dělám 1m test @ http://IP-whoami:80/bench 20 závitů a 1000 připojení Statistiky vlákna Avg Stdev Max +/- Stdev Latence 70,28ms 134,72ms 1,91s 89,94 % Požadavky/sekce 2,92k 742,42 8,78k 68,80 % Rozložení latence 50 % 10,63 ms 75 % 75,64 ms 90 % 205,65 ms 99 % 668,28 ms 3476705 požadavky za 1,00m, 384,61MB čtení Chyby socketu: connect 0, read 0, write 0, timeout 103 Požadavky/sek: 57894.35 Přenos/sek: 6,40MB nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latence http://IP-nginx:8001/bench Dělám 1m test @ http://IP-nginx:8001/bench 20 závitů a 1000 připojení Statistiky vlákna Avg Stdev Max +/- Stdev Latence 101,25ms 180,09ms 1,99s 89,34% Požadavky/sekce 1,69k 567,69 9,39k 72,62 % Rozložení latence 50 % 15,46 ms 75 % 129,11ms 90 % 302,44 ms 99 % 846,59 ms 2018427 požadavky v 1,00m, 298,36MB čtení Chyby socketu: connect 0, read 0, write 0, timeout 90 Požadavky/sek: 33591,67 Přenos/sek: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latence http://IP-traefik:8000/bench Spouštěm 1m test @ http://IP-traefik:8000/bench 20 závitů a 1000 připojení Statistiky vlákna Avg Stdev Max +/- Stdev Latence 91,72ms 150,43ms 2,00s 90,50 % Požadavky/sekce 1,43k 266,37 2,97k 69,77 % Rozložení latence 50 % 19,74ms 75 % 121,98 ms 90 % 237,39 ms 99 % 687,49 ms 1705073 požadavků v 1,00m, 188,63MB čtení Chyby socketu: connect 0, read 0, write 0, timeout 7 Požadavky/sek: 28392.44 Přenos/sek: 3,14MB
závěr Rychlost Traefiku je zjevně pomalejší než u Nginx, ale rozdíl není velký: Traefik zpracovává 28 392 požadavků za sekundu, zatímco Nginx zpracovává 33 591 požadavků za sekundu s výkonnostním poměrem 85 %. Na mladý projekt je to docela dobrý :)!
Některé oblasti ke zlepšení:
Používejte GO_REUSEPORT monitory
Každé jádro CPU provozuje samostatnou serverovou instanci GOMAXPROCS=1 (benchmarky ukazují, že Traefik má mnohem více přepínání kontextu než nginx).
Původní:Přihlášení k hypertextovému odkazu je viditelné. |