Tətbiqlərin mövcudluğu heç vaxt indiki kimi ciddi qəbul edilməmişdir ki, biz proqramlardan sadəcə ünsiyyətdən daha çox, istər şəxsi, istərsə də peşəkar proqramlar üçün istifadə etdikdə və proqramlar biznesdir.
Daim onlayn olmayan və ya qeyri-sabit olan proqramlar öz istifadəçilərini və aktuallığını itirir, nəticədə köhnəlir. Bu, bir anda baş verdi. İnternet heç vaxt yatmadığı və gündə 24 saat, həftənin 7 günü işlədiyi üçün eyni fikir tətbiqlərə də şamil edilməlidir.
Bunu etmək və tətbiqin mövcudluğunu təmin etmək üçün miqyaslılıq çox vacibdir. Yük balansı mövcudluğu təmin edən ən vacib komponentlərdən biridir. Bir çox insanlar hələ də yük balansının sadə bir skriptlə həyata keçirilə biləcəyinə inanırlar.
Lakin bu, belə deyil. Təkcə o, bütün dünyada - istənilən vaxt və istənilən cihazdan proqramlara girişi təmin edir.
Bu yazıda biz yük balansına, onun alqoritmlərinə və onun mikroservislərlə necə əlaqəli olduğuna və digər şeylərə dərindən nəzər salacağıq. Başlayaq!
Yük balansı nədir?
Vebsayt və ya biznes tətbiqinə tələbat artdıqca, tək bir server tezliklə bütün yükü idarə edə bilməyəcək. Təşkilatlar tələbatı ödəmək üçün iş yükünü çoxsaylı serverlər üzərində paylayır. “Yük balansı” kimi tanınan bu üsul tək bir serverin həddən artıq yüklənməsinin qarşısını alır, bu da onun yavaşlamasına, sorğuları buraxmasına və ya hətta qəzaya uğramasına səbəb ola bilər.
Yük balansı resursun həddən artıq yüklənməsi səbəbindən nasazlığın qarşısını almaq üçün şəbəkə trafikini bərabər paylayır. Proqramlar, veb-saytlar, verilənlər bazası və digər kompüter resursları bu metoddan istifadə etməklə daha yaxşı işləyir və daha çox əlçatandır. O, həmçinin istifadəçi sorğularının düzgün və vaxtında işlənməsinə kömək edir.
İstifadəçinin nöqteyi-nəzərindən yük balansı müştəri və serverlər toplusu arasında görünməyən vasitəçi rolunu oynayır və əlaqə sorğularının kəsilməməsini təmin edir. Tətbiqlər, veb-saytlar, verilənlər bazası və onlayn xidmətlər, yük balansı olmadan tələb çox böyük olarsa, çox güman ki, çökəcək.
Yüz minlərlə istifadəçi sorğusu eyni vaxtda yüksək trafikli bir vebsayta göndərilə bilər. Veb səhifələri mətn, şəkillər, video və audio axını kimi tələb olunan məzmunla düzgün doldurmaq üçün bir neçə server tələb olunur. Yük balansı adətən yüksək trafikli veb-sayt server fermalarında, həmçinin DNS serverlərində, verilənlər bazalarında və Fayl Transfer Protokolu (FTP) saytlarında istifadə olunur.
Tək bir server həddən artıq yüklənirsə, bu, zəif işləyə və ya hətta qəzaya uğraya bilər. Yük balanslaşdırıcıları istifadəçi sorğularını serverlər toplusu arasında bərabər paylamaqla iş vaxtı şansını azaldır. Qrupdakı serverlərdən biri uğursuz olarsa, trafik qrupdakı digər serverlərə yönləndirilir. Yük balanslaşdırıcısı server hovuzuna əlavə olunduqda avtomatik olaraq trafik paylama prosesinə yeni serverlər əlavə edir.
Yük balansı necə işləyir?
Aşağıdakı kimi işləyir:
- Müştəri brauzer və ya proqram vasitəsilə sorğu qəbul etdikdə o, serverə qoşulmağa çalışır.
- Yük balanslaşdırıcısı sorğu qəbul etdikdə, onu alqoritm (və ya ferma) tərəfindən müəyyən edilmiş nümunələr əsasında server qrupundakı serverlərdən birinə yönləndirir.
- Server əlaqə sorğusunu alır və yük balanslaşdırıcısı vasitəsilə müştəriyə cavab verir.
- Yük balanslaşdırıcısı cavabı aldıqda, o, müştərinin IP ünvanını seçilmiş serverin IP ünvanı ilə uyğunlaşdırır. Bundan sonra cavab paketlə ötürülür.
- SSL yüklənməsi, serverlərin buna ehtiyacı olmaması üçün Security Socket Layer şifrələmə protokolundan istifadə edərək məlumatların şifrəsini açmaq prosesidir.
- Sessiya bitənə qədər proses təkrarlanır.
Yük balanslaşdırma üsulları
Server təsərrüfatındakı serverlərdən hansının növbəti sorğunu alacağını seçmək üçün hər bir yük balanslaşdırma texnikası bir sıra meyarlardan istifadə edir. Yük balansı üçün beş tipik yanaşma var:
- Dəyirmi Robin: Bu defolt yanaşmadır və səsləndiyi kimi işləyir. Yük balanslaşdırıcısı sorğuları qrupdakı ilk serverdən başlayaraq, yenidən çağırılmağı gözlədiyi aşağıya doğru fırlanan qaydada paylayır. Bu üsul hər bir serverin təxminən eyni sayda əlaqə ilə işləməsini təmin edir.
- Çəkili Round Robin: Bu yanaşma hər bir serverə ümumiyyətlə tutumuna mütənasib olan çəki (və ya üstünlük) təyin edir. Bir server nə qədər çox sorğu alırsa, çəki də bir o qədər yüksək olur. Məsələn, çəki dəyəri iki olan server, çəki dəyəri bir olan serverdən iki dəfə çox sorğu alır.
- Yapışqan Sessiya: Sessiya davamlılığı kimi də tanınan bu yanaşma seans müddətində müəyyən müştəriləri və serverləri birləşdirir. Bağlantı qurmaq üçün yük balanslaşdırıcısı istifadəçi atributunu müəyyən etmək üçün kukidən və ya istifadəçinin IP ünvanından istifadə edir. Bağlantı qurulduqdan sonra istifadəçinin sorğuları sessiya bitənə qədər eyni serverə yönəldilir. Bu, şəbəkə resurslarını optimallaşdırır, eyni zamanda istifadəçi təcrübəsini yaxşılaşdırır.
- Ən az Əlaqələr: Bu strategiya bütün sorğuların bərabər server yükü ilə nəticələndiyini güman edir. Nəticədə, ən az sayda sorğuya malik olan server növbəti sorğunu alır.
- IP Hash: Bu alqoritm müştəri və serverin mənbə və təyinat IP ünvanlarına əsaslanan unikal hash açarı yaradır. Açar sorğunun yönləndirilməsi üçün istifadə olunur və eyni serverlə itirilmiş əlaqəni bərpa etməyə imkan verir.
Avadanlıq Vs. Proqram yükü balanslaşdırıcıları
Hardware Load Balancer
Cihaz kimi fiziki aparat, aparat yükü balanslaşdırıcılarını təşkil edir. Bu, mövcud bağlantıların sayı, prosessor istifadəsi və server performansı kimi amillərdən asılı olaraq serverlərə trafiki istiqamətləndirir. Avadanlıq yükü balanslaşdırıcılarının yeni versiyalar və təhlükəsizlik düzəlişləri mövcud olduqda saxlanmalı və yenilənməli olan xüsusi proqram təminatı var.
Avadanlıq yükü balanslaşdırıcıları tez-tez daha yüksək performans və nəzarət, eləcə də Kerberos autentifikasiyası və SSL aparat sürətləndirilməsi kimi daha geniş imkanlar təmin edir, lakin onlar müəyyən səviyyəli idarəetmə və texniki xidmət təcrübəsi tələb edir. Avadanlıq yükü balanslaşdırıcıları proqram yükü balanslaşdırıcılarına nisbətən daha az çevik və miqyaslana bilən olduğundan, avadanlıq yükü balanslaşdırıcılarının həddən artıq təmin edilməsinə meyl var.
Proqram yükü balanslaşdırıcısı
Proqram yükü balanslaşdırıcılarını quraşdırmaq adətən aparat həmkarlarından daha asandır. Onlar həmçinin daha sərfəli və uyğunlaşa biləndirlər və proqram təminatının inkişaf etdirilməsi mühitləri ilə yaxşı işləyirlər. Proqram metodu yük balanslaşdırıcısını mühitinizin dəqiq tələblərinə uyğunlaşdırmağa imkan verir. Artan çeviklik yük balanslaşdırıcısının qurulmasına sərf olunan əlavə vaxt hesabına baş verə bilər.
Proqram təminatı balanslaşdırıcıları sizə daha çox qapalı yanaşmaya malik olan aparat proqramlarına nisbətən modifikasiya və yeniləmələr etmək üçün daha çox çeviklik təmin edir. Əvvəlcədən paketlənmiş virtual maşınlar proqram yükü balanslaşdırıcıları (VM) kimi istifadə edilə bilər. Virtual maşınlar sizə müəyyən vaxta qənaət edəcək, lakin onların aparat həmkarlarında mövcud olan bütün funksiyalar olmaya bilər.
Sadə Yük Balansının Tətbiqi
Biz Spring Cloud kitabxanasından istifadə edəcəyik proqramlar qurmaq yük balanslı şəkildə digər proqramlara qoşulur. Uzaqdan xidmət sorğularını emal edərkən, bəyəndiyimiz texnikadan istifadə edərək asanlıqla yük balansını qura bilərik. Nümunə olaraq aşağıdakı kodu nəzərdən keçirin. Əsas server tətbiqi ilə başlayacağıq.
Serverdə yalnız bir HTTP son nöqtəsi olacaq və bir neçə halda idarə olunacaq. Sonra sorğuları bir neçə server instansiyası üzrə paylamaq üçün Load Balancer istifadə edən müştəri proqramı quracağıq.
server
Əsas ilə başlayırıq Yaz çəkmə nümunə serverimiz üçün proqram:
Başlamaq üçün biz instance_ID adlı fərdiləşdirilə bilən dəyişən yeridik. Bu, fəaliyyət göstərən çoxsaylı nümunələri ayırd etməyə kömək edir. Bundan sonra biz mesaj və misal identifikatoru qaytaran vahid HTTP GET son nöqtəsi yaradırıq.
ID 1-ə malik defolt nümunə 8080 portunda işləyəcək. İkinci instansiyanı işə salmaq üçün sadəcə bir neçə proqram parametrləri əlavə etməliyik:
Müştəri
İndi müştəri koduna nəzər salaq. Load Balancer-in daxil olduğu yer budur, gəlin onu tətbiqimizə daxil etməklə başlayaq:
Bundan sonra biz ServiceInstanceListSupplier tətbiqini inkişaf etdiririk. Bu, Load Balancer-da ən vacib interfeyslərdən biridir. O, əlçatan xidmət nümunələrini necə tapdığımızı müəyyənləşdirir.
Nümunə tətbiqimizdə nümunə serverimizin iki ayrı instansiyasını sərt kodlaşdıracağıq. Onlar eyni sistemdə işləyirlər, lakin ayrı portlardan istifadə edirlər:
İndi LoadBalancerConfiguration sinfi yaradın:
Bu sinfin yalnız bir məqsədi var: o, uzaqdan sorğular etmək üçün yüklə balanslaşdırılmış WebClient qurucusu yaradır. Annotasiyamızda xidmət üçün uydurma ad istifadə olunur.
Bu, çox güman ki, nümunələri işə salmaq üçün dəqiq host adlarını və portları əvvəlcədən bilməyəcəyimizlə bağlıdır. Nəticə olaraq, biz yertutan kimi uydurma addan istifadə edirik və çərçivə işləyən nümunəni seçdikdə faktiki məlumatı əvəz edəcək.
Sonra, xidmət nümunəsi təchizatımızı yaratmaq üçün istifadə ediləcək Konfiqurasiya sinfi yaradaq. Nəzərə alın ki, biz əvvəlki kimi eyni ləqəbdən istifadə edirik:
İndi real müştəri tətbiqini yarada bilərik. Əvvəlki WebClient lobyasından istifadə edərək nümunə serverə 10 sorğu göndərək:
Çıxışdan görə bilərik ki, biz iki ayrı instansiya arasında yük balanslaşdırırıq:
Mikroservislərdə yük balansı
Mikroservis arxitekturası Netflix və Amazon kimi bir neçə şirkət tərəfindən sərbəst əlaqəli xidmətlər dəsti kimi biznes proqramlarını inkişaf etdirmək üçün istifadə olunur. Mürəkkəb tətbiqlər üçün hipermiqyaslı və davamlı çatdırılma bu paylanmış, sərbəst əlaqəli arxitekturaya keçmək üçün yalnız iki səbəbdir.
Bu müəssisələrin komandaları tətbiqləri daha sürətli və ənənəvi üsullardan daha aşağı uğursuzluq dərəcəsi ilə istehsal etmək üçün Agile və DevOps strategiyalarını həyata keçirib. Bununla belə, siz paylanmış arxitekturanın mürəkkəbliyi ilə tətbiqin tələbləri, miqyas tələbləri və bazara çıxma vaxtı məhdudiyyətləri arasında tarazlıq saxlamalısınız.
Uzun illərdir ki, proqramların çatdırılması nəzarətçiləri (ADC) yerli və ya buludda yerləşdirilən korporativ proqramlar üçün xidmət səviyyəsi tələblərinə cavab vermək üçün mühüm rol oynayır. Mikroxidmətlərə əsaslanan proqramla məşğul olan müştərinin müştərini və mikroxidmətləri müstəqil şəkildə inkişaf etdirmək üçün onu təmin edən nümunələr haqqında bilməsinə ehtiyac yoxdur.
Bu, əks proxy və ya yük balanslaşdırıcısı tərəfindən təmin edilən ayırmadır. Yenə də yük balansı mikroservislərin tələbi, təhlükəsizliyi və mövcudluğu idarə edə bilməsini təmin etmək üçün həll yoludur.
Müştəri və mikroservislərə əsaslanan tətbiqlər arasında ənənəvi Şimal-Cənub yük balansını üfüqi miqyaslılıq üçün Şərq-Qərb yerləşdirməsi ilə birləşdirdikdə, əhəmiyyətli təkan əldə edirsiniz. Məqsəd inkişaf çevikliyini və ya inkişafını itirmədən İT-nin tələb etdiyi təhlükəsiz və tənzimlənən mühiti qorumaqdır DevOps avtomatlaşdırılması tələblər.
Faydaları
Yük balansı resursdan istifadəni, məlumatların çatdırılmasını və yüksək trafikə malik veb-saytlar və proqramlar, eləcə də çoxlu sayda sorğu alan verilənlər bazası üçün cavab müddətini yaxşılaşdırmaqla müxtəlif faydalar təmin edir. Yük balansı istifadəçi sorğularının yüksək trafik ssenarilərində tez və düzgün yerinə yetirilməsini təmin edir.
Onlar istifadəçiləri ləng proqramlar və resurslarla işin ağırlaşmasından xilas edir. Yük balansı həm də iş vaxtının qarşısını almağa və təhlükəsizliyi sadələşdirməyə kömək edərək, şirkətiniz üçün məhsuldarlığın və qazancın itirilməsi riskini azaldır.
- Yük balansı optimal səmərəlilik üçün trafiki idarə etməklə yanaşı, tələbin diktə etdiyi kimi serverləri əlavə etmək və silmək üçün çeviklik təmin edir. Baxım zamanı trafik digər serverlərə yönləndirildiyi üçün istifadəçilərin işini pozmadan serverə texniki xidmət göstərmək də mümkündür.
- Yük balansı trafiki bir sıra serverlər arasında bölməklə daxili ehtiyat təmin edir. Biri uğursuz olarsa, istifadəçilərə təsirini minimuma endirərək yükü dərhal digər serverlərə yönləndirə bilərsiniz.
- Tətbiq və ya vebsaytdan istifadə artarsa, effektiv şəkildə idarə olunmasa, artan trafik onun performansını aşağı sala bilər. Yük balansı ilə, xidməti pozmadan tələbatı ödəmək üçün real və ya virtual server əlavə edə bilərsiniz. Yük balanslaşdırıcısı yeni serverləri onlayn olduqdan sonra müəyyən edir və onları asanlıqla əməliyyata daxil edir. Bu üsul veb saytı çox yüklənmiş serverdən yenisinə köçürməkdən daha üstündür, hansı ki, tez-tez müəyyən fasilələr tələb edir.
Nəticə
Yük balansı müasir, nasazlığa dözümlü sistemlərin mühüm komponentidir. Biz sadəcə olaraq müxtəlif yük balanslaşdırma yanaşmalarından istifadə edərək sorğuları çoxsaylı xidmət instansiyalarına paylayan proqramlar yarada bilərik. Tətbiqləri təhlükəsiz şəkildə təmin etmək üçün müəssisələr mürəkkəb İT sistemlərini dəstəkləməlidirlər.
Domenlərarası mikroxidmətlərin konfiqurasiyası, yerləşdirilməsi və saxlanması xətaya meylli, bahalı və vaxt aparan ola bilər. İT bu mikroservislərin qurulmasını və saxlanmasını asanlaşdırmaq üçün onların çevik və DevOps prosesləri ilə uyğun gələn avtomatlaşdırma, görmə qabiliyyəti, analitika və orkestrləşdirmə üzrə ən yaxşı təcrübə və texnologiyalardan istifadə etməlidir.
Cavab yaz