Sobes.tech
Junior — Middle

Ինչպե՞ս է իրականացվում բեռի բաշխումը համակարգի սերվերների կամ բաղադրիչների միջև։

sobes.tech AI

Պատասխան AI-ից

Բեռի հավասարակշռում (load balancing) — սա գործընթաց է, երբ մուտքային հարցումները կամ առաջադրանքները հավասարաչափ բաժանվում են համակարգի մի քանի սերվերների կամ բաղադրիչների միջև՝ բարելավելու համար արտադրողականությունը և խափանումների դիմադրողականությունը:

Հիմնական իրականացման եղանակներ՝

  • Round Robin — հարցումները հերթականությամբ ուղղվում են յուրաքանչյուր սերվերին շրջիկ ռեժիմով:
  • Least Connections — հարցումը ուղղվում է այն սերվերին, որի ակտիվ կապերի քանակը ամենափոքրն է:
  • IP Hash — սերվերի ընտրությունը հիմնված է հաճախորդի IP հասցեի հեշի վրա, ինչը ապահովում է սեսիա մեկ սերվերի հետ:

Go-ում կարելի է իրականացնել պարզ բեռի հավասարակշռիչ, օրինակ՝ HTTP հակադարձ պրոքսի միջոցով, ընտրելով սերվերը 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)
    // Հարցումը ուղղվում է նպատակակետին
    http.Redirect(w, r, target+r.RequestURI, http.StatusTemporaryRedirect)
}

Իրական համակարգերում օգտագործվում են մասնագիտացված բեռի հավասարակշռիչներ (nginx, HAProxy) կամ ամպային լուծումներ։