Sobes.tech
Junior — Middle

Wie wird die Lastverteilung zwischen Servern oder Systemkomponenten umgesetzt?

sobes.tech KI

Antwort von AI

Lastverteilung (Load Balancing) ist der Prozess, bei dem eingehende Anfragen oder Aufgaben gleichmäßig auf mehrere Server oder Systemkomponenten verteilt werden, um die Leistung und Ausfallsicherheit zu erhöhen.

Hauptimplementierungsarten:

  • Round Robin — Anfragen werden nacheinander im Kreis an jeden Server gesendet.
  • Least Connections — die Anfrage wird an den Server mit den wenigsten aktiven Verbindungen gesendet.
  • IP Hash — Auswahl des Servers basierend auf einem Hash der IP-Adresse des Clients, was eine Sitzung mit einem einzigen Server gewährleistet.

In Go kann man einen einfachen Load Balancer implementieren, z.B. mit einem HTTP-Reverse-Proxy, der den Server nach dem Round Robin-Verfahren auswählt:

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)
    // Weiterleitung der Anfrage an target
    http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}

In echten Systemen werden spezialisierte Load Balancer (nginx, HAProxy) oder Cloud-Lösungen verwendet.