Sobes.tech
Junior — Middle

Ako sa realizuje rozdelenie záťaže medzi servery alebo komponenty systému?

sobes.tech AI

Odpoveď od AI

Rozdeľovanie záťaže (load balancing) je proces rovnomerného rozdeľovania vstupných požiadaviek alebo úloh medzi viaceré servery alebo komponenty systému s cieľom zvýšiť výkon a odolnosť voči chybám.

Hlavné spôsoby implementácie:

  • Round Robin — požiadavky sú postupne smerované v kruhu na každý server.
  • Least Connections — požiadavka je smerovaná na server s najmenším počtom aktívnych spojení.
  • IP Hash — výber servera na základe hashu IP adresy klienta, čo zabezpečuje reláciu s jedným serverom.

V Go je možné implementovať jednoduchý load balancer, napríklad pomocou HTTP reverzného proxy s výberom servera podľa 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)
    // Presmerovanie požiadavky na target
    http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}

V reálnych systémoch sa používajú špecializované load balancery (nginx, HAProxy) alebo cloudové riešenia.