Sobes.tech
Junior — Middle

¿Cómo se realiza la distribución de carga entre los servidores o componentes del sistema?

sobes.tech AI

Respuesta de la IA

El balanceo de carga (load balancing) es el proceso de distribuir de manera uniforme las solicitudes o tareas entrantes entre varios servidores o componentes del sistema para mejorar el rendimiento y la tolerancia a fallos.

Formas principales de implementación:

  • Round Robin — las solicitudes se envían secuencialmente en círculo a cada servidor.
  • Least Connections — la solicitud se dirige al servidor con la menor cantidad de conexiones activas.
  • IP Hash — selección del servidor basada en un hash de la IP del cliente, lo que garantiza una sesión con un solo servidor.

En Go, se puede implementar un balanceador simple, por ejemplo, usando un proxy inverso HTTP con selección 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)
    // Redirige la solicitud a target
    http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}

En sistemas reales, se utilizan balanceadores especializados (nginx, HAProxy) o soluciones en la nube.