Čo je Traefik?
Traefik je moderný sedemvrstvový reverzný proxy a load balancer, založený na základnom koncepte — Service Discovery First.
Najväčší rozdiel oproti tradičným reverzným proxy (ako Nginx) je, že nemusíte manuálne zapisovať veľké množstvo konfiguračných súborov; Traefik proaktívne "pozoruje" vaše runtime prostredie a automaticky generuje smerovacie pravidlá.
Vďaka funkcii "service as configuration" je Traefik obzvlášť vhodný pre tieto scenáre:
- Docker / Docker Compose
- Kubernetes (Ingress Controller)
- Architektúra mikroslužieb
- Online služby pre malé tímy alebo nezávislých vývojárov
Jednoducho povedané, ak je vaša služba "dynamická", Traefik je oveľa jednoduchší ako tradiční reverzní agenti.
Benchmark
dispozícia
Chcem poďakovať exoscale.ch VincentBernatovi, ktorý veľkoryso poskytol infraštruktúru potrebnú na benchmarking.
Testoval som to pomocou 4 virtuálnych strojov, nakonfigurovaných nasledovne:
32 GB pamäte 8 jadier CPU 10GB SSD disk Ubuntu 14.04 LTS 64-bit
Pripraviť
Na spustenie benchmarkovacieho nástroja wrk sa používa virtuálny stroj Virtuálny stroj pre Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Kto konfiguruje dva virtuálne stroje pre dva backend servery v Go? Každý virtuálny stroj bol naladený podľa nasledujúcich obmedzení:
Nginx
Nižšie je uvedený spôsob použitia konfiguračného súboru Nginx /etc/nginx/nginx.conf:
Nižšie sú použité konfiguračné súbory virtuálneho hostingu Nginx:
Traefik
Nasledujú súbory používané pre traefik.toml:
výsledok Whoami:
wrk -t20 -c1000 -d60s -H "Hostiteľ: test.traefik" --latencia http://IP-whoami:80/bench Robím 1m test @ http://IP-whoami:80/bench 20 závitov a 1000 pripojení Štatistiky vlákna Priemerný stdev Max +/- Stdev Latencia 70,28ms 134,72ms 1,91s 89,94% Požiadavka/sekcia 2,92k 742,42 8,78k 68,80% Distribúcia latencie 50% 10,63ms 75 % 75,64 ms 90 % 205,65 ms 99 % 668,28 ms 3476705 požiadavky na 1,00m, 384,61MB čítania Chyby socketu: connect 0, read 0, write 0, timeout 103 Požiadavky/sek: 57894.35 Prenos/sekunda: 6,40MB nginx:
wrk -t20 -c1000 -d60s -H "Hostiteľ: test.traefik" --latencia http://IP-nginx:8001/bench Bežím 1m test @ http://IP-nginx:8001/bench 20 závitov a 1000 pripojení Štatistiky vlákna Priemerný stdev Max +/- Stdev Latencia 101,25ms 180,09ms 1,99s 89,34% Požiadavky/Sec 1,69 000 567,69 9,39 000 72,62 % Distribúcia latencie 50 % 15,46 ms 75% 129,11ms 90% 302,44ms 99 % 846,59 ms 2018427 požiadavky v 1,00m, čítanie 298,36MB Chyby socketu: connect 0, read 0, write 0, timeout 90 Požiadavky/sek: 33591.67 Prenos/sek: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Hostiteľ: test.traefik" --latencia http://IP-traefik:8000/bench Bežím 1m test @ http://IP-traefik:8000/bench 20 závitov a 1000 pripojení Štatistiky vlákna Priemerný stdev Max +/- Stdev Latencia 91,72ms 150,43ms 2,00s 90,50% Req/Sec 1,43k 266,37 2,97k 69,77 % Distribúcia latencie 50% 19,74ms 75 % 121,98 ms 90 % 237,39 ms 99 % 687,49 ms 1705073 požiadavky na 1,00m, čítanie 188,63MB Chyby socketu: connect 0, read 0, write 0, timeout 7 Požiadavky/sek: 28392.44 Prenos/sekunda: 3,14MB
záver Rýchlosť Traefiku je zjavne pomalšia ako u Nginx, ale rozdiel nie je veľký: Traefik spracováva 28 392 požiadaviek za sekundu, zatiaľ čo Nginx spracováva 33 591 požiadaviek za sekundu s výkonnostným pomerom 85 %. Pre mladý projekt je to celkom dobrý :)!
Niektoré oblasti na zlepšenie:
Používajte GO_REUSEPORT monitory
Každé jadro CPU beží na samostatnej serverovej inštancii GOMAXPROCS=1 (benchmarky ukazujú, že Traefik má oveľa viac prepínania kontextu než nginx).
Originál:Prihlásenie na hypertextový odkaz je viditeľné. |