Podstawowe własności systemów rozproszonych.
Transkrypt
Podstawowe własności systemów rozproszonych.
2. Podstawowe własności systemów rozproszonych Podstawowy wpływ na popularność systemów rozproszonych mają ich własności. To właśnie spowodowało, że rozproszone systemy komputerowe przeżyły i przeżywają swój bujny rozwój. 2.1. Definicja własności Własność systemu rozproszonego to jego cecha, której stopień realizacji wpływa na jakość danego systemu rozproszonego. 2.2. Rodzaje własności Do podstawowych własności systemów rozproszonych można zaliczyć: dzielenie zasobów otwartość współbieżność skalowalność tolerowanie uszkodzeń przeźroczystość Wszystkie te własności miały znaczący wpływ na rozwój rozproszonych systemów komputerowych. 2.3. Charakterystyki własności Poniżej przedstawiono skrócone charakterystyki poszczególnych własności systemów rozproszonych. Wybrane aspekty niektórych własności będą rozszerzone w następnych rozdziałach i wykładach. 2.3.1. Dzielenie zasobów Wspólne użytkowanie zasobów, inaczej dzielenie zasobów [ang. resource sharing] jest kluczową własnością systemów rozproszonych. Zasób jest tu rozumiany jako dowolny obiekt, z którego inne obiekty chcą wspólnie wykorzystywać. Może to być sprzęt (np. drukarki, dyski), jak i elementy działającego oprogramowania (np. część pamięci). Kluczowym argumentem za dzieleniem zasobów są korzyści wynoszone z tego rozwiązania. Do nich należą: oszczędności z tytułu mniejszej liczby zasobów (finansowe) wygoda unifikacja na poziomie wielu użytkowników przy zadanej przepustowości mniejsza liczba obiektów daje względnie (statystycznie rzecz biorąc) większą przepustowość chwilową. Zdroworozsądkowe podejście sugeruje, że dzielenie zasobów daje zawsze lepsze wyniki. Nie do końca jest to jednak prawda. W momencie, gdy jest zbyt wielu użytkowników takiego zasobu, czas poświęcony na sprawiedliwy podział czasu dostępu do tego zasobu oraz samo przełączanie może być zbyt długi. Klasycznym przypadkiem jest rozrzucanie zadań na wiele procesorów, który przy pewnej liczbie procesorów powoduje nie skrócenie czasu ich realizacji, a wręcz przedłużenie. 1 2.3.2. Otwartość Kolejną, ważną własnością systemów rozproszonych jest otwartość [ang. openness] czyli zdolność do rozbudowy różnymi sposobami. System rozproszony może być rozszerzany o różne rozwiązania sprzętowe, np. dodawanie nowych urządzeń. Rozbudowa może także polegać na dodawaniu nowych komponentów oprogramowania, jak np. dodawanie nowych protokołów komunikacyjnych czy też dodawanie nowych funkcjonalności systemu. Wszystko to jest możliwe przy zachowaniu dotychczasowo używanych urządzeń czy właściwości funkcjonalnych systemu. Ta otwartość jest osiągana poprzez precyzyjne dokumentowanie i publikowanie stosowanych rozwiązań. Historycznie rzecz biorąc, takie podejście miało miejsce przy powstaniu projektu realizującego system operacyjny UNIX. Stworzenie na potrzeby tego projektu języka programowania C, który umożliwia dostęp do wszystkich zasobów rozporządzanych przez system operacyjny, daje możliwość napisania programów – komponentów systemu operacyjnego, które następnie skompilowane mogą stać się częściami systemu operacyjnego. Jednak otwartość musi mieć pewne granice. Dostęp do zasobów odbywa się za pomocą zbioru procedur – odwołań do systemu [ang. system calls], które są zaimplementowane w programie zwanym jądrem [ang. kernel]. Jest ono ładowane tuż po uruchomieniu komputera. Zarządza ono sprzętem komputerowym (a tym samym środowiskiem pracy), dając możliwość pracy innym programom poprzez udostępnienie odwołań do systemu. Taka otwartość wpłynęła na możliwość rozwoju systemów na różnych poziomach wytwórców z nim związanych. Z punktu widzenia dostawców sprzętu jest to wygodne, bo system można łatwo rozbudowywać o nowy sprzęt (dodając nowe sterowniki sprzętowe). Jest to także wygodne z punktu widzenia dostawców oprogramowania i użytkowników, bo oprogramowanie jest praktycznie niezależne od używanego sprzętu (komputerów). Twórcy programów mają nieograniczony dostęp do funkcji realizowanych przez system. Dzięki takiemu podejściu system UNIX zaczął się szybko rozwijać w środowiskach uniwersyteckich, by po pewnym czasie wkroczyć do zastosowań przemysłowych. Po kilkudziesięciu latach ten sam model postępowania, z odświeżeniem pomysłu, miał miejsce przy powstaniu i rozwoju systemu Linux. 2.3.3. Współbieżność Współbieżność [ang. concurrency] jest własnością, która spowodowała, że przejście z jednego na wiele procesorów nie było problemem. Na jednym procesorze mieliśmy mechanizmy przełączania procesów, zaś na wielu procesorach komputera mamy możliwość rzeczywistego zrównoleglenia działania procesów. Oczywiście, w tym ostatnim przypadku istnieje problem współdzielenia zasobów, ale to też można rozwiązać poprzez zastosowanie odpowiednich mechanizmów (np. semaforów). Na współbieżność należy także patrzeć z punktu widzenia wielu użytkowników, którzy naraz korzystają z systemu. Tutaj też odpowiedni podział daje złudzenie pracy użytkownika jako jedynego beneficjenta jego możliwości. 2.3.4. Skalowalność Skalowalność [ang. scalability] czyli możliwość (zazwyczaj) zwiększania wybranych parametrów (przede wszystkim wydajności) w miarę potrzeb poprzez zwiększanie liczby elementów jest bardzo ważna właściwością. Powiększenie systemu (czy zmniejszenie) nie powinno powodować konieczności wykonania w nim dużych zmian. Oczywiście, ograniczenia technicznie powodują pewne ograniczenia stopnia skalowalności. Z drugiej zaś strony problemem jest wyobraźnia projektantów. Wiele już razy w historii techniki wydawało 2 się, że przyjęte granice rozwoju wydawały się daleko wystarczające, a weryfikacja w postaci bujnego rozwoju weryfikowała te opinie w sposób brutalny. Dotychczasowe doświadczenia przyczyniły się do sformułowania zasady, że (oczywiście w miarę możliwości) należy tak projektować, aby żaden zasób nie podlegał ograniczeniom. W praktyce sprowadza się to do przyjęcia takich założeń, aby w sensownej perspektywie czasowej (wynikającej z czasu życia systemu lub czasu życia danej technologii) zasób mógł być w prosty sposób rozbudowany. W historii informatyki wielokrotnie pojawiały się rozwiązania, które wydawały się przyjęte na wyrost, a jednak praktyka weryfikowała jest jako nie wystarczające i trzeba było w bolesny sposób te rozwiązania zmieniać. 2.3.5. Tolerowanie uszkodzeń Systemy komputerowe, jak wszystkie maszyny, ulegają mniejszymi lub większymi awariom. W zależności od stopnia ważności systemów w życiu człowieka do awarii pewnych systemów możemy dopuszczać, do innych zaś nie, ze względu na konsekwencje takich sytuacji (duże straty finansowe, groźba utraty życia). Właściwość ta nosi nazwę tolerowanie uszkodzeń [ang. fault tolerance]. Stopień tolerowania uszkodzeń mierzony jest poprzez dostępność [ang. availability]. Dostępność ta jest mierzona w czasie bezawaryjnej pracy w stosunku do całego czasu pracy danego rozwiązania. W celu zapewnienia odpowiedniego poziomu tolerowania uszkodzeń stosuje się mechanizm redundancji sprzętowej czy programowej. Polega to na nadmiarowości pewnych rozwiązań, które przy zadanym prawdopodobieństwie zapewniają działanie systemu mimo uszkodzenia jego wybranych komponentów. Z wyżej wymienionego prawdopodobieństwa wynika liczba i konfiguracja elementów gwarantująca działanie przez zastosowaniu odpowiedniego rodzaju nadmiarowości. 2.3.6. Przeźroczystość Przeźroczystość [ang. transparency] jest określana jako ukrywanie przed użytkownikiem części składowych systemu rozproszonego w taki sposób, że widzi go niezależnie od czasu i miejsca (bardziej) jako jedną całość niż zbiór elementów składowych. Ta cecha ma oczywiście także konsekwencje projektowe – trzeba ją uwzględnić w trakcie projektowania systemów rozproszonych. Z drugiej zaś strony przeźroczystość ukrywa przed użytkownikiem elementy systemu, które z punktu widzenia zadań realizowanych przez niego są nieistotne lub chronione ze względów bezpieczeństwa całego systemu. Biuro Międzynarodowych Standardów (ISO – ang. International Standard Organization] w Modelu Wzorcowym ANSA oraz w Modelu Wzorcowego Otwartego Przetwarzania Rozproszonego [ang. Reference Model for Open Distributed Processing – RM-ODP] wyróżniło 8 form przeźroczystości [2]. Wynikają one z potrzeb, które czynią użytecznymi dla użytkowników systemy rozproszone. Zaliczamy do nich: przezroczystość dostępu przezroczystość położenia przezroczystość współbieżności przezroczystość zwielokrotniania przezroczystość awarii przezroczystość wędrówki przezroczystość wydajności przezroczystość skalowania. Przezroczystość dostępu umożliwia dostęp w identyczny sposób do wszystkich obiektów, niezależnie od ich wewnętrznej struktury czy realizacji. 3 Przezroczystość położenia umożliwia dostęp w identyczny sposób do wszystkich obiektów niezależnie od ich lokalizacji. Przezroczystość współbieżności umożliwia działanie współbieżne wielu procesom w sposób niezakłócony przy użyciu wspólnych obiektów. Przezroczystość zwielokrotniania umożliwia wykorzystanie wielu kopii obiektów w celu zwiększenia niezawodności i wydajności Przezroczystość awarii umożliwia pracę użytkownikom mimo występowania awarii sprzętu lub oprogramowania, bez świadomości użytkownika o tym fakcie. Przezroczystość wędrówki umożliwia przemieszczanie obiektów w obrębie systemu, bez świadomości użytkownika o tym fakcie. Przezroczystość wydajności umożliwia rekonfigurowanie systemu w celu poprawy działania przy zmianie obciążenia. Przezroczystość skalowania umożliwia rozbudowę systemu bez zmiany jego struktury lub zasad działania. Powyższe osiem form przezroczystości stanowi siłę rozwiązania w postaci systemu rozproszonego. Z punktu widzenia masowości dostępu do danego systemu najważniejsze są przezroczystość dostępu i przezroczystość położenia. Użytkownik, niezależnie do czego chce mieć dostęp i niezależnie gdzie, wykonuje takie same czynności. Takie rozwiązanie stoi i podstaw masowości zastosowania systemów komputerowych, a w szczególności popularności Internetu. Użytkownik ogląda strony internetowe, których serwery nie wiadomo gdzie się znajdują, i dla każdego serwera używa przeglądarkę internetową. 2.4. Podsumowanie Rozproszone systemy komputerowe stanowią podstawę dzisiejszej informatyki. O ich miejscu zadecydowały ich właściwości, które spowodowały wielorakie korzyści, zarówno dla użytkowników, jak i projektantów systemów. Dzielenie zasobów doprowadziło do stworzenia architektury klient-serwer, w której zasoby mogą być optymalnie wykorzystane. Otwartość daje możliwość łatwiejszej rozbudowy. Współbieżność daje szanse na zrównoleglenie realizacji zadań, w czym znowu może pomóc architektura klient-serwer. Skalowalność zapewnia możliwość dopasowania systemu do ciągle zwiększających się potrzeb. Tolerowanie uszkodzeń daje szanse aby zwiększyć pewność, że dany system będzie nasz obsługiwał. Przeźroczystość powoduje, że niezależnie jak system jest rozproszony, użytkownicy i projektanci widzą go jako jedną całość. Bujny rozwój sieci komputerowych, a tym Internetu, spowodował, że systemy rozproszone przewidują w ostatnich latach bujny rozwój. 4