WYKŁAD: Przetwarzanie rozproszone typu klient-serwer.



Podobne dokumenty
Programowanie współbieżne i rozproszone

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

76.Struktura oprogramowania rozproszonego.

Klient-Serwer Komunikacja przy pomocy gniazd

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Programowanie współbieżne i rozproszone

Mechanizmy pracy równoległej. Jarosław Kuchta

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie:

EXSO-CORE - specyfikacja

Oprogramowanie systemów równoległych i rozproszonych. Wykład 6

Systemy rozproszone System rozproszony

Komunikacja i wymiana danych

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Aplikacje RMI

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

Architektury usług internetowych. Tomasz Boiński Mariusz Matuszek

Zaawansowane narzędzia programowania rozproszonego

Wybrane działy Informatyki Stosowanej

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Wprowadzenie. Dariusz Wawrzyniak 1

Ćwiczenie nr: 9 Obliczenia rozproszone MPI

Wzorce projektowe. dr inż. Marcin Pietroo

Bazy danych 2. Wykład 1

Relacyjne, a obiektowe bazy danych. Bazy rozproszone

Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Tworzenie aplikacji rozproszonej w Sun RPC

Programowanie obiektowe

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Wywoływanie metod zdalnych

Pojęcie systemu baz danych

ZiMSK. VLAN, trunk, intervlan-routing 1

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Wprowadzenie do systemów rozproszonych

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

EJB 3.0 (Enterprise JavaBeans 3.0)

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

PBS. Wykład Zabezpieczenie przełączników i dostępu do sieci LAN

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Dokumentacja techniczna. Młodzieżowe Pośrednictwo Pracy

PROTOKOŁY WARSTWY TRANSPORTOWEJ

Instytut Teleinformatyki

Dokumentacja aplikacji Szachy online

5. Model komunikujących się procesów, komunikaty

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

System generacji raportów

Projektowanie zabezpieczeń Centrów Danych oraz innych systemów informatycznych o podwyższonych wymaganiach bezpieczeństwa

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Sieciowe Systemy Operacyjne

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Programowanie Komponentowe WebAPI

Remote Quotation Protocol - opis

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Sommerville, Ian: Software Engineering, edycja 9, rozdział 18

Wywoływanie metod zdalnych

INTERNET - Wrocław Usługi bezpieczeństwa w rozproszonych strukturach obliczeniowych typu grid

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

1 Wprowadzenie do J2EE

1. Model klient-serwer

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

1. Etapy rozwoju systemów komputerowych

AKADEMIA GÓRNICZO-HUTNICZA. Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki KATEDRA INFORMATYKI. SyncFile

KONCEPCJA WYKORZYSTANIA TECHNOLOGII APPLET- JAVA W TWORZENIU

Zadanie 2: transakcyjny protokół SKJ (2015)

Rodzaje pamięci masowych by Silas Mariusz

REFERAT PRACY DYPLOMOWEJ

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Wybrane działy Informatyki Stosowanej

Autorytatywne serwery DNS w technologii Anycast + IPv6 DNS NOVA. Dlaczego DNS jest tak ważny?

Protokoły sieciowe model ISO-OSI Opracował: Andrzej Nowak

Laboratorium Sieci Komputerowych - 2

Programowanie rozproszone w języku Java

Przetwarzanie danych w chmurze

Integracja komunikatora opartego o protokół XMPP z dużym portalem internetowym

Zaawansowane programowanie w języku C++

OSGi Agata Hejmej

Sieci równorzędne, oraz klient - serwer

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Platformy Programistyczne Zagadnienia sieciowe i wątki

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 13 Topologie sieci i urządzenia

BeamYourScreen Bezpieczeństwo

Plan wykładu. Domain Name System. Hierarchiczna budowa nazw. Definicja DNS. Obszary i ich obsługa Zapytania Właściwości.

Programowanie współbieżne i rozproszone

Wypożyczalnia VIDEO. Technologie obiektowe

Obliczenia rozproszone MPI

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Przesyłania danych przez protokół TCP/IP

Monitorowanie Sieci nonblocking content packet filtering

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Welcome to the waitless world. Inteligentna infrastruktura systemów Power S812LC i S822LC

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Dane bezpieczne w chmurze

Transkrypt:

WYKŁAD: Przetwarzanie rozproszone typu klient-serwer. Przetwarzanie rozproszone: - różnorodne zasoby w różnych lokalizacjach - wiele procesów obliczeniowych dedykowanych do tych zasobów (typowe programy to MPMD) - heterogeniczność sprzętu - dominujący paradygmat obliczeń : klient-serwer (ma obecnie duże znaczenie komercyjne) Paradygmat klient-serwer opisuje asymetryczną relację pomiedzy dwoma procesami przebiegającymi zwykle w różnych miejscach: proces serwer : - zarządza pewnymi zasobami w miejscu A; - oferuje usługi dostępne dla innych procesów; - po uruchomieniu działa w długim okresie czasu; - oczekuje pasywnie na prośbę klienta; - wykonuje zadania odpowiadając na zgłoszenia klientów proces klient : - potrzebuje danej usługi aby wykonać swoją pracę w miejscu B; - wysyła prośbę do serwera dotyczącą wykonania konkretnego zadania z zakresu jego usług; - otrzymuje z serwera wynik tego zadania ================================================= Przykład Serwer zarządza bazą danych Oferowana usługa: dostęp do bazy danych Klient uzyskuje dostęp do konkretnego zapisu w bazie danych. =================================================

W paradygmacie klient-serwer nie występuje równoległość jest to raczej metoda strukturalizacji programów i metoda integracji różnorodnych zasobów. ================================================= Przykład W dużych aplikacjach rozdział pomiędzy klientem a serwerem jest często rozdziałem pomiędzy różnymi programami opracowanymi przez różnych autorów a nawet różne firmy. Omawiany paradygmat jednoznacznie definiuje interfejs pomiędzy tymi programami. ================================================= Jednak równoległość nie jest wykluczona: - po stronie klienta może być stosowana wielowątkowość, t.j. system może przejść do wykonywania innego zadania, podczas gdy sam klient oczekuje na odpowiedź serwera; - również serwer może wykonywać inne zadania oczekując na zgłoszenie klienta. Systemy klient-serwer są typowo budowane na bazie architektur LAN/WAN tworzących luźno związane systemy rozproszone. Stąd w tych systemach przykłada się większą niż w systemach równoległych wagę do bezpieczeństwa, tolerowania błędów, heterogeniczności i interoperacyjności. Systemy klient-serwer w odróżnieniu od systemów równoległych cechuje dynamiczność. Programista nie wychodzi od jednego dobrze zdefiniowanego zadania do rozwiązania oraz specyfikacji programu, który trzeba podzielić na procesy obliczeniowe. Oprogramowując serwer zna interfejs, ale nie zna liczby klientów, ani zbioru wszystkich programów, które w przyszłości będą korzystać z usług serwera. Klienci także nie znają się wzajemnie.

Systemy klient-serwer są więc bardziej nieprzewidywalne. Systemy klient-serwer pracują zwykle w modelu MPMD, chociaż wielu klientów może wykonywać ten sam program. Programy klienta i serwera wykorzystują oddzielne przestrzenie adresowe i komunikują się poprzez wymianę komunikatów. Konkretne mechanizmy różnią się od prostych send/receive. Typowe zasoby serwerów to systemy plików, bazy danych, skomplikowane programy, drukarki itp. Serwer rezyduje zwykle w pobliżu zasobów. Większość serwerów kooperuje z wieloma klientami. Pojedynczy klient może współpracować w swoim okresie pracy z wieloma serwerami. Serwer wykonując powierzone zadanie - może korzystać z usług innych serwerów. Serwer obsługujący wielu klientów może pracować iteracyjnie lub współbieżnie: - praca iteracyjna: w danym czasie jest obsługiwany jeden klient, serwer nie odpowiada na prośby innych klientów - praca współbieżna (wielowątkowa) : każdą prośbę klienta obsługuje oddzielny wątek (dobra współpraca z maszynami równoległymi) Aby uniknąć przeciążenia pojedynczego serwera te same usługi mogą być oferowane przez wiele serwerów. W dostępie do zbioru serwerów pośredniczy program rozsyłający (dispatcher), który przydzielając zadaniom serwery bierze pod uwagę specjalizację serwerów, równomierność ich obciążenia i priorytety zadań.

Zalety paradygmatu klient-serwer : 1. poprawa struktury programów wsparcie dla zespołowego tworzenia oprogramowania 2. elastyczność klient i serwer mogą być aktualizowane bądź wymieniane niezależnie tak długo jak długo zachowany jest ten sam interfejs 3. specjalizacja każde podzadanie może być przydzielone najlepszej dla niego maszynie 4. skalowalność możliwość dodawania klientów bez zmiany ogólnej struktury programu, obowiązki przeciążonego serwera może przejąć silniejsza maszyna lub zbiór maszyn 5. możliwość poprawy wydajności wielowątkowość w kodzie klienta, współdzielenie serwera pomiędzy różne aplikacje, zastosowanie serwera współbieżnego Podobieństwa do systemów z wymianą komunikatów: - systemy klient-serwer pracują z rozłącznymi przestrzeniami adresowymi; - programista lub administrator systemu odpowiada za rozdział danych, szeregowanie zadań, powielanie danych w systemie itp. Podobieństwo z systemem master-slave (dotyczy tylko niektórych systemów) : - pojedynczy klient to master, serwery to slaves

Opozycja w stosunku do wielowątkowości: system wielowątkowy = jeden proces + wiele wątków sterowania system klient-serwer = 1 wątek sterowania + 2 przełączane procesy Warianty systemów klient-serwer : - dwuwarstwowe (two-tier): warstwa serwerów + warstwa klientów (programy aplikacyjne w jednej z tych warstw) Warstwa serwerów zapewnia dostęp do zasobów, warstwa klientów realizuje interfejs użytkownika. Jeżeli programy aplikacyjne są w warstwie klientów to mamy do czynienia z tzw. fat-client. W przeciwnym wypadku jest to tzw. thin-client. Cechy thin-client: - łatwiejsze do utrzymania, aktualizacje są wykonywane bezpośredno na serwerze pod kontrolą administratora - wymagana jest mniejsza przepustowość sieci, do inicjacji pracy serwera wystarcza jeden komunikat - większe obciążenie serwera, skutkujące dłuższymi czasami odpowiedzi - mniejsza elastyczność zmiany dotykają wszystkich klientów Cechy fat-client: - trudniejsze do utrzymania, aktualizacje trzeba przesyłać do wszystkich klientów - wymagana jest większa przepustowość sieci, do inicjacji pracy serwera potrzeba kilka komunikatów - mniejsze obciążenie serwera, skutkujące krótszymi czasami odpowiedzi - większa elastyczność w zmianie funkcjonalności u nowego Klienta - trójwarstwowe (three-tier): warstwa serwerów + warstwa pośrednia + warstwa klientów (programy aplikacyjne działają

w warstwie pośredniej, dwie pierwsze warstwy powstały z podziału warstwy serwerów) Obszary zastosowań: 1. bazy danych 2. przetwarzanie transakcyjne (transakcja sekwencja czynności, która jest wykonywana w całości albo wcale, np. w systemach rezerwacji lotów) 3. serwery druku, nazw i plików 4. WWW największa dziś aplikacja klient-serwer (maszyna w tym samym czasie może dla jednej aplikacji serwerem a dla innej klientem (w tym przetwarzanie formularzy WWW) 5. zdalne obliczenia numeryczne (NetSolve) i gridowe Implementacje systemów klient-serwer:

- systemy przetwarzania komunikatów; - gniazda (sockets) - RPC (Remote Procedure Calls) Gniazda (sockets) to model interfejsu, poprzez który programista może mieć dostęp do funkcjonalności protokołów TCP, UDP i innych (typu broadcast). Interfejs wprowadza niewielki spadek jakości. Gniazda są implementowane jako biblioteki stanowiące część systemu operacyjnego (np. Unix) lub języka (Java sockets). Przykład : Berkeley Sockets Adresowanie : klient musi znać adres złożony z adresu hosta (liczba 32-bitowa otrzymywana z funkcji konwersji, której argumentem jest nazwa hosta np. 123.45.67.89 ) oraz numer portu (czasem predefiniowanego). Inicjalizacja serwera : na początku programista rejestruje serwer w systemie wywołując funkcje socket i bind (z parametrami). Następnie serwer rozpoczyna pracę wywołując funkcję listen (z liczbą wiadomości do buforowania w systemie jako parametrem) dla zorientowanego na połączenia serwerem (TCP), lub recvfrom jeżeli jest to bezpołączeniowy serwer (UDP). Zaletą gniazd jest przenośność (portability). Generalnie gniazda są zbyt wolne dla wykorzystania w programowaniu równoległym (chociaż istnieją zbudowane na nich systemy PVM i MPI). Gniazda TCP są niezawodne, a gniazda UDP szybkie. Zawodność UDP polega na utracie bądź nałożeniu wiadomości. Schematy wymiany wiadomości pomiędzy serwerem a klientem ilustrują rysunki.

Gniazda Java (Java Sockets) Java włącza standard Berkeley Sockets API do języka programowania. Java sockets bazują na obiektach i są bardziej komfortowe dla programisty (np. akceptowane są nazwy takie jak maszyna.miejsce.pl, występuje mniej funkcji i parametrów, łatwo programuje się typowe przypadki).

Java sockets wspomagają multicasting. Po dołączeniu procesu do grupy proces może otrzymywać i wysyłać komunikaty od/do członków grupy. System Java traktuje komunikaty jako strumienie bajtów, które wymagają interpretacji zadanie to pozostawia się programiście. Zdalne wywołania procedur (Remote Procedure Calls - RPC) RPC jest mechanizmem komunikacji między-procesorowej przypominającym zwykłe wywołania procedur. Główna różnica polega na tym, że tradycyjnie procedura jest wywoływana wewnątrz jednego procesu, a w RPC wywołanie i wywoływana procedura należą do różnych procesów. W kontekście systemów klient-serwer wywoływana procedura pełni funkcję serwera. W komunikacji pośredniczą lokalne procedury (stubs), które reprezentują części zdalnych programów klienta i serwera. Wywołanie klienta trafia więc do lokalnej procedury klienta i to procedura transmituje zgłoszenie do serwera, np. poprzez gniazda, przy czym parametry wejściowe są często pakowane do kilku komunikatów w innym formacie (marshaling). Po stronie serwera mechanizm jest analogiczny. Stubs są generowane w IDL (Interface Definition Language).

Ocena: 1. W porównaniu z gniazdami zaletą RPC jest wyższy poziom i zwięzły opis co ułatwia pracę programisty. 2. RPC są wolniejsze niż same gniazda. 3. RPC nie wspomagają równoległości, wymagają większego nakładu programowania niż np. MPI. 4. RPC oddziela klienta od serwera. 5. RPC mają ograniczoną transparentność ponieważ występuje duże prawdopodobieństwo błedów w transmisji, co programista musi przewidzieć. Implementacje: Open Network Computing RPC Distributed Computing Environment RPC