Cel mai bun răspuns
Apatrid înseamnă că nu are stare.
Să luăm de exemplu un server web. Poate fi fără stare sau fără stat.
Stateful ar însemna că serverul stochează unele informații despre sesiune pentru a identifica un utilizator în urma mai multor cereri ulterioare. Dacă sesiunea este validă, solicitările vor reuși.
Apatridii ar fi opusul. Serverul nu va stoca nicio stare, adică informații despre sesiune pentru a identifica utilizatorul în urma mai multor cereri ulterioare. Fiecare solicitare ar trebui să includă o modalitate de identificare a utilizatorului. O modalitate de a realiza acest lucru este să utilizați un token (de exemplu JSON web token sau oAuth). Acest jeton ar fi trimis odată cu fiecare solicitare (de obicei în antetele cererii).
Aceasta elimină necesitatea ca serverele să păstreze datele de sesiune, ceea ce afectează scalabilitatea, deoarece mutarea pe mai multe servere necesită altfel partajarea datelor de sesiune.
Răspuns
Ați auzit vreodată de ceva numit „sesiuni” în contextul web?
Voi explica nu generalizând conceptul, ci rămânând la o întâlnire mai obișnuită pe care aproape toți am avut-o pe Internet sau WWW.
Serverele cu stare păstrează informațiile despre starea utilizatorului sub formă de sesiuni. Acest lucru este diferit de „conectarea la contul dvs.” de pe un site web. În zilele noastre, majoritatea site-urilor web HTTP accesibile prin intermediul WWW păstrează informațiile despre sesiunea utilizatorului. Deci, în timpul unei sesiuni, toate solicitările dvs. aparțin acelei sesiuni care a fost deschisă când ați vizitat prima dată o pagină de pe acel site web. În general, o sesiune se termină numai atunci când închideți browserul. Menținerea informațiilor despre sesiune ajută serverul web să ofere un serviciu personalizat. Mai mult, sesiunile ajută, de asemenea, să monitorizeze traficul web simultan în orice moment, oferă funcții de securitate, cum ar fi interzicerea unui utilizator rău intenționat care încearcă să elimine serverul trimitând numeroase cereri către server (probabil folosind aceeași sesiune stabilită). În cele din urmă, sesiunile sunt folosite pentru „conectare” la site. Odată ce vă conectați la site, identificatorul dvs. unic este salvat de serviciul web în sesiunea pe care ați deschis-o și pentru toate cererile dvs. ulterioare, serverul web știe că sunteți cel care accesați serviciul.
Apatrid serverele, pe de altă parte, nu mențin nicio informație de stare pentru utilizator. Fiecare solicitare este complet independentă de solicitarea anterioară. Cea mai comună arhitectură fără stat care folosește HTTP este REST (REpresentational State Transfer) care este utilizată pentru proiectarea API-urilor web. Serverele fără stat pot fi în continuare capabile să identifice utilizatorul dacă solicitarea către serviciu include un ID de utilizator unic care a fost alocat anterior utilizatorului. Dar acel ID de utilizator va trebui transmis în fiecare cerere, spre deosebire de cazul serverelor cu stare care mențin acest ID de utilizator în sesiune, iar datele solicitării nu trebuie să conțină neapărat acest ID.
Prin acest răspuns, I Am încercat să subliniez diferențele majore dintre serverele state și cele fără stat. Diferențele pot fi extinse la scenarii mai generalizate.