Ce reprezinta un ”load balancer”?
Acest articol face parte dintr-o serie, in care ne propunem sa explicam in termeni cat mai simpli, o parte din notiunile folosite in industria IT.
Pentru ca o mare parte din termenii folositi in industrie sunt in limba engleza si nu au neaparat o traducere exacta in limba romana. De aici si confuzia multora in ceea ce priveste semnificatia multora dintre acesti termeni.
Asadar, astazi vom vorbi despre “Load balancer”
Cand ne referim la termenul de “load balancing”, ce vrem sa spunem este procesul prin care se face distributia traficului pe care serverele aplicatiei noastre il primesc de la consumatorii ei.
De ce avem nevoie de load balancing ?
Pentru ca aplicatiile din zilele noastre sunt accesate concomitent de un numar foarte mare de utilizatori in acelasi timp. Acest lucru pune presiune pe serverele aplicatiei si poate cauza un timp de raspuns mai mic asupra actiunilor utilizatorilor finali, ceea ce inseamna o nemultumire a acestora legata de modul in care aplicatia raspunde la comenzi.
Sa luam exemplu Instagram, unde sute de mii sau milioane de oameni cer sa acceseze fotografii in acelasi timp.
Serverul trebuie sa fie capabil sa raspunda cu fotografia ceruta in cel mai scurt timp posibil.
Ca acest lucru sa se intample dezvoltatorii adauga din ce in ce mai multe servere care sa proceseze aceste requesturi cat mai repede.
Astfel avem nevoie de o modalitate de a distribui aceste request-uri, catre toate serverele aplicatiei, si aici apare nevoia de load balancing.
Un load balancer se intrepune intre utilizatorii finali si serverele aplicatiei cu scopul de a :
- Distribui requesturile venite din partea utilizatorilor pe mai multe servere
- Sa asigure disponibilitatea si accesibilitatea aplicatiei prin distributia cererilor doar catre serverle care le pot gestiona (nu au load mare, nu sunt offline, etc)
- Permite adaugarea si scoaterea de servere din ecosistemul aplicatiei in functie de cerinte
- Automat redirecteaza toate requesturile cand un server trece offline catre restul serverelor
Mai jos o sunt cativa algoritmi care se folosesc pentru load balancing:
Round robin : Acest tip de algoritm permite ca requesturile sa fie distribuite secvential catre fiecare server in parte.
Weighted Round Robin : Acest alogritm functioneaza la fel ca metoda round robin, doar ca in cazut acesta, fiecarui server I se atribuie o pondere, si serverul cu o pondere mai mare va primi mai mult trafic iar serverul cu o pondere mai mica ba primi un trafic mai mic.
Least connection : Acest algoritm ia in considerare incarcarea serverului, astfel, traficul va fi distribui pe baza numarului de sesiuni active. Serverul cu cele mai putine sesiuni active va fi favorizat in a primi traficul.
Weighted least connection: Acest algoritm este construit pe baza technicii de mai sus, doar ca in plus fiecarui server I se atribuie o pondere. Daca doua servere detin acelasi numar de sesiuni active, atunci se ia in considerare si ponderea, iar traficul va fi directionat catre serverul cu ponderea mai mare.
Least response : Acest algoritm ia in considerare atunci cand redirectioneaza traficul catre un server, care este serverul cu cel mai mic timp de raspuns si care are cele mai putine sesiuni active.
Acestia sunt doar cativa algoritmi care sunt folositi, in general difera in functie de cum sunt construite applicatiile din punt de vedere architectural.