Innholdsfortegnelse[Gjemme seg][Forestilling]
Tilgjengeligheten av applikasjoner har aldri blitt tatt så seriøst som i dag når vi bruker apper til mer enn bare kommunikasjon, enten det er personlig eller profesjonelt og når apper er forretningen.
Applikasjoner som ikke hele tiden er online, eller som er ustabile, mister brukere og relevans, og blir til slutt foreldet. Det skjedde på et blunk. Fordi internett aldri sover og fungerer 24 timer i døgnet, 7 dager i uken, må den samme ideen gjelde for apper.
Skalerbarhet er avgjørende for å gjøre dette og sikre applikasjonstilgjengelighet. Lastbalansering er en av de viktigste komponentene for å sikre tilgjengelighet. Mange tror fortsatt at lastbalansering kan oppnås med et enkelt skript.
Dette er imidlertid ikke tilfelle. Den alene gir tilgang til programmer over hele verden - når som helst og fra hvilken som helst enhet.
I dette innlegget skal vi ta en dyp titt på lastbalansering, dens algoritmer og hvordan den forholder seg til mikrotjenester, blant annet. La oss begynne!
Hva er lastbalansering?
Etter hvert som etterspørselen etter et nettsted eller forretningsapplikasjon vokser, vil en enkelt server snart ikke kunne håndtere hele belastningen. Organisasjoner fordeler arbeidsmengden over en rekke servere for å tilfredsstille etterspørselen. Denne metoden, kjent som «belastningsbalansering», forhindrer at en enkelt server blir overbelastet, noe som kan føre til at den går tregere, dropper forespørsler eller til og med krasjer.
Lastbalansering fordeler nettverkstrafikken likt for å unngå feil på grunn av ressursoverbelastning. Applikasjoner, nettsteder, databaser og andre dataressurser gir bedre resultater og er mer tilgjengelige ved å bruke denne metoden. Det hjelper også med riktig og rettidig behandling av brukerforespørsler.
Fra brukerens perspektiv fungerer lastbalansering som et usett mellomledd mellom en klient og en samling av servere, og sikrer at tilkoblingsforespørsler ikke blir droppet. Applikasjoner, nettsider, databaser og nettjenester ville mest sannsynlig kollapset hvis etterspørselen ble for stor uten lastbalansering.
Hundretusenvis av brukerforespørsler kan sendes til et enkelt nettsted med høy trafikk på samme tid. Det kreves flere servere for å fylle ut nettsider med det forespurte innholdet, for eksempel tekst, bilder, video og lydstrømming. Lastbalansering brukes ofte i nettstedsserverfarmer med høy trafikk, så vel som DNS-servere, databaser og File Transfer Protocol (FTP) nettsteder.
Hvis en enkelt server er overbelastet, kan dette fungere dårlig eller til og med krasje. Lastbalansere reduserer sjansen for nedetid ved å fordele brukerforespørsler jevnt mellom en samling servere. Hvis en av serverne i gruppen svikter, blir trafikken omdirigert til andre servere i gruppen. En lastbalanser legger automatisk til nye servere i trafikkdistribusjonsprosessen når de legges til serverpoolen.
Hvordan fungerer lastbalansering?
Det fungerer som følger:
- Når en klient mottar en forespørsel, for eksempel via en nettleser eller en applikasjon, prøver den å koble seg til serveren.
- Når en lastbalanser mottar en forespørsel, ruter den den til en av serverne i en servergruppe basert på etablerte mønstre av algoritmen (eller farmen).
- Serveren mottar tilkoblingsforespørselen og svarer klienten gjennom lastbalanseren.
- Når lastbalanseren mottar svaret, matcher den IP-adressen til klienten med IP-adressen til den valgte serveren. Etter det blir svaret overført med pakken.
- SSL-avlastning er prosessen med å dekryptere data ved å bruke Security Socket Layer-krypteringsprotokollen slik at servere ikke trenger det.
- Prosessen gjentas til økten er over.
Lastbalanseringsmetoder
For å velge hvilken av serverne i en serverfarm som mottar den neste forespørselen, bruker hver lastbalanseringsteknikk et sett med kriterier. Det er fem typiske tilnærminger for lastbalansering:
- Round Robin: Dette er standardtilnærmingen, og den fungerer akkurat som den høres ut. Lastbalanseren distribuerer forespørsler i et roterende mønster, og starter med den første serveren i gruppen og fortsetter ned til bunnen, hvor den venter på å bli anropt igjen. Denne metoden sikrer at hver server håndterer omtrent samme antall tilkoblinger.
- Vektet Round Robin: Denne tilnærmingen tildeler hver server en vekt (eller preferanse) som generelt er proporsjonal med dens kapasitet. Jo flere forespørsler en server mottar, jo høyere vekt. For eksempel mottar en server med en vektverdi på to dobbelt så mange forespørsler som en server med en vektverdi på én.
- Sticky Session: Denne tilnærmingen, også kjent som session persistence, kobler sammen bestemte klienter og servere under varigheten av en økt. For å etablere koblingen bruker lastbalanseren en informasjonskapsel eller brukerens IP-adresse for å identifisere et brukerattributt. Når tilkoblingen er opprettet, sendes brukerens forespørsler til samme server til økten avsluttes. Dette optimerer nettverksressurser samtidig som det forbedrer brukeropplevelsen.
- Minst tilkoblinger: Denne strategien forutsetter at alle forespørsler resulterer i en lik serverbyrde. Som et resultat mottar serveren med det minste antallet forespørsler den neste forespørselen.
- IP Hash: Denne algoritmen genererer en unik hash-nøkkel basert på klientens og serverens kilde- og destinasjons-IP-adresser. Nøkkelen brukes til å rute forespørselen og lar en tapt forbindelse med samme server gjenopptas.
Maskinvare vs. Programvare lastbalansere
Maskinvarebelastningsbalanser
Fysisk maskinvare, for eksempel et apparat, utgjør maskinvarelastbalansere. Disse ruter trafikk til servere avhengig av faktorer som antall eksisterende tilkoblinger, prosessorbruk og serverytelse. Maskinvarelastbalansere har proprietær fastvare som må vedlikeholdes og oppdateres når nye versjoner og sikkerhetsrettinger blir tilgjengelige.
Maskinvarelastbalansere gir ofte høyere ytelse og kontroll, i tillegg til et bredere spekter av funksjoner som Kerberos-autentisering og SSL-maskinvareakselerasjon, men de krever et visst nivå av administrasjons- og vedlikeholdsekspertise. Fordi maskinvarelastbalansere er mindre fleksible og skalerbare enn programvarelastbalansere, er det en tilbøyelighet til å overdisponere maskinvarelastbalansere.
Programvare Load Balancer
Programvarelastbalansere er vanligvis enklere å sette opp enn sine maskinvaremotparter. De er også mer kostnadseffektive og tilpasningsdyktige, og de fungerer godt med programvareutviklingsmiljøer. Programvaremetoden lar deg tilpasse lastbalanseren til miljøets eksakte krav. Den økte fleksibiliteten kan komme på bekostning av ekstra tid brukt på å sette opp lastbalanseren.
Programvarebalansere gir deg større fleksibilitet til å gjøre endringer og oppdateringer enn maskinvare, som har en mer lukket boks. Ferdigpakkede virtuelle maskiner kan brukes som programvarelastbalansere (VM). Virtuelle maskiner vil spare deg for litt innstillingstid, men de har kanskje ikke all funksjonaliteten tilgjengelig i maskinvaremotpartene.
Enkel implementering av lastbalansering
Vi vil bruke Spring Cloud-biblioteket til bygge apper som kobler til andre apper på en belastningsbalansert måte. Mens vi behandler eksterne serviceforespørsler, kan vi enkelt konstruere lastbalansering ved å bruke hvilken teknikk vi liker. Tenk på følgende kode som et eksempel. Vi begynner med en grunnleggende serverapplikasjon.
Serveren vil bare ha ett HTTP-endepunkt og vil bli operert i flere tilfeller. Deretter bygger vi en klientapp som bruker Load Balancer til å distribuere forespørsler på tvers av flere serverinstanser.
Server
Vi begynner med en grunnleggende Vårstøvel applikasjon for vår eksempelserver:
Til å begynne med injiserer vi en tilpassbar variabel kalt instance_ID. Dette hjelper oss å skille mellom mange instanser som er i drift. Etter det oppretter vi et enkelt HTTP GET-endepunkt som returnerer en melding og forekomst-ID.
Standardforekomsten med ID 1 vil fungere på port 8080. Vi trenger bare å legge til noen få programparametere for å starte en andre forekomst:
kunde
La oss nå se på klientkoden. Det er her Load Balancer kommer inn, så la oss begynne med å inkorporere den i applikasjonen vår:
Etter det utvikler vi en implementering av ServiceInstanceListSupplier. Dette er et av de viktigste grensesnittene i Load Balancer. Den spesifiserer hvordan vi finner tilgjengelige tjenesteforekomster.
Vi hardkode to separate forekomster av eksempelserveren vår i eksempelapplikasjonen vår. De kjører på samme system, men bruker separate porter:
Opprett en LoadBalancerConfiguration-klasse nå:
Denne klassen har bare ett formål: den lager en belastningsbalansert WebClient-bygger for å lage eksterne forespørsler. Vår merknad bruker et fiktivt navn for tjenesten.
Dette er på grunn av det faktum at vi mest sannsynlig ikke vil vite de nøyaktige vertsnavnene og portene for å kjøre forekomster på forhånd. Som et resultat bruker vi et fiktivt navn som plassholder, og rammeverket vil erstatte faktisk informasjon når det velger en kjørende forekomst.
La oss deretter lage en konfigurasjonsklasse som vil bli brukt til å instansiere vår tjenesteforekomstforsyning. Vær oppmerksom på at vi bruker samme alias som før:
Vi kan nå bygge den virkelige klientapplikasjonen. La oss sende 10 spørringer til prøveserveren ved å bruke WebClient-bønnen fra tidligere:
Vi kan se fra utdataene at vi lastbalanserer mellom to separate forekomster:
Lastbalansering i mikrotjenester
Mikrotjenestearkitektur brukes av flere selskaper, som Netflix og Amazon, for å utvikle forretningsapplikasjoner som et sett med løst tilkoblede tjenester. Hyperskalering og kontinuerlig levering for kompliserte applikasjoner er bare to av grunnene til å gå over til denne distribuerte, løst koblede arkitekturen.
Disse foretakenes team har implementert Agile- og DevOps-strategier for å produsere apper raskere og med lavere feilrate enn tradisjonelle metoder. Du må imidlertid finne en balanse mellom den distribuerte arkitekturens kompleksitet og applikasjonens krav, skaleringskrav og tids-til-markedsbegrensninger.
I så mange år har applikasjonsleveringskontrollere (ADCer) vært avgjørende for å oppfylle tjenestenivåkravene for bedriftsapplikasjoner som er vert på stedet eller i skyen. En klient som engasjerer seg i en mikrotjenestebasert applikasjon trenger ikke å vite om forekomstene som leverer den for å utvide klienten og mikrotjenester uavhengig.
Dette er nettopp frakoblingen gitt av en omvendt proxy eller en lastbalanser. Igjen, lastbalansering er løsningen for å sikre at mikrotjenester kan håndtere etterspørsel, sikkerhet og tilgjengelighet.
Når du kombinerer tradisjonell nord-sør-belastningsbalansering mellom klient- og mikrotjenester-baserte apper med øst-vest-distribusjon for horisontal skalerbarhet, får du et betydelig løft. Målet er å opprettholde det trygge og regulerte miljøet som kreves av IT uten å ofre utviklingssmidighet eller DevOps automatisering krav.
Fordeler
Lastbalansering gir ulike fordeler ved å forbedre ressursutnyttelse, datalevering og responstid for nettsteder og apper med høy trafikk, samt databaser som mottar et stort antall søk. Lastbalansering sikrer at brukerforespørsler oppfylles raskt og riktig i scenarier med mye trafikk.
De sparer brukere for forverringen av å håndtere trege programmer og ressurser. Lastbalansering bidrar også til å unngå nedetid og forenkler sikkerheten, og reduserer risikoen for tapt produktivitet og inntjening for din bedrift.
- Lastbalansering gir fleksibiliteten til å legge til og fjerne servere etter behov, i tillegg til å administrere trafikk til optimal effektivitet. Fordi trafikk blir viderekoblet til andre servere under vedlikehold, er det også mulig å utføre servervedlikehold uten å forstyrre brukerne.
- Lastbalansering gir innebygd redundans ved å dele trafikk mellom et sett med servere. Du kan umiddelbart omdirigere belastningen til andre servere hvis en svikter, noe som minimerer innvirkningen på brukerne.
- Hvis bruken av en applikasjon eller et nettsted øker, kan den økte trafikken forringe ytelsen hvis den ikke håndteres effektivt. Med lastbalansering kan du legge til en ekte eller virtuell server for å møte etterspørselen uten å forstyrre tjenesten. Lastbalanseren identifiserer nye servere etter hvert som de kommer online og integrerer dem enkelt i driften. Denne metoden er å foretrekke fremfor å migrere et nettsted fra en overbelastet server til en ny, som ofte innebærer noe nedetid.
konklusjonen
Lastbalansering er en kritisk komponent i moderne, feiltolerante systemer. Vi kan ganske enkelt konstruere apper som distribuerer forespørsler til flere tjenesteinstanser ved å bruke ulike tilnærminger for belastningsbalansering. Virksomheter må støtte kompliserte IT-systemer for å kunne tilby applikasjoner sikkert.
Konfigurasjon, distribusjon og vedlikehold av mikrotjenester på tvers av domener kan være utsatt for feil, dyrt og tidkrevende. IT bør bruke best practices og teknologier for automatisering, synlighet, analyse og orkestrering som er kompatible med deres smidige og DevOps-prosesser for å gjøre oppsett og vedlikehold av disse mikrotjenestene enklere.
Legg igjen en kommentar