Mi az a load balancing?

2023-06-08
A terheléseloszlás technológiája ma már gyakran használatos. Egy hétköznapi hasonlattal érzékeltetve mutatjuk, hogy mi is ez és hogyan működik.

Írásainkat olyan, az informatika iránt érdeklődőknek szánjuk, akik egyelőre még szinte semmit vagy csak nagyon keveset tudnak az IT, weboldal készítés, internet, hálózatok, programozás, stb. világáról. Emiatt írásunk korántsem ad teljes képet a témáról. Az általunk használt kifejezések és magyarázatok a nem szakmabelieknek szólnak. Cserébe közérthetően szeretnénk bemutatni az informatika különböző területeit és fogalmait.

***

Biztosan találkoztál már azzal a helyzettel, amikor egy weboldal hirtelen lelassul, vagy rosszabb esetben teljesen elérhetetlenné válik. Talán egy online jegyvásárlásnál vagy egy Black Friday akció idején tapasztaltad ez. Ilyenkor valószínűleg az történt, hogy a weboldal szervere túlterhelt lett a rengeteg felhasználói kérés, vagyis az egyszerre történő sok lekérdezés miatt. Létezik azonban olyan technológia, mely képes ezt kiküszöbölni, neve terheléselosztás (angolul “load balancing”).

De mi is ez pontosan, és hogyan működik? Vegyük szemügyre ezt a technológiát, amely az internet stabil és gyors működésének egyik kulcsa.


Mit takar a fogalom?

A load balancing az a technológia, amelyet széles körben alkalmaznak a hálózati szolgáltatások, mint például a webkiszolgálók teljesítményének optimalizálására. Célja, hogy a beérkező hálózati kérések terhelését egyenletesen ossza el több szerver között, hogy egyetlen szerver se legyen túlterhelt. Ezzel a módszerrel növelhető a rendszer teljesítménye és megbízhatósága.

A terheléselosztás többféleképpen is megvalósítható. A legegyszerűbb módszer az úgynevezett "round-robin", ahol a kérések egymás után sorban kerülnek továbbításra a rendelkezésre álló szerverek felé. Léteznek azonban összetettebb módszerek is, mint például a súlyozott terheléselosztás, ahol a szerverek kapacitását és jelenlegi terheltségét is figyelembe veszi a rendszer a kérések továbbításakor.

A terheléselosztás nagyon fontos a nagy forgalmú weboldalak, alkalmazások esetében, mert segít megelőzni a szolgáltatásmegszakításokat és növeli a rendszer összteljesítményét.


Próbáljuk meg egy egyszerű, hétköznapi példán keresztül megérteni a terheléselosztást!

Képzeld el, hogy van egy nagy éttermed, és rengeteg vendég akar egyszerre rendelni. Ha csak egy pincér van, akkor hamarosan túlterheltté válik, és a vendégeknek hosszú ideig kell várniuk az ételekre. Ez nem jó a vendégeknek, és nem jó az étteremnek sem.

A terheléselosztás is kicsit hasonlóan működik, mint a pincérek munkája egy étteremben. Ha az étteremben több pincér van, akkor a vendégek rendeléseit több pincér között lehet elosztani. Így minden vendég gyorsabban kapja meg az ételét, a pincérek pedig kevésbé lesznek túlterheltek.

Rajz pincérekkel és asztalnál ülő vendégekkel lila háttérszínnel


A terheléselosztás a számítógépes rendszerekben ugyanezt a logikát követi:

  1. Beérkeznek a kérések. Az étteremben a vendégek rendelése felel meg a hálózati kéréseknek. Amikor tehát egy felhasználó rákattint egy linkre vagy frissíti a weboldalt, az egy "rendelést" küld a szervernek.
  2. A terheléselosztó elosztja a kéréseket. A terheléselosztó olyan, mint az étteremben a főpincér, aki eldönti, hogy melyik pincér viszi ki melyik rendelést. A terheléselosztó feladata, hogy a beérkező kéréseket elossza a rendelkezésre álló szerverek között, hogy egyik se legyen túlterhelt.
  3. A szerverek válaszolnak a kérésekre. A szerverek olyanok, mint az étterem pincérei, akik kiviszik az ételeket a vendégeknek. Minél több pincér (szerver) áll rendelkezésre, annál gyorsabban tudnak kiszolgálni minden vendéget (válaszolni minden kérésre).

A terheléselosztás azért tud költséghatékonyan működni, mert felhő szolgáltatások esetén nem szükséges, hogy a használatban éppen nem lévő szerverek készenlétben legyenek. Csak akkor kapcsolódnak be plusz szerverek a munkába, ha valóban szükség van rájuk.


A round-robin terheléselosztás

A round-robin módszer a terheléselosztás egyik leggyakrabban használt technikája, amely különösen egyszerű és hatékony olyan esetekben, ahol a szerverek hasonló teljesítményűek és a kérések kezelése körülbelül azonos időt vesz igénybe.

A round-robin terheléselosztás lényege, hogy a beérkező kéréseket sorban, ciklikusan osztja el a szerverek között. Például ha van négy szerverünk (A, B, C és D), és beérkezik öt kérés, a round-robin algoritmus a következőképpen osztja el a kéréseket:

  1. kérés -> A szerver
  2. kérés -> B szerver
  3. kérés -> C szerver
  4. kérés -> D szerver
  5. kérés -> A szerver

Tehát minden szerver sorban kap egy-egy kérést, majd amikor az utolsó szerveren is volt már kérés, az algoritmus újraindul, és az első szerverhez irányítja a következő kérést.

Ez a módszer nagyon egyszerű és könnyen implementálható, de nem veszi figyelembe, hogy a szerverek különböző terheltséggel bírhatnak, vagy hogy a különböző kérések eltérő erőforrásigényűek lehetnek. Ezért bonyolultabb környezetekben, ahol a szerverek teljesítménye vagy a kérések időigénye jelentősen eltérhet, előfordulhat, hogy más, összetettebb terheléselosztási algoritmusok (mint például a súlyozott terheléselosztás vagy a legkevésbé terhelt szerverre irányítás) hatékonyabbak lehetnek.

***

A fenti leírással egy kis betekintést adtunk a szerverek világába.

Ha érdekel a téma, nézz szét IT képzéseink között:

Webfejlesztő →
Webszerkesztés alapjai →
Junior frontend fejlesztő →
Junior Java backend fejlesztő →
Junior szoftvertesztelő →
Junior rendszerüzemeltető →