Що таке 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 /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% Вимога/Sec 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% Вимога/Sec 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" --латентність http://IP-traefik:8000/bench Пробіг тест на 1м @ http://IP-traefik:8000/bench 20 потоків і 1000 з'єднань Статистика теми Середній Stdev Max +/- Stdev Затримка 91,72мс 150,43мс 2,00 с 90,50% Вимога/Sec 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).
Оригінальний:Вхід за гіперпосиланням видно. |