Table di cuntinutu[Piattà][Mostra]
A dispunibilità di l'applicazioni ùn hè mai stata presa cum'è seriu cum'è oghje quandu usemu l'applicazioni per più di una cumunicazione, sia persunale sia prufessiunale è quandu l'applicazioni sò l'affari.
L'applicazioni chì ùn sò micca constantemente in linea, o sò instabili, perdenu i so utilizatori è a rilevanza, diventendu eventualmente obsoleti. Hè accadutu in un lampu. Perchè l'internet ùn dorme mai è opera 24 ore à ghjornu, 7 ghjorni à settimana, a stessa idea deve applicà à l'applicazioni.
A scalabilità hè critica per fà questu è assicurà a dispunibilità di l'applicazioni. L'equilibriu di carica hè unu di i cumpunenti più impurtanti per assicurà a dispunibilità. Parechje persone crèdenu sempre chì l'equilibriu di carica pò esse realizatu cù un script simplice.
Tuttavia, questu ùn hè micca u casu. Solu furnisce l'accessu à i prugrammi in tuttu u mondu - in ogni mumentu è da ogni dispusitivu.
In questu post, faremu un sguardu prufondu à l'equilibriu di carica, i so algoritmi, è cumu si tratta di i microservizi, frà altre cose. Cuminciamu !
Chì ghjè l'equilibriu di carica?
Cume a dumanda per un situ web o una applicazione cummerciale cresce, un servitore unicu serà prestu incapace di gestisce tutta a carica. L'urganisazioni distribuiscenu a carica di travagliu nantu à numerosi servitori per suddisfà a dumanda. Stu metudu, cunnisciutu cum'è "bilanciamentu di carica", mantene un solu servitore da esse sovraccaricatu, chì pò causà à rallentà, abbandunà e richieste, o ancu crash.
L'equilibriu di carica distribuisce u trafficu di a rete ugualmente per evità fallimentu per via di a sovraccarico di risorse. L'applicazioni, i siti web, e basa di dati è altre risorse di l'informatica facenu megliu è sò più dispunibili cù stu metudu. Aiuta ancu à u trattamentu propiu è puntuale di e dumande di l'utilizatori.
Da a perspettiva di l'utilizatore, u bilanciamentu di carica serve cum'è un intermediariu invisibili trà un cliente è una cullizzioni di servitori, assicurendu chì e richieste di cunnessione ùn sò micca abbandunate. L'applicazioni, i siti web, e basa di dati è i servizii in linea sò più probabili di colapsà se a dumanda diventava troppu grande senza bilanciamentu di carica.
Centinaie di millaie di richieste d'utilizatori ponu esse mandate à un unicu situ web à trafficu altu à u stessu tempu. Diversi servitori sò richiesti per populate currettamente e pagine web cù u cuntenutu dumandatu, cum'è testu, immagini, video è streaming audio. L'equilibriu di carica hè cumunimenti impiegatu in splutazioni di servitori di siti web à trafficu elevatu, è ancu in i servitori DNS, basa di dati è i siti FTP (File Transfer Protocol).
Se un servitore unicu hè overburdened, questu puderia funzionà male o ancu crash. L'equilibriu di carica riduce a probabilità di downtime distribuendu e richieste di l'utilizatori in modu uniforme trà una cullizzioni di servitori. Se unu di i servitori in u gruppu falla, u trafficu hè rerouted à altri servitori in u gruppu. Un balancer di carica aghjusta automaticamente novi servitori in u prucessu di distribuzione di u trafficu quandu sò aghjuntu à a piscina di u servitore.
Cumu funziona l'equilibriu di carica?
Funciona cusì:
- Quandu un cliente riceve una dumanda, cum'è via un navigatore o una applicazione, prova di cunnette cù u servitore.
- Quandu un balancer di carica riceve una dumanda, l'indirizza à unu di i servitori in un gruppu di servitori basatu nantu à mudelli stabiliti da l'algoritmu (o splutazioni).
- U servitore riceve a dumanda di cunnessione è risponde à u cliente attraversu u balancer di carica.
- Quandu u balancer di carica riceve a risposta, currisponde à l'indirizzu IP di u cliente cù l'indirizzu IP di u servitore sceltu. Dopu questu, a risposta hè trasmessa cù u pacchettu.
- L'offload SSL hè u prucessu di decifrare e dati utilizendu u protocolu di criptografia di Security Socket Layer per chì i servitori ùn anu micca bisognu.
- U prucessu hè ripetutu finu à chì a sessione hè finita.
I metudi di bilanciu di carica
Per selezziunà quale di i servitori in una splutazioni di u servitore riceve a prossima dumanda, ogni tecnica di equilibriu di carica usa un inseme di criteri. Ci sò cinque approcci tipici per l'equilibriu di carica:
- Round Robins: Questu hè l'approcciu predeterminatu, è funziona cum'è si sona. U balancer di carica distribuisce e dumande in un mudellu rotativu, cuminciendu cù u primu servitore in u gruppu è prucede finu à u fondu, induve aspetta per esse chjamatu novu. Stu metudu assicura chì ogni servitore gestisce quasi u listessu numeru di cunnessione.
- Round Robin ponderatu: Stu approcciu assigna à ogni servitore un pesu (o preferenza) chì hè generalmente proporzionale à a so capacità. Quantu più richieste riceve un servitore, più altu hè u pesu. Per esempiu, un servitore cù un valore di pesu di dui riceve duie volte più richieste cum'è un servitore cù un valore di pesu di unu.
- Session Sticky: Stu approcciu, cunnisciutu ancu persistenza di sessione, cunnetta certi clienti è servitori per a durata di una sessione. Per stabilisce u ligame, u balancer di carica usa una cookie o l'indirizzu IP di l'utilizatore per identificà un attributu d'utilizatore. Una volta chì a cunnessione hè stabilita, e dumande di l'utilizatori sò diretti à u stessu servitore finu à a fine di a sessione. Questu ottimisimu e risorse di a rete è ancu migliurà l'esperienza d'utilizatore.
- Cunnessioni Minimi: Questa strategia assume chì tutte e dumande risultatu in una carica di u servitore uguale. In u risultatu, u servitore cù u più chjucu numeru di richieste riceve a dumanda dopu.
- IP Hash: Stu algoritmu genera una chjave hash unica basata nantu à l'indirizzi IP di fonte è di destinazione di u cliente è u servitore. A chjave hè usata per indirizzà a dumanda è permette una cunnessione persa cù u stessu servitore per esse ripresa.
Hardware vs. Equilibrati di carica di software
Balancer di carica di hardware
L'hardware fisicu, cum'è un appliance, custituiscenu i bilanci di carica di hardware. Queste rotte u trafficu à i servitori secondu fatturi cum'è u numeru di cunnessione esistenti, l'usu di u processatore è u rendiment di u servitore. L'equilibriu di carica di hardware anu un firmware proprietariu chì deve esse mantinutu è aghjurnatu quandu e novi versioni è correzioni di sicurezza sò dispunibili.
L'equilibriu di carica di hardware spessu furnisce un rendimentu è un cuntrollu più altu, è ancu una gamma più larga di capacità cum'è l'autenticazione Kerberos è l'accelerazione hardware SSL, ma necessitanu un certu livellu di sapè fà di gestione è mantenimentu. Siccomu i equilibratori di carica di hardware sò menu flessibili è scalabili cà i equilibratori di carica di software, ci hè una propensione à sopravvivere equilibratori di carica hardware.
Software Load Balancer
I equilibratori di carica di software sò generalmente più faciuli di stallà cà i so omologhi hardware. Sò ancu più costuali è adattabili, è funzionanu bè cù l'ambienti di sviluppu di software. U metudu di u software permette di persunalizà u bilanciu di carica à i bisogni precisi di u vostru ambiente. A flessibilità aumentata pò vene à a spesa di u tempu supplementu passatu per installà u bilanciatore di carica.
I equilibratori di software vi furniscenu una flessibilità più grande per fà mudificazioni è aghjurnamenti cà quelli di hardware, chì anu un approcciu più chjusu. E macchine virtuali preimballate ponu esse aduprate cum'è equilibratori di carica di software (VM). E macchine virtuali vi risparmianu un pocu di tempu di paràmetri, ma ùn anu micca avè tutte e funziunalità dispunibili in i so omologhi hardware.
Implementazione simplice di equilibriu di carica
Avemu aduprà a biblioteca Spring Cloud per custruisce app chì cunnette à altre app in una manera equilibrata di carica. Mentre trasfurmemu e richieste di serviziu remoti, pudemu facilmente custruisce un equilibriu di carica cù qualsiasi tecnica chì ci piace. Cunsiderate u codice seguente cum'è un esempiu. Cuminciaremu cù una applicazione di servitore basica.
U servitore averà solu un endpoint HTTP è serà operatu in parechji casi. Allora custruiremu una app clientella chì usa Load Balancer per distribuisce e richieste in parechje istanze di u servitore.
Servidor
Cuminciamu cù una basa Stivali di primavera applicazione per u nostru servitore di esempiu:
Per cumincià, injectemu una variabile persunalizabile chjamata instance_ID. Questu ci aiuta à distingue trà numerosi casi chì operanu. Dopu quì, creemu un unicu puntu finale HTTP GET chì torna un missaghju è l'ID d'istanza.
L'istanza predeterminata cù l'ID 1 operarà in u portu 8080. Avemu solu bisognu di aghjunghje uni pochi di parametri di prugramma per lancià una seconda istanza:
Client
Andemu avà un ochju à u codice cliente. Questu hè induve Load Balancer entra, dunque cuminciamu à incorpore in a nostra applicazione:
Dopu quì, sviluppemu una implementazione di ServiceInstanceListSupplier. Questa hè una di e interfacce più impurtanti in Load Balancer. Specifica cumu situemu l'istanze di serviziu accessibili.
Codificaremu duru dui casi separati di u nostru servitore di esempiu in a nostra applicazione di mostra. Funzionanu nantu à u stessu sistema, ma utilizanu porti separati:
Crea una classe LoadBalancerConfiguration avà:
Questa classa hà solu un scopu: crea un builder WebClient equilibratu di carica per fà richieste remote. A nostra annotazione impiega un nome fittizio per u serviziu.
Questu hè duvuta à u fattu chì assai prubabilmente ùn sapemu micca i nomi d'ospiti precisi è i porti per eseguisce l'istanze in anticipu. In u risultatu, utilizemu un nome fittiziu cum'è un locu, è u quadru rimpiazzà l'infurmazioni attuali quandu selezziunate una istanza in esecuzione.
In seguitu, femu una classa di cunfigurazione chì serà aduprata per istanzià a nostra offerta d'istanza di serviziu. Pigliate a nota chì usemu u listessu alias cum'è prima:
Pudemu avà custruisce a vera applicazione cliente. Mandemu 10 dumande à u servitore di mostra utilizendu u bean WebClient da prima:
Pudemu vede da l'output chì simu equilibrati di carica trà dui casi separati:
Bilanciamentu di carica in i microservizi
L'architettura di u microserviziu hè aduprata da parechje cumpagnie, cum'è Netflix è Amazon, per sviluppà applicazioni cummerciale cum'è un inseme di servizii cunnessi. L'iperscale è a spedizione cuntinuu per l'applicazioni complicate sò solu dui di i motivi per passà à questa architettura distribuita, liberamente cunnessa.
I squadre di queste imprese anu implementatu strategie Agile è DevOps per pruduce l'applicazioni più veloce è cù un tassu di fallimentu più bassu cà i metudi tradiziunali. Tuttavia, duvete truvà un equilibriu trà a cumplessità di l'architettura distribuita è e richieste di l'applicazione, i requisiti di scala è e limitazioni di tempu à u mercatu.
Per tanti anni, i controller di consegna di l'applicazioni (ADC) sò stati critichi per risponde à i requisiti di u livellu di serviziu per l'applicazioni corporative ospitate in situ o in u nuvulu. Un cliente impegnatu cù una applicazione basata in microservizi ùn hà micca bisognu di sapè nantu à l'istanze chì li furnianu per fà cresce u cliente è i microservizi indipindentamente.
Questu hè precisamente u disaccoppiamentu furnitu da un proxy inversu o un equilibratore di carica. In novu, u bilanciamentu di carica hè a suluzione per assicurà chì i microservizi ponu trattà a dumanda, a sicurità è a dispunibilità.
Quandu combina u tradiziunale bilanciamentu di carica Nordu-Sud trà applicazioni basate nantu à i clienti è i microservizi cù l'implementazione Est-Ovest per a scalabilità horizontale, uttene un impulso sustanziale. L'ughjettu hè di mantene l'ambiente sicuru è regulatu necessariu da l'IT senza sacrificà l'agilità di sviluppu o Automazione DevOps I bisogni.
benefici
L'equilibriu di carica furnisce diversi benefici per migliurà l'utilizazione di e risorse, a consegna di dati è u tempu di risposta per i siti web è l'applicazioni d'altu trafficu, è ancu e basa di dati chì ricevenu un gran numaru di dumande. L'equilibriu di carica assicura chì e richieste di l'utilizatori sò soddisfatte rapidamente è currettamente in scenarii d'altu trafficu.
Salvanu l'utilizatori l'aggravamentu di trattà cù prugrammi è risorse lenti. L'equilibriu di carica aiuta ancu à evità i tempi di inattività è simplificà a sicurità, riducendu u risicu di perdita di produttività è di guadagni per a vostra cumpagnia.
- L'equilibriu di carica furnisce a flessibilità per aghjunghje è caccià i servitori cum'è a dumanda impone, in più di gestisce u trafficu à l'efficienza ottima. Perchè u trafficu hè sviatu à altri servitori durante u mantenimentu, hè ancu fattibile di fà u mantenimentu di u servitore senza disturbà l'utilizatori.
- L'equilibriu di carica furnisce una redundanza integrata dividendu u trafficu trà un inseme di servitori. Pudete svià immediatamente a carica à altri servitori se unu falla, minimizendu l'impattu nantu à l'utilizatori.
- Se l'applicazione o l'usu di u situ web cresce, u trafficu aumentatu puderia degradà u so rendimentu s'ellu ùn hè micca trattatu in modu efficace. Cù l'equilibriu di carica, pudete aghjunghje un servitore reale o virtuale per risponde à a dumanda senza disturbà u serviziu. U bilanciatore di carica identifica i novi servitori mentre sò in linea è li incorpora senza sforzu in l'operazione. Stu metudu hè preferibile à a migrazione di un situ web da un servitore overburdened à un novu, chì spessu implica un pocu di downtime.
cunchiusioni
L'equilibriu di carica hè un cumpunente criticu di i sistemi cuntempuranei, toleranti à i difetti. Pudemu simpricimenti custruisce app chì distribuiscenu richieste à parechje istanze di serviziu utilizendu diversi approcci di bilanciamentu di carica. L'imprese devenu sustene sistemi informatici complicati per furnisce l'applicazioni in modu sicuru.
A cunfigurazione, l'implementazione è u mantenimentu di i microservizi cross-domain pò esse propensu à l'errore, caru è di tempu. L'IT deve aduprà l'automatizazione, a visibilità, l'analisi è l'orchestrazione e migliori pratiche è tecnulugia chì sò cumpatibili cù i so prucessi agili è DevOps per fà a stallazione è u mantenimentu di sti microservizi più faciule.
Lascia un Audiolibro