Vad är Traefik?
Traefik är en modern sjulagers omvänd proxy och lastbalanserare, centrerad kring ett kärnkoncept — Service Discovery First.
Den största skillnaden från traditionella omvända proxyservrar (som Nginx) är att du inte behöver skriva ett stort antal konfigurationsfiler manuellt; Traefik "observerar" proaktivt din runtime-miljö och genererar automatiskt routningsregler.
På grund av funktionen "tjänst som konfiguration" är Traefik särskilt lämplig för dessa scenarier:
- Docker / Docker Compose
- Kubernetes (Ingress Controller)
- Mikrotjänstearkitektur
- Onlinetjänster för små team eller oberoende utvecklare
Enkelt uttryckt, om din tjänst är "dynamisk" är Traefik mycket mindre problemfri än traditionella omvända agenter.
Referenspunkt
läggning
Jag vill tacka exoscale.ch VincentBernat, som generöst tillhandahöll infrastrukturen som krävdes för benchmarking.
Jag testade den med fyra virtuella maskiner, konfigurerade enligt följande:
32 GB minne 8 CPU-kärnor 10GB SSD Ubuntu 14.04 LTS 64-bit
Förbereda
En virtuell maskin används för att starta benchmarkverktyget wrk En virtuell maskin för Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Vem konfigurerar två virtuella maskiner för två backend-servrar i Go? Varje virtuell maskin har justerats med följande begränsningar:
Nginx
Nedan följer användningsmetoden för Nginx-konfigurationsfilen /etc/nginx/nginx.conf:
Nedan följer de Nginx virtuella hostingkonfigurationsfiler som används:
Traefik
Följande är filerna som används för traefik.toml:
utfall Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latens http://IP-whoami:80/bench Kör 1 månads test @ http://IP-whoami:80/bench 20 trådar och 1000 anslutningar Trådstatistik genomsnitt Stdev Max +/- Stdev Latens 70,28 ms 134,72 ms 1,91 s 89,94 % Krav/sek 2,92k 742,42 8,78k 68,80% Latensfördelning 50 % 10,63 ms 75 % 75,64 ms 90 % 205,65 ms 99% 668,28 ms 3476705 förfrågningar på 1,00 miljoner, 384,61 MB läsning Socketfel: koppla 0, läs 0, skriv 0, timeout 103 Förfrågningar/sek: 57894.35 Överföring/sekund: 6,40 MB nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latens http://IP-nginx:8001/bench Kör 1 månads test @ http://IP-nginx:8001/bench 20 trådar och 1000 anslutningar Trådstatistik genomsnitt Stdev Max +/- Stdev Latens 101,25 ms 180,09 ms 1,99 s 89,34 % Krav/sek: 1,69k 567,69 9,39k 72,62 % Latensfördelning 50% 15,46 ms 75 % 129,11 ms 90 % 302,44 ms 99 % 846,59 ms 2018427 förfrågningar på 1,00 m, 298,36 MB läst Socketfel: koppla 0, läs 0, skriv 0, timeout 90 Förfrågningar/sek: 33591.67 Överföring/sekund: 4,97 MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latens http://IP-traefik:8000/bench Kör 1 månads test @ http://IP-traefik:8000/bench 20 trådar och 1000 anslutningar Trådstatistik genomsnitt Stdev Max +/- Stdev Latens 91,72 ms 150,43 ms 2,00 s 90,50 % Krav/Sek 1,43k 266,37 2,97k 69,77% Latensfördelning 50 % 19,74 ms 75 % 121,98 ms 90 % 237,39 ms 99 % 687,49 ms 1705073 förfrågningar på 1,00 m, 188,63 MB läst Socket-fel: koppla 0, läs 0, skriva 0, timeout 7 Förfrågningar/sek: 28392.44 Överföring/sek: 3,14 MB
slutsats Traefiks hastighet är tydligt långsammare än Nginx, men skillnaden är inte stor: Traefik hanterar 28 392 förfrågningar per sekund, medan Nginx hanterar 33 591 förfrågningar per sekund, med en prestandakvot på 85%. För ett ungt projekt är det ganska bra :)!
Några områden för förbättring:
Använd GO_REUSEPORT monitorer
Varje CPU-kärna kör en separat serverinstans GOMAXPROCS=1 (benchmarks visar att Traefik har mycket mer kontextväxling än nginx).
Original:Inloggningen med hyperlänken är synlig. |