O que é Traefik?
Traefik é um proxy reverso e balanceador de carga moderno de sete camadas, centrado em um conceito central — Descoberta de Serviços Primeiro.
A maior diferença em relação aos proxies reversos tradicionais (como o Nginx) é que você não precisa escrever manualmente um grande número de arquivos de configuração; o Traefik "observa" proativamente seu ambiente de execução e gera automaticamente regras de roteamento.
Por causa do recurso de "serviço como configuração", o Traefik é especialmente adequado para estes cenários:
- Docker / Docker Compose
- Kubernetes (Controlador de Entrada)
- Arquitetura de microserviços
- Serviços online para pequenas equipes ou desenvolvedores independentes
Simplificando, se seu serviço for "dinâmico", Traefik é muito menos prático do que agentes reversos tradicionais.
Referência
disposição
Quero agradecer exoscale.ch VincentBernat, que generosamente forneceu a infraestrutura necessária para benchmarking.
Testei usando 4 máquinas virtuais, configuradas da seguinte forma:
32 GB de memória 8 núcleos de CPU Unidade de estado sólido de 10GB Ubuntu 14.04 LTS 64-bit
Preparar
Uma máquina virtual é usada para lançar a ferramenta de benchmarking wrk Uma máquina virtual para Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Quem está configurando duas máquinas virtuais para dois servidores backend no Go? Cada máquina virtual foi ajustada usando as seguintes restrições:
Nginx
Abaixo está o método de uso para o arquivo de configuração Nginx /etc/nginx/nginx.conf:
Abaixo estão os arquivos de configuração de hospedagem virtual Nginx utilizados:
Traefik
A seguir estão os arquivos usados para traefik.toml:
resultado Uau:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latência http://IP-whoami:80/bench Fazendo teste de 1m @ http://IP-whoami:80/bench 20 roscas e 1000 conexões Estatísticas médias de desenvolvimento máxima: nível de desenvolvimento máximo +/- Latência 70,28ms 134,72ms 1,91s 89,94% Requisito/Seg 2,92k 742,42 8,78k 68,80% Distribuição de Latência 50% 10,63ms 75% 75,64ms 90% 205,65ms 99% 668,28ms 3476705 solicitações em 1,00 milh, 384,61 MB de leitura Erros de soquete: conectar 0, ler 0, escrever 0, timeout 103 Pedidos/sec: 57894,35 Transferência/segundo: 6,40MB Nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latência http://IP-nginx:8001/bench Fazendo teste de 1m @ http://IP-nginx:8001/bench 20 roscas e 1000 conexões Estatísticas médias de desenvolvimento máxima: nível de desenvolvimento máximo +/- Latência 101,25ms 180,09ms 1,99s 89,34% Requisito/Sec 1,69k 567,69 9,39k 72,62% Distribuição de Latência 50% 15,46ms 75% 129,11ms 90% 302,44ms 99% 846,59ms 2018427 requisições em 1,00 milhões, 298,36 MB de leitura Erros de socket: conectar 0, ler 0, escrever 0, timeout 90 Pedidos/sec: 33591,67 Transferência/segundo: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latência http://IP-traefik:8000/bench Rodando teste de 1m @ http://IP-traefik:8000/bench 20 roscas e 1000 conexões Estatísticas médias de desenvolvimento máxima: nível de desenvolvimento máximo +/- Latência 91,72ms 150,43ms 2,00s 90,50% Requisito/Sec 1,43k 266,37 2,97k 69,77% Distribuição de Latência 50% 19,74ms 75% 121,98ms 90% 237,39ms 99% 687,49ms 1705073 solicitações em 1,00 milhões, 188,63 MB de leitura Erros de soquete: conectar 0, leitura 0, gravação 0, timeout 7 Pedidos/seg: 28392,44 Transferência/segundo: 3,14MB
conclusão A velocidade do Traefik é claramente mais lenta que a do Nginx, mas a diferença não é grande: o Traefik lida com 28.392 solicitações por segundo, enquanto a Nginx lida com 33.591 solicitações por segundo, com uma relação de desempenho de 85%. Para um projeto jovem, isso é um ótimo :)!
Algumas áreas para melhorias:
Use GO_REUSEPORT monitores
Cada núcleo de CPU roda uma instância de servidor separada GOMAXPROCS=1 (benchmarks mostram que Traefik tem muito mais troca de contexto do que nginx).
Original:O login do hiperlink está visível. |