Cos'è Traefik?
Traefik è un moderno proxy inverso a sette livelli e bilanciatore di peso, incentrato su un concetto fondamentale — Service Discovery First.
La differenza più grande rispetto ai proxy inversi tradizionali (come Nginx) è che non è necessario scrivere manualmente un gran numero di file di configurazione; Traefik "osserva" proattivamente il tuo ambiente di esecuzione e genera automaticamente regole di instradamento.
Grazie alla funzione "servizio come configurazione", Traefik è particolarmente adatto per questi scenari:
- Docker / Docker Compose
- Kubernetes (Controllore di ingresso)
- Architettura dei microservizi
- Servizi online per piccoli team o sviluppatori indipendenti
In parole povere, se il tuo servizio è "dinamico", Traefik è molto meno semplice rispetto agli agenti inversi tradizionali.
Benchmark
disposizione
Voglio ringraziare exoscale.ch VincentBernat, che ha generosamente fornito l'infrastruttura necessaria per il benchmarking.
L'ho testato usando 4 macchine virtuali, configurate come segue:
32 GB di memoria 8 core CPU Unità solid-state da 10GB Ubuntu 14.04 LTS 64-bit
Impostare
Una macchina virtuale viene utilizzata per avviare lo strumento di benchmarking wrk Una macchina virtuale per Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Chi configura due macchine virtuali per due server backend in Go? Ogni macchina virtuale è stata regolata seguendo le seguenti restrizioni:
Nginx
Di seguito è riportato il metodo di utilizzo per il file di configurazione Nginx /etc/nginx/nginx.conf:
Di seguito sono riportati i file di configurazione dell'hosting virtuale Nginx utilizzati:
Traefik
Di seguito sono riportati i file utilizzati per traefik.toml:
risultato whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latenza http://IP-whoami:80/bench Esecuzione di test da 1 metro @ http://IP-whoami:80/bench 20 filettature e 1000 connessioni Statistiche della discussione Statistiche Media Stdev Max +/- Stdev Latenza 70,28ms 134,72ms 1,91s 89,94% Rechiesta/Sec 2,92k 742,42 8,78k 68,80% Distribuzione della latenza 50% 10,63ms 75% 75,64ms 90% 205,65ms 99% 668,28ms 3476705 richieste in 1,00 milioni, 384,61 MB di lettura Errori di socket: connessione 0, lettura 0, scrittura 0, timeout 103 Richieste/sec: 57894.35 Trasferimento/sec: 6,40MB Nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latency http://IP-nginx:8001/bench Sto facendo un test da 1 metro @ http://IP-nginx:8001/bench 20 filettature e 1000 connessioni Statistiche della discussione Statistiche Media Stdev Max +/- Stdev Latenza 101,25ms 180,09ms 1,99s 89,34% Rechiesta/Sec 1,69k 567,69 9,39k 72,62% Distribuzione della latenza 50% 15,46ms 75% 129,11ms 90% 302,44ms 99% 846,59ms 2018427 richieste in 1,00 milioni, 298,36 MB di lettura Errori di socket: connessione 0, lettura 0, scrittura 0, timeout 90 Richieste/sec: 33591.67 Trasferimento/secondo: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latency http://IP-traefik:8000/bench Esecuzione di test da 1 metro @ http://IP-traefik:8000/bench 20 filettature e 1000 connessioni Statistiche della discussione Statistiche Media Stdev Max +/- Stdev Latenza 91,72ms 150,43ms 2,00s 90,50% Requisiti/Sec 1,43k 266,37 2,97k 69,77% Distribuzione della latenza 50% 19,74ms 75% 121,98ms 90% 237,39ms 99% 687,49ms 1705073 richieste in 1,00 milioni, 188,63 MB di lettura Errori di socket: connessione 0, lettura 0, scrittura 0, timeout 7 Richieste/sec: 28392,44 Trasferimento/secondo: 3,14MB
conclusione La velocità di Traefik è chiaramente più lenta di quella di Nginx, ma il divario non è enorme: Traefik gestisce 28.392 richieste al secondo, mentre Nginx gestisce 33.591 richieste al secondo, con un rapporto di prestazioni dell'85%. Per un progetto giovane, è un buon :)!
Alcune aree da migliorare:
Usa GO_REUSEPORT monitor
Ogni core CPU esegue un'istanza server separata GOMAXPROCS=1 (i benchmark mostrano che Traefik ha molto più contesto switching rispetto a nginx).
Originale:Il login del link ipertestuale è visibile. |