Sobes.tech
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.