trilha

System Design/02 - Componentes/Load Balancers2 min

Layer 4 Load Balancing

Perguntas-guia
  • Que problema isso resolve?
  • Quando usar / quando NÃO usar?
  • Qual o principal trade-off?
  • Como isso falha em produção?

Conceito

Balanceamento na camada de transporte (TCP/UDP). O balanceador decide olhando apenas IP e porta — ele não abre o pacote nem entende o protocolo de aplicação.

cliente → [ L4 ] → escolhe backend por IP:porta
                   encaminha os bytes, sem interpretar

Duas formas de operar

Modo Como funciona
NAT / proxy Reescreve o destino; a resposta volta pelo balanceador
DSR (Direct Server Return) A resposta vai direto ao cliente, sem passar de volta

DSR é o que permite throughput altíssimo: o balanceador só toca o tráfego de entrada, que costuma ser uma fração do de saída.

Trade-offs

Ganha Perde
Latência mínima (~microssegundos) Não roteia por path, host ou header
Throughput altíssimo Sem terminação TLS
Funciona com qualquer protocolo TCP/UDP Sem cache, sem compressão, sem WAF
Preserva a conexão fim a fim Health check limitado (porta aberta ≠ app saudável)
Menor custo de CPU Não faz retry de requisição

O ponto mais importante é o health check: em L4, "a porta 8080 aceita conexão" é tudo que o balanceador sabe. Um processo travado com socket aberto continua recebendo tráfego. Em Layer 7 Load Balancing, o check pede /health e vê a resposta.

O segundo é a granularidade: L4 balanceia conexões, não requisições. Com HTTP/2 ou conexões persistentes, um cliente que abre uma conexão e envia mil requisições fica preso a um backend — e a carga pode ficar bem desigual.

Em compensação, L4 é o único caminho quando o protocolo não é HTTP: banco de dados, MQTT, RTMP, jogos sobre UDP.

Exemplo prático

Um serviço de jogo com milhões de pacotes UDP por segundo. L7 está fora de questão — não existe "path" para rotear, e o custo de terminar cada conexão mataria a latência.

Um balanceador L4 com DSR encaminha os pacotes de entrada e deixa as respostas irem direto do servidor ao jogador. A latência adicionada fica em microssegundos.

O contraste: uma API REST atrás do mesmo L4 perderia roteamento por rota, terminação TLS centralizada e health check real — três coisas que, nesse caso, valem mais que os microssegundos economizados.

Relacionado


Parte de Load Balancers · roadmap.sh/system-design

Buscar

Busca por título, seção e texto das notas