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
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
- Medzi konkrétne typy klientov patria: webové prehliadače, e-mailoví klienti a klienti online chatu.
- Medzi konkrétne typy serverov patria: webové servery, servery FTP, databázové servery, e-mailové servery, súborové servery, tlačové servery. Väčšina webových služieb sú tiež typy serverov.
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 Leandro Alegsa
URL: https://sk.alegsaonline.com/art/20972

