Modelul client-server este o structură care distribuie sarcini între furnizorii de resurse sau servicii numite servere și elementele care solicită resurse sau servicii, numite clienți.[1] Adesea, clienții și serverele se află pe mașini fizice diferite și comunică printr-o rețea, dar atât clientul cât și serverul pot sta în același sistem sau pot comunica prin alte mijloace (socket Unix, vsock etc.). Prin extensie, un sistem fizic ce rulează unul sau mai multe programe server, care distribuie resursele existente clienților, este denumit tot server. Clienții inițiază sesiuni de comunicare cu serverele, care așteaptă cereri.

Rolul clientului și serverului

modificare

Caracteristica client-server descrie relația programelor care colaborează într-o aplicație. Componenta server oferă o funcție sau un serviciu unuia sau mai multor clienți, care inițiază cereri pentru astfel de servicii. Serverele sunt clasificate în funcție de serviciile pe care le oferă. De exemplu, un server web servește pagini web și un server de fișiere servește fișiere de calculator. O resursă partajată poate fi oricare dintre componentele software și componente ale computerului serverului, de la programe și date la procesoare și dispozitive de stocare. Partajarea resurselor unui server constituie un serviciu.

Dacă un computer este un client, un server sau ambele, este determinat de natura aplicației care necesită funcțiile de serviciu. De exemplu, un singur computer poate rula un server web și un software de server de fișiere în același timp, pentru a servi date diferite clienților care fac diferite tipuri de solicitări. Software-ul client poate comunica și cu software-ul serverului în același computer. Comunicarea între servere, cum ar fi sincronizarea datelor, este uneori numită comunicare inter-server sau server-la-server.

Comunicare client și server

modificare

În general, un serviciu reprezintă o extragere a resurselor informatice, iar un client nu trebuie să fie preocupat de performanțele serverului în timp ce îndeplinește solicitarea și furnizează răspunsul. Clientul trebuie să înțeleagă doar răspunsul bazat pe protocol de nivel aplicație, adică conținutul și formatarea datelor pentru serviciul solicitat.

Clienții și serverele schimbă mesaje într-un model de mesagerie solicitare-răspuns. Clientul trimite o solicitare, iar serverul returnează un răspuns. Acest schimb de mesaje este un exemplu de comunicare între proces. Pentru a comunica, calculatoarele trebuie să aibă un limbaj comun și trebuie să respecte reguli astfel încât atât clientul cât și serverul să știe la ce să se aștepte. Limba și regulile de comunicare sunt definite într-un protocol de comunicare. Toate protocoalele client-server funcționează în stratul de aplicație. Protocolul stratului de aplicație definește tiparele de bază ale dialogului. Pentru a formaliza schimbul de date și mai mult, serverul poate implementa o interfață de programare a aplicației (API). [3] API-ul este un nivel de abstractizare pentru accesarea unui serviciu. Restrângând comunicarea la un anumit format de conținut, facilitează parsarea. Prin abstractizarea accesului, facilitează schimbul de date între platforme.[2]

Un server poate primi cereri de la mulți clienți distincți într-o perioadă scurtă de timp. Un computer poate efectua un număr limitat de sarcini în orice moment și se bazează pe un sistem de planificare pentru a da prioritate cererilor primite de la clienți pentru a le găzdui. Pentru a preveni abuzul și a maximiza disponibilitatea globală, software-ul serverului poate limita disponibilitatea pentru clienți. Criptarea trebuie aplicată dacă între client și server sunt comunicate informații sensibile.

Comparație cu arhitectura peer-to-peer

modificare

Pe lângă modelul client-server, aplicațiile de calcul distribuit folosesc adesea arhitectura peer-to-peer (P2P).

În modelul client-server, serverul este deseori proiectat să funcționeze ca un sistem centralizat care servește multor clienți. Puterea de calcul, memoria și cerințele de stocare ale unui server trebuie să fie adaptate corespunzător la volumul de lucru preconizat. Sistemele de echilibrare a sarcinilor și de basculare sunt deseori folosite pentru a scala serverul dincolo de o singură mașină fizică.[3][4]

Atât client-server, cât și master-slave sunt considerate sub-categorii de sisteme distribuite peer-to-peer.[5]

  1. ^ „Distributed Application Architecture” (PDF). Sun Microsystem. Arhivat din original (PDF) la . Accesat în . 
  2. ^ Dustdar, S.; Schreiner, W. (). „A survey on web services composition” (PDF). International Journal of Web and Grid Services. 1: 1. CiteSeerX 10.1.1.139.4827 . doi:10.1504/IJWGS.2005.007545. 
  3. ^ Cardellini, V.; Colajanni, M.; Yu, P.S. (). „Dynamic load balancing on Web-server systems”. IEEE Internet Computing. Institute of Electrical and Electronics Engineers (IEEE). 3 (3): 28–39. doi:10.1109/4236.769420. ISSN 1089-7801. 
  4. ^ „What Is Load Balancing? How Load Balancers Work”. NGINX. . Accesat în . 
  5. ^ Varma, Vasudeva (). „1: Software Architecture Primer”. Software Architecture: A Case Based Approach. Delhi: Pearson Education India. p. 29. ISBN 9788131707494. Accesat în . Distributed Peer-to-Peer Systems [...] This is a generic style of which popular styles are the client-server and master-slave styles. 
  NODES
INTERN 2
Note 2