O imagine directă din culise a ceea ce se întâmplă atunci când tastați holbertonschool.com și apăsați Enter.

Load Balancer

Nu demult, toate micile sarcini de zi cu zi aveau sens. Tot ceea ce făceau oamenii avea un scop și era ușor de înțeles; Uciderea căprioarelor pentru hrană, aducerea găleții cu apă din fântână pentru hidratare, tăierea lemnului pentru a crea adăpost.

Astăzi ... ei bine, astăzi lucrurile sunt puțin mai complexe. Majoritatea sarcinilor simple pe care le îndeplinim le facem fără să știm ce se întâmplă de fapt. Sunt sigur că vă puteți gândi la unele - să conduceți o mașină, să tipăriți un document, să vă încărcați telefonul, să efectuați un telefon și așa mai departe.

În acest articol, vom arunca o privire în culisele uneia dintre aceste sarcini: navigarea pe Internet! V-ați gândit vreodată ce se întâmplă cu adevărat atunci când tastați un site precum https://www.holbertonschool.com și apăsați „Enter”? Să începem!

DNS - Servere de nume de domeniu

Gândiți-vă la DNS ca la unul uriaș agendă telefonică (aproximativ 333,8 milioane de nume de domenii începând cu 2018). Dacă ar fi să încercați să vă amintiți toate numerele de telefon ale contactului dvs., ați avea o perioadă extrem de grea. Același lucru este valabil și pentru numele de domenii! Ce este mai ușor de reținut - holbertonschool.com sau 99.84.216.49 ?

Internetul este compus din milioane de adrese IP (acele 4 numere separate prin puncte - cum ar fi 8.8.8.8). De fapt, fiecare dispozitiv cu o conexiune activă la Internet are propria adresă IP, inclusiv smartphone-ul și computerul. Fiecare adresă IP (adresele IP ale site-ului) are un nume de domeniu corespunzător, care este numele real al site-ului web pe care îl cunoașteți. Întregul scop al serverelor de nume de domeniu este să vă asigurați că nu trebuie să vă amintiți fiecare adresă IP.

DNS este un protocol din cadrul standardelor pentru modul în care calculatoarele schimbă date pe internet și pe multe rețele private, cunoscut sub numele de suita de protocol TCP/IP.

Computerul dvs. folosește un server DNS pentru a căuta site-ul web pe care încercați să îl accesați; Termenul potrivit pentru aceasta este DNS Name Resolution și implică de obicei utilizarea ISP-ului dvs. (Furnizor de servicii de internet) . Procesul de găsire a adresei corecte poate fi destul de complicat și, de obicei, trece prin mai multe etape diferite, dar toate acestea se întâmplă într-o chestiune de milisecunde, fără să știți. Am putea să ne adâncim foarte mult în acest proces, dar asta ar ocupa restul postării de pe blog 😃. Dacă sunteți interesat să aflați mai multe despre DNS, aș recomanda acest desen animat minunat care simplifică totul!

TCP/IP

Protocolul de control al transmisiei (TCP) și Protocolul Internet (IP, care nu trebuie confundat cu adresa IP despre care am vorbit mai devreme) sunt protocoale de rețea foarte frecvente care definesc modul în care funcționează Internetul nostru în prezent.

Îți amintești când aveam televizoare cu antene? Turnurile radio locale ar transmite semnale radio și televizoarele aveau antene lungi capabile să primească acest semnal, care ar fi procesate și afișate pe ecran pentru divertismentul nostru personal. TCP/IP este un concept similar, doar folosind internetul. Site-urile web pe care dorim să le vedem trebuie transferate de undeva pe dispozitivele noastre.

Acum că avem adresa IP a site-ului web pe care încercăm să îl accesăm (din cauza DNS), trebuie să găsim o modalitate de a vedea conținutul. Aceste site-uri web trebuie să vină de undeva, deoarece nu ar avea niciun sens să stochezi fiecare videoclip YouTube pe spațiul de stocare personal al laptopului.

Astfel vine existența unui server Web! Aceste servere stochează conținutul tuturor site-urilor web pe care dorim să le accesăm. De fapt, întregul Internet funcționează în jurul definiției client-server. Când doriți să vizualizați un site web, deveniți un client care face o solicitare, iar serverul răspunde cu conținutul solicitat. Protocoalele TCP/IP sunt modul în care conținutul este transferat de la server la client și invers.

Aceste protocoale sunt construite pe patru straturi: stratul de aplicație, stratul de transport, stratul de internet, stratul de acces la rețea.

Application Layer este dedicat împărțirii conținutului care va fi trimis în segmente mai mici numite pachete. Stratul de transport determină modul în care urmează să fie trimise aceste pachete - fie utilizând TCP (Transfer Control Protocol), fie UDP (protocolul utilizat pentru difuzarea videoclipurilor sau fluxurilor live). Aceste două protocoale au modalități diferite de a trimite pachete și sunt utilizate în scopuri diferite. Protocolul Internet (fiind Internet Layer) dictează logistica pachetelor, oferindu-le o destinație și o modalitate de a ajunge acolo.

HTTP/HTTPS

Protocolul de transfer hipertext (este sigur), este în esență protocolul Application Layer din TCP/IP standarde și probabil cel pe care îl utilizați cel mai mult (Există puține altele, cum ar fi FTP). Acest protocol este utilizat între un client web (cum ar fi browserul dvs.) și un server web. Acesta definește modul în care sunt formatate și transmise mesajele și ce acțiuni ar trebui să ia serverele și clienții web ca răspuns la diferite comenzi. Ați încercat vreodată să accesați o pagină de pe un site web, dar ați primit ceva care arăta ca „Eroare 404! Această pagină nu există ”? 404 este un cod de stare a răspunsului HTTP, ceea ce înseamnă că pagina pe care ați solicitat-o ​​nu există pe server.

HTTPS este o versiune mai sigură a HTTP. Toate datele sunt transferate în siguranță folosind SSL (Secure Sockets Layer) - fiecare site web securizat pe care îl accesați (are de obicei un simbol de blocare lângă adresa URL), are un certificat SSL care confirmă faptul că datele transferate către dvs. sunt sigure.

De ce este chiar relevant acest lucru? Ei bine, să presupunem că încercați să comandați ceva online și că trebuie să introduceți informațiile despre cardul dvs. de credit. HTTPS se asigură că toate datele pe care le trimiteți/primiți sunt imposibil de citit. Folosește algoritmi de criptare pentru a amesteca pachetele transferate, asigurându-vă că nimeni nu are o modalitate de a le descifra.

Apropo de securitate, ar trebui să trecem peste Firewall .

Un firewall este un dispozitiv de securitate de rețea care monitorizează traficul de rețea intrat și ieșit și permite sau blochează pachetele de date pe baza unui set de reguli de securitate.

Acest lucru se explică de la sine. Scopul unui firewall este de a crea un tip de barieră între rețeaua dvs. privată și traficul primit de la surse externe (cum ar fi internetul), de a respinge posibilitatea conținutului rău intenționat sau a virușilor. Un firewall poate fi fie hardware (existent fizic), fie software. Există multe tipuri de firewall diferite, câteva dintre ele fiind:

  • Filtrarea pachetelor - Procesul de examinare a fiecărui pachet de intrare și ieșire și respingerea/acceptarea acestuia pe baza conținutului său.
  • Firewall-uri proxy - Filtrarea traficului de rețea la nivelul aplicației. Acest lucru se întâmplă înainte de transferul pachetelor. Procurorul acționează ca intermediar între două sisteme finale. Un client face o cerere către firewall (nu serverul în sine), care este apoi determinat ca fiind sigur sau blocat.

Echilibrarea greutății

Tot ce s-a explicat până acum sună destul de simplu, dar ce se întâmplă când traficul începe să crească și vreau să spun cu adevărat să crească? Când milioane de utilizatori efectuează simultan cereri pentru site-uri web precum Google și Facebook? Un server web nu va putea gestiona toate aceste solicitări corespunzătoare, deci trebuie să utilizeze două (sau multe altele) servere. Apare o nouă problemă - atunci când un utilizator face o cerere, conținutul va proveni de la serverul web 1 sau de la serverul web 2? Din acest motiv exact, aceste tipuri de site-uri web au un Load Balancer (care este de asemenea un server).

Gândiți-vă la un echilibrator de încărcare ca un polițist de trafic - două străzi care duc la aceeași destinație, iar polițistul știe cum să împartă eficient traficul de intrare, ghidând cu mâna pe ce cale să urmeze.

Scopul balanțelor de încărcare este de a distribui traficul de intrare pe mai multe servere, ceea ce crește eficiența, fiabilitatea și disponibilitatea site-ului dvs. Dacă un server web se blochează dintr-o dată, acest server special redirecționează automat traficul către serverele web rămase.

Load Balancer are algoritmi diferiți pentru modul în care împarte volumul de lucru, cum ar fi:

  • Round Robin (cel mai frecvent) - Cererile sunt distribuite în mod secvențial pe întregul grup de servere. Solicitarea 1 este direcționată către serverul 1, cererea 2 către serverul 2 și așa mai departe.
  • Conexiuni minime - Înainte de a redirecționa o cerere către un server, Load Balancer calculează ce server are cele mai puține conexiuni și apoi trimite solicitarea către acolo.
  • IP Hash - Adresa IP a clientului este utilizată pentru a determina către ce server va fi direcționată solicitarea. De exemplu, toate adresele IP de la 100.100.100.100 - 400.400.400.400 vor fi trimise la serverul 3 .

Server de aplicații și baze de date

Dacă tot ce am avea în lume ar fi servere web, site-urile noastre web ar fi foarte, foarte simple. Fără utilizatori, fără conectări, fără aplicații, fără jocuri - mai ales doar text și imagini simple.

Pe măsură ce site-urile web au devenit din ce în ce mai complexe, au trebuit implicate diferite aplicații pentru a combina toate acestea împreună. De exemplu, când David se conectează la Facebook și prima pagină pe care o vede este „Bună David! Bine ai revenit ”, cum este posibil acest lucru? În loc să aibă 2,4 miliarde de pagini personale (numărul de utilizatori de pe Facebook) stocate pe un server web, Facebook folosește baze de date pentru a stoca utilizatorii. Cu ajutorul serverelor de aplicații, putem accesa conținutul din baza de date și îl putem converti în conținut HTML static, astfel încât să poată fi afișat pe dispozitivele noastre.

Serverele de aplicații permit site-urilor web să devină mai active și dinamice. Utilizatorii pot interacționa cu acesta conectându-se, postând pe un forum și multe altele. Acestea sunt esențiale pentru site-urile web moderne și sunt utilizate cu majoritatea site-urilor web cu care interacționați.

Iată o diagramă care ilustrează fluxul de procese care se întâmplă de la client la server. În acest exemplu, folosim Nginx ca server web și MySQL pentru baza de date. De asemenea, folosim un sistem de monitorizare despre care nu am vorbit - aflați mai multe aici.