Pular para o conteúdo

Arquitetura de software · Escala e desempenho · 5 min de leitura

Balanceador de carga

Distribui as requisições entre vários servidores para aguentar mais tráfego e continuar no ar quando um deles cai.

Clientes → BalanceadorBalanceador → Servidor 1Balanceador → Servidor 2Balanceador → Servidor 3: sem tráfegosem tráfegoServidor 1 → BancoServidor 2 → BancoClientesClientesBalanceador — L4 / L7BalanceadorL4 / L7Servidor 1Servidor 1Servidor 2Servidor 2Servidor 3 — fora: health checkServidor 3fora: health checkBancoBanco

Arraste para o lado para ver o diagrama inteiro.

O balanceador testa a saúde de cada servidor e deixa de mandar tráfego para quem não responde.

O que faz

Recebe todas as requisições e escolhe um servidor para cada uma. Assim dá para crescer horizontalmente (mais máquinas) e fazer deploy sem derrubar o serviço.

Algoritmos comuns

  • Round robin: um de cada vez, em ordem.
  • Menos conexões: o servidor mais livre recebe a próxima.
  • Hash do IP ou da chave: o mesmo cliente cai sempre no mesmo servidor (afinidade de sessão).
  • Pesos: servidores maiores recebem mais.

L4 x L7

Na camada 4 (TCP/UDP) ele só repassa conexões — rápido e simples. Na camada 7 (HTTP) entende a requisição e pode rotear por caminho, cabeçalho ou cookie, terminar o TLS e aplicar regras.

Em resumo

Referências

Continue aprendendo

Todos os temas de arquitetura de software →