¿Qué es Traefik?
Traefik es un proxy inverso y balanceador de carga moderno de siete capas, centrado en un concepto central: Descubrimiento de Servicios Primero.
La mayor diferencia respecto a los proxies inversos tradicionales (como Nginx) es que no necesitas escribir manualmente un gran número de archivos de configuración; Traefik "observa" proactivamente tu entorno de ejecución y genera automáticamente reglas de enrutamiento.
Debido a la función de "servicio como configuración", Traefik es especialmente adecuado para estos escenarios:
- Docker / Docker Compose
- Kubernetes (controlador de ingresos)
- Arquitectura de microservicios
- Servicios online para equipos pequeños o desarrolladores independientes
En pocas palabras, si tu servicio es "dinámico", Traefik es mucho menos sencillo que los agentes inversos tradicionales.
Índice de referencia
disposición
Quiero dar las gracias a exoscale.ch VincentBernat, que generosamente proporcionó la infraestructura necesaria para el benchmarking.
Lo probé usando 4 máquinas virtuales, configuradas de la siguiente manera:
32 GB de memoria 8 núcleos de CPU Unidad de estado sólido de 10GB Ubuntu 14.04 LTS 64 bits
Construir
Se utiliza una máquina virtual para lanzar la herramienta de benchmarking wrk Una máquina virtual para Traefik (v1.0.0-beta.416) / nginx (v1.4.6) ¿Quién configura dos máquinas virtuales para dos servidores backend en Go? Cada máquina virtual ha sido ajustada siguiendo las siguientes restricciones:
Nginx
A continuación se muestra el método de uso para el archivo de configuración Nginx /etc/nginx/nginx.conf:
A continuación se muestran los archivos de configuración de alojamiento virtual de Nginx que se utilizan:
Traefik
Los siguientes son los archivos utilizados para traefik.toml:
resultado Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latencia http://IP-whoami:80/bench Ejecutando prueba de 1 minuto @ http://IP-whoami:80/bench 20 hilos y 1000 conexiones Estadísticas del hilo Estadística media Nivel de desarrollo máximo +/- Nivel de desarrollo Latencia 70,28ms 134,72ms 1,91s 89,94% Requisito/Sec 2,92k 742,42 8,78k 68,80% Distribución de latencias 50% 10,63 ms 75% 75,64 ms 90% 205,65 ms 99% 668,28ms 3476705 solicitudes en 1,00 millones, 384,61 MB de lectura Errores de socket: conectar 0, leer 0, escribir 0, timeout 103 Solicitudes/seg: 57894.35 Transferencia por segundo: 6,40MB Nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latencia http://IP-nginx:8001/bench Haciendo prueba de 1 metro @ http://IP-nginx:8001/bench 20 hilos y 1000 conexiones Estadísticas del hilo Estadística media Nivel de desarrollo máximo +/- Nivel de desarrollo Latencia 101,25ms 180,09ms 1,99s 89,34% Requisito/Sec 1,69k 567,69 9,39k 72,62% Distribución de latencias 50% 15,46 ms 75% 129,11 ms 90% 302,44ms 99% 846,59 ms 2018427 solicitudes en 1,00 millones, 298,36 MB de lectura Errores de socket: conexión 0, lectura 0, escritura 0, tiempo de espera 90 Solicitudes/sec: 33591.67 Transferencia/seg: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latencia http://IP-traefik:8000/bench Realizando una prueba de 1 minuto @ http://IP-traefik:8000/bench 20 hilos y 1000 conexiones Estadísticas del hilo Estadística media Nivel de desarrollo máximo +/- Nivel de desarrollo Latencia 91,72ms 150,43ms 2,00s 90,50% Requisito/Sec 1,43k 266,37 2,97k 69,77% Distribución de latencias 50% 19,74ms 75% 121,98ms 90% 237,39ms 99% 687,49ms 1705073 solicitudes en 1,00 m, 188,63 MB de lectura Errores de socket: conexión 0, lectura 0, escritura 0, tiempo de espera 7 Solicitudes/sec: 28392.44 Transferencia/seg: 3,14MB
conclusión La velocidad de Traefik es claramente más lenta que la de Nginx, pero la diferencia no es grande: Traefik gestiona 28.392 solicitudes por segundo, mientras que Nginx gestiona 33.591 solicitudes por segundo, con una relación de rendimiento del 85%. Para un proyecto joven, ¡eso es bastante bueno :)!
Algunas áreas a mejorar:
Usa GO_REUSEPORT monitores
Cada núcleo de CPU ejecuta una instancia de servidor separada GOMAXPROCS=1 (los benchmarks muestran que Traefik tiene mucho más cambio de contexto que nginx).
Texto original en:El inicio de sesión del hipervínculo es visible. |