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.