Junior — Middle
Hoe wordt de load balancing tussen servers of systeemonderdelen geïmplementeerd?
sobes.tech AI
Antwoord van AI
Load balancing (belastingverdeling) is het proces waarbij inkomende verzoeken of taken gelijkmatig worden verdeeld over meerdere servers of systeemcomponenten om de prestaties en fouttolerantie te verbeteren.
Belangrijkste implementatiemethoden:
- Round Robin — verzoeken worden achtereenvolgens in een cirkel naar elke server gestuurd.
- Least Connections — het verzoek wordt gestuurd naar de server met het minste aantal actieve verbindingen.
- IP Hash — selectie van de server op basis van een hash van het IP-adres van de client, wat een sessie met één server garandeert.
In Go kan een eenvoudige load balancer worden geïmplementeerd, bijvoorbeeld met een HTTP reverse proxy die de server selecteert via 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)
// Verzoek doorsturen naar target
http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}
In echte systemen worden gespecialiseerde load balancers (nginx, HAProxy) of cloudoplossingen gebruikt.