Junior — Middle
Jak je realizováno rozdělení zátěže mezi servery nebo komponenty systému?
sobes.tech AI
Odpověď od AI
Vyvažování zátěže (load balancing) je proces rovnoměrného rozdělení příchozích požadavků nebo úkolů mezi více serverů nebo komponent systému za účelem zvýšení výkonu a odolnosti vůči chybám.
Hlavní způsoby implementace:
- Round Robin — požadavky jsou postupně směrovány v kruhu na každý server.
- Least Connections — požadavek je směrován na server s nejmenším počtem aktivních spojení.
- IP Hash — výběr serveru na základě hashe IP adresy klienta, což zajišťuje relaci s jedním serverem.
V Go lze implementovat jednoduchý load balancer, například pomocí HTTP reverzního proxy s výběrem serveru podle 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)
// Přesměrování požadavku na target
http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}
V reálných systémech se používají specializované load balancery (nginx, HAProxy) nebo cloudová řešení.