Turinys[Slėpti][Rodyti]
Į programų prieinamumą niekada nebuvo žiūrima taip rimtai, kaip šiandien, kai naudojame programas ne tik bendravimui, nesvarbu, asmeniniam ar profesiniam, ir kai programos yra verslas.
Programos, kurios nėra nuolat prisijungusios arba yra nestabilios, praranda savo vartotojus ir aktualumą, galiausiai pasensta. Tai įvyko žaibiškai. Kadangi internetas niekada nemiega ir veikia 24 valandas per parą, 7 dienas per savaitę, ta pati idėja turi būti taikoma programėlėms.
Mastelio keitimas yra labai svarbus norint tai padaryti ir užtikrinti programos prieinamumą. Apkrovos balansavimas yra vienas iš svarbiausių komponentų, užtikrinančių prieinamumą. Daugelis žmonių vis dar tiki, kad apkrovos balansavimą galima atlikti naudojant paprastą scenarijų.
Tačiau taip nėra. Vien tik ji suteikia prieigą prie programų visame pasaulyje – bet kuriuo metu ir iš bet kurio įrenginio.
Šiame įraše, be kita ko, išsamiai apžvelgsime apkrovos balansavimą, jo algoritmus ir tai, kaip tai susiję su mikropaslaugomis. Pradėkime!
Kas yra apkrovos balansavimas?
Augant svetainės ar verslo programos paklausai, vienas serveris greitai neatlaikys visos apkrovos. Organizacijos paskirsto darbo krūvį daugeliui serverių, kad patenkintų paklausą. Šis metodas, žinomas kaip „apkrovos balansavimas“, neleidžia vienam serveriui perkrauti, todėl jis gali sulėtėti, atmesti užklausas ar net sugesti.
Apkrovos balansavimas vienodai paskirsto tinklo srautą, kad būtų išvengta gedimų dėl išteklių perkrovos. Naudojant šį metodą, programos, svetainės, duomenų bazės ir kiti kompiuterio ištekliai veikia geriau ir yra prieinamesni. Tai taip pat padeda tinkamai ir laiku apdoroti vartotojų užklausas.
Vartotojo požiūriu, apkrovos balansavimas yra nematomas tarpininkas tarp kliento ir serverių rinkinio, užtikrinantis, kad ryšio užklausos nebūtų atmetamos. Programos, svetainės, duomenų bazės ir internetinės paslaugos greičiausiai žlugtų, jei paklausa taptų per didelė be apkrovos balansavimo.
Šimtai tūkstančių vartotojų užklausų vienu metu gali būti siunčiamos į vieną didelio srauto svetainę. Norint tinkamai užpildyti tinklalapius prašomu turiniu, pvz., tekstu, vaizdais, vaizdo įrašais ir garso srautu, reikia kelių serverių. Apkrovos balansavimas dažniausiai naudojamas didelio srauto svetainių serverių ūkiuose, taip pat DNS serveriuose, duomenų bazėse ir failų perdavimo protokolo (FTP) svetainėse.
Jei vienas serveris yra per daug apkrautas, jis gali prastai veikti arba net sugesti. Apkrovos balansavimo įrenginiai sumažina prastovų tikimybę, tolygiai paskirstydami vartotojų užklausas tarp serverių. Jei vienas iš grupės serverių sugenda, srautas nukreipiamas į kitus grupės serverius. Apkrovos balansavimo priemonė automatiškai prideda naujų serverių srauto paskirstymo procese, kai jie įtraukiami į serverių telkinį.
Kaip veikia apkrovos balansavimas?
Tai veikia taip:
- Kai klientas gauna užklausą, pvz., per naršyklę ar programą, jis bando prisijungti prie serverio.
- Kai apkrovos balansavimo priemonė gauna užklausą, ji nukreipiama į vieną iš serverių grupės serverių pagal algoritmo (arba ūkio) nustatytus šablonus.
- Serveris gauna prisijungimo užklausą ir atsako klientui per apkrovos balansavimo priemonę.
- Kai apkrovos balansuotojas gauna atsakymą, jis suderina kliento IP adresą su pasirinkto serverio IP adresu. Po to atsakymas perduodamas kartu su paketu.
- SSL iškrovimas yra duomenų iššifravimo procesas naudojant Security Socket Layer šifravimo protokolą, kad serveriams to nereikėtų.
- Procesas kartojamas tol, kol baigsis sesija.
Apkrovos balansavimo metodai
Norint pasirinkti, kuris iš serverių ūkio serverių gaus kitą užklausą, kiekviena apkrovos balansavimo technika naudoja tam tikrą kriterijų rinkinį. Yra penki tipiški apkrovos balansavimo būdai:
- Varžybos ratų sistema: Tai numatytasis metodas ir veikia taip, kaip skamba. Apkrovos balansavimo priemonė paskirsto užklausas besisukančiu būdu, pradedant nuo pirmojo serverio grupėje ir tęsiant iki apačios, kur laukiama, kol vėl bus iškviesta. Šis metodas užtikrina, kad kiekvienas serveris apdorotų maždaug tiek pat jungčių.
- Svertinis Round Robin: Šis metodas kiekvienam serveriui priskiria svorį (arba pirmenybę), kuris paprastai yra proporcingas jo talpai. Kuo daugiau užklausų serveris gauna, tuo didesnis svoris. Pavyzdžiui, serveris, kurio svorio reikšmė yra du, gauna dvigubai daugiau užklausų nei serveris, kurio svorio reikšmė yra viena.
- Lipni sesija: Šis metodas, dar žinomas kaip seanso išlikimas, seanso metu sujungia tam tikrus klientus ir serverius. Norėdamas sukurti nuorodą, apkrovos balansavimo priemonė naudoja slapuką arba vartotojo IP adresą, kad nustatytų vartotojo atributą. Užmezgus ryšį, vartotojo užklausos nukreipiamos į tą patį serverį iki seanso pabaigos. Tai optimizuoja tinklo išteklius ir pagerina vartotojo patirtį.
- Mažiausiai jungčių: Ši strategija daro prielaidą, kad visos užklausos sukelia vienodą serverio naštą. Dėl to serveris, turintis mažiausią užklausų skaičių, gauna kitą užklausą.
- IP maiša: Šis algoritmas generuoja unikalų maišos raktą pagal kliento ir serverio šaltinio ir paskirties IP adresus. Raktas naudojamas užklausai nukreipti ir leidžia atnaujinti prarastą ryšį su tuo pačiu serveriu.
Aparatūra vs. Programinės įrangos apkrovos balansuotojai
Aparatinės įrangos apkrovos balansavimo priemonė
Fizinė aparatinė įranga, tokia kaip prietaisas, sudaro aparatinės įrangos apkrovos balansavimo priemones. Jie nukreipia srautą į serverius, atsižvelgdami į tokius veiksnius kaip esamų jungčių skaičius, procesoriaus naudojimas ir serverio našumas. Aparatinės įrangos apkrovos balansavimo priemonės turi patentuotą programinę-aparatinę įrangą, kurią reikia prižiūrėti ir atnaujinti, kai atsiranda naujų versijų ir saugos pataisų.
Aparatinės įrangos apkrovos balansavimo įrenginiai dažnai užtikrina didesnį našumą ir valdymą, taip pat platesnį galimybių spektrą, pvz., Kerberos autentifikavimą ir SSL aparatinės įrangos spartinimą, tačiau jiems reikia tam tikro lygio valdymo ir priežiūros patirties. Kadangi aparatinės įrangos apkrovos balansavimo įtaisai yra mažiau lankstūs ir keičiamo dydžio, nei programinės įrangos apkrovos balansavimo įtaisai, aparatinės įrangos apkrovos balansavimo priemonės yra per daug aprūpintos.
Programinės įrangos apkrovos balansavimo priemonė
Programinės įrangos apkrovos balansavimo įrenginius paprastai lengviau nustatyti nei aparatinės įrangos analogus. Jie taip pat yra ekonomiškesni ir labiau pritaikomi, be to, jie puikiai tinka programinės įrangos kūrimo aplinkoms. Programinės įrangos metodas leidžia pritaikyti apkrovos balansavimo priemonę pagal tikslius jūsų aplinkos reikalavimus. Padidėjęs lankstumas gali būti dėl papildomo laiko, praleisto nustatant apkrovos balansavimo įrenginį, sąskaita.
Programinės įrangos balansavimo įrenginiai suteikia daugiau lankstumo atlikti pakeitimus ir naujinimus nei aparatinės įrangos, kurioms taikomas uždaresnis požiūris. Iš anksto supakuotos virtualios mašinos gali būti naudojamos kaip programinės įrangos apkrovos balansavimo priemonės (VM). Virtualios mašinos sutaupys šiek tiek nustatymo laiko, tačiau jos gali neturėti visų aparatinės įrangos funkcijų.
Paprastas apkrovos balansavimo įgyvendinimas
Naudosime Spring Cloud biblioteką kurti programas kurios subalansuotai jungiasi prie kitų programų. Apdorodami nuotolinių paslaugų užklausas, galime lengvai sukurti apkrovos balansavimą naudodami bet kokią mums patinkančią techniką. Apsvarstykite šį kodą kaip pavyzdį. Pradėsime nuo pagrindinės serverio programos.
Serveris turės tik vieną HTTP galinį tašką ir bus naudojamas keliais atvejais. Tada sukursime kliento programą, kuri naudos „Load Balancer“, kad paskirstytų užklausas keliuose serverio egzemplioriuose.
serverio
Pradedame nuo pagrindinio Pavasario batas programa mūsų pavyzdiniam serveriui:
Norėdami pradėti, įterpiame tinkinamą kintamąjį, vadinamą instance_ID. Tai padeda mums atskirti daugybę veikiančių atvejų. Po to sukuriame vieną HTTP GET galinį tašką, kuris grąžina pranešimą ir egzemplioriaus ID.
Numatytasis egzempliorius su ID 1 veiks prie 8080 prievado. Mums tereikia pridėti kelis programos parametrus, kad paleistume antrąjį egzempliorių:
klientas
Dabar pažvelkime į kliento kodą. Čia atsiranda „Load Balancer“, todėl pradėkime įtraukdami jį į savo programą:
Po to mes kuriame ServiceInstanceListSupplier diegimą. Tai viena iš svarbiausių „Load Balancer“ sąsajų. Jame nurodoma, kaip randame pasiekiamus paslaugų atvejus.
Pavyzdinėje programoje užkoduosime du atskirus mūsų pavyzdinio serverio egzempliorius. Jie veikia toje pačioje sistemoje, bet naudoja atskirus prievadus:
Sukurkite „LoadBalancerConfiguration“ klasę dabar:
Ši klasė turi tik vieną tikslą: ji sukuria subalansuotą apkrovos WebClient kūrimo priemonę nuotolinėms užklausoms teikti. Mūsų anotacijoje naudojamas fiktyvus paslaugos pavadinimas.
Taip yra dėl to, kad greičiausiai nežinosime tikslių prieglobos pavadinimų ir prievadų, skirtų paleisti egzempliorius iš anksto. Dėl to mes naudojame išgalvotą pavadinimą kaip rezervuotą vietą, o sistema pakeis faktinę informaciją, kai pasirinks veikiantį egzempliorių.
Tada sukurkime konfigūracijos klasę, kuri bus naudojama mūsų paslaugų egzempliorių tiekimui. Atminkite, kad naudojame tą patį slapyvardį kaip ir anksčiau:
Dabar galime sukurti tikrą kliento programą. Išsiųsime 10 užklausų pavyzdiniam serveriui naudodami ankstesnį WebClient komponentą:
Iš išvesties matome, kad apkrovos balansavimas tarp dviejų atskirų atvejų:
Mikropaslaugos apkrovos balansavimas
„Microservice“ architektūrą naudoja kelios įmonės, tokios kaip „Netflix“ ir „Amazon“, kurdamos verslo programas kaip laisvai susietų paslaugų rinkinį. Hipermastinis ir nuolatinis sudėtingų programų pristatymas yra tik dvi priežastys, dėl kurių reikia pereiti prie šios paskirstytos, laisvai sujungtos architektūros.
Šių įmonių komandos įgyvendino Agile ir DevOps strategijas, siekdamos kurti programas greičiau ir su mažesniu gedimų dažniu nei tradiciniai metodai. Tačiau turite rasti pusiausvyrą tarp paskirstytos architektūros sudėtingumo ir programos reikalavimų, masto reikalavimų ir pateikimo į rinką laiko apribojimų.
Tiek metų programų pristatymo valdikliai (ADC) buvo labai svarbūs siekiant patenkinti įmonės taikomųjų programų, priglobtų vietoje arba debesyje, paslaugų lygio reikalavimus. Klientui, kuris naudojasi mikropaslaugomis pagrįsta programa, nereikia žinoti apie egzempliorius, kurie ją teikia, kad galėtų savarankiškai plėtoti klientą ir mikropaslaugas.
Būtent tokį atsiejimą užtikrina atvirkštinis tarpinis serveris arba apkrovos balansavimo priemonė. Vėlgi, apkrovos balansavimas yra sprendimas, užtikrinantis, kad mikropaslaugos galėtų patenkinti paklausą, saugumą ir prieinamumą.
Kai derinate tradicinį šiaurės–pietų apkrovos balansavimą tarp kliento ir mikropaslaugomis pagrįstų programų su Rytų–Vakarų diegimu, kad būtų užtikrintas horizontalus mastelio keitimas, gausite didelį postūmį. Tikslas yra išlaikyti saugią ir reguliuojamą aplinką, kurios reikalauja IT, neprarandant plėtros lankstumo ar „DevOps“ automatika reikalavimai.
Privalumai
Apkrovos balansavimas suteikia įvairių privalumų, nes pagerina išteklių panaudojimą, duomenų pateikimą ir atsako laiką didelio srauto svetainėms ir programoms, taip pat duomenų bazėms, kurios gauna daug užklausų. Apkrovos balansavimas užtikrina, kad naudotojų užklausos būtų įvykdytos greitai ir teisingai esant dideliam srautui.
Jie taupo vartotojus nuo problemų, susijusių su vangiomis programomis ir ištekliais. Apkrovos balansavimas taip pat padeda išvengti prastovų ir supaprastina saugumą, sumažindamas jūsų įmonės produktyvumo ir pajamų praradimo riziką.
- Apkrovos balansavimas suteikia galimybę lanksčiai pridėti ir pašalinti serverius, kai to reikalauja paklausa, be to, srautas valdomas iki optimalaus efektyvumo. Kadangi techninės priežiūros metu srautas nukreipiamas į kitus serverius, serverio priežiūrą taip pat įmanoma atlikti netrukdant vartotojams.
- Apkrovos balansavimas suteikia integruotą dubliavimą, padalijus srautą tarp serverių rinkinio. Jei vienas sugenda, galite nedelsiant nukreipti apkrovą į kitus serverius, kad sumažintumėte poveikį vartotojams.
- Jei programos ar svetainės naudojimas auga, padidėjęs srautas gali pabloginti jos veikimą, jei nebus veiksmingai tvarkoma. Naudodami apkrovos balansavimą galite pridėti realų arba virtualų serverį, kad patenkintumėte paklausą, netrikdydami paslaugos. Apkrovos balansavimo priemonė identifikuoja naujus serverius, kai jie prisijungia, ir be vargo įtraukia juos į veiklą. Šis metodas yra geresnis už svetainės perkėlimą iš perkrauto serverio į naują, o tai dažnai apima prastovą.
Išvada
Apkrovos balansavimas yra esminis šiuolaikinių, gedimams atsparių sistemų komponentas. Galime tiesiog sukurti programas, kurios platina užklausas keliems paslaugų egzemplioriams, naudodami įvairius apkrovos balansavimo metodus. Įmonės turi palaikyti sudėtingas IT sistemas, kad galėtų saugiai teikti programas.
Kryžminių domenų mikropaslaugų konfigūravimas, diegimas ir priežiūra gali būti klaidų, brangu ir atimti daug laiko. IT turėtų naudoti automatizavimo, matomumo, analizės ir orkestravimo geriausią praktiką ir technologijas, suderinamas su judriais ir „DevOps“ procesais, kad būtų lengviau nustatyti ir prižiūrėti šias mikropaslaugas.
Palikti atsakymą