Apa itu Traefik?
Traefik adalah proxy balik dan load balancer modern tujuh lapis, yang berpusat pada konsep inti — Service Discovery First.
Perbedaan terbesar dari reverse proxy tradisional (seperti Nginx) adalah Anda tidak perlu menulis banyak file konfigurasi secara manual; Traefik secara proaktif "mengamati" lingkungan runtime Anda dan secara otomatis menghasilkan aturan routing.
Karena fitur "layanan sebagai konfigurasi", Traefik sangat cocok untuk skenario berikut:
- Docker / Docker Compose
- Kubernetes(Ingress Controller)
- Arsitektur Microservices
- Layanan online untuk tim kecil atau pengembang independen
Singkatnya, jika layanan Anda "dinamis," Traefik jauh lebih mudah dibandingkan agen reverse tradisional.
Tolok Ukur
disposisi
Saya ingin mengucapkan terima kasih kepada exoscale.ch Vincent Bernat, yang dengan murah hati menyediakan infrastruktur yang dibutuhkan untuk benchmarking.
Saya mengujinya menggunakan 4 mesin virtual, dikonfigurasi sebagai berikut:
32 GB memori 8 inti CPU 10GB solid-state drive Ubuntu 14.04 LTS 64-bit
Mengatur
Mesin virtual digunakan untuk meluncurkan alat benchmarking wrk Mesin virtual untuk Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Siapa yang mengonfigurasi dua mesin virtual untuk dua server backend di Go? Setiap mesin virtual telah disetel menggunakan pembatasan berikut:
Nginx
Berikut adalah metode penggunaan untuk file konfigurasi Nginx /etc/nginx/nginx.conf:
Berikut adalah file konfigurasi hosting virtual Nginx yang digunakan:
Traefik
Berikut adalah file yang digunakan untuk traefik.toml:
hasil WHOAMI:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latensi http://IP-whoami:80/bench Menjalankan uji 1m @ http://IP-whoami:80/bench 20 ulir dan 1000 koneksi Statistik Thread Rata-rata Stdev Max +/- Stdev Latensi 70,28ms 134,72ms 1,91s 89,94% Req/Sec 2,92k 742,42 8,78k 68,80% Distribusi Latensi 50% 10,63ms 75% 75,64ms 90% 205,65ms 99% 668,28ms 3476705 permintaan dalam 1,00m, 384,61MB dibaca Kesalahan soket: sambungkan 0, baca 0, tulis 0, timeout 103 Permintaan/detik: 57894.35 Transfer/detik: 6,40MB nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latensi http://IP-nginx:8001/bench Menjalankan uji 1m @ http://IP-nginx:8001/bench 20 ulir dan 1000 koneksi Statistik Thread Rata-rata Stdev Max +/- Stdev Latensi 101,25ms 180,09ms 1,99s 89,34% Req/Sec 1,69k 567,69 9,39k 72,62% Distribusi Latensi 50% 15,46ms 75% 129,11ms 90% 302,44ms 99% 846,59ms 2018427 permintaan dalam 1,00m, 298,36MB dibaca Kesalahan soket: sambungkan 0, baca 0, tulis 0, timeout 90 Permintaan/detik: 33591.67 Transfer/detik: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latensi http://IP-traefik:8000/bench Menjalankan uji 1m @ http://IP-traefik:8000/bench 20 ulir dan 1000 koneksi Statistik Thread Rata-rata Stdev Max +/- Stdev Latensi 91,72ms 150,43ms 2,00s 90,50% Req/Sec 1,43k 266,37 2,97k 69,77% Distribusi Latensi 50% 19,74ms 75% 121,98ms 90% 237,39ms 99% 687,49ms 1705073 permintaan dalam 1,00m, 188,63MB dibaca Kesalahan soket: sambungkan 0, baca 0, tulis 0, timeout 7 Permintaan/detik: 28392,44 Transfer/detik: 3,14MB
kesimpulan Kecepatan Traefik jelas lebih lambat daripada Nginx, tapi jaraknya tidak besar: Traefik menangani 28.392 permintaan per detik, sementara Nginx menangani 33.591 permintaan per detik, dengan rasio performa 85%. Untuk proyek muda, itu cukup baik :)!
Beberapa area yang perlu diperbaiki:
Gunakan monitor GO_REUSEPORT
Setiap inti CPU menjalankan instance server terpisah GOMAXPROCS=1 (benchmark menunjukkan Traefik memiliki lebih banyak perpindahan konteks dibandingkan nginx).
Asli:Login hyperlink terlihat. |