Hva er Traefik?
Traefik er en moderne syv-lags omvendt proxy og lastbalanserer, sentrert rundt et kjernekonsept — Service Discovery First.
Den største forskjellen fra tradisjonelle reverse proxyer (som Nginx) er at du ikke trenger å skrive et stort antall konfigurasjonsfiler manuelt; Traefik "observerer" proaktivt kjøremiljøet ditt og genererer automatisk rutingregler.
På grunn av funksjonen "tjeneste som konfigurasjon" er Traefik spesielt egnet for disse scenarioene:
- Docker / Docker Compose
- Kubernetes (Ingress-kontroller)
- Mikrotjenestearkitektur
- Nettbaserte tjenester for små team eller uavhengige utviklere
Enkelt sagt, hvis tjenesten din er «dynamisk», er Traefik mye mindre problemfri enn tradisjonelle omvendte agenter.
Referansepunkt
disposisjon
Jeg vil takke exoscale.ch VincentBernat, som generøst bidro med infrastrukturen som trengtes for benchmarking.
Jeg testet det med 4 virtuelle maskiner, konfigurert som følger:
32 GB minne 8 CPU-kjerner 10GB SSD Ubuntu 14.04 LTS 64-bit
Definere
En virtuell maskin brukes til å starte benchmarkingverktøyet wrk En virtuell maskin for Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Hvem konfigurerer to virtuelle maskiner for to backend-servere i Go? Hver virtuell maskin er justert med følgende restriksjoner:
Nginx
Nedenfor er bruksmetoden for Nginx-konfigurasjonsfilen /etc/nginx/nginx.conf:
Nedenfor er de virtuelle hosting-konfigurasjonsfilene som brukes:
Traefik
Følgende er filene som brukes for traefik.toml:
utfall Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latens http://IP-whoami:80/bench Kjører 1 minutts test @ http://IP-whoami:80/bench 20 tråder og 1000 tilkoblinger Trådstatistikk gjennomsnittlig 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 % Latensfordeling 50 % 10,63 ms 75 % 75,64 ms 90 % 205,65 ms 99 % 668,28 ms 3476705 forespørsler på 1,00 m, 384,61 MB lesing Socket-feil: koble til 0, lese 0, skrive 0, timeout 103 Forespørsler/sek: 57894.35 Overføring/sekund: 6,40 MB Nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latens http://IP-nginx:8001/bench Kjører 1m-test @ http://IP-nginx:8001/bench 20 tråder og 1000 tilkoblinger Trådstatistikk gjennomsnittlig 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 % Latensfordeling 50 % 15,46 ms 75 % 129,11 ms 90 % 302,44 ms 99 % 846,59 ms 2018427 forespørsler på 1,00 millioner, 298,36 MB lesing Socket-feil: koble til 0, lese 0, skrive 0, timeout 90 Forespørsler/sek: 33591.67 Overføring/sekund: 4,97 MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latens http://IP-traefik:8000/bench Kjører 1 minutts test @ http://IP-traefik:8000/bench 20 tråder og 1000 tilkoblinger Trådstatistikk gjennomsnittlig Stdev Max +/- Stdev Latens 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 forespørsler på 1,00 m, 188,63 MB lesing Socket-feil: koble til 0, lese 0, skrive 0, timeout 7 Forespørsler/sek: 28392.44 Overføring/sekund: 3,14 MB
konklusjon Traefiks hastighet er tydelig tregere enn Nginx, men forskjellen er ikke stor: Traefik håndterer 28 392 forespørsler per sekund, mens Nginx håndterer 33 591 forespørsler per sekund, med en ytelsesgrad på 85 %. For et ungt prosjekt er det ganske god :)!
Noen områder som kan forbedres:
Bruk GO_REUSEPORT skjermer
Hver CPU-kjerne kjører en egen serverinstans GOMAXPROCS=1 (benchmarks viser at Traefik har mye mer kontekstbytte enn nginx).
Original:Innloggingen med hyperkoblingen er synlig. |