Ce este Traefik?
Traefik este un proxy invers și un echilibrator de încărcare modern cu șapte straturi, centrat pe un concept de bază — Descoperirea Serviciului Mai Întâi.
Cea mai mare diferență față de proxy-urile reverse tradiționale (precum Nginx) este că nu trebuie să scrii manual un număr mare de fișiere de configurare; Traefik "observă" proactiv mediul tău de rulare și generează automat reguli de rutare.
Datorită funcției "serviciu ca configurație", Traefik este deosebit de potrivit pentru aceste scenarii:
- Docker / Docker Compose
- Kubernetes (Controler de intrare)
- Arhitectura microserviciilor
- Servicii online pentru echipe mici sau dezvoltatori independenți
Pe scurt, dacă serviciul tău este "dinamic", Traefik este mult mai puțin lipsit de bătăi de cap decât agenții inversi tradiționali.
Reperă
dispoziție
Vreau să-i mulțumesc lui exoscale.ch VincentBernat, care a oferit cu generozitate infrastructura necesară pentru benchmarking.
L-am testat folosind 4 mașini virtuale, configurate astfel:
32 GB de memorie 8 nuclee CPU Unitate solid-state de 10GB Ubuntu 14.04 LTS 64-bit
Configurat
O mașină virtuală este folosită pentru a lansa instrumentul de benchmarking wrk O mașină virtuală pentru Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Cine configurează două mașini virtuale pentru două servere backend în Go? Fiecare mașină virtuală a fost reglată folosind următoarele restricții:
Nginx
Mai jos este metoda de utilizare pentru fișierul de configurare Nginx /etc/nginx/nginx.conf:
Mai jos sunt fișierele de configurare ale găzduirii virtuale Nginx folosite:
Traefik
Următoarele sunt fișierele folosite pentru traefik.toml:
rezultat Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latență http://IP-whoami:80/bench Rulând testul de 1m @ http://IP-whoami:80/bench 20 de fire și 1000 de conexiuni Statistici Thread Stdev Media Max +/- Stdev Latență 70,28ms 134,72ms 1,91s 89,94% Cerință/sec 2,92k 742,42 8,78k 68,80% Distribuția latenței 50% 10,63ms 75% 75,64ms 90% 205,65ms 99% 668,28ms 3476705 cereri în 1,00m, 384,61MB citire Erori de socket: conectare 0, citire 0, scriere 0, timeout 103 Cereri/sec: 57894.35 Transfer/secundă: 6,40MB nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latency http://IP-nginx:8001/bench Testul de 1m @ http://IP-nginx:8001/bench 20 de fire și 1000 de conexiuni Statistici Thread Stdev Media Max +/- Stdev Latență 101,25ms 180,09ms 1,99s 89,34% Cerințe/sec 1,69k 567,69 9,39k 72,62% Distribuția latenței 50% 15,46ms 75% 129,11ms 90% 302,44ms 99% 846,59ms 2018427 cereri în 1,00m, 298,36MB citire Erori de socket: conectare 0, citire 0, scriere 0, timeout 90 Cereri/sec: 33591.67 Transfer/secundă: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Gazdă: test.traefik" --latență http://IP-traefik:8000/bench Rulând testul de 1m @ http://IP-traefik:8000/bench 20 de fire și 1000 de conexiuni Statistici Thread Stdev Media Max +/- Stdev Latență 91,72ms 150,43ms 2,00s 90,50% Cerință/sec 1,43k 266,37 2,97k 69,77% Distribuția latenței 50% 19,74ms 75% 121,98ms 90% 237,39ms 99% 687,49ms 1705073 cereri în 1,00m, 188,63MB citire Erori de socket: conectare 0, citire 0, scriere 0, timeout 7 Cereri/sec: 28392.44 Transfer/secundă: 3,14MB
concluzie Viteza lui Traefik este clar mai mică decât a lui Nginx, dar diferența nu este uriașă: Traefik gestionează 28.392 de cereri pe secundă, în timp ce Nginx gestionează 33.591 cereri pe secundă, cu un raport de performanță de 85%. Pentru un proiect tânăr, asta este o :) destul de bună!
Câteva domenii de îmbunătățire:
Folosește monitoare GO_REUSEPORT
Fiecare nucleu CPU rulează o instanță separată de server, GOMAXPROCS=1 (benchmark-urile arată că Traefik are mult mai multă schimbare de context decât nginx).
Original:Autentificarea cu hyperlink este vizibilă. |