Hva er en statsløs server?


Beste svaret

Stateless betyr at den ikke har noen tilstand.

La oss ta en webserver for eksempel. Det kan være stateful eller stateless.

Stateful vil bety at serveren lagrer noe øktinformasjon for å identifisere en bruker over flere påfølgende forespørsler. Hvis økten er gyldig, vil forespørslene lykkes.

Statsløs ville være det motsatte. Serveren lagrer ikke noen tilstand, det vil si sesjonsinformasjon for å identifisere brukeren over flere påfølgende forespørsler. Hver forespørsel skal inneholde en eller annen måte å identifisere brukeren på. En måte å oppnå det på er å bruke et token (for eksempel JSON web token eller oAuth). Dette tokenet vil bli sendt med hver forespørsel (vanligvis i forespørselsoverskriftene).

Dette fjerner behovet for servere for å beholde øktdata, noe som påvirker skalerbarhet siden flytting til flere servere ellers krever deling av øktdata.

Svar

Har du noen gang hørt om noe som heter «økter» i sammenheng med Internett?

Jeg skal forklare ved ikke å generalisere konseptet, men holde meg til et mer vanlig møte som nesten alle av oss har hatt på Internett eller WWW.

Stateful servere opprettholder brukerens tilstandsinformasjon i form av økter. Dette er forskjellig fra å «logge på kontoen din» på et nettsted. I dag opprettholder flertallet av HTTP-nettstedene som er tilgjengelige via WWW brukerens øktinformasjon. Så under en øktkjøring tilhører alle dine forespørsler den aktuelle økten som ble åpnet da du først besøkte en side på nettstedet. Vanligvis avsluttes en økt bare når du lukker nettleseren. Vedlikehold av øktinformasjon hjelper webserveren å tilby en personlig service. Videre hjelper økter også til å overvåke samtidig webtrafikk når som helst, og tilbyr sikkerhetsfunksjoner som å forby en ondsinnet bruker som prøver å ta ned serveren ved å sende mange forespørsler til serveren (sannsynligvis ved å bruke den samme etablerte økten). Til slutt brukes økter til å logge inn på nettstedet. Når du har logget inn på nettstedet, blir din unike identifikator lagret av webtjenesten i økten du åpnet, og for alle dine forespørsler deretter vet webserveren at det er du som får tilgang til tjenesten.

Stateless servere derimot opprettholder ingen tilstandsinformasjon for brukeren. Hver forespørsel er helt uavhengig av forrige forespørsel. Den vanligste statsløse arkitekturen som bruker HTTP er REST (REpresentational State Transfer) som brukes til å designe web-APIer. Statsløse servere kan fremdeles være i stand til å identifisere brukeren hvis forespørselen til tjenesten inkluderer en unik bruker-ID som tidligere ble tildelt brukeren. Men den bruker-ID-en må sendes i hver forespørsel, i motsetning til i tilfelle Stateful-servere som opprettholder denne bruker-ID-en i økten, og forespørselsdataene trenger ikke nødvendigvis å inneholde denne ID-en.

Gjennom dette svaret sier jeg Jeg har prøvd å understreke de store forskjellene mellom stateful og stateless servere. Forskjellene kan utvides til mer generaliserte scenarier.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *