Bootcamp i backendudvikling med Node.js · Lektion

Load balancing af jeres Node.js-apps

Forstå, hvordan load balancere fordeler trafik, og konfigurér dem til jeres Node.js-backend for at øge tilgængeligheden.

Lektion 2 af 411 trin

Load balancing af jeres Node.js-apps er en gratis Bootcamp i backendudvikling med Node.js-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Bootcamp i backendudvikling med Node.js, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Bootcamp i backendudvikling med Node.js-kurset indeholder 4 lektioner i alt.

Hvad er load balancing?

Forestil dig en populær restaurant med kun én kok. Hvis der kommer for mange bestillinger, må kunderne vente eller går deres vej! Load balancing svarer til at ansætte flere kokke og en intelligent leder, der fordeler bestillingerne effektivt.

I webudvikling fordeler en load balancer indkommende netværkstrafik på flere servere. Det sikrer, at ingen enkelt server bliver en flaskehals, så din applikation forbliver responsiv.

Load balancing af jeres Node.js-apps — illustration 1

Node.js og behovet for skalerbarhed

Node.js er kendt for sin ikke-blokerende I/O og effektivitet. En enkelt Node.js-proces kører dog på én CPU-kerne. Hvis du vil håndtere flere brugere eller stor belastning, har du brug for:

  • Skalering: Kør flere Node.js-instanser for at udnytte flere CPU-kerner og mere hukommelse.
  • Høj tilgængelighed: Hvis én instans svigter, kan andre tage over og forhindre nedetid.

Load balancere er afgørende for at opnå både skalerbarhed og høj tilgængelighed i dine Node.js-applikationer.

Sådan fungerer load balancere

Tænk på load balanceren som en trafikbetjent. Når der kommer en forespørgsel, går den ikke direkte til én server. I stedet rammer den først load balanceren.

Load balanceren afgør derefter, hvilken af de tilgængelige backend-servere (eller "instanser") der er bedst egnet til at håndtere forespørgslen, og videresender den. Klienten ved aldrig, hvilken specifik server der behandlede forespørgslen.

Fordelingsalgoritmer

Load balancere bruger forskellige algoritmer til at afgøre, hvor trafikken skal sendes hen:

  • Round Robin: Fordeler forespørgsler sekventielt til hver server i puljen. Server A får den første, server B den anden, derefter C og så tilbage til A. Enkelt og retfærdigt.
  • Færrest forbindelser: Sender forespørgslen til den server, der har færrest aktive forbindelser. Det er velegnet til servere, hvor behandlingstiden kan variere.

Der findes også andre metoder, såsom IP Hash (til klæbrige sessioner) eller Weighted Round Robin.

Nginx som load balancer

Selvom der findes hardware-load balancere, er software-load balancere almindelige og fleksible. Et populært valg er Nginx (udtales "engine-X").

Nginx er en webserver med høj ydeevne, der også kan fungere som reverse proxy og load balancer. Den bruges ofte foran Node.js-applikationer til at håndtere trafik og forbedre ydeevne og sikkerhed.

Eksempel på Node.js-instans

Lad os oprette en enkel Node.js-server. Vi simulerer flere instanser ved at køre den samme kode på forskellige porte. Denne server svarer med sit portnummer, så vi kan se, hvilken instans der håndterede forespørgslen.

Prøv at køre dette eksempel:

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}`);
});

Endnu en Node.js-instans

Dette er den samme Node.js-applikation som før, men forestil dig, at den kører som en separat proces, måske på en anden server eller blot på en anden port (for eksempel 3001) på den samme maskine.

En load balancer ville fordele forespørgsler mellem denne instans og instansen på port 3000.

Hvis du ville køre dette lokalt, skulle du indstille miljøvariablen PORT, før du kører scriptet (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}`);
});

Nginx' upstream-koncept

Hvis du vil load balance vores Node.js-instanser med Nginx, skal du definere en upstream-blok, der oplister dine backend-servere. Derefter kan en server-blok proxye forespørgsler til denne upstream-gruppe.

Her er et konceptuelt uddrag af en Nginx-konfiguration:

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ørgsler til port 3000 og 3001 med Round Robin som standardstrategi.

Flere fordele ved load balancere

Load balancere tilbyder mere end blot at fordele trafik:

  • Fejltolerance: Hvis en server går ned, holder load balanceren automatisk op med at sende forespørgsler til den og omdirigerer trafikken til sunde servere.
  • SSL-terminering: De kan håndtere SSL/TLS-kryptering og -dekryptering, så dine backend-Node.js-servere aflastes for dette arbejde.
  • Sessionspersistens (klæbrige sessioner): Kan sikre, at en brugers forespørgsler altid sendes til den samme backend-server, hvilket er vigtigt for nogle applikationer.

Hurtigt tjek: Load balancing

Hvilke af følgende er vigtige fordele ved at bruge en load balancer til en Node.js-applikation?

Opsummering: Load balancingens styrke

Du har lært, at load balancing er afgørende for at skalere Node.js-applikationer og sikre høj tilgængelighed. Ved at fordele indgående forespørgsler på flere backend-instanser forhindrer load balancere flaskehalse og giver fejltolerance.

Værktøjer som Nginx bruges ofte til at implementere load balancing i software og tilbyder forskellige algoritmer til effektiv håndtering af trafik. Denne arkitektur er afgørende for robuste applikationer i produktionskvalitet.

Gratis at komme i gang

Lær JavaScript med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
22
Lektioner
92

Ofte stillede spørgsmål

Er lektionen “Load balancing af jeres Node.js-apps” gratis?

Ja — hele teksten til “Load balancing af jeres Node.js-apps” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Bootcamp i backendudvikling med Node.js-kurset, skal du opgradere til CoddyKit PRO. Bootcamp i backendudvikling med Node.js-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Load balancing af jeres Node.js-apps”?

Forstå, hvordan load balancere fordeler trafik, og konfigurér dem til jeres Node.js-backend for at øge tilgængeligheden. Du øver dig i Bootcamp i backendudvikling med Node.js med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Bootcamp i backendudvikling med Node.js?

Der kræves ingen tidligere erfaring. Bootcamp i backendudvikling med Node.js på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Load balancing af jeres Node.js-apps”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Bootcamp i backendudvikling med Node.js-lektion?

Ja. Alle Bootcamp i backendudvikling med Node.js-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Cachingstrategier til Node.js
  2. Load balancing af jeres Node.js-apps
  3. Optimering af Node.js' event loop
  4. Profilering og registrering af memory leaks
← Tilbage til Bootcamp i backendudvikling med Node.js