Hvad er Traefik?
Traefik er en moderne syv-lags reverse proxy og load balancer, centreret omkring et kernekoncept — Service Discovery First.
Den største forskel fra traditionelle reverse proxies (som Nginx) er, at du ikke behøver at skrive et stort antal konfigurationsfiler manuelt; Traefik "observerer" proaktivt dit runtime-miljø og genererer automatisk routingregler.
På grund af funktionen "service som konfiguration" er Traefik særligt velegnet til disse scenarier:
- Docker / Docker Compose
- Kubernetes (Ingress Controller)
- Mikroservicearkitektur
- Onlinetjenester for små teams eller uafhængige udviklere
Kort sagt, hvis din service er "dynamisk", er Traefik langt mindre problemfri end traditionelle omvendte agenter.
Benchmark
disposition
Jeg vil gerne takke exoscale.ch VincentBernat, som generøst leverede den nødvendige infrastruktur til benchmarking.
Jeg testede det med 4 virtuelle maskiner, konfigureret som følger:
32 GB hukommelse 8 CPU-kerner 10GB solid-state drev Ubuntu 14.04 LTS 64-bit
Rejse
En virtuel maskine bruges til at starte benchmarking-værktøjet wrk En virtuel maskine til Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Hvem konfigurerer to virtuelle maskiner til to backend-servere i Go? Hver virtuel maskine er blevet indstillet med følgende begrænsninger:
Nginx
Nedenfor er brugsmetoden for Nginx-konfigurationsfilen /etc/nginx/nginx.conf:
Nedenfor er de anvendte Nginx virtuelle hosting-konfigurationsfiler:
Traefik
Følgende er filerne, der bruges til traefik.toml:
udfald Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latenstid http://IP-whoami:80/bench Kører 1 m test @ http://IP-whoami:80/bench 20 tråde og 1000 forbindelser Trådstatistikker gennemsnitligt Stdev Max +/- Stdev Latenstid 70,28 ms 134,72 ms 1,91 s 89,94 % Krav/sek. 2,92k 742,42 8,78k 68,80% Latensfordeling 50% 10,63 ms 75% 75,64 ms 90% 205,65 ms 99% 668,28 ms 3476705 forespørgsler på 1,00 mio. minution, 384,61 MB læsning Socket-fejl: forbind 0, læs 0, skriv 0, timeout 103 Anmodninger/sek: 57894.35 Overførsel/sekund: 6,40MB Nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latenstid http://IP-nginx:8001/bench Kører 1 m test @ http://IP-nginx:8001/bench 20 tråde og 1000 forbindelser Trådstatistikker gennemsnitligt Stdev Max +/- Stdev Latenstid 101,25 ms 180,09 ms 1,99 sekunder 89,34 % Krav/Sek: 1,69k 567,69 9,39k 72,62% Latensfordeling 50% 15,46 ms 75% 129,11 ms 90% 302,44 ms 99% 846,59 ms 2018427 anmodninger på 1,00 mio. m, 298,36 MB læsning Socket-fejl: forbind 0, læs 0, skriv 0, timeout 90 Anmodninger/sek: 33591.67 Overførsel/sekund: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latenstid http://IP-traefik:8000/bench Kører 1 m test @ http://IP-traefik:8000/bench 20 tråde og 1000 forbindelser Trådstatistikker gennemsnitligt Stdev Max +/- Stdev Latenstid 91,72 ms 150,43 ms 2,00 sekunder 90,50 % Krav/sek. 1,43k 266,37 2,97k 69,77% Latensfordeling 50% 19,74 ms 75% 121,98 ms 90% 237,39 ms 99% 687,49 ms 1705073 anmodninger på 1,00 mio. m, 188,63 MB læsning Socket-fejl: forbind 0, læs 0, skriv 0, timeout 7 Anmodninger/sek: 28392.44 Overførsel/sekund: 3,14 MB
konklusion Traefiks hastighed er klart langsommere end Nginx', men forskellen er ikke stor: Traefik håndterer 28.392 forespørgsler i sekundet, mens Nginx håndterer 33.591 forespørgsler i sekundet med en performance-ratio på 85%. For et ungt projekt er det ret god :)!
Nogle forbedringsområder:
Brug GO_REUSEPORT skærme
Hver CPU-kerne kører en separat serverinstans GOMAXPROCS=1 (benchmarks viser, at Traefik har meget mere kontekstskift end nginx).
Oprindelig:Hyperlink-login er synlig. |