Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Systemy rozproszone W. Bartkiewicz Wykład 1. Zagadnienia wstępne.

Podobne prezentacje


Prezentacja na temat: "Systemy rozproszone W. Bartkiewicz Wykład 1. Zagadnienia wstępne."— Zapis prezentacji:

1 Systemy rozproszone W. Bartkiewicz Wykład 1. Zagadnienia wstępne

2 Literatura podstawowa Tannenbaum A.S., van Steen M., Systemy rozproszone. Zasady i paradygmaty, WNT, 2005.

3 Literatura podstawowa Tannenbaum A.S., van Steen M., Systemy rozproszone. Zasady i paradygmaty, WNT, Coulouris G, Dollimore J., Kindberg T., Systemy rozproszone – podstawy i projektowanie, WNT, 1998.

4 Literatura – MS Windows Williams A., Programowanie Windows Czarna księga, Helion, 2001.

5 Literatura – MS Windows Williams A., Programowanie Windows Czarna księga, Helion, Jones A., Ohlund J., Programowanie sieciowe Microsoft Windows, Wyd. RM, 2000.

6 Literatura – MS Windows Williams A., Programowanie Windows Czarna księga, Helion, Jones A., Ohlund J., Programowanie sieciowe Microsoft Windows, Wyd. RM, Reilly D.J., Programowanie aplikacji serwerowych, Wyd. RM, 2001.

7 Literatura – MS Windows Williams A., Programowanie Windows Czarna księga, Helion, Jones A., Ohlund J., Programowanie sieciowe Microsoft Windows, Wyd. RM, Reilly D.J., Programowanie aplikacji serwerowych, Wyd. RM, Eddon G., Eddon H., COM+ Programowanie, Wyd. RM, 2001.

8 Literatura – MS Windows Williams A., Programowanie Windows Czarna księga, Helion, Jones A., Ohlund J., Programowanie sieciowe Microsoft Windows, Wyd. RM, Reilly D.J., Programowanie aplikacji serwerowych, Wyd. RM, Eddon G., Eddon H., COM+ Programowanie, Wyd. RM, Mueller J.P., COM+ Kompendium programisty, Helion, 2002.

9 Literatura – MS Windows Williams A., Programowanie Windows Czarna księga, Helion, Jones A., Ohlund J., Programowanie sieciowe Microsoft Windows, Wyd. RM, Reilly D.J., Programowanie aplikacji serwerowych, Wyd. RM, Eddon G., Eddon H., COM+ Programowanie, Wyd. RM, Mueller J.P., COM+ Kompendium programisty, Helion, Richter J., Programowanie aplikacji dla Microsoft Windows, Wyd. RM, 2002.

10 Literatura – Unix/Linux Stevens W.R., Unix Programowanie usług sieciowych, WNT, 2002.

11 Literatura – Unix/Linux Stevens W.R., Unix. Programowanie usług sieciowych, WNT, Matthew N., Stones R., Linux. Programowanie, Wyd. RM, 1999.

12 Literatura – Unix/Linux Stevens W.R., Unix. Programowanie usług sieciowych, WNT, Matthew N., Stones R., Linux. Programowanie, Wyd. RM, Mitchell M., Oldham J., Samuel A., Linux. Programowanie dla zaawansowanych, Wyd. RM, 2002.

13 System rozproszony Systemem rozproszonym (ang. distributed system) nazywamy zbiór procesów (aplikacji), zazwyczaj uruchamianych na samodzielnych komputerach, komunikujących się za pośrednictwem specyficznych mechanizmów, tzw. komunikacji międzyprocesowej (IPC, ang. Inter Process Communication). Komunikacja ta przyjmuje jedną z następujących form: Wymiana – aplikacje przesyłają między sobą informacje Dzielenie zasobów – zasoby udostępniane są bezpośrednio dla wielu aplikacji Współpraca – aplikacje uzupełniają się wzajemnie przy realizacji zadania

14 Własności systemów rozproszonych Współdzielenie zasobów Otwartość Współbieżność Skalowalność Odporność na uszkodzenia Przezroczystość

15 Współdzielenie zasobów Przez zasób rozumiemy pewne dobro (rzecz lub usługę), które może być z pożytkiem wykorzystywane w systemie rozproszonym. Zasoby obejmują zarówno elementy sprzętowe systemu, takie jak dyski czy drukarki, jak również elementy definiowane przez oprogramowanie i dane, takie jak pliki, okna, bazy danych. Współdzielenie zasobów umożliwia zwiększenie ich dostępności i optymalizację ich wykorzystania. Jest to jeden z głównych istnienia aplikacji rozproszonych. Zasoby w systemie rozproszonym zamknięte są fizycznie w komputerze lub innym urządzeniu, a dostęp do nich z innych komputerów może się dokonywać tylko za pomocą komunikacji.

16 Współdzielenie zasobów Każdy zasób, który ma być w sposób efektywny wspólnie wykorzysty- wany, musi być zarządzany przez program, tworzący interfejs komunikacyjny umożliwiający dostęp do niego, działanie na nim oraz jego niezawodną i spójną aktualizację. Moduły oprogramowania wykonujące te funkcje nazywamy zarządcami zasobów (ang. resource manager). Każdy typ zasobu wymaga odrębnej polityki zarządzania i swoistych metod, istnieją jednak pewne wspólne wymagania: –zastosowanie schematu nazewniczego, –umożliwienie dostępu do poszczególnych zasobów z dowolnego miejsca, –odwzorowanie nazw zasobów na adresy komunikacyjne, –koordynowanie współbieżnych dostępów, powodujących zmiany stanu współdzielonych zasobów, w celu zapewnienia ich spójności.

17 Otwartość Przez otwartość systemu informatycznego rozumiemy jego zdolność do rozszerzania różnymi sposobami. System może być otwarty lub zamknięty ze względu na rozszerzenia sprzętowe, np. dodawanie urządzeń zewnętrznych, pamięci lub interfejsów komunikacyjnych, czy też ze względu na rozszerzanie oprogramowania, czyli dodawanie nowych właściwości, funkcji, protokołów komunikacyjnych i usług dzielenia zasobów. Otwartość osiąga się poprzez określenie i dokumentowanie zasadniczych interfejsów programowych systemu i ich udostępnianie programistom poprzez podanie do powszechnej wiadomości. Otwarte systemy rozproszone opierają się również na mechanizmie jednolitej komunikacji międzyprocesowej (otwartość przez komunikację), umożliwiającym komunikowanie się procesów nawet wtedy gdy działają one na różnych komputerach o różnych systemach operacyjnych.

18 Otwartość Otwartość systemu zwiększa elastyczność jego konstrukcji i ułatwia dalsze utrzymanie i ewolucję. Otwartość systemu umożliwia również konstruowanie go z heterogenicznego sprzętu i oprogramowania, być może pochodzącego od różnych sprzedawców. Wymaga to jednak ścisłego przestrzegania przez poszczególne składowe opublikowanych standardów, oraz umiejętnej integracji całości systemu.

19 Współbieżność Jeśli w systemie współistnieje jednocześnie kilka procesów (wątków wykonania), mówimy, że są one wykonywane współbieżnie. Sytuacja ta dotyczy nie tylko jednoczesnego (równoległego) wykonywania procesów (wątków) na różnych komputerach lub procesorach, ale również naprzemiennego przeplatania porcji poszczególnych procesów (wątków) na jednym procesorze. Przetwarzanie współbieżne umożliwia zwiększenie wydajności systemu, poprzez przyśpieszenie (równoległość) wykonywania operacji oraz daje możliwość jednoczesnej obsługi wielu użytkowników. Współbieżność działania powstaje w systemie rozproszonym jako naturalny wynik osobnych działań użytkowników, niezależności zasobów i procesów usługowych. Współbieżny dostęp do zasobów wspólnie wykorzystywanych może jednak powodować konflikty i musi być synchronizowany.

20 Skalowalność Przez skalowalność rozumiemy łatwość z jaką system lub jego komponent może zostać zmodyfikowany dla sprostania wymaganiom problemu. Powiększanie skali systemu, tzn. liczby użytkowników, komputerów, urządzeń zewnętrznych, itp. nie powinno pociągać za sobą konieczności wykonywania w nim zmian. Systemy rozproszone poprzez zwiększenie dostępności zasobów oraz wydajności działania umożliwiają lepszą skalowalność niż scentralizowane. Rozdzielenie składowych umożliwia stopniowy rozrost lub kurczenie się systemu poprzez dodawanie lub usuwanie jego elementów. Pamiętać jednak należy, że skalowalność nie jest jedynie problemem sprzętowym lub wydajności sieci. Zagadnienie to przenika niemal wszystkie aspekty projektowania systemu. Jeśli projekt poprawnie nie przewidzi potrzeby skalowalności, wiele ograniczeń pozostaje również w systemach rozproszonych.

21 Odporność na uszkodzenia Większa elastyczność – w przypadku awarii elementu systemu łatwiej go naprawić lub wymienić. Możliwość precyzyjnego zaplanowania redundancji sprzętowej. Zadania elementów, które uległy awarii mogą być przejmowane przez inne składowe systemu, w stanie normalnym wykonujące zadania niekrytyczne. W systemie scentralizowanym, awaria powoduje przerwanie pracy całego systemu. Rozdzielenie składowych w systemie rozproszonym opanowywanie ich uszkodzeń i usuwanie skutków awarii bez zakłócania całego systemu. Awaria składowej dotyczy tylko działań do których wykorzystywano uszkodzoną składową. Pomimo awarii niektórych usług, pozostałe mogą pracować w miarę normalnie. Efektywne zapewnienie odporności systemu na uszkodzenia wymaga podjęcia odpowiednich działań projektowych.

22 Odporność na uszkodzenia Systemy rozproszone zależne są od sieci, które zazwyczaj nie mają wbudowanej redundancji sprzętowej. –Uszkodzenie sieci może powodować zawieszenie działania systemu aż do przywrócenia łączności. –Przeciążenie sieci pogarsza wydajność systemu i czas reakcji na działania użytkowników. Systemy rozproszone bardziej narażone są na ataki. –Bezpieczeństwo systemu staje się zależne od najsłabiej zabezpieczonego komputera w sieci. –Możliwość ataku poprzez infrastrukturę sieciową.

23 Przezroczystość Przezroczystość dostępu – umożliwienie dostępu do lokalnych i odległych obiektów za pomocą identycznych operacji. Przezroczystość położenia – umożliwienie dostępu do obiektów bez znajomości ich fizycznej lokalizacji. Przezroczystość jednoczesności dostępu – umożliwienie wielu procesom jednoczesnego, bezkonfliktowego dostępu do obiektów wspólnych. Przezroczystość zwielokrotniania – umożliwienie, w celu zwiększenia niezawodności i wydajności, użycia wielu kopii obiektów bez wiedzy użytkowników o zwielokrotnieniach. Przezroczystość (ang. transparency) – ukrywanie przed użytkownikiem rozdzielności składowych w systemie rozproszonym, tak by system postrzegany był jako całość, tzn. dawał możliwość dostępu do swych usług i zasobów bez żadnych założeń dotyczących ich lokalizacji.

24 Przezroczystość Przezroczystość awarii – umożliwia ukrywanie uszkodzeń, pozwalając użytkownikom na kończenie zadań pomimo awarii pewnych składowych systemu. Przezroczystość dynamicznej modyfikacji konfiguracji – pozwala na przemieszczenie obiektów w obrębie systemu bez wpływu na działania użytkowników. Przezroczystość wydajności – umożliwia rekonfigurowanie systemu w celu poprawy działania przy zmianie obciążenia. Przezroczystość skalowania – umożliwia systemowi rozszerzanie skali bez zmiany struktury lub algorytmów użytkowych.

25 Platformy dla systemów rozproszonych Jednoprocesorowe systemy operacyjne Rozproszone systemy operacyjne –Ze wspólną pamięcią dzieloną (jedno i wieloprocesorowe) –Wielokomputerowe systemy operacyjne Sieciowe systemy operacyjne

26 Wielokomputerowe systemy operacyjne Jądro Maszyna A Jądro Maszyna B Jądro Maszyna C Sieć Aplikacje rozproszone Usługi rozproszonego systemu operacyjnego

27 Sieciowe systemy operacyjne Jądro Maszyna A Jądro Maszyna B Jądro Maszyna C Sieć Aplikacje rozproszone Usługi sieciowego systemu operacyjnego

28 Oprogramowanie warstwy pośredniej (middleware) Jądro Maszyna A Jądro Maszyna B Jądro Maszyna C Sieć Aplikacje rozproszone Usługi sieciowego systemu operacyjnego Warstwa pośrednia oprogramowania

29 Modele oprogramowania warstwy pośredniej Oparte o rozproszone systemy plików. Wywołania procedur zdalnych (RPC). Oparte na obiektach (komponentach) rozproszonych. Oparte na dokumentach rozproszonych.

30 Usługi oprogramowania warstwy pośredniej Rozwiązania komunikacyjne wysokiego poziomu, które ukrywają niskopoziomowe przekazywanie komunikatów sieciami komputerowymi. Nazewnictwo. Usługi nazewnicze umożliwiające dzielenie i odnajdywanie zasobów. Trwałość. Środki oferujące specjalne udogodnienia przechowywania elementów systemu. Zarządzanie transakcjami rozproszonymi. Umożliwiają one wykonywanie przez transakcję wielu operacji pisania i czytania w sposób niepodzielny, nawet jeśli dane znajdują się na różnych maszynach. Bezpieczeństwo.

31 Komunikacja w systemach rozproszonych Przenoszenie danych ze środowiska procesu nadawczego do środowiska procesu odbiorczego, poprzez wspólnie użytkowany kanał komunikacyjny. W niektórych działaniach komunikacyjnych wymaga to synchronizacji czynności odbiorczych z czynnościami nadawczymi.

32 Komunikacja Podstawowe konstrukcje programowe, wykorzystywane dla komunikacji mają postać elementarnych działań wyślij i odbierz (ang. send and receive). Łącznie działania te dokonują przekazania komunikatu (ang. message passing) pomiędzy parą procesów. Każde przekazanie komunikatu obejmuje przesłanie przez proces nadawczy zbioru wartości danych komunikatu za pośrednictwem określonego mechanizmu komunikacji i akceptację komunikatu przez proces odbiorczy. Mechanizm przesyłania może być: –Synchroniczny (z blokowaniem), co oznacza iż nadawca czeka po wysłaniu komunikatu do czasu aż odbiorca wykona operację odbioru. –Asynchroniczny (bez blokowania), co znaczy, że komunikat umieszczany jest w kolejce komunikatów oczekujących na przyjęcie przez odbiorcę, a proces nadawczy może kontynuować działanie natychmiast. Operacja odbierz z reguły blokuje proces odbiorczy, jeśli w danej chwili nie ma żadnego komunikatu.

33 Komunikacja Wyróżnia się wiele rozmaitych abstrakcji, spełniających formę mechanizmów komunikacyjnych w przekazywaniu komunikatów, noszące takie nazwy jak potoki, gniazda i porty. Różnią się one sposobem ustanawiania połączeń między procesami oraz buforowaniem komunikatów między nadawcą a odbiorcą. W praktyce najczęściej spotyka się dwa podstawowe schematy komunikacji: –Komunikacja klient-serwer (ang. client-server) służąca do łączności między parą procesów. Specyficzną formą tego typu komunikacji są wywołania procedur zdalnych (ang. RPC – Remote Procedure Calling) oraz przekazywanie działań (ang. function shipping). –Rozsyłanie grupowe (ang. group multicast) nazywane również wielonadawaniem (ang. multicasting), służące do łączności między grupami procesów.

34 Komunikacja klient-serwer Model komunikacji klient-serwer nastawiony jest na dostarczanie usług. W modelu tym wyróżniamy dwa typy procesów: –Klient – proces wysyłający określone zamówienie (żądanie) do realizacji. –Serwer – proces realizujący zamówienie (żądanie). W komunikacji klient-serwer można wyróżnić następujące etapy: –Przesłanie żądania od procesu klienta do procesu serwera. –Wykonanie zamówienia przez serwer. –Przesłanie odpowiedzi do klienta. Schemat komunikacji komunikacji klient-serwer obejmuje więc przesłanie dwu komunikatów i zakłada pewną formę synchronizacji klienta i serwera: –Proces serwera musi spostrzec komunikat z zamówieniem (żądaniem) możliwie jak najszybciej po jego nadejściu. –Proces klienta po wysłaniu żądania musi zawiesić swoje działania, do chwili otrzymania odpowiedzi.

35 Typy serwerów Ze względu na sposób realizacji przez serwer żądań wielu klientów możemy mówić o: –Serwerach iteracyjnych – wyjmujących żądania klientów po kolei, w porządku nadchodzenia. –Serwerach współbieżnych – obsługujących żądania wielu klientów jednocześnie, poprzez współbieżnie wykonywane wątki lub procesy. Ze względu na formę komunikacji serwera z klientem i sposób obsługi sesji związanych z kilku żądań, możemy z kolei mówić o: –Serwerach bezstanowych (bezpołączeniowych) – nie przechowujących między kolejnymi żądaniami klienta żadnych informacji o stanie połączenia (kliencie, historii kontaktów, itp.). Realizują one zazwyczaj proste zadania nie wymagające złożonej konwersacji z klientem. Przykładem może być serwer HTTP. –Serwerach stanowych (połączeniowych) – przechowujących informacje o połączeniu przez ustalony okres czasu, lub do chwili zamknięcia sesji danego klienta. Pozwalają one na realizację wieloetapowych, lub interakcyjnych żądań klientów. Każde połączenie wymaga jednak od serwera alokacji pewnych zasobów. Przykładem są tu serwery baz danych.

36 Wywołania procedur zdalnych (RPC) RPC jest konstrukcją ukrywającą działania komunikacyjne pod znaną abstrakcją wywołania procedury. –Odwołanie do serwera ma po stronie klienta postać identyczną jak zwykłe wywołanie podprogramu. –Abstrakcja ta ukrywa w rzeczywistości wysłanie odpowiedniego komunikatu do procesu serwera (określającego procedurę jaka ma zostać wykonana przez serwer), wykonanie przez serwer odpowiadającego mu przetwarzania i odesłanie odpowiedzi. –Dane przesyłane przez klienta i niezbędne do wykonania przez serwer procedury, podawane są jako wartości parametrów. Odpowiedź serwera przekształcana jest na wartości parametrów wyjściowych oraz wartości powrotne z funkcji.

37 Przekazywanie działań W schemacie komunikacji klient-serwer zawartość komunikatów przekazywanych pomiędzy klientami a serwerem stanowią czyste dane, nawet w przypadku RPC gdzie część komunikatu określa czynność (procedurę), jaką serwer ma wykonać, aby spełnić żądanie. Rozszerzenie tego modelu dopuszcza przekazywanie działań, w którym od klienta do serwera przekazuje się definicje procedur, tj. tworzące je instrukcje (kod). Serwer pełni rolę środowiska obliczeniowego i interpretatora dla programów w określonym języku. Przykładem tego typu rozwiązania jest użycie języka PostScript służącego do komunikacji z drukarkami. Możliwa jest również sytuacja odwrotna, w której serwer na żądanie klienta przesyła do niego kod, który realizowany jest przez samego klienta. Przykładem tego rozwiązania mogą być aplety języka Java.

38 Rozsyłanie grupowe W schemacie komunikacji rozsyłania grupowego procesy współpracują między sobą, rozsyłając komunikaty do grup procesów. Jednej operacji wyślij odpowiada operacja odbierz wykonana przez każdego członka grupy procesów. Nie należy mylić pojęcia rozsyłania grupowego (ang. multicasting) z rozgłaszaniem (ang. broadcasting), czyli wysyłaniem komunikatów do wszystkich komputerów w środowisku danej sieci, techniką słabo skalowaną, która powinna być wykorzystywana dosyć ostrożnie. Komunikacja grupowa wykorzystywana jest najczęściej w takich sytuacjach jak: –Odnajdywanie obiektu. Klient nie wie dokładnie który proces realizuje daną usługę. Wysyła komunikat do pewnej wybranej grupy. Odpowiada tylko ten, który może żądanie zrealizować. –Tolerowanie uszkodzeń. Klient wysyła żądanie do grupy serwerów, które mogą je zrealizować. Obsługa jest zapewniona nawet w przypadku uszkodzenia jednego z nich. –Zwielokrotnione aktualizacje. Pewnymi zdarzeniami mogą być zainteresowane grupy procesów.


Pobierz ppt "Systemy rozproszone W. Bartkiewicz Wykład 1. Zagadnienia wstępne."

Podobne prezentacje


Reklamy Google