Sisukord[Peida][Näita]
Rakenduste kättesaadavust pole kunagi võetud nii tõsiselt kui praegu, kui kasutame rakendusi rohkemaks kui lihtsalt suhtlemiseks, olenemata sellest, kas see on isiklik või tööalane, ja kui rakendused on äri.
Rakendused, mis ei ole pidevalt võrgus või on ebastabiilsed, kaotavad oma kasutajad ja asjakohasuse ning aeguvad lõpuks. See juhtus välkkiirelt. Kuna internet ei maga kunagi ja töötab 24 tundi ööpäevas, 7 päeva nädalas, peab sama idee kehtima ka rakenduste kohta.
Skaleeritavus on selle tegemiseks ja rakenduste kättesaadavuse tagamiseks ülioluline. Koormuse tasakaalustamine on kättesaadavuse tagamisel üks olulisemaid komponente. Paljud inimesed usuvad endiselt, et koormuse tasakaalustamist saab saavutada lihtsa skripti abil.
See aga nii ei ole. Ainuüksi see võimaldab juurdepääsu programmidele üle kogu maailma – igal ajal ja mis tahes seadmest.
Selles postituses vaatleme muu hulgas põhjalikult koormuse tasakaalustamist, selle algoritme ja seda, kuidas see on seotud mikroteenustega. Alustagem!
Mis on koormuse tasakaalustamine?
Kuna nõudlus veebisaidi või ärirakenduse järele kasvab, ei suuda üks server peagi kogu koormust taluda. Nõudluse rahuldamiseks jaotavad organisatsioonid töökoormuse paljude serverite vahel. See meetod, mida nimetatakse koormuse tasakaalustamiseks, hoiab ära ühe serveri ülekoormuse, mis võib põhjustada selle aeglustumist, päringute tühistamist või isegi krahhi.
Koormuse tasakaalustamine jaotab võrguliikluse võrdselt, et vältida ressursside ülekoormusest tingitud tõrkeid. Rakendused, veebisaidid, andmebaasid ja muud arvutiressursid toimivad paremini ja on seda meetodit kasutades paremini kättesaadavad. See aitab ka kasutajate taotlusi õigesti ja õigeaegselt töödelda.
Kasutaja seisukohast on koormuse tasakaalustamine nähtamatu vahendaja kliendi ja serverite kogumi vahel, tagades, et ühenduse taotlusi ei katkestata. Rakendused, veebisaidid, andmebaasid ja võrguteenused kukuvad tõenäoliselt kokku, kui nõudlus ilma koormuse tasakaalustamiseta liiga suureks muutuks.
Ühele suure liiklusega veebisaidile saab korraga saata sadu tuhandeid kasutajapäringuid. Nõutud sisuga (nt tekst, pildid, video ja heli voogesitus) veebilehtede õigeks täitmiseks on vaja mitut serverit. Koormuse tasakaalustamist kasutatakse tavaliselt suure liiklusega veebisaitide serverifarmides, samuti DNS-serverites, andmebaasides ja failiedastusprotokolli (FTP) saitides.
Kui üks server on ülekoormatud, võib see halvasti töötada või isegi kokku kukkuda. Koormuse tasakaalustajad vähendavad seisakute võimalust, jaotades kasutajate päringud serverite kogumi vahel ühtlaselt. Kui üks rühma serveritest ebaõnnestub, suunatakse liiklus ümber rühma teistesse serveritesse. Koormuse tasakaalustaja lisab automaatselt liikluse jaotusprotsessis uusi servereid, kui need lisatakse serverikogumisse.
Kuidas koormuse tasakaalustamine töötab?
See töötab järgmiselt:
- Kui klient saab päringu, näiteks brauseri või rakenduse kaudu, proovib ta serveriga ühendust luua.
- Kui koormuse tasakaalustaja saab päringu, suunab see selle ühte serverirühma serverisse algoritmi (või farmi) kehtestatud mustrite alusel.
- Server võtab ühenduse taotluse vastu ja vastab kliendile koormuse tasakaalustaja kaudu.
- Kui koormuse tasakaalustaja saab vastuse, sobitab see kliendi IP-aadressi valitud serveri IP-aadressiga. Pärast seda edastatakse vastus koos paketiga.
- SSL-i mahalaadimine on andmete dekrüpteerimine Security Socket Layeri krüpteerimisprotokolli abil, nii et serverid ei pea seda tegema.
- Protseduuri korratakse kuni seansi lõpuni.
Koormuse tasakaalustamise meetodid
Et valida, milline serveripargi serveritest saab järgmise päringu, kasutab iga koormuse tasakaalustamise tehnika kriteeriumide komplekti. Koormuse tasakaalustamiseks on viis tüüpilist lähenemisviisi:
- Round Robini: see on vaikemeetod ja see töötab täpselt nii, nagu see kõlab. Koormuse tasakaalustaja jagab päringuid pöörleva mustriga, alustades rühma esimesest serverist ja liikudes allapoole, kus see ootab uuesti kutsumist. See meetod tagab, et iga server töötleb ligikaudu sama arvu ühendusi.
- Kaalutud Round Robin: see lähenemisviis määrab igale serverile kaalu (või eelistuse), mis on üldiselt proportsionaalne selle võimsusega. Mida rohkem taotlusi server saab, seda suurem on kaal. Näiteks server, mille kaaluväärtus on kaks, saab kaks korda rohkem päringuid kui server, mille kaaluväärtus on üks.
- Kleepuv seanss: see lähenemine, tuntud ka kui seansi püsivus, ühendab teatud kliendid ja serverid seansi ajaks. Lingi loomiseks kasutab koormuse tasakaalustaja kasutaja atribuudi tuvastamiseks küpsist või kasutaja IP-aadressi. Kui ühendus on loodud, suunatakse kasutaja päringud samasse serverisse kuni seansi lõpuni. See optimeerib võrguressursse, parandades samal ajal ka kasutajakogemust.
- Vähem ühendused: see strateegia eeldab, et kõik päringud toovad kaasa võrdse serverikoormuse. Selle tulemusena saab järgmise päringu kõige väiksema päringute arvuga server.
- IP-räsi: see algoritm genereerib kliendi ja serveri lähte- ja sihtkoha IP-aadresside põhjal ainulaadse räsivõtme. Võtit kasutatakse päringu suunamiseks ja see võimaldab taastada katkenud ühenduse sama serveriga.
Riistvara vs. Tarkvara koormuse tasakaalustajad
Riistvara koormuse tasakaalustaja
Füüsiline riistvara, näiteks seade, moodustab riistvara koormuse tasakaalustajad. Need suunavad liikluse serveritesse sõltuvalt sellistest teguritest nagu olemasolevate ühenduste arv, protsessori kasutus ja serveri jõudlus. Riistvara koormuse tasakaalustajatel on patenteeritud püsivara, mida tuleb uute versioonide ja turvaparanduste ilmumisel hooldada ja värskendada.
Riistvara koormuse tasakaalustajad pakuvad sageli suuremat jõudlust ja juhtimist ning laiemat valikut võimalusi, nagu Kerberose autentimine ja SSL-i riistvarakiirendus, kuid need nõuavad teatud haldus- ja hooldusteadmisi. Kuna riistvara koormuse tasakaalustajad on vähem paindlikud ja skaleeritavad kui tarkvara koormuse tasakaalustajad, võib riistvara koormuse tasakaalustajaid üle pakkuda.
Tarkvara koormuse tasakaalustaja
Tarkvara koormuse tasakaalustajaid on tavaliselt lihtsam seadistada kui nende riistvaralisi. Need on ka kuluefektiivsemad ja kohandatavamad ning töötavad hästi tarkvaraarenduskeskkondadega. Tarkvarameetod võimaldab teil kohandada koormuse tasakaalustajat teie keskkonna täpsetele nõuetele. Suurenenud paindlikkus võib tulla koormuse tasakaalustaja seadistamisele kuluva lisaaja arvelt.
Tarkvara tasakaalustajad pakuvad teile suuremat paindlikkust muudatuste ja värskenduste tegemiseks kui riistvaralised, millel on rohkem suletud kasti. Pakendatud virtuaalmasinaid saab kasutada tarkvara koormuse tasakaalustajatena (VM). Virtuaalmasinad säästavad veidi seadistamisaega, kuid neil ei pruugi olla kõiki riistvaraliste seadmete funktsioone.
Lihtne koormuse tasakaalustamise rakendamine
Selleks kasutame Spring Cloudi raamatukogu rakendusi ehitada mis ühendavad teiste rakendustega tasakaalustatud koormusega. Kaugteenuse taotluste töötlemisel saame hõlpsasti luua koormuse tasakaalustamise, kasutades mis tahes tehnikat, mis meile meeldib. Vaatleme näitena järgmist koodi. Alustame põhilise serverirakendusega.
Serveril on ainult üks HTTP lõpp-punkt ja seda kasutatakse mitmel juhul. Seejärel loome kliendirakenduse, mis kasutab Load Balancerit, et jagada päringuid mitme serveri eksemplari vahel.
server
Alustame põhilisest Kevadine saabas rakendus meie näidisserveri jaoks:
Alustuseks sisestame kohandatava muutuja nimega instance_ID. See aitab meil teha vahet paljudel töötavatel eksemplaridel. Pärast seda loome ühe HTTP GET-i lõpp-punkti, mis tagastab sõnumi ja eksemplari ID.
Vaikeeksemplar ID-ga 1 töötab pordil 8080. Teise eksemplari käivitamiseks peame lisama vaid mõned programmiparameetrid:
klient
Vaatame nüüd kliendi koodi. Siin tuleb appi Load Balancer, nii et alustame selle lisamisega oma rakendusse:
Pärast seda töötame välja ServiceInstanceListSupplieri juurutuse. See on Load Balanceri üks olulisemaid liideseid. See määrab, kuidas me leiame juurdepääsetavad teenuse eksemplarid.
Kodeerime oma näidisserveri kaks eraldi eksemplari meie näidisrakenduses. Need töötavad samas süsteemis, kuid kasutavad eraldi porte:
Looge LoadBalancerConfiguration klass kohe:
Sellel klassil on ainult üks eesmärk: see loob kaugtaotluste tegemiseks tasakaalustatud veebikliendi koostaja. Meie annotatsioonis kasutatakse teenuse väljamõeldud nime.
Selle põhjuseks on asjaolu, et me ei tea suure tõenäosusega täpseid hostinimesid ja porte eksemplaride käitamiseks enne tähtaega. Selle tulemusena kasutame kohatäitena väljamõeldud nime ja raamistik asendab tegeliku teabe, kui valib töötava eksemplari.
Järgmisena loome konfiguratsiooniklassi, mida kasutatakse meie teenuse eksemplari pakkumise loomiseks. Pange tähele, et kasutame sama varjunime, mis varem:
Nüüd saame luua tõelise kliendirakenduse. Saadame näidisserverisse 10 päringut, kasutades varasemat WebClienti uba:
Väljundist näeme, et tasakaalustame koormust kahe erineva eksemplari vahel:
Koormuse tasakaalustamine mikroteenustes
Mikroteenuste arhitektuuri kasutavad mitmed ettevõtted, nagu Netflix ja Amazon, et arendada ärirakendusi lõdvalt ühendatud teenuste komplektina. Komplekssete rakenduste hüperskaala ja pidev tarnimine on vaid kaks põhjust, miks minna üle sellele hajutatud, lõdvalt ühendatud arhitektuurile.
Nende ettevõtete meeskonnad on rakendanud strateegiaid Agile ja DevOps, et toota rakendusi kiiremini ja väiksema tõrkemääraga kui traditsioonilised meetodid. Siiski peate leidma tasakaalu hajutatud arhitektuuri keerukuse ja rakenduse nõudmiste, mastaabinõuete ja turule jõudmise aja piirangute vahel.
Nii palju aastaid on rakenduste edastamise kontrollerid (ADC-d) olnud kriitilise tähtsusega kohapeal või pilves hostitavate ettevõtterakenduste teenusetaseme nõuete täitmisel. Mikroteenustepõhise rakendusega tegelev klient ei pea teadma seda pakkuvate eksemplaride kohta, et klienti ja mikroteenuseid iseseisvalt kasvatada.
Just sellise lahtisidumise pakub pöördpuhverserver või koormuse tasakaalustaja. Jällegi on koormuse tasakaalustamine lahendus tagamaks, et mikroteenused saavad hakkama nõudluse, turvalisuse ja saadavusega.
Kui kombineerite traditsioonilise põhja-lõuna koormuse tasakaalustamise kliendi- ja mikroteenustepõhiste rakenduste vahel ida-lääne juurutamisega horisontaalse mastaapsuse tagamiseks, saate olulise tõuke. Eesmärgiks on säilitada IT-le vajalik turvaline ja reguleeritud keskkond, ilma et see ohverdaks arendusagarust või DevOpsi automatiseerimine nõuetele.
kasu
Koormuse tasakaalustamine pakub mitmesuguseid eeliseid, parandades ressursside kasutamist, andmete edastamist ja reageerimisaega suure liiklusega veebisaitide ja rakenduste ning andmebaaside jaoks, mis saavad palju päringuid. Koormuse tasakaalustamine tagab kasutajate soovide kiire ja korrektse täitmise suure liiklusega stsenaariumide korral.
Need säästavad kasutajaid loid programmide ja ressurssidega toimetulekust. Koormuse tasakaalustamine aitab vältida ka seisakuid ja lihtsustab turvalisust, vähendades teie ettevõtte tootlikkuse ja tulude kaotamise ohtu.
- Koormuse tasakaalustamine pakub lisaks liikluse optimaalse efektiivsuse haldamisele paindlikkust serverite lisamiseks ja eemaldamiseks, kui nõudlus seda nõuab. Kuna hoolduse ajal suunatakse liiklus teistele serveritele, on võimalik ka serveri hooldust teha ilma kasutajaid häirimata.
- Koormuse tasakaalustamine pakub sisseehitatud liiasust, jagades liikluse serverite komplekti vahel. Saate koormuse koheselt teistele serveritele suunata, kui üks ebaõnnestub, vähendades seeläbi mõju kasutajatele.
- Kui rakenduse või veebisaidi kasutus kasvab, võib suurenenud liiklus selle toimivust halvendada, kui seda ei käsitleta tõhusalt. Koormuse tasakaalustamise abil saate nõudluse rahuldamiseks lisada reaalse või virtuaalse serveri ilma teenust häirimata. Koormuse tasakaalustaja tuvastab uued serverid, kui need võrku tulevad, ja lülitab need hõlpsalt töösse. See meetod on eelistatavam kui veebisaidi migreerimine ülekoormatud serverist uude, mis sageli hõlmab mõningast seisakut.
Järeldus
Koormuse tasakaalustamine on tänapäevaste tõrketaluvate süsteemide oluline komponent. Saame lihtsalt luua rakendusi, mis jaotavad päringuid mitmele teenuse eksemplarile, kasutades erinevaid koormuse tasakaalustamise lähenemisviise. Rakenduste turvaliseks pakkumiseks peavad ettevõtted toetama keerulisi IT-süsteeme.
Domeenideüleste mikroteenuste konfigureerimine, juurutamine ja hooldus võib olla veatundlik, kulukas ja aeganõudev. IT peaks kasutama automatiseerimise, nähtavuse, analüüsi ja orkestreerimise parimaid tavasid ja tehnoloogiaid, mis ühilduvad nende agiilsete ja DevOpsi protsessidega, et muuta nende mikroteenuste seadistamine ja hooldus lihtsamaks.
Jäta vastus