Projektowanie Systemów Informatycznych wykład 10 Uniwersytet Zielonogórski Instytut Informatyki i Elektroniki
Architektura SI Architektura terminalowa spotykana głównie w środowisku mainframe Terminale bez żadnej inteligencji, baza danych i przetwarzanie realizowane w centralnym komputerze Terminale Prezentacja wyników (interfejs użytkownika) Liczba terminali Według potrzeb Mainframe aplikacje aplikacje Baza Baza danych danych przetwarzanie (logika biznesu) i zarządzanie bazą danych 2
Architektura SI Jak zapewnić możliwość korzystania z wyników pracy oprogramowania działającego w odległym ośrodku przetwarzania danych? Siedziba Firmy Do sprawnego działania przedsiębiorstwa z wieloma odległymi filiami (działami) potrzebne będą niezawodne łącza unikając administracji systemem mainframe'a, usługobiorca naraża się na niespodziewane koszty administrowania systemem sieciowym i zapewnienia naprawdę niezawodnych łączy na dalekie dystanse. Zalety systemu scentralizowanego: uniknięcie problemów z siecią komputerową WAN i (częściowo) LAN prosta (scentralizowana) architektura systemu informatycznego możliwość dobrego zdefiniowania odpowiedzialności za zarządzanie systemem wysoki poziom bezpieczeństwa wysoki stopień spójności danych Wady: uzależnienie procesów informatycznych od jednego komputera centralnego duży koszt rezerwowego centrum przetwarzania wysokie koszty zarządzania systemem wysokie koszty urządzeń peryferyjnych kosztowna eksploatacja bieżąca 3
Samonapędzający się rozwój technologii Wzrost możliwości obliczeniowych komputerów powoduje zwiększenie ich funkcjonalności i wydaje się że jest to mechanizm ze sprzężeniem zwrotnym Możliwości komputerów Szybkość (wydajność) przetwarzania Na przykładzie procesorów Intela Pentium II 1980 80586 Pentium 2003 80486 8086 80286 80386 Pentium IV Pentium III Wielozadaniowe Systemy operacyjne jednoprocesorowe z podziałem czasu (przełączanie pomiędzy procesami) wieloprocesorowe (przetwarzanie rozproszone i równoległe) Proste systemy operacyjne (tryb rzeczywisty 8086, tryb chroniony 80286) Problem, jak zapewnić możliwość korzystania z wyników pracy oprogramowania działającego w odległym ośrodku przetwarzania danych nadal aktualny? 4
Jak opanować rozproszenie Aplikacje biurowe i Graficzny interfejs użytkownika (GUI) programowanie zdarzeniowe (event driven) strategie zarządzania procesami i zasobami (spooling i usługi plikowe) Naturalny proces migracji z systemu scentralizowanego lub izolowanego na System Rozproszony, w którym przetwarzanie informacji odbywa się na wielu różnych komputerach (oraz systemach operacyjnych), często znacznie oddalonych geograficznie (nawet tysiące kilometrów). Pojedyncza aplikacja Proces 1 Proces 2 Procesy aplikacji System zarządzania bazą danych Baza danych 1 Baza danych 1 Baza danych 1 Baza danych 1 5
Zalety systemów rozproszonych Podział zasobów: system rozproszony pozwala dzielić zasoby sprzętowe i programowe (pamięci dyskowe, drukarki, pliki, kompilatory, itd.) pomiędzy wielu użytkowników pracujących na różnych komputerach pracujących w sieci. Otwartość: jest ona definiowana jako zdolność systemu do dołączania nowego sprzętu, oprogramowania i usług. Otwarte systemy często mają tę zdolność również w stosunku do w/w zasobów ulokowanych na platformach sprzętowych i systemach operacyjnych dostarczanych przez różnych dostawców. Współbieżność: w systemie rozproszonym wiele procesów może działać w tym samym czasie na różnych komputerach w sieci. Procesy te mogą (jakkolwiek nie muszą) komunikować się podczas swego działania. Skalowalność: Moc i możliwości przetwarzania może wzrastać w miarę dodawania do systemu nowych zasobów, w szczególności komputerów. W praktyce skalowalność jest często ograniczona poprzez przepustowość sieci oraz (niekiedy) poprzez np. specyficzne protokoły wymiany informacji. Niemniej skalowalność systemu rozproszonego jest nieporównywalnie lepsza w stosunku do systemu scentralizowanego. Tolerancja błędów: Dostępność wielu komputerów oraz umożliwienie zdublowania informacji (replikacje) oznacza, że rozproszony system jest tolerancyjny w stosunku do pewnych błędów zarówno sprzętowych jak i programowych. Np. awaria węzła komunikacyjnego powoduje wygenerowanie innej trasy przepływu informacji. Przezroczystość: Oznacza ukrycie przed użytkownikiem szczegółów rozproszenia, np. gdzie ulokowane są zasoby lub jak są one fizycznie zaimplementowane, pod jakim systemem pracują, itd. Przezroczystość ma zasadnicze znaczenie dla komfortu działania użytkownika oraz dla niezawodności budowanego oprogramowania. Niekiedy, np. dla celów optymalizacyjnych, użytkownik może zrezygnować z pełnej przezroczystości. Przykładem przezroczystości jest Internet: klikając w aktywne pole na stronie WWW nie interesujemy się, gdzie znajduje się odpowiadająca mu strona, oraz jak i na czym jest zaimplementowana. 6
Wady systemów rozproszonych Złożoność: systemy rozproszone są trudniejsze do zaprogramowania i do administrowania niż systemy scentralizowane. Zależą od własności sieci, np. jej przepustowości i czasu transmisji, co utrudnia zaprojektowanie i zrealizowanie wielu algorytmów i procesów przetwarzania. Ochrona: Dla systemu scentralizowanego wystarcza w zasadzie strażnik z karabinem. System rozproszony nie może być chroniony w ten sposób, przez co może być narażony na różnorodne ataki (włamania, wirusy, sabotaż, odmowa płatności, itd.) z wielu stron, które trudno zidentyfikować. Zdolność do zarządzania: jest ona utrudniona wskutek tego, że konsekwencje różnych działań administracyjnych w systemie rozproszonym są trudniejsze do zidentyfikowania. Podobnie z przyczynami sytuacji anormalnych, w szczególności awarii. Nieprzewidywalność: system rozproszony jest nieprzewidywalny w swoim działaniu, ponieważ zakłócenia mogą być powodowane przez wiele przyczyn: małą przepustowość i awarię łączy, awarię komputerów, zbyt duże obciążenie danego serwera, lokalne decyzje administracji serwera, itd.; patrz WWW. 7
Jak opanować i zapewnić integralność bezpieczeństwo i dużą wydajność, przy minimalnych kosztach? Aplikacje działające na rozproszonej bazie danych nie powinny być uzależnione od platformy systemowej oraz protokołów sieciowych. Powinno być możliwe przyłączenie do rozproszonej bazy danych lokalnej bazy danych zarządzanej przez dowolny lokalny SZBD pracujący na dowolnej platformie systemowej 8
Standaryzacja Ujednolicenie? Klient Serwer relacja między dwoma systemami albo procesami klient to systemem zlecający wykonanie jakiegoś zadania systemowi który jest serwerem. serwery na żądanie klienta wykonują określone usługi Od czasu gdy pojedynczy serwer może wykonać wiele zadań, ważne jest rozróżnienie dwu pojęć: serwer wykonywanie zadań usługi realizowane przez serwer Klient Żądanie wykonania usługi Powrót sterowania Serwer Schemat komunikacji w systemie klient serwer Wybrane funkcje serwerów: serwer wydruków, do którego są dołączone drukarki wykorzystywane przez użytkowników sieci serwer plików wraz z odpowiednimi plikami znajdującymi się na nim pamięć dyskowa wspomagająca bezdyskowe stacje robocze (dyski o małej pojemności) centralna baza danych przedsiębiorstwa 9
Jak to może działać? Serwery plików usługa dostępu do plików zapewnia że pliki na wyznaczonym sprzęcie są dostępne w całej sieci. Ich fizyczna lokalizacja nie jest istotna dla użytkownika (prawa dostępu autoryzacja ) dostęp do serwera plików jest realizowany przez przez oprogramowanie sieciowe albo przez system operacyjny Program użytkownika Interfejs Unixa Unixowy system plików Pliki odległe XDR V węzeł I węzły lokalny system plików NFS (Network File System) ram użytkownika I węzły struktury danych zawierające wszystkie informacje niezbędne dla uzyskania dostępu do plików lokalnych V węzeł lub wirtualny I węzeł jest strukturą danych zawierającą wszystkie potrzebne informacje do zlokalizowania wszystkich plików w systemie XDR funkcja nadająca standardowego formatu przed umieszczeniem go w sieci (dla jednego formtu danych w sieci może być pominięty). sieć Usługi plikowe Implementacja działałań na zawartości plików klient wysyła z każdym zleceniem jednoznaczny identyfikator pliku niepowtarzalny w zbiorze wszystkich plików systemu rozproszonego utworzenie nowego pliku => generacja nowego identyfikatora Usługi katalogowe odwzorowania między tekstowymi nazwami plików a ich identyfikatorami tworzenie i aktualizacja katalogów pobieranie identyfikatorów plików (ang. lookup) klient usługi plikowej informacja o katalogach przechowywana jest w plikuc 10
Udostępnianie plików Unix Klient Żądanie udzielenia dostępu do plików Serwer Żądanie udzielenia dostępu do plików VFS/V węzeł VFS/V węzeł Lokalny system plików NFS Lokalny system plików NFS XDR XDR sieć Przepływ komunikatów w uniksowym serwerze plików 11
RPC (Remote Procedure Call) zdalne uruchamianie procedur Program aplikacyjny Program główny Funkcja 1 Funkcja 2... Funkcja N Funkcje skonsolidowane z programem głównym na twardo RAM Mikroprocesora Program główny aplikacji Miejsce na Funkcję 1 Miejsce na Funkcję 2... Miejsce na Funkcję N Funkcja n w pamięci RAM Połączenie funkcji Konsolidacja dynamiczna Funkcja n biblioteki dynamicznej ładowanie funkcji z użyciem systemu biblioteki dynamicznej Procedury bibliotek DLL (Dynamic Link Libraries) mogą wywoływać funkcje i wykonywać je na serwerze Pracując w systemie Windows (w innych systemach również) nie musimy zdawać sobie sprawy z tego, że biblioteki DLL są ładowane z serwera, a nie z dysku lokalnego. Wszystkie funkcje wywoływane z bibliotek DLL są uruchamiane w systemie klient. 12
RPC schemat wywołań funkcji DLL Klient Funkcja zgłaszająca żądanie Serwer Funkcja zgłaszająca żądanie Żądanie udzielenia dostępu do plików Żądanie udzielenia dostępu do plików VFS/V węzeł VFS/V węzeł System biblioteki lokalnej NFS System biblioteki lokalnej NFS XDR XDR sieć Uniksowe metody uruchomienia procedury odległej z użyciem bibliotek dynamicznych 13
Ujednolicenie połączeń Połączenia poprzez sieć zarówno serwery jak i klienci są przyłączani w jednakowy sposób do wspólnej sieci komputerowej (nie ma bezpośrednich połączeń). K1 K2 S1 S2 K3 S3 K5 Kn S4 14
Reguły architektury klient-serwer Zachowanie autonomii serwera. Klienci powinni zachowywać reguły wykorzystania serwera, nie powinni powodować jego niedostępność (np. poprzez zamykanie dużych ilości danych), nie powinni łamać ograniczeń integralności. Zachowanie autonomii klienta. Klienci nie powinni zachowywać się różnie w zależności od tego, czy serwer jest lokalny czy odległy. Użytkownicy powinni być odizolowani od kwestii fizycznego ulokowania danych. Wspomaganie dla aplikacji niezależnych od serwera. Dostęp do własności (danych, usług) serwera. Klienci mogążądać od serwera wykonanie przewidzianych dla niego funkcji. Wspomaganie dla bieżącego dostępu do danych. Dostęp ten powinien być bezpośredni, bez pośrednictwa plików przekazywanych do/od klienta. Minimalny wpływ architektury K/S na wymagania dla klienta. Oprogramowanie klienta w architekturze K/S nie powinno wykazywać znacznego zwiększenia zapotrzebowania na RAM lub objętość dysku. 15
Reguły architektury klient-serwer Kompletność opcji niezbędnych do połączenia. Oprogramowanie klienta nie powinno wymagać dodatkowego programowania do zrealizowania połączenia z serwerem.powinien to zapewniać serwer komunikacyjny. Możliwość budowy lokalnych prototypów. Programista powinien mieć możliwość budowy i testowania prototypu aplikacji K/S wyłącznie na stacji klienta. Kompletność narzędzi użytkownika końcowego. Projektowanie ekranów, generacja zapytań, itd. powinny być częścią środowiska. Kompletnośćśrodowiska budowy aplikacji. Powinno przewidywać możliwość łączenia się w sieci, dostęp do usług globalnych w zakresie nazw, lokacji danych, itd. Otwarte środowisko języka-gospodarza. Powinno zapewniać możliwość użycia uniwersalnego języka programowania do budowy aplikacji. Szczególna troska o standardy. Im bardziej będą one przestrzegane, tym mniej będzie późniejszych kłopotów ze współdziałaniem. 16
Logiczna architektura oprogramowania Architektura trójwarstwowa: cienki klient Warstwa prezentacyjna (interfejs użytkownika) Warstwa przetwarzania (logika (logika biznesu) gruby klient Staranne rozdzielenie tych warstw jest bardzo istotne z punktu widzenia tworzenia i modyfikowalności oprogramowania. Dzięki temu rozdzieleniu, możliwa jest np. poprawa interfejsu użytkownika bez jakichkolwiek interwencji w pozostałe warstwy oprogramowania. Warstwa zarządzania bazą bazą danych danych Gruby i cienki klient: Gruby klient rzeczywiście przetwarza dane. Cienki jest bardziej zbliżony do terminalu, który po prostu transmituje dane przekazywane przez serwer. 17
Uproszczone architektury trójwarstwowe cienki klient Warstwa Warstwa prezentacyjna prezentacyjna (interfejs (interfejs użytkownika) użytkownika) Warstwa Warstwa prezentacyjna prezentacyjna (interfejs (interfejs użytkownika) użytkownika) + Warstwa Warstwa przetwarzania przetwarzania (logika (logika biznesu) biznesu) gruby klient Warstwa Warstwa przetwarzania przetwarzania (logika (logika biznesu) biznesu) + Warstwa Warstwa zarządzania zarządzania bazą baządanych Warstwa Warstwa przetwarzania przetwarzania (logika (logika biznesu) biznesu) + Warstwa Warstwa zarządzania zarządzania bazą baządanych Architektura trójwarstwowa: Duże obciążenia mogą spowodować niewydolność architektury klient/serwer; zbyt wielu klientów przedstawiających żądania w tym samym czasie zablokuje serwer, tak samo jak kelnera próbującego obsłużyć jednocześnie zbyt wiele stolików. Rozwiązaniem jest zainstalowanie dodatkowych serwerów w warstwie pomiędzy klientem a serwerem. Serwer przechowuje dane, warstwa pośrednia przetwarza je (w większości), a klient wyświetla wyniki. 18
Porównanie architektur Dwuwarstwowa architektura K/S z cienkim klientem Systemy spadkowe (legacy), gdzie oddzielenie przetwarzania i zarządzania danymi jest niepraktyczne. Aplikacje zorientowane na obliczenia, np. kompilatory, gdzie nie występuje lub jest bardzo mała interakcja z bazą danych. Aplikacje zorientowane na dane (przeglądanie i zadawanie pytań) gdzie nie występuje lub jest bardzo małe przetwarzanie Dwuwarstwowa architektura K/S z grubym klientem Aplikacje, w których przetwarzanie jest zapewnione przez wyspecjalizowane oprogramowanie klienta, np. MS Excel. Aplikacje ze złożonym przetwarzaniem (np. wizualizacją danych, przetwarzaniem multimediów). Aplikacje ze stabilną funkcjonalnością dla użytkownika, użyte w środowisku z dobrze określonym zarządzaniem. Trzywarstwowa lub wielowarstwowa archiktektura K/S Aplikacje o dużej skali z setkami lub tysiącami klientów. Aplikacje gdzie zarówno dane jak i aplikacje są ulotne (zmienne). Aplikacje integrujące dane z wielu rozproszonych źródeł. 19
HTTP Przykład architektury K/S - portal WWW Klient1 Klient2 Serwer zapytania Klient3 Web Wyniki zapytań Serwer Bazy Danych Klientn generacja dynamicznych stron HTML dla klienta oraz zlecenia do bazy danych Realizacja Realizacja zapytań zapytań SQL SQL Realizacja zapytań SQL 20
Wielowarstwowa architektura oprogramowania Architektura Wielowarstwowa: Warstwa prezentacji rozwarstwienie drugiej warstwy Jak to wszystko razem się łączy? System Zarządzania Rozproszoną Bazą Danych Baza danych 1... Baza danych 2 Baza danych 3 21
Protokoły komunikacyjne Model referencyjny ISO/OSI TCP/IP Wybrane protokoły internetutcp/ip Warstwa aplikacji Warstrwa prezentacji Warstwa sesji Warstwa aplikacji Telnet FTP HTTP SMTP POP DNS FNS SNMP RIP Warstwa transportowa Warstwa transportowa TCP UDP Warstwa sieciowa Warstwa internetu IP ICMP Warstwa łącza danych Warstwa sprzętowa Warstwa dostępu do sieci ARP CSMA/CD Ethernet PPP SLIP Uproszczony model cztero-warstwowy protokołu TCP/IP INNE... Wymagane dodatkowe usługi i serwery DNS, DHCP... dostęp, tłumaczenie nazw oraz protokołów, łączenie segmentów sieci 22
Proces enkapsulacji danych Warstwa aplikacji DANE DANE Warstwa transportowa NAGŁÓWEK 1 DANE NAGŁÓWEK 1 Warstwa Internetu NAGŁÓWEK 2 Warstwa dostępu do sieci DANE NAGŁÓWEK 1 NAGŁÓWEK 2 NAGŁÓWEK 3 Warstwa Aplikacji Transportowa TCP Strumień Segment UDP Wiadomość Pakiet Internetu Dostępu do sieci Datagram Ramka 23
Mechanizmy zapewnienia spójności Bazy danych Potwierdzenie Dwufazowe (2PC) Program aplikacyjny klienta gotów pytanie SZBD klienta gotów potwierdź potwierdź gotów SZBD serwera SZBD serwera SZBD serwera 1. Serwery wysyłają komunikaty gotów do klienta, który wysyła komunikat potwierdź 2. Kolejne operacje są możliwe po skompletowaniu wszystkich zgłoszeń Jeżeli nie nadejdą wszystkie zgłoszenia gotów, klient wysyła komunikat zerwij transakcję do wszystkich serwerów. Wady: możliwość zawieszenia systemu w przypadku awarii jednego z serwerów duże straty wykonanej pracy w przypadku zerwania Alternatywa: bardziej złożone protokoły. 24
Architektura rozproszonych obiektów W architekturze klient-serwer istnieje wyraźna asymetria pomiędzy klientem i serwerem; w szczególności, nie występuje tam komunikacja bezpośrednio pomiędzy klientami. Model taki dla wielu zastosowań jest mało elastyczny i zapewnia zbyt małą skalowalność. Architektura rozproszonych obiektów znosi podział na klientów i serwery Każde miejsce w rozproszonym systemie jest jednocześnie klientem i serwerem. Konieczne jest sprowadzenie wszystkich danych i usług do jednego standardu. Taki standard obejmuje: Model (pojęciowy i logiczny) danych i usług, który jest w stanie "przykryć" wszystkie możliwe dane i usługi, które mogą kiedykolwiek pojawić się w systemie rozproszonym; 25
Architektura rozproszonych obiektów osłona, adapter lub mediator oprogramowanie, które przystosowuje konkretne miejsce do modelu przyjętego przez pośrednika Aplikacja C++ Osłona 1 Aplikacja RMBD Osłona 2 Aplikacja Dowolna Osłona n... Broker Broker Broker Szyna oprogramowania... Specjalne oprogramowanie zwane pośrednikiem (broker) akceptuje wspólny model danych i usług umożliwiając ich udostępnienie dla dowolnych miejsc w systemie rozproszonym. 26
Struktura logiczna rozproszonych obiektów Obiekty Onbiekt 1 Obiekt3 Obiekt5 Obiekt2 Obiekt4 Obiekt6 Obiekt7 Obiekt8 Operacje na obiektach Klient1 Klient2 Klient3 Klient4 Szyna oprogramowania Aplikacje Aplikacja 1 Aplikacja 2 Aplikacja 3 Szyna oprogramowania tworzy jedną przestrzeń obiektów, które są dostępne dla dowolnego miejsca poprzez zgrupowane w klasach operacje. Miejsca i sposoby implementacji obiektów są niewidoczne a aplikacje korzystają z pełnej puli możliwości obiektów 27
Zalety rozproszonych obiektów Zgodność z logiką biznesu - bezpośrednia implementacja obiektów biznesowych. Umożliwienie projektantom opóźnienie decyzji - gdzie i jakie usługi powinny być zapewnione. Skalowalność aplikacji: mała zależność czasu reakcji systemu od zwiększenia ilości danych, liczby użytkowników, liczby węzłów. Dekompozycja aplikacji na małe elementy wykonawcze (obiekty, metody,...). Przyrostowe dodawanie/odejmowanie funkcjonalności ( płacę tylko za to, czego używam ). Podział zasobów i zbalansowanie obciążeń. Współbieżność i asynchroniczne przetwarzanie. Elastyczność zmian w oprogramowaniu (konserwacja), w szczególności, przenoszenie obiektów i usług do innych miejsc. Możliwość przyłączania aplikacji spadkowych (funkcjonujących wcześniej jako scentralizowane). 28
Oprogramowanie i standardy dla rozproszonych obiektów OMG CORBA (Common Object Request Broker Architecture) - najbardziej uniwersalny standard obejmujący ogromną liczbę aspektów. W szczególności, notacja UML jest jego składową. Pakiety ORB (Object Request Broker) są oprogramowaniem pośrednika realizującym tę architekturą. DCOM (Distributed Component Object Model) - standard Microsoftu zintegrowany z systemami operacyjnymi Microsoftu. Znacznie ograniczony w stosunku do standardu CORBA. RMI (Remote Method Invocation) - oprogramowanie firmy Sun, ograniczone w stosunku do standardu CORBA, o nieco innej filozofii. XML - standard zaproponowany dla Internetu, zapewniający semantyczną kwalifikację danych przechowywanych na serwerach WWW. Standard umożliwia wymianę informacji w sieci Internet. 29
KONIEC wykład 10 30