Какво е Traefik?
Traefik е модерен седемслоен обратен прокси и балансьор на натоварването, съсредоточен около основна концепция — Service Discovery First.
Най-голямата разлика от традиционните обратни проксита (като Nginx) е, че не е нужно ръчно да пишете голям брой конфигурационни файлове; Traefik проактивно "наблюдава" вашата runtime среда и автоматично генерира правила за маршрутизиране.
Поради функцията "услуга като конфигурация", Traefik е особено подходящ за следните ситуации:
- Docker / Docker Композиция
- Kubernetes (Входящ контролер)
- Архитектура на микроуслуги
- Онлайн услуги за малки екипи или независими разработчици
Просто казано, ако услугата ви е "динамична", Traefik е много по-лесна от традиционните обратни агенти.
Бенчмарк
разоложение
Искам да благодаря exoscale.ch Винсент Бернат, който щедро предостави инфраструктурата, необходима за бенчмаркинг.
Тествах го с 4 виртуални машини, конфигурирани по следния начин:
32 GB памет 8 процесорни ядра 10GB твърдотелен диск Ubuntu 14.04 LTS 64-битов
Слагам
Виртуална машина се използва за стартиране на бенчмаркинг инструмента wrk Виртуална машина за Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Кой конфигурира две виртуални машини за два бекенд сървъра в Go? Всяка виртуална машина е настроена с помощта на следните ограничения:
Nginx
По-долу е описан методът на използване на конфигурационния файл на Nginx /etc/nginx/nginx.conf:
По-долу са използваните конфигурационни файлове за виртуален хостинг на Nginx:
Traefik
Следват файловете, използвани за traefik.toml:
Резултат Уауми:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --латентност http://IP-whoami:80/bench Провеждане на 1м тест @ http://IP-whoami:80/bench 20 резби и 1000 връзки Статистика на темите: средно Stdev Max +/- Stdev латентност 70.28ms 134.72ms 1.91s 89.94% Изискване/сек 2.92k 742.42 8.78k 68.80% Разпределение на латентността 50% 10.63ms 75% 75.64ms 90% 205.65ms 99% 668.28ms 3476705 заявки в 1.00m, 384.61MB четене Грешки в сокета: connect 0, read 0, write 0, timeout 103 Заявки/сек: 57894.35 Трансфер/секунда: 6.40MB nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --латентност http://IP-nginx:8001/bench Бягам 1м тест @ http://IP-nginx:8001/bench 20 резби и 1000 връзки Статистика на темите: средно Stdev Max +/- Stdev латентност 101.25ms 180.09ms 1.99s 89.34% Изискване/секунда 1.69k 567.69 9.39k 72.62% Разпределение на латентността 50% 15.46ms 75% 129.11ms 90% 302.44ms 99% 846.59ms 2018427 заявки в 1.00m, 298.36MB четене Грешки в сокета: свързване 0, четене 0, записване 0, тайм-аут 90 Заявки/секунда: 33591.67 Трансфер/секунда: 4.97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --латентност http://IP-traefik:8000/bench Провеждам тест за 1 минута @ http://IP-traefik:8000/bench 20 резби и 1000 връзки Статистика на темите: средно Stdev Max +/- Stdev латентност 91.72ms 150.43ms 2.00s 90.50% Изискване/сек 1.43k 266.37 2.97k 69.77% Разпределение на латентността 50% 19.74ms 75% 121.98ms 90% 237.39ms 99% 687.49ms 1705073 заявки в 1.00m, 188.63MB четене Грешки в сокета: connect 0, read 0, write 0, timeout 7 Заявки/сек: 28392.44 Трансфер/секунда: 3.14MB
извод Скоростта на Traefik е очевидно по-бавна от тази на Nginx, но разликата не е голяма: Traefik обработва 28 392 заявки в секунда, докато Nginx обработва 33 591 заявки в секунда с коефициент на производителност от 85%. За млад проект това е доста добър :)!
Някои области за подобрение:
Използвайте GO_REUSEPORT монитори
Всяко ядро на процесора работи с отделна сървърна инстанция GOMAXPROCS=1 (тестове показват, че Traefik има много повече контекстно превключване от nginx).
Оригинален:Входът към хиперлинк е видим. |