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.