I en enkeltprosess flertjenesteserver er en enkelt prosess (også kjent som en overordnet prosess eller overordnet prosess) vanligvis ansvarlig for å administrere innkommende nettverksforbindelser og delegere håndteringen av individuelle tjenesteforespørsler til forskjellige arbeidertråder eller underordnede prosesser. Slik fungerer det:
Lytte til nettverkstilkobling:
Serverprosessen binder seg til en bestemt nettverksport og begynner å lytte etter innkommende klientforespørsler. Denne lytteporten er utsatt for omverdenen, slik at klienter kan koble til og sende tjenesteforespørsler.
Håndtering av klientforespørsler:
Når en klient kobler til serveren, aksepterer serverprosessen tilkoblingen og etablerer en kommunikasjonskanal. Den leser den første forespørselen fra klienten, som vanligvis inneholder informasjon om den forespurte tjenesten og eventuelle nødvendige data eller parametere.
Arbeidstråd/prosessopprettelse:
Basert på den mottatte forespørselen, bestemmer serverprosessen hvilken tjeneste klienten ber om. Deretter oppretter den en arbeidertråd eller skaper en underordnet prosess dedikert til å håndtere den aktuelle forespørselen. Arbeidstråden eller underordnet prosess er tildelt en unik identifikator og assosiert med klientens tilkobling.
Be om delegering og utførelse:
Serverprosessen sender klientens forespørsel, sammen med eventuelle tilknyttede data, til den nyopprettede arbeidstråden eller underordnede prosessen. Arbeideren overtar deretter ansvaret for å behandle forespørselen, utføre den nødvendige forretningslogikken og forberede svaret.
Resultatretur:
Når arbeidertråden eller underordnet prosess er ferdig med å behandle forespørselen og generere resultatet, sender den svaret tilbake til serverprosessen. Serverprosessen er ansvarlig for å sende svaret til klienten over den etablerte nettverkstilkoblingen.
Fordeler:
Effektiv ressursutnyttelse:Ved å bruke arbeidertråder eller underordnede prosesser, kan en enkelt-prosess flertjenesteserver effektivt distribuere oppgaver og balansere arbeidsbelastningen, noe som resulterer i forbedret ressursallokering.
Feilisolering:Siden hver arbeidertråd eller underordnet prosess kjører som en separat enhet, påvirker ikke en feil eller unntak i én forespørsel behandlingen av andre forespørsler. Denne funksjonen forbedrer påliteligheten og feilisolasjonen i serveren.
Modularitet og skalerbarhet:Den modulære designen tillater enkel integrering av nye tjenester uten å kreve vesentlige endringer i kjerneserverprosessen. I tillegg kan legge til flere ressurser (som arbeidertråder eller underordnede prosesser) gjøres dynamisk for å håndtere en økt belastning, noe som gjør serveren skalerbar.
Eksempler på én-prosess flertjenesteservere:
Nginx:Nginx er en populær åpen kildekode-webserver som ofte brukes i scenarier med høy trafikk. Den bruker en enkeltprosess flertjenestearkitektur med arbeidsprosesser for å håndtere innkommende forespørsler og levere webinnhold effektivt.
Apache mod_proxy:Mod_proxy-modulen for Apache-nettserveren gjør at den kan fungere som en omvendt proxy, og videresende innkommende forespørsler til forskjellige backend-tjenester. Den følger en én-prosess multi-service-tilnærming for å administrere disse omvendt proxy-operasjoner.
Node.js Cluster:Node.js tilbyr en innebygd klyngemodul, som lar utviklere lage en enkeltprosessserver med flere arbeidertråder. Denne tilnærmingen brukes ofte for å forbedre skalerbarheten til Node.js-applikasjoner ved å distribuere oppgaver på tvers av flere tråder.