Přejít na obsah
Domů

Klient‑server: model softwarové architektury

Přehled modelu klient‑server, jeho principy, části, historie, běžné použití a rozdíly vůči peer‑to‑peer architekturám.

Přehled

Klient‑server je základní model softwarové architektury používaný v sítích i na jednom počítači. V tomto přístupu oddělují své role dvě hlavní složky: klient, který iniciuje požadavky, a server, který tyto požadavky přijímá a zpracovává. Koncept vychází z potřeby rozložit zátěž, centralizovat služby a umožnit více uživatelům sdílený přístup k datům nebo výpočetním zdrojům. Termín se běžně používá v informatice a v praxi ho potkáte v širokém spektru aplikací od webu po databáze.

Charakteristika a základní části

Základní vlastnosti modelu klient‑server lze shrnout takto: klient vždy zahajuje komunikaci a server naopak naslouchá a reaguje. Komunikace probíhá buď přes počítačovou síť, nebo lokálně na tomtéž zařízení (procesy běžící na stejném počítači). Server může poskytovat jednu nebo více služeb (např. webové stránky, databázové dotazy, autentizaci) a klienti konzumují tyto služby prostřednictvím síťových protokolů.

  • Klient: uživatelská aplikace nebo rozhraní, které posílá požadavky a zpracovává odpovědi.
  • Server: služba běžící na hostiteli, která zpracovává požadavky, provádí operace a vrací výsledky.
  • Síťová vrstva: protokoly a kanály, které zajišťují přenos dat mezi klienty a servery.
  • Procesy a instance: každý běžící program je proces a může mít různé role podle nasazení.

Historie a vývoj

Model klient‑server se postupně formoval s nástupem sítí a osobních počítačů. V raných dobách sdílených mainframů a terminálů byla role centralizovaného serveru zřejmá; s rozšířením lokálních sítí a grafických uživatelských rozhraní v druhé polovině 20. století získal model na popularitě. Dvouvrstvá (two‑tier) architektura, kdy je klient a server jasně oddělen, byla základem mnoha podnikových systémů. Později se rozšířily vícevrstvé (multi‑tier) varianty, které mezi klienta a databázi vkládají aplikační servery nebo middleware, čímž se zvyšuje škálovatelnost a modularita.

Použití, příklady a význam

Klient‑server architektura stojí za mnoha běžnými síťovými službami. Mezi typické příklady patří:

  1. Web: webový prohlížeč (klient) komunikuje s webovým serverem, aby získal stránky a zdroje z webu.
  2. E‑mail: poštovní klienti posílají nebo stahují zprávy přes centralizované servery a služby pro doručení a úložiště e‑mailů.
  3. Databáze: aplikace posílají dotazy na databázový server, který provádí dotazy a spravuje konzistenci dat.
  4. Podnikové služby: autentizace, úložiště souborů, API brány a další centrálně řízené služby.

V praxi kombinují vývojáři klient‑server principy s technikami jako load balancing, cache, replikace a virtualizace, aby zlepšili dostupnost a výkon. Architektura také usnadňuje bezpečnostní politiky tím, že koncentruje ochranná pravidla na serverech.

Rozdíly vůči peer‑to‑peer a další poznámky

Model klient‑server se liší od peer‑to‑peer řešení: v P2P mohou jednotlivé uzly fungovat současně jako klient i jako hostitel, sdílení je decentralizované a žádný uzel nemá trvalou roli centrálního poskytovatele. Peer‑to‑peer systémy se často označují zkratkou P2P. Oba přístupy se dnes hojně používají; volba mezi nimi závisí na požadavcích na škálování, odolnost, správu a bezpečnost.

Pro návrh a dokumentaci interakcí mezi klientem a serverem se často používají sekvenční diagramy a standardy jako UML, které jasně popisují pořadí zpráv a chování komponent. Model klient‑server zůstává jedním z nejdůležitějších paradigmat v oblasti síťových počítačů a distribuovaných systémů, protože poskytuje jasné oddělení odpovědností a usnadňuje vývoj, nasazení i údržbu rozsáhlých aplikací.

Pro více informací o principech a návrhu klient‑server řešení hledejte odborné zdroje nebo praktické průvodce, které vysvětlují protokoly, škálování a bezpečnostní opatření v konkrétních implementacích (model softwarové architektury, distribuovaný systém, například referenční příklady nasazení).

Charakteristika klientů

  • Vždy iniciuje požadavky na servery.
  • Čeká na odpovědi.
  • Přijímá odpovědi.
  • Obvykle se připojuje k malému počtu serverů najednou.
  • Obvykle komunikuje přímo s koncovými uživateli pomocí libovolného uživatelského rozhraní, například grafického uživatelského rozhraní.

Vlastnosti serveru

  • Vždy počkejte na žádost některého z klientů.
  • Obsluhuje požadavky klientů a poté jim odpovídá požadovanými daty.
  • Server může komunikovat s jinými servery, aby mohl obsloužit požadavek klienta.
  • Pokud jsou ke zpracování požadavku vyžadovány další informace (nebo je implementováno zabezpečení), může si server před zpracováním požadavku vyžádat od klienta další údaje (hesla).
  • Koncoví uživatelé obvykle nekomunikují přímo se serverem, ale používají klienta.

Výhody

  • Architektura klient-server ve většině případů umožňuje rozdělit role a odpovědnosti výpočetního systému mezi několik nezávislých počítačů, které se navzájem znají pouze prostřednictvím sítě, takže jednou z výhod tohoto modelu je snadnější údržba. Například je možné vyměnit, opravit, upgradovat nebo dokonce přemístit server, zatímco jeho klienti o tom nevědí a tato změna se jich nedotkne. Tato nezávislost na změnách se také označuje jako zapouzdření.
  • Všechna data jsou uložena na serverech, které mají obecně lepší zabezpečení než většina klientů. Servery mohou lépe kontrolovat přístup a zdroje, aby bylo zaručeno, že k datům mohou přistupovat a měnit je pouze klienti s příslušnými oprávněními.
  • Vzhledem k tomu, že ukládání dat je centralizované, jsou aktualizace těchto dat pro správce mnohem jednodušší než v případě architektury P2P. V architektuře P2P může být nutné distribuovat aktualizace dat a aplikovat je na každého "peera" v síti, což je časově náročné a náchylné k chybám, protože peerů mohou být tisíce nebo dokonce miliony.
  • K dispozici je již mnoho pokročilých technologií klient-server, které byly navrženy tak, aby zajistily bezpečnost, uživatelsky přívětivá rozhraní a snadné používání.
  • Pracuje s více různými klienty různých specifikací.

Nevýhody

  • Blokování síťového provozu je jedním z problémů souvisejících s modelem klient-server. S rostoucím počtem současných požadavků klientů na daný server může dojít k jeho přetížení. Srovnejte to se sítí P2P, jejíž šířka pásma se s přibývajícími uzly skutečně zvyšuje, protože celkovou šířku pásma sítě P2P lze zhruba vypočítat jako součet šířek pásma každého uzlu v této síti.
  • Při porovnání modelu klient-server s modelem Peer to Peer platí, že pokud selže jeden server, požadavky klientů nemohou být vyřízeny, ale v případě sítí P2P jsou servery obvykle rozděleny mezi mnoho uzlů. I v případě selhání jednoho nebo více uzlů, například pokud se některému uzlu nepodařilo stáhnout soubor, by měly mít zbývající uzly stále k dispozici data potřebná k dokončení stahování.

Příklady

Otázky a odpovědi

Otázka: Co je to softwarová architektura klient-server?

Odpověď: Softwarová architektura klient-server je model sestávající ze dvou částí, klientských systémů a serverových systémů, které spolu komunikují prostřednictvím počítačové sítě nebo na stejném počítači.

Otázka: Jak funguje aplikace klient-server?

Odpověď: Aplikace klient-server je distribuovaný systém tvořený klientským i serverovým softwarem. Klientský proces vždy iniciuje spojení se serverem, zatímco serverový proces vždy čeká na požadavky od kteréhokoli klienta.

Otázka: Co se stane, když klientský i serverový proces běží na stejném počítači?

Odpověď: Pokud klientský proces i proces serveru běží na stejném počítači, nazývá se to nastavení na jednom místě.

Otázka: Jaké výhody přináší použití aplikace klient-server?

Odpověď: Použití aplikace klientského serveru poskytuje lepší způsob sdílení pracovní zátěže mezi více počítači nebo uživateli.

Otázka: Kdo iniciuje připojení v aplikacích klientského serveru?

Odpověď: Klientský proces vždy iniciuje připojení v aplikacích klientského serveru.

Otázka: Kdo čeká na požadavky v Aplikacích klientského serveru?

Odpověď: Serverový proces vždy čeká na požadavky v Klientských serverových aplikacích.

Otázka: Jak může více počítačů nebo uživatelů vzájemně sdílet pracovní zátěž?

Odpověď: Více počítačů nebo uživatelů může sdílet pracovní zátěž pomocí distribuovaného systému, jako je aplikace Client Server Application.

Související články

Autor

AlegsaOnline.com Klient‑server: model softwarové architektury

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

Sdílet