Traefik nedir?
Traefik, temel bir kavram olan Service Discovery First etrafında şekillenen modern yedi katmanlı bir ters proxy ve yük dengeleyicisidir.
Geleneksel ters proxy'lerden (örneğin Nginx) en büyük fark, çok sayıda yapılandırma dosyası yazmanıza gerek olmaması; Traefik proaktif olarak çalışma zamanı ortamınızı "gözlemler" ve otomatik olarak yönlendirme kuralları oluşturur.
"Hizmet olarak yapılandırma" özelliği nedeniyle, Traefik özellikle şu senaryolar için uygundur:
- Docker / Docker Compose
- Kubernetes (Giriş Kontrolcüsü)
- Mikroservis mimarisi
- Küçük ekipler veya bağımsız geliştiriciler için çevrimiçi hizmetler
Basitçe söylemek gerekirse, hizmetiniz "dinamik" ise, Traefik geleneksel ters ajanlara göre çok daha az sorunsuzdur.
Kıyaslama
eğilim
Kıyaslama için gerekli altyapıyı cömertçe sağlayan exoscale.ch VincentBernat'a teşekkür etmek istiyorum.
Aşağıdaki şekilde yapılandırılmış 4 sanal makineyle test ettim:
32 GB bellek 8 CPU çekirdeği 10GB solid-state sürücü Ubuntu 14.04 LTS 64-bit
Hazırlamak
Bir sanal makine, benchmarking aracı wrk'ı başlatmak için kullanılır Traefik (v1.0.0-beta.416) / nginx (v1.4.6) için bir sanal makine Go'da iki arka uç sunucu için iki sanal makineyi kim yapılandırıyor? Her sanal makine aşağıdaki kısıtlamalarla ayarlanmıştır:
Nginx
Aşağıda Nginx yapılandırma dosyası /etc/nginx/nginx.conf için kullanım yöntemi yer almaktadır:
Aşağıda kullanılan Nginx sanal barındırma yapılandırma dosyaları yer almaktadır:
Traefik
Traefik.toml için kullanılan dosyalar şunlardır:
sonuç Vay canına:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latency http://IP-whoami:80/bench 1 dakikalık test @ http://IP-whoami:80/bench 20 iş parçacık ve 1000 bağlantı Thread İstatistikleri Ortalama Stdev Max +/- Stdev Gecikme 70.28ms 134.72ms 1.91s 89.94% Req/Sec 2.92k 742.42 8.78k 68.80% Gecikme Dağılımı %50 10.63ms %75 75.64ms %90 205.65ms %99 668.28ms 1.00m 3476705 istek, 384.61MB okuma Soket hataları: 0'a bağ, 0'ı okuma, 0 yazma, zaman aşımı 103 İstek/saniye: 57894.35 Transfer/sn: 6.40MB nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latency http://IP-nginx:8001/bench 1 milyon testi @ http://IP-nginx:8001/bench 20 iş parçacık ve 1000 bağlantı Thread İstatistikleri Ortalama Stdev Max +/- Stdev Gecikme 101.25ms 180.09ms 1.99s 89.34% Req/Sec 1.69k 567.69 9.39k 72.62% Gecikme Dağılımı %50 15.46ms %75 129.11ms %90 302.44ms %99 846.59ms 1.00m 2018427 istek, 298.36MB okuma Soket hataları: 0'ı bağla, 0'ı okuma, 0'ı yaz, zaman aşımı 90 İstek/sek: 33591.67 Transfer/sn: 4.97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latency http://IP-traefik:8000/bench 1 dakikalık test @ http://IP-traefik:8000/bench 20 iş parçacık ve 1000 bağlantı Thread İstatistikleri Ortalama Stdev Max +/- Stdev Gecikme 91.72ms 150.43ms 2.00s 90.50% Req/Sec 1.43k 266.37 2.97k 69.77% Gecikme Dağılımı %50 19.74ms %75 121.98ms %90 237.39ms %99 687.49ms 1.00m 1705073 istek, 188.63MB okuma Soket hataları: 0 bağla, 0 okuma, 0 yaz, zaman aşımı 7 İstek/sek: 28392.44 Transfer/sn: 3.14MB
son Traefik'in hızı Nginx'inkinden açıkça daha yavaş, ancak fark çok büyük değil: Traefik saniyede 28.392 isteği karşılarken, Nginx saniyede 33.591 isteği ele alıyor ve performans oranı %85'dir. Genç bir proje için bu oldukça iyi bir :)!
İyileştirme için bazı alanlar:
GO_REUSEPORT monitörleri kullanın
Her CPU çekirdeği ayrı bir sunucu örneği GOMAXPROCS=1 çalıştırıyor (benchmarklar Traefik'in nginx'ten çok daha fazla bağlam değiştirmeye sahip olduğunu gösteriyor).
Özgün:Bağlantı girişi görünür. |