Prejsť na obsah
Domov

Klient-server: Definícia, architektúra a príklady použitia

Klient-server: jasná definícia, architektúra a reálne príklady použitia — porovnanie s P2P, vrstvy, nasadenie pre web, databázy a sieťové aplikácie.

Definícia

V informatike je klient-server model softvérovej architektúry pozostávajúci z dvoch častí, klientskych systémov a serverových systémov, ktoré komunikujú prostredníctvom počítačovej siete alebo na tom istom počítači. Aplikácia klient-server je distribuovaný systém zložený zo softvéru klienta aj servera. Aplikácia klient-server poskytuje efektívne rozdelenie pracovného zaťaženia: klientsky proces vždy iniciuje spojenie so serverom, zatiaľ čo serverový proces čaká na požiadavky od klientov a následne ich spracuje a vráti výsledok.

Pracovný princíp

Vzťah medzi klientom a serverom popisuje spôsob, akým klient zadáva požiadavku na službu serveru a ako server túto požiadavku prijme, spracuje a odpovie. Interakcie sa často modelujú pomocou sekvenčných diagramov, ktoré sú štandardizované v jazyku Unified Modeling Language (UML). Protokoly bežne používané v klient-server komunikácii zahŕňajú TCP/IP, HTTP, HTTPS, SMTP a ďalšie, ktoré definujú formát správ a pravidlá výmeny dát.

Nasadenie a varianty

Ak je klientsky proces aj proces servera spustený na tom istom počítači, nazýva sa to nastavenie na jednom mieste. V praxi sa však bežne používa distribuované nasadenie, kde sú klienti a servery na rôznych strojoch alebo v rôznych sieťach.

Okrem základného modelu existujú aj rozšírenia a varianty:

  • Dvojúrovňová (two-tier) architektúra – využíva iba dva typy hostiteľov: klientov a servery. Klient spracováva prezentáciu a aplikačnú logiku môže byť čiastočne na klientovi, zatiaľ čo server spravuje údaje a ich trvalé uloženie.
  • Viacvrstvová (n-tier) architektúra – aplikačná logika je rozdelená do viacerých vrstiev (prezentačná, aplikačná, dátová), čo zlepšuje škálovateľnosť, údržbu a bezpečnosť.
  • Peer-to-peer (P2P) – alternatívny prístup, v ktorom každý hostiteľ môže byť súčasne klientom aj serverom. Tento prístup nie je centralizovaný, pretože každá inštancia aplikácie môže vykonávať obidve úlohy. Architektúry typu peer-to-peer sa často označujú skratkou P2P.

Výhody a nevýhody

  • Výhody:
    • Centralizovaná správa dát a služieb (jednoduchšia údržba a zálohovanie).
    • Možnosť škálovania serverov podľa záťaže (vertikálne i horizontálne).
    • Jasné oddelenie zodpovedností medzi klientom a serverom.
  • Nevýhody:
    • Server môže byť jedným bodom zlyhania, ak nie je vhodne zabezpečený a replikovaný.
    • Vyššie nároky na infraštruktúru a sieť pri veľkom počte klientov.
    • Latencia pri sieťovej komunikácii v porovnaní s lokálnymi riešeniami.

Bežné príklady použitia

Softvérová architektúra klient-server sa stala jedným zo základných modelov sieťových počítačov. Mnohé bežné internetové a podnikové aplikácie sú postavené na tomto modeli. Medzi štandardné sieťové funkcie založené na modeli klient-server patria napríklad:

  • výmena e-mailov,
  • prístup na web (HTTP/HTTPS),
  • databázy, sú (prístup k relačným a NoSQL databázam cez klientské knižnice alebo cez DB servery),
  • webové služby a REST/GraphQL API, ktoré umožňujú komunikáciu medzi mobilnými aplikáciami, webovými klientmi a servermi,
  • podnikové aplikácie (ERP, CRM) s centrálne spravovanými dátami.

Napríklad webový prehliadač je klientský program na počítači používateľa, ktorý pristupuje k informáciám na webovom serveri. Server spracuje požiadavku (napr. požiadavku HTTP), vráti HTML, CSS a skripty a klient ich vykreslí.

Bezpečnosť a spoľahlivosť

Pri návrhu klient-server systémov je potrebné venovať pozornosť bezpečnosti (overovanie, autorizácia, šifrovanie prenosu prostredníctvom TLS/SSL) a spoľahlivosti (replikácia, zálohovanie, load balancing). Ochrana pred útokmi, ako sú DoS, útoky na webové aplikácie alebo neoprávnený prístup k dátam, patrí medzi kľúčové požiadavky produkčných systémov.

Zhrnutie

Architektúry klient-server aj P2P sú dnes široko používané a každá z nich sa hodí pre iný typ riešenia. Klient-server model je veľmi flexibilný — od jednoduchých dvojúrovňových systémov až po komplexné viacvrstvové aplikácie bežiace v cloude — a zostáva jedným z pilierov moderného návrhu sieťových aplikácií.

Charakteristika klientov

  • Vždy iniciuje požiadavky na servery.
  • Čaká na odpovede.
  • Prijíma odpovede.
  • Zvyčajne sa pripája k malému počtu serverov naraz.
  • Zvyčajne komunikuje priamo s koncovými používateľmi pomocou akéhokoľvek používateľského rozhrania, napríklad grafického používateľského rozhrania.

Charakteristika servera

  • Vždy počkajte na žiadosť od jedného z klientov.
  • Obsluhuje požiadavky klientov a potom im odpovedá požadovanými údajmi.
  • Server môže komunikovať s inými servermi s cieľom obslúžiť požiadavku klienta.
  • Ak sú na spracovanie požiadavky potrebné ďalšie informácie (alebo je implementované zabezpečenie), server môže pred spracovaním požiadavky požiadať klienta o ďalšie údaje (heslá).
  • Koncoví používatelia zvyčajne nekomunikujú priamo so serverom, ale používajú klienta.

Výhody

  • Vo väčšine prípadov architektúra klient-server umožňuje rozdeliť úlohy a zodpovednosti výpočtového systému medzi niekoľko nezávislých počítačov, ktoré sa navzájom poznajú len prostredníctvom siete, takže jednou z výhod tohto modelu je jednoduchšia údržba. Napríklad je možné vymeniť, opraviť, aktualizovať alebo dokonca premiestniť server, pričom jeho klienti o tom nevedia a zároveň ich táto zmena neovplyvní. Táto nezávislosť od zmien sa označuje aj ako zapuzdrenie.
  • Všetky údaje sú uložené na serveroch, ktoré majú spravidla lepšie bezpečnostné kontroly ako väčšina klientov. Servery môžu lepšie kontrolovať prístup a zdroje, aby sa zaručilo, že k údajom môžu pristupovať a meniť ich len klienti s príslušnými oprávneniami.
  • Keďže ukladanie údajov je centralizované, aktualizácie týchto údajov sú pre správcov oveľa jednoduchšie, ako by to bolo možné v rámci architektúry P2P. V rámci architektúry P2P môže byť potrebné distribuovať aktualizácie údajov a aplikovať ich na každého "rovnocenného partnera" v sieti, čo je časovo náročné a náchylné na chyby, keďže rovnocenných partnerov môžu byť tisíce alebo dokonca milióny.
  • K dispozícii je už mnoho pokročilých technológií klient-server, ktoré boli navrhnuté tak, aby zabezpečili bezpečnosť, používateľsky prívetivé rozhrania a jednoduché používanie.
  • Pracuje s viacerými rôznymi klientmi s rôznymi špecifikáciami.

Nevýhody

  • Blokovanie sieťovej prevádzky je jedným z problémov súvisiacich s modelom klient-server. S rastúcim počtom súčasných požiadaviek klientov na daný server môže dôjsť k jeho preťaženiu. Porovnajte to so sieťou P2P, ktorej šírka pásma sa v skutočnosti zvyšuje s pribúdajúcimi uzlami, pretože celkovú šírku pásma siete P2P možno približne vypočítať ako súčet šírok pásma každého uzla v tejto sieti.
  • Ak porovnáme model klient-server s modelom Peer to Peer, v prípade zlyhania jedného servera nie je možné vybaviť požiadavky klientov, ale v prípade sietí P2P sú servery zvyčajne rozdelené medzi mnoho uzlov. Aj v prípade zlyhania jedného alebo viacerých uzlov, napríklad ak uzol zlyhal pri sťahovaní súboru, ostatné uzly by mali mať stále k dispozícii údaje potrebné na dokončenie sťahovania.

Príklady

Otázky a odpovede

Otázka: Čo je to softvérová architektúra klient-server?

Odpoveď: Softvérová architektúra klient-server je model pozostávajúci z dvoch častí, klientskych systémov a serverových systémov, ktoré komunikujú prostredníctvom počítačovej siete alebo na tom istom počítači.

Otázka: Ako funguje aplikácia klient-server?

Odpoveď: Aplikácia klient-server je distribuovaný systém pozostávajúci zo softvéru klienta a servera. Proces klienta vždy iniciuje spojenie so serverom, zatiaľ čo proces servera vždy čaká na požiadavky od ktoréhokoľvek klienta.

Otázka: Čo sa stane, keď proces klienta aj proces servera bežia na tom istom počítači?

Odpoveď: Keď klientsky proces aj serverový proces bežia na tom istom počítači, nazýva sa to nastavenie na jednom mieste.

Otázka: Aké výhody poskytuje používanie aplikácie klient-server?

Odpoveď: Používanie aplikácie klient-server poskytuje lepší spôsob zdieľania pracovného zaťaženia medzi viacerými počítačmi alebo používateľmi.

Otázka: Kto iniciuje pripojenia v aplikáciách klientského servera?

Odpoveď: Pripojenia v aplikáciách klientského servera vždy iniciuje klientsky proces.

Otázka: Kto čaká na požiadavky v aplikáciách klientského servera?

Odpoveď: Serverový proces vždy čaká na požiadavky v aplikáciách klientského servera.

Otázka: Ako môže viac počítačov alebo používateľov navzájom zdieľať pracovné zaťaženie?

Odpoveď: Viacero počítačov alebo používateľov môže zdieľať pracovné zaťaženie pomocou distribuovaného systému, ako je Client Server Application.

Súvisiace články

Autor

AlegsaOnline.com Klient-server: Definícia, architektúra a príklady použitia

URL: https://sk.alegsaonline.com/art/20972

Zdieľať