Microservice də Load Balancing(Load Balancer) nədir?

Anar Məmmədov
5 min readFeb 15, 2023

--

Keçən məqalədə biz microservice tipli proyektlərdə ilk anlayış olan service discovery nədir onu anlamışdıq. Bu məqalədə isə Load Balancer nədir onu anlamağa çalışacayıq.

Load Balancer-in nə olduğunu öyrənməmişdən qabaq, gəlin real həyatdan vəhdətlənərək belə bir misalı göz qabağımıza gətirək. Fərz eləyin siz bir şirkətdə mühafizə vəzifəsində çalışırsız və təbiiki şirkətə gələn hər bir əməkdaşı yoxlamaq məcburiyyətindəsiniz, elə gün olduki şirkətə 1 gün ərzində onlarla və yaxud yüzlərlə əməkdaş gəlməli oldu və belə olduğu halda təbiiki siz bu əməkdaşları anındaca yoxlayıb onları getmək istədikləri yerə yönləndirə bilmiyəcəksiniz, yorulacaqsız, taqətdən düşəcəksiniz və s. və s. Bunun üçün sizə əlavə olarağ kömək mühafizəçilərin çağrılmasını istəyirsiz və beləliklə şirkətə gələn həmən əməkdaşların yoxlanılması əvvəlkindən fərqli olaraq daha tez başa gələcəkdir. Eynən bu misalda da olduğu kimi, production enviroment də client-lar tərəfindən istifadə olunan app-mıza gündə saysız hesabsız request-lər gəlməkdədir və bu client-lar tərəfindən gələn bu request-lərə response qaytarmaq çətin olacaqdır, belə olduğu halda biz app-mızı parçalara bölərək, yəni onu mikroservice-lərə bölərək işləri rahatlaşdırırıq. Artıq network üzərindən client-lar tərəfindən gələn request-lərə response qaytaracaq app-larımızı mikroservice-lərə böldüyümüzə görə yəni 1 proyektimizi bir neçə hissəyə parçaladığımıza görə işlərimizi rahatlaşdırdıq. Lakin bu özü ilə birlikdə bir problemə gətirib çıxardacaqdır. App-larımızın parçacıqlara bölünməsi o deməkdir ki, artıq hər birinin ayrı-ayrılıqda ip address-lərə sahib olması deməkdir və client-lardan gələn request-lərin hansı ip-ə məxsus app-mıza gedəcəyi məlum olmadığından atılan request-lərə qarşılıq response gəlməyəcəkdir. Yuxarıda izah olunan problemlərin aradan qaldırılmasından ötəri mikroservice tipli proyektlərdə mütləq şəkildə Load Balancer istifadə olunmalıdır. Elə isə gəlin bu elmi termin anlayışının nə olduğunu anlamağa çalışaq.

Günümüzdə bir çoxumuzun istifadə etdiyi web-site-lar vardır və bunlar dəqiqədə yüzlərlə minlərlə client-lardan gələn request-ləri qəbul etməkdədirlər. Belə vəziyyətlərdə server-lər ağır yük altına girərək, həmən bu request-lərə response qaytarmaqda çətinlik çəkərlər.

Load Balancer nədir?

Load Balancing, network üzərindən client-dan gələn request-ləri birdən çox server-ə yönləndirərək, həmən bu request-ləri server-lər arasında paylaşdıraraq, web-proyektlərimizin, app-ların, databazaların və digər servislərin performansını və təhlükəsizliyini artırmaq və ən nəhayətində isə iş yükünü azaltmaqdan ötəri aktual olaraq mikroservice tipli proyektlərdə istifadə olunan ən önəmli elmi terminoloji anlayışlardan biridir. Load Balancing istifadə olunmayan bir sistemdə client-lar “domainname.com” kimi bir web app-na müraciət etmək istədikləri zaman bu domainə məxsus web app-da tək bir web server-ə bağlanacaqlar. Belə olduğu təqdirdə bu server üzərində yarana biləcək problemdən ötəri client-lar fərqli zamanlarda web app-dan istifadə edə bilməyəcəklər. Bununla birlikdə n sayda client-ın (web app-a) request atdıqları zaman server-in həddindən artıq yüklənməsi səbəbindən server-in client-lardan gələn bu request-lərə qarşılıq olaraq response qaytara bilməməsi səbəbindən həddindən artıq yüklənmə problemindən ötəri yavaşlama və sonunda əlaqə kəsintilərinin olmasına gətirib çıxardacaqdır. Bu problem özlüyündə adlanır “single point of failure” və bu problemi aradan qaldırmaq üçün ən azı əlavə bir server-app və load balancer istifadə olunmalıdır. Nəticə etibarı ilə load balancer arxasında işə düşən serverlər eyni əməliyyatlara sahib olduğundan client-lar hansı server ilə əlaqədə olurlarsa olsunlar eyni response alacaqdırlar, yəni load balancer-dan istifadə etmək və server-lərin sayını artırmaq o demək deyilki, bizim client-lar server-lərin sayı artdığına görə atmış olduqları request-dən gözləmədiyi response-u ala bilərlər.

Load Balancing necə işləyir?

Load Balancer, proxy server əməliyyatını həyata keçirtməkdədir, client-a server-in özündə saxlamış olduğu ip addresi verər və client bu ip address-ə bağlanarağ əlaqəyə girər. Əlaqə boyunca Load Balancer bu əməliyyatı proses sonlanana qədər müşahidə altında saxlayar. Load Balancer-lər request-ləri server-lərə yönləndirməg üçün 2 yoldan istifadə edir. İlk olaraq, seçə bildikləri server-lərin request-lərə uyğun şəkildə response qaytara biləcəyindən əmin olur. Sonrasında isə response verə biləcək server-lər (healthy pool) arasından seçim edilərək öz əməliyyatlarını həyata keçirdirlər.

  • Health Checks : Load Balancing istifadə olunan sistemlərdə, load balancer-lər request-ləri yalnızca statusu up vəziyyətində olan backend serverlərinə yönləndirməlidirlər. Bir server-in status-u up vəziyyətində failure olarsa (healthy pool)-dan avtomatik olaraq silinər və status vəziyyəti up olana qədər bu serverrequest-lər gəlməz.

Load Balancer client-lardan gələn request-lərin önünə keçərək onları qəbul edər və bu request-in hansı app server-ə gedəcəyini özü təyin edəcəkdir, eynən aşağıdakı şəkildə olduğu kimi.

Load Balancer-lar həmçinin, client-dan gələn request-in yönləndirəcəyi app-ın bu requestresponse qaytara bilmədiyini gördükdə həmən app-ı əngəlliyər və beləliklə load balancer vasitəsi ilə client-ların problemdən təsirlənməməsini təmin edərik, eynən aşağıdakı şəkildə olduğu kimi.

Load Balancing Algoritmaları :

  • Round Robin: Round robin, server-lərin sıralı olaraq seçildiyi və request-lərin bu sıralama ilə paylaşdırılıdığı algoritmadır. Bu algoritma növündə, load balancer, ilk request üçün sıralamış olduğu siyahısında ilk server seçər və sonra sırayla siyahının aşağısına doğru davam edər. Siyahının sonuna gəldiyində isə təkrar olaraq yenidən üstdən-aşağıya doğru sırayla seçim edəcəkdir.
Round-Robin
  • Least Connection: Bu algoritma növündə isə, load balancer ən az requestresponse qaytarmış server-ə yeni bir client-dan gələn request-i yönləndirər. Bu algoritma növü o halda istifadə olunmalıdır ki, client-dan gələn request-in uzun bir proses keçəcəyi məlumdursa və prosesdən qayıdan response bir xeylax vaxt aparacaqdırsa istifadə olunması tövsiyə olunur.
Least-Connection
  • Source(IP Hash): Bu algoritma növü isə hər hansı bir client-ın davamlı olaraq eyni server ilə əlaqə qurması durumlarında istifadə oluna bilər.

--

--

Anar Məmmədov
Anar Məmmədov

Written by Anar Məmmədov

Java Backend Developer wondering RDBMS and processing of structure any technology that is related backend.

No responses yet