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



Podobne dokumenty
Architektura typu klient - serwer. Oprogramowanie systemów równoległych i rozproszonych. Wykład 6. Cechy architektury klient - serwer

Tworzenie aplikacji rozproszonej w Sun RPC

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

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

76.Struktura oprogramowania rozproszonego.

Sun RPC/XDR. Dariusz Wawrzyniak 1

Sieciowa komunikacja procesów - XDR i RPC

Programowanie z użyciem RPC

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

external Data Representation

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC

Wywoływanie procedur zdalnych

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

Zdalne wywoływanie procedur RPC 27. października 2010

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

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

Aplikacje RMI

Wywoływanie metod zdalnych

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Wprowadzenie do programowania rozproszonego

NFS jest protokołem zdalnego wywoływania procedur (RPC)

external Data Representation

Systemy rozproszone. Cezary Sobaniec Marek Libuda. Skrypt do ćwiczeń laboratoryjnych. v1.1 07/09/2006

Wywoływanie metod zdalnych

Wybrane działy Informatyki Stosowanej

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

RPC ZDALNE WYWOŁYWANIE PROCEDUR (ang. Remote Procedure Calls)

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

Programowanie Komponentowe WebAPI

Prezentacja systemu plików NFS

1. Model klient-serwer

Ada95 przetwarzanie rozproszone

Ada95 przetwarzanie rozproszone

Klient-Serwer Komunikacja przy pomocy gniazd

Komunikacja i wymiana danych

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

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

Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR.

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

Wprowadzenie. Dariusz Wawrzyniak 1

Remote Quotation Protocol - opis

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

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

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

WYKŁAD: Przetwarzanie rozproszone typu klient-serwer.

XML-RPC: Zdalne wykonywanie procedur

NIS/YP co to takiego?

Wybrane działy Informatyki Stosowanej

Simple Object Access Protocol

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Przykłady DFS z lotu ptaka :) NFS AFS Coda GoogleFS ZFS

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Programowanie komponentowe 5

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Wprowadzenie do szablonów szablony funkcji

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

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Wprowadzenie do szablonów szablony funkcji

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

1 Wprowadzenie do J2EE

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

Protokół wymiany sentencji, wersja 1

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

Wybrane działy Informatyki Stosowanej

Rozproszone systemy obiektowe

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

System DiLO. Opis interfejsu dostępowego v. 2.0

Podejście obiektowe do budowy systemów rozproszonych

Wybrane działy Informatyki Stosowanej

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Forum Client - Spring in Swing

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Wstęp do programowania

MODEL WARSTWOWY PROTOKOŁY TCP/IP

ZiMSK dr inż. Łukasz Sturgulewski, DHCP

1 Moduł Diagnostyki Sieci

Podstawy programowania w języku C++

Transkrypt:

Wykład 6 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 6 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska

Wykład 6 p. 2/2 Architektura typu klient - serwer Klient - Serwer to asymetryczna architektura, w której pewna funkcjonalność została rozdzielona i wyodbrębnione zostały dwa elementy: klient - potrzebujacy pewnej usługi, zlecajacy ja serwerowi, serwer - dostarczajacy usługi zlecanej przez klienta.

Wykład 6 p. 3/2 Cechy architektury klient - serwer Cechy charakterystyczne serwera: pasywny, czeka na żadania od klientów, w momencie otrzymania żadania, przetwarza je, a następnie wysyła odpowiedź. Cechy charakterystyczne klienta: aktywny, wysyła żadanie do serwera, oczekuje na odpowiedź od serwera.

Architektury klient - serwer Wykład 6 p. 4/2 Podział ze względu na sposób obsługi żadań od klientów: serwer iteracyjny (sekwencyjne) (ang. iterative server), serwer współbieżny (ang. concurrent server). Podział ze względu na obsługę stanów serwera: serwer bezstanowy (ang. stateless server), serwer stanowy (ang. stateful server). Podział ze względu na rozdzielenie pracy : cienki klient (ang. thin client), gruby (bogaty) klient (ang. fat/rich client). Podział ze względu na liczbę warstw (modułów), Podział ze względu na sposób komunikacji (przy użyciu protokołu połaczeniowego lub bezpołaczeniowego).

Wykład 6 p. 5/2 Warstwy aplikacji - model MVC MVC (ang. Model-View-Controller) - Model-Widok-Kontroler składa się z trzech poziomów (warstw): 1. Poziom interfejsu użytkownika np. dokument w przegladarce 2. Poziom przetwarzania (logiki sterowania) np. przetworzenie zapytania w przegladarce internetowej 3. Poziom danych (modelu danych) np. informacje znajdujace się w bazie danych

Architektura trójwarstwowa Wykład 6 p. 6/2

Zdalne wywołanie procedur - koncepcja Wykład 6 p. 7/2 Zadaniem mechanizmu zdalnego wywołania procedur (ang. Remote Procedure Call) jest zachowanie w możliwie maksymalnym stopniu semantyki zwykłych wywołań procedur w środowisku sieciowym.

System Sun RPC (I) Wykład 6 p. 8/2 Produkt Sun RPC został wprowadzony i wypromowany przez firmę Sun Microsystems jednocześnie z systemem NFS. RPC umożliwia konstruowanie aplikacji rozproszonych według modelu klient serwer. Aplikacje oparte na systemie RPC najczęściej sa tworzone przy wykorzystaniu kompilatora protokołów, takiego jak rpcgen firmy Sun Microsystems.

Wykład 6 p. 9/2 System Sun RPC (II) W skład Sun RPC wchodza: biblioteka funkcji, narzędzie rpcgen służace do generowania dla aplikacji kodu obsługi sieci na podstawie opisu interfejsu procedur. Parametry wywołania funkcji i zwracane wyniki przesyłane sa w formacie XDR (external Data Representation - zewnętrzna reprezentacja danych). Z mechanizmu Sun RPC można korzystać przy użyciu protokołu transportu TCP lub UDP. Serwer może udostępniać dla wywołań RPC wiele podprogramów.

Wykład 6 p. 10/2 RPC - zasada działania Działanie RPC jest synchroniczne: aplikacja klient wysyła do serwera polecenie wykonania podprogramu wraz z argumentami wywołania. Następnie klient przechodzi w stan oczekiwania na zakończenie wykonania podprogramu, aby odebrać zwracane przez podprogram wyniki.

Usługi RPC Wykład 6 p. 11/2 Usługa w RPC nazywa się zbiór funkcji przyjmujacych określone argumenty i zwracajacych określone wyniki. Deklaracje argumentów i wyników to interfejs usługi. Z punktu widzenia programisty usługa jest identyfikowana przez numer programu i numer wersji.

Program rpcbind Wykład 6 p. 12/2 rpcbind jest serwerem dokonujacym konwersji numerów programów RPC na numer portu tzw. portmapper (port 111) 1. serwer rejestruje się u demona portmap, 2. klient żada numeru portu serwera, 3. demon portmap odsyła klientowi numer portu serwera, 4. klient wysyła żadanie do serwera, 5. serwer wysyła odpowiedź do klienta.

Pieniek klienta i pieniek serwera Wykład 6 p. 13/2 W RPC stosowane sa pojęcia pieńka klienta (interfejsu klienta) i pieńka serwera (interfejsu serwera). Pieniek klienta symuluje w aplikacji klienta lokalne działanie procedury. Pieniek serwera czeka na żadanie nadchodzace od klienta.

Wykład 6 p. 14/2 Specyfikacja usług RPC W RPC odległe usługi sa zorganizowane i identyfikowane według hierarchii jeden serwer zawiera jeden program jeden program ma jedna lub kilka wersji każda z wersji zawiera jedna lub kilka procedur

Wykład 6 p. 15/2 Specyfikacje programów Numer programu - liczba 32-bitowa 0000 0000 1fff ffff - SunRPC 2000 0000 3fff ffff - definiowane przez użytkownika 4000 0000 5fff ffff - tymczasowe 6000 0000 ffff ffff - zarezerwowane Numer wersji - liczba 32-bitowa Numer procedury - liczba 32-bitowa

Wykład 6 p. 16/2 Polecenie rpcinfo Zwraca informacje dotyczace usług zarejestrowanych w rpcbind Wyświetlenie wszystkich usług na wskazanym serwerze: rpcinfo -p [ host ] Przykład: program wer. proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 391002 2 tcp 901 sgi_fam 100024 1 udp 757 status 100024 1 tcp 760 status

Plik /etc/rpc Wykład 6 p. 17/2 Możliwe jest zdefiniowanie numerów programów w pliku /etc/rpc. W takim wypadku, aby otrzymać numer odpowiadajacy nazwie programu należy skorzystać z funkcji getrpcbyname(). Przykład: portmapper 100000 portmap sunrpc rstatd 100001 rstat rstat_svc rup perfmeter rusersd 100002 rusers nfs 100003 nfsprog ypserv 100004 ypprog mountd 100005 mount showmount ypbind 100007 walld 100008 rwall shutdown yppasswdd 100009 yppasswd etherstatd 100010 etherstat...

Program rpcgen Wykład 6 p. 18/2 Program rpcgen jako wejście pobiera plik specyfikacji usług w formacie języka RPC IDL ( C z dodatkiem typów program i version). Zostanie wygenerowany żadany kod języka C z implementacja zdefiniowanego wywołania zdalnej procedury.

Wykład 6 p. 19/2 Język RPC Plik z definicja protokołu może zawierać następujace elementy: obowiazkowa deklaracja programu serwera i przynajmniej jednej dostarczonej przez niego funkcji, deklaracje złożonych typów danych wykorzystywanych w protokole, deklaracje stałych, komentarze.

Przekazywanie argumentów Wykład 6 p. 20/2 Standardowo RPC dopuszcza tylko jeden argument wywołania odległej procedury i jeden zwracany wynik, podawane w formie wskaźników. Jeśli występuje kilka argumentów należy je umieścić w strukturze.

XDR - External Data Representation Wykład 6 p. 21/2 XDR jest zdefiniowanym na potrzeby RPC formatem danych, zapewniajacym ich pełna przenośność w środowisku heterogenicznym. Konwersja danych znajdujacych się w pamięci do formatu XDR (szeregowanie) i odwrotnie (deszeregowanie) odbywa się przy użyciu specjalnych procedur zwanych filtrami. Dla typów podstawowych zostały zdefiniowane odpowiednie filtry, natomiast dla typów złożonych programista musi je utworzyć samodzielnie. XDR może być używany również poza RPC, np. do tworzenia w pełni przenośnych plików binarnych.

Wykład 6 p. 22/2 Struktura CLIENT struct CLIENT { AUTH *cl_auth; /* authenticator */ struct clnt_ops { enum clnt_stat (*cl_call) (CLIENT *, u_long, xdrproc_t, caddr_t, xdrproc_t, caddr_t, struct timeval); /* wywołanie procedury zdalnej */ void (*cl_abort) (void); /* anulowanie wywołania */ void (*cl_geterr) (CLIENT *, struct rpc_err *); /* pobranie kodu błędu */ bool_t (*cl_freeres) (CLIENT *, xdrproc_t, caddr_t); /* zwolnienie wyników */ void (*cl_destroy) (CLIENT *); /* zniszczenie tej struktury */ bool_t (*cl_control) (CLIENT *, int, char *); /* ioctl() dla rpc */ } *cl_ops; caddr_t cl_private; /* prywatne */ };

Wykład 6 p. 23/2 Ważniejsze funkcje (I) Do tworzenia uchwytu klienta służy funkcja clnt_create: #include <rpc/rpc.h> CLIENT* clnt_create(char* host, u_long prog, u_long vers, char* protocol); host - nazwa hosta na którym działa proces serwer, prog - numer programu, vers - numer wersji, proto - określa klasę protokołu transportowego (może być między innymi udp lub tcp). jeżeli wywołanie zakończy się sukcesem zostanie zwrócony poprawny identyfikator (uchwyt) klienta, w przeciwnym wypadku funkcja zwróci NULL.

Ważniejsze funkcje (II) Wykład 6 p. 24/2 Do usunięcia utworzonej struktury klienta służy funkcja clnt_destroy: void clnt_destroy(client* clnt); clnt - struktura klienta, która ma zostać usunięta Do obsługi błędów można wykorzystać funkcje void clnt_pcreateerror(char* s); void clnt_perrno(clnt_stat stat); void clnt_perror(client *clnt, char* s);

Przykład - plik ser.x Wykład 6 p. 25/2 struct integers{ int x1; int x2; }; typedef struct integers intargs; program PROGSERVICE{ version VERSERVICE{ int SPSERVRPC(intargs) = 1; } = 1; } = 0x21000000;

Przykład - kod klienta (I) Wykład 6 p. 26/2 #include <iostream> #include <rpc/rpc.h> #include "ser.h" int dodaj(int a, int b) { CLIENT *c1; integers arg; int *ret; char* host = "localhost"; c1 = clnt_create(host, PROGSERVICE, VERSERVICE, "tcp"); if (c1 == NULL) { clnt_pcreateerror(host); return -1; }

Przykład - kod klienta (II) Wykład 6 p. 27/2 arg.x1 = a; arg.x2 = b; ret = (int*)spservrpc_1(&arg, c1); } if (ret == NULL) { clnt_perror(c1, "blad wywolania odleglej procedury"); return -1; } clnt_destroy(c1); return (*ret); int main() { int a = 1, b = 1; std::cout << dodaj(a,b); }

Przykład - kod serwera Wykład 6 p. 28/2 #include <rpc/rpc.h> #include "ser.h" int spserv(int x1, int x2) { return x1+x2; } int *spservrpc_1_svc(intargs* arg, svc_req *) { int* result = new int; *result = spserv(arg->x1, arg->x2); return result; }