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