Klient-serwer
W informatyce, klient-serwer to model architektury oprogramowania składający się z dwóch części, systemów klienckich i systemów serwerowych, komunikujących się za pomocą sieci komputerowej lub na tym samym komputerze. Aplikacja klient-serwer jest systemem rozproszonym, składającym się zarówno z oprogramowania klienckiego jak i serwerowego. Proces kliencki zawsze inicjuje połączenie z serwerem, podczas gdy proces serwerowy zawsze oczekuje na zapytania od dowolnego klienta.
Kiedy zarówno proces kliencki jak i proces serwera są uruchomione na tym samym komputerze, nazywa się to konfiguracją pojedynczego miejsca.
Inny rodzaj powiązanej architektury oprogramowania znany jest jako peer-to-peer, ponieważ każdy host lub instancja aplikacji może działać jednocześnie jako klient i serwer (w przeciwieństwie do scentralizowanych serwerów modelu klient-serwer) oraz ponieważ każdy z nich ma równorzędne obowiązki i status. Architektury peer-to-peer są często skracane za pomocą akronimu P2P.
Relacja klient-serwer opisuje relację między klientem a serwerem i sposób, w jaki wysyła on do serwera żądanie usługi oraz jak serwer może przyjmować te żądania, przetwarzać je i zwracać żądane informacje do klienta. Interakcja między klientem a serwerem jest często opisywana za pomocą diagramów sekwencji. Schematy sekwencyjne są standaryzowane w Unified Modeling Language.
Zarówno architektura klient-serwer, jak i P2P są obecnie w powszechnym użyciu.
Podstawowy typ architektury oprogramowania klient-serwer wykorzystuje tylko dwa typy hostów: klientów i serwery. Ten typ architektury jest czasami określany jako dwupoziomowa. Architektura dwupoziomowa oznacza, że klient działa jako jeden poziom, a proces serwera jako drugi poziom.
Architektura oprogramowania klient-serwer stała się jednym z podstawowych modeli obliczeń sieciowych. Wiele typów aplikacji zostało napisanych z wykorzystaniem modelu klient-serwer. Standardowe funkcje sieciowe, takie jak wymiana poczty elektronicznej, dostęp do stron internetowych i baz danych, są oparte na modelu klient-serwer. Na przykład, przeglądarka internetowa jest programem klienckim na komputerze użytkownika, który może uzyskać dostęp do informacji na dowolnym serwerze internetowym na świecie.
Sieć oparta na jednym serwerze.
Sieć oparta na zasadzie peer-to-peer.
Charakterystyka klientów
Charakterystyka serwera
- Zawsze czekaj na prośbę jednego z klientów.
- Obsługuje żądania klientów, a następnie odpowiada na nie, podając żądane dane.
- Serwer może komunikować się z innymi serwerami w celu obsługi żądania klienta.
- Jeżeli do przetworzenia żądania (lub wdrożenia zabezpieczeń) wymagane są dodatkowe informacje, serwer może zażądać od klienta dodatkowych danych (haseł) przed przetworzeniem żądania.
- Użytkownicy końcowi zazwyczaj nie kontaktują się bezpośrednio z serwerem, ale korzystają z klienta.
Zalety
- W większości przypadków architektura klient-serwer umożliwia rozdzielenie ról i obowiązków systemu komputerowego pomiędzy kilka niezależnych komputerów, które są znane sobie tylko poprzez sieć, więc jedną z zalet tego modelu jest większa łatwość utrzymania. Na przykład, możliwa jest wymiana, naprawa, aktualizacja, a nawet relokacja serwera, podczas gdy jego klienci pozostają nieświadomi i nie odczuwają skutków tej zmiany. Ta niezależność od zmian jest również określana jako enkapsulacja.
- Wszystkie dane są przechowywane na serwerach, które generalnie mają lepszą kontrolę bezpieczeństwa niż większość klientów. Serwery mogą lepiej kontrolować dostęp i zasoby, aby zagwarantować, że tylko ci klienci, którzy posiadają odpowiednie uprawnienia, mogą uzyskać dostęp i zmieniać dane.
- Ponieważ przechowywanie danych jest scentralizowane, aktualizacje tych danych są znacznie łatwiejsze dla administratorów niż to, co byłoby możliwe w przypadku architektury P2P. W architekturze P2P aktualizacje danych mogą wymagać dystrybucji i zastosowania do każdego "rówieśnika" w sieci, co jest zarówno czasochłonne, jak i podatne na błędy, ponieważ mogą istnieć tysiące, a nawet miliony rówieśników.
- Dostępnych jest już wiele zaawansowanych technologii klient-serwer, które zostały zaprojektowane w celu zapewnienia bezpieczeństwa, przyjaznych dla użytkownika interfejsów i łatwości obsługi.
- Współpracuje z wieloma różnymi klientami o różnych specyfikacjach.
Wady
- Blokowanie ruchu sieciowego jest jednym z problemów związanych z modelem klient-serwer. Wraz ze wzrostem liczby jednoczesnych zapytań klientów do danego serwera, serwer może być przeciążony. W przeciwieństwie do sieci P2P, gdzie jego przepustowość w rzeczywistości wzrasta wraz z dodawaniem kolejnych węzłów, ponieważ całkowita przepustowość sieci P2P może być w przybliżeniu obliczona jako suma przepustowości każdego węzła w tej sieci.
- Porównując model klient-serwer z modelem Peer to Peer, w przypadku awarii jednego serwera, żądania klientów nie mogą być obsługiwane, ale w przypadku sieci P2P, serwery są zazwyczaj rozproszone pomiędzy wiele węzłów. Nawet jeśli jeden lub więcej węzłów zawiedzie, na przykład jeśli jeden z węzłów nie udało się pobrać pliku, pozostałe węzły powinny nadal posiadać dane potrzebne do zakończenia pobierania.
Przykłady
- Szczególne rodzaje klientów obejmują: przeglądarki internetowe, klientów poczty elektronicznej i klientów czatu online.
- Szczególne rodzaje serwerów obejmują: serwery internetowe, serwery FTP, serwery baz danych, serwery poczty elektronicznej, serwery plików, serwery wydruku. Większość usług internetowych to również rodzaje serwerów.
Pytania i odpowiedzi
P: Co to jest architektura oprogramowania klient-serwer?
O: Architektura oprogramowania klient-serwer to model składający się z dwóch części, systemów klienckich i systemów serwerowych, które komunikują się przez sieć komputerową lub na tym samym komputerze.
P: Jak działa aplikacja klient-serwer?
O: Aplikacja klient-serwer jest systemem rozproszonym, składającym się z oprogramowania klienta i serwera. Proces klienta zawsze inicjuje połączenie z serwerem, natomiast proces serwera zawsze czeka na żądania od dowolnego klienta.
P: Co się dzieje, gdy proces klienta i proces serwera są uruchomione na tym samym komputerze?
O: Jeżeli proces klienta i proces serwera są uruchomione na tym samym komputerze, to jest to tzw. konfiguracja jednomiejscowa.
P: Jakie korzyści daje korzystanie z Aplikacji Klient-Serwer?
O: Używanie Aplikacji Klient-Serwer zapewnia lepszy sposób dzielenia obciążeń między wiele komputerów lub użytkowników.
P: Kto inicjuje połączenia w Aplikacjach Klient-Serwer?
O: W Aplikacjach Klient-Serwer połączenia zawsze inicjuje Proces Klienta.
P: Kto czeka na żądania w Aplikacjach Serwera Klienta?
O: Proces Serwera zawsze czeka na żądania w Aplikacjach Serwera Klienta.
P: Jak wiele komputerów lub użytkowników może współdzielić obciążenia?
O: Wiele komputerów lub użytkowników może dzielić się obciążeniami, korzystając z systemu rozproszonego, takiego jak Aplikacja Client Server.