Что такое Traefik?
Traefik — это современный семиуровневый обратный прокси и балансировщик нагрузки, основанный на основной концепции — Service Discovery First.
Главное отличие от традиционных обратных прокси (таких как Nginx) в том, что не нужно вручную писать большое количество конфигурационных файлов; Traefik проактивно «наблюдает» вашу среду выполнения и автоматически генерирует правила маршрутизации.
Благодаря функции «сервис как конфигурация» Traefik особенно подходит для таких сценариев:
- Docker / Docker Сочинять
- Kubernetes (Входящий контроллер)
- Архитектура микросервисов
- Онлайн-сервисы для небольших команд или независимых разработчиков
Проще говоря, если ваш сервис «динамичен», Traefik гораздо менее заботный, чем традиционные обратные агенты.
Бенчмарк
расположение
Хочу поблагодарить exoscale.ch Винсента Берната, который щедро предоставил инфраструктуру, необходимую для бенчмаркинга.
Я протестировал это на 4 виртуальных машинах, настроенных следующим образом:
32 ГБ памяти 8 ядер процессора 10 ГБ твердотельный диск 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,28мс 134,72 мс 1,91 с 89,94% Требование/сек 2.92k 742.42 8.78k 68.80% Распределение задержки 50% 10,63 мс 75% 75,64 мс 90% 205,65 мс 99% 668,28мс 3476705 запросы в 1,00 м, 384,61 МБ чтения Ошибки сокета: подключить 0, прочитать 0, записать 0, тайм-аут 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,25 мс 180,09 мс 1,99 с 89,34% Требование/сек 1.69k 567.69 9.39k 72.62% Распределение задержки 50% 15,46 мс 75% 129,11 мс 90% 302,44 мс 99% 846,59 мс 2018427 запросы в 1,00 м, 298,36 МБ чтения Ошибки сокетов: подключить 0, прочитать 0, записать 0, тайм-аут 90 Запросы/сек: 33591.67 Передача/сек: 4.97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latency http://IP-traefik:8000/bench Бегу тест на 1м @ http://IP-traefik:8000/bench 20 резьб и 1000 соединений Статистика тем: средний Stdev Max +/- Stdev Задержка 91,72 мс 150,43 мс 2,00 с 90,50% Требование/сек 1.43k 266.37 2.97k 69.77% Распределение задержки 50% 19,74 мс 75% 121,98 мс 90% 237,39 мс 99% 687,49мс 1705073 запросы в 1,00 м, 188,63 МБ чтения Ошибки сокета: 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).
Исходный текст:Вход по гиперссылке виден. |