Lastbalansering av Node.js-apper
Forstå hvordan lastbalanserere fordeler trafikk, og konfigurer dem for Node.js-backend-løsningen din for å øke tilgjengeligheten.
Lastbalansering av Node.js-apper er en gratis leksjon i Bootcamp i backendutvikling med Node.js på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Bootcamp i backendutvikling med Node.js, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Bootcamp i backendutvikling med Node.js inneholder totalt 4 leksjoner.
Hva er lastbalansering?
Se for deg en populær restaurant med bare én kokk. Hvis det kommer inn for mange bestillinger, må kundene vente eller gå! Lastbalansering er som å ansette flere kokker og en smart leder som fordeler bestillingene effektivt.
I webutvikling fordeler en lastbalanserer innkommende nettverkstrafikk mellom flere servere. Dette hindrer at én enkelt server blir en flaskehals og sørger for at applikasjonen forblir responsiv.

Node.js og behovet for skalerbarhet
Node.js er kjent for ikke-blokkerende I/O og effektivitet. En enkelt Node.js-prosess kjører imidlertid på én enkelt CPU-kjerne. For å håndtere flere brukere eller stor belastning trenger du:
- Skalering: Kjør flere Node.js-instanser for å utnytte flere CPU-kjerner og mer minne.
- Høy tilgjengelighet: Hvis én instans svikter, kan andre ta over og hindre nedetid.
Lastbalanserere er avgjørende for å oppnå både skalerbarhet og høy tilgjengelighet for Node.js-applikasjonene dine.
Slik fungerer lastbalanserere
Tenk på lastbalansereren som en trafikkbetjent. Når en forespørsel kommer inn, går den ikke direkte til én server. Den treffer først lastbalansereren.
Lastbalansereren avgjør deretter hvilken av de tilgjengelige backend-serverne (eller «instansene») som er best egnet til å håndtere forespørselen, og videresender den dit. Klienten vet aldri hvilken spesifikk server som behandlet forespørselen.
Fordelingsalgoritmer
Lastbalanserere bruker ulike algoritmer for å avgjøre hvor trafikken skal sendes:
- Round Robin: Fordeler forespørsler sekvensielt til hver server i utvalget. Server A får den første, server B den andre, deretter C og så tilbake til A. Enkelt og rettferdig.
- Færrest tilkoblinger: Sender forespørselen til serveren med færrest aktive tilkoblinger. Dette passer godt for servere som kan ha ulik behandlingstid.
Det finnes også andre metoder, som IP Hash (for klebrige økter) eller Weighted Round Robin.
Nginx som lastbalanserer
Selv om det finnes maskinvarebaserte lastbalanserere, er programvarebaserte lastbalanserere vanlige og fleksible. Et populært valg er Nginx (uttales «engine-X»).
Nginx er en høytytende webserver som også kan fungere som reverse proxy og lastbalanserer. Den brukes ofte foran Node.js-applikasjoner for å håndtere trafikk og forbedre ytelse og sikkerhet.
Eksempel på Node.js-instans
La oss lage en enkel Node.js-server. Vi simulerer flere instanser ved å kjøre den samme koden på ulike porter. Denne serveren svarer med portnummeret sitt, slik at vi kan se hvilken instans som håndterte forespørselen.
Prøv å kjøre dette eksempelet:
const http = require('http');
const port = process.env.PORT || 3000;
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end(`Hello from Node.js instance on port ${port}!\n`);
});
server.listen(port, () => {
console.log(`Server running on port ${port}`);
});En annen Node.js-instans
Dette er den samme Node.js-applikasjonen som tidligere, men tenk deg at den kjører som en separat prosess, kanskje på en annen server eller bare på en annen port (for eksempel 3001) på samme maskin.
En lastbalanserer ville fordelt forespørsler mellom denne instansen og instansen på port 3000.
Hvis du skulle kjøre dette lokalt, ville du angitt miljøvariabelen PORT før du kjørte skriptet (for eksempel PORT=3001 node app.js).
const http = require('http');
const port = process.env.PORT || 3001; // Changed default port for instance 2
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end(`Hello from Node.js instance on port ${port}!\n`);
});
server.listen(port, () => {
console.log(`Server running on port ${port}`);
});Konseptet upstream i Nginx
For å lastbalansere Node.js-instansene våre med Nginx må du definere en upstream-blokk som viser backend-serverne. Deretter vil en server-blokk videresende forespørsler til denne upstream-gruppen.
Her er et konseptuelt konfigurasjonsutdrag for Nginx:
http {
upstream my_nodejs_app {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://my_nodejs_app;
}
}
}Nginx ville lytte på port 80 og fordele forespørsler til portene 3000 og 3001 med Round Robin som standardstrategi.
Flere fordeler med lastbalanserere
Lastbalanserere gjør mer enn bare å fordele trafikk:
- Feiltoleranse: Hvis en server går ned, slutter lastbalansereren automatisk å sende forespørsler til den og omdirigerer trafikken til friske servere.
- SSL-terminering: De kan håndtere SSL/TLS-kryptering og -dekryptering, slik at backend-Node.js-serverne dine avlastes for dette arbeidet.
- Vedvarende økter (klebrige økter): Kan sørge for at en brukers forespørsler alltid går til den samme backend-serveren, noe som er viktig for enkelte applikasjoner.
Kort kontroll: Lastbalansering
Hvilke av følgende er viktige fordeler ved å bruke en lastbalanserer for en Node.js-applikasjon?
Oppsummering: Kraften i lastbalansering
De har lært at belastningsbalansering er avgjørende for å skalere Node.js-applikasjoner og sikre høy tilgjengelighet. Ved å fordele innkommende forespørsler på flere backend-instanser hindrer belastningsbalanserere flaskehalser og gir feiltoleranse.
Verktøy som Nginx brukes ofte til å implementere programvarebasert belastningsbalansering og tilbyr ulike algoritmer for effektiv trafikkhåndtering. Denne arkitekturen er avgjørende for robuste applikasjoner av produksjonskvalitet.
Lær deg JavaScript med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 22
- Leksjoner
- 92
Ofte stilte spørsmål
Er leksjonen «Lastbalansering av Node.js-apper» gratis?
Ja – hele teksten i «Lastbalansering av Node.js-apper» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Bootcamp i backendutvikling med Node.js-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Bootcamp i backendutvikling med Node.js inneholder totalt 4 leksjoner.
Hva lærer jeg i «Lastbalansering av Node.js-apper»?
Forstå hvordan lastbalanserere fordeler trafikk, og konfigurer dem for Node.js-backend-løsningen din for å øke tilgjengeligheten. Du øver på Bootcamp i backendutvikling med Node.js med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Bootcamp i backendutvikling med Node.js?
Ingen tidligere erfaring er nødvendig. Bootcamp i backendutvikling med Node.js på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Lastbalansering av Node.js-apper»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Bootcamp i backendutvikling med Node.js-leksjonen?
Ja. Alle Bootcamp i backendutvikling med Node.js-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Bufringsstrategier for Node.js
- Lastbalansering av Node.js-apper
- Optimalisere Node.js-hendelsesløkken
- Profilering og oppdaging av minnelekkasjer