Sobes.tech
Junior — Middle

Como é que a distribuição de carga entre os servidores ou componentes do sistema é implementada?

sobes.tech IA

Resposta da IA

O balanceamento de carga (load balancing) é o processo de distribuir de forma uniforme as solicitações ou tarefas de entrada entre vários servidores ou componentes do sistema para melhorar o desempenho e a tolerância a falhas.

Principais formas de implementação:

  • Round Robin — as solicitações são enviadas sequencialmente em círculo para cada servidor.
  • Least Connections — a solicitação é direcionada para o servidor com o menor número de conexões ativas.
  • IP Hash — seleção do servidor com base em um hash do IP do cliente, garantindo uma sessão com um único servidor.

Em Go, é possível implementar um balanceador simples, por exemplo, usando um proxy reverso HTTP com seleção de servidor por Round Robin:

var servers = []string{"http://server1", "http://server2"}
var current int

func loadBalancer(w http.ResponseWriter, r *http.Request) {
    target := servers[current]
    current = (current + 1) % len(servers)
    // Redireciona a requisição para target
    http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}

Em sistemas reais, utilizam-se balanceadores especializados (nginx, HAProxy) ou soluções em nuvem.