Klient-server
V informatice je klient-server model softwarové architektury sestávající ze dvou částí, klientského systému a serverového systému, které spolu komunikují v počítačové síti nebo na stejném počítači. Aplikace klient-server je distribuovaný systém tvořený klientským i serverovým softwarem. Aplikace klient-server poskytují lepší způsob rozdělení pracovní zátěže. klientský proces vždy iniciuje spojení se serverem, zatímco serverový proces vždy čeká na požadavky od některého klienta.
Pokud je klientský proces i proces serveru spuštěn na stejném počítači, jedná se o nastavení s jedním sídlem.
Další typ související softwarové architektury je znám jako peer-to-peer, protože každý hostitel nebo instance aplikace může současně fungovat jako klient i server (na rozdíl od centralizovaných serverů modelu klient-server) a protože každý z nich má rovnocenné povinnosti a postavení. Architektury typu peer-to-peer se často označují zkratkou P2P.
Vztah mezi klientem a serverem popisuje vztah mezi klientem a způsobem, jakým zadává serveru požadavek na službu a jakým může server tyto požadavky přijmout, zpracovat a vrátit klientovi požadované informace. Interakce mezi klientem a serverem se často popisuje pomocí sekvenčních diagramů. Sekvenční diagramy jsou standardizovány v jazyce Unified Modeling Language.
V současnosti se hojně používají architektury klient-server i P2P.
Základní typ softwarové architektury klient-server využívá pouze dva typy hostitelů: klienty a servery. Tento typ architektury se někdy označuje jako dvouúrovňová. Dvouúrovňová architektura znamená, že klient funguje jako jedna úroveň a serverový proces jako druhá úroveň.
Softwarová architektura klient-server se stala jedním ze základních modelů síťových počítačů. Pomocí modelu klient-server bylo napsáno mnoho typů aplikací. Na modelu klient-server jsou založeny standardní síťové funkce, jako je výměna e-mailů, přístup k webu a databázím. Například webový prohlížeč je klientský program na uživatelském počítači, který může přistupovat k informacím na libovolném webovém serveru na světě.
Síť založená na principu peer-to-peer.
Síť založená na jednom serveru.
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
- Mezi konkrétní typy klientů patří: webové prohlížeče, e-mailoví klienti a klienti pro online chat.
- Mezi konkrétní typy serverů patří: webové servery, servery FTP, databázové servery, e-mailové servery, souborové servery, tiskové servery. Většina webových služeb je také typem serverů.
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.