Wprowadzenie do rozproszonych systemów komputerowych.
Transkrypt
Wprowadzenie do rozproszonych systemów komputerowych.
1. Wprowadzenie do rozproszonych systemów komputerowych Rozproszone systemy komputerowe otaczają nas wokoło. Praktycznie nie jest możliwe życie bez ich wykorzystywania. Skoro jesteśmy od nich tak uzależnieni, dobrze by było przekonać się jakie cechy posiadają te systemy, które zawojowały nasz świat. A z drugiej strony jak systemy rozproszone należy konstruować i wykorzystywać, aby można było z ich używania osiągnąć jak największe korzyści, nie będąc jednocześnie narażonym na efekty ich błędnego działania. Niniejszy wykład zatytułowany „Niezawodność, bezpieczeństwo i skalowalność systemów rozproszonych” ma za zadanie wskazanie przedstawienie wybranych, najważniejszych zdaniem autora, cech systemów rozproszonych mających bezpośredni wpływ na ich działanie i rozwój. 1.1. Definicja systemu rozproszonego System rozproszony [ang. distributed system] jest zbiorem samodzielnych komputerów połączonych za pomocą sieci i wyposażonych w rozproszone oprogramowanie systemowe [2]. Powyższa definicja zakłada, że elementami składowymi są komputery mające możliwość pracy w sieci komputerowej. Można powiedzieć, że komputery takie powinny posiadać NIC oraz NOS. Skróty powyższe ukrywają zapisane w języku angielskim elementy obowiązkowe dla takich komputerów: Network Interface Card czyli karta sieciowa, mogąca komunikować się z medium, po którym odbywa się komunikacja w sieci, oraz Network Operating System czyli sieciowy system operacyjny (lub nakładka sieciowa na system operacyjny) umożliwiający komunikację komputera poprzez kartę sieciową z medium, a tym samym z innymi komputerami znajdującymi się w sieci. 1.2. Ewolucja systemów komputerowych Rozwój systemów komputerowych można sprowadzić do dwóch głównych tendencji, jakie występowały na rynku. Najpierw mieliśmy dwa typy architektury systemów komputerowych: systemy centralne [ang. centralized systems] systemy rozproszone [ang. distributed systems] Systemy centralne powoli ewoluowały do systemów rozproszonych. Wymuszone to zostało z jednej strony specyfiką coraz to nowych zastosowań, a z drugiej strony wygodą użytkowników i personelu obsługującego te systemy komputerowe. Cały rozwój systemów komputerowych można podzielić na „dwa światy”: świat dużych systemów komputerowych oraz świat małych systemów komputerowych. W trakcie rozwoju te „dwa światy” wzajemnie na siebie wpływały. Wpływy te polegały na przenoszeniu rozwiązań występujących w jednym świecie do drugiego i odwrotnie. W efekcie to wzajemne przenikanie dało efekt w postaci stworzenia modelu chmury komputerowe [ang. cloud computing]. W skrócie kolejny etapy rozwoju dużych systemów komputerowych można przedstawić w sposób następujący: centralny komputer z terminalami sieć centralnych komputerów z terminalami sieć centralnych komputerów ze stacjami roboczymi system rozproszony: funkcje centralnego komputera rozproszone na wiele serwerów 1 system rozproszony: część funkcji serwerów przerzucona na stacje robocze system rozproszony: pamięć masowa oddzielona od centralnego komputera/serwera usług dostęp do zasobów z poziomu przeglądarki internetowej dostęp do zasobów z poziomu urządzenia mobilnego Powyższy rozwój wynikał przede wszystkim z wyodrębnienia wybranych usług realizowanych przez pierwotnie stosowany centralny komputer. Wyodrębnianie to miało miejsce ze względu na potrzebę zwiększenia niezawodności oferowanych usług, możliwość skalowania rozwiązań, zapewnienia odpowiedniego poziomu bezpieczeństwa oferowanych usług oraz uproszczenie zarządzania (administrowania) systemami komputerowymi. Osiągnięcie sukcesów w rozlicznych zastosowaniach spowodowało, że nagle pojawiło się wiele komputerów, wiele połączeń w sieci i wiele stacji roboczych. To wszystko wymogło zastosowanie jednego interface’u graficznego użytkownika (Windows) oraz jednego programu/mechanizmu obsługi (przeglądarka internetowa). Osiągnięty sukces dużych systemów komputerowych na początku ich drogi spowodował powstanie świata małych systemów komputerowych. Kolejne etapy rozwoju małych systemów komputerowych można sprowadzić do: komputer klasy PC sieć komputerów równorzędnych [ang. peer-to-peer] sieć komputerów z serwerem plików/serwerem wydruku sieć komputerów jw. z dostępem do Internetu sieć komputerów jw. z własną pocztą elektroniczną sieć komputerów jw. z własną stroną www sieć komputerów jw. z e specjalizowanymi serwerami usług sieć komputerów jw. z intranetem sieć komputerów jw. z połączeniem z wielu lokalizacji sieć komputerów jw. z uwzględnieniem telepracy sieć komputerów domowych Jak widać, świat dużych systemów komputerowych w wielu miejscach spotkał się ze światem małych systemów komputerowych. Na obecnym etapie jest to praktycznie całość. Widać także jak to się rozwija na poziomie biznesu. Na początku pojedynczy serwer pełnił wszystkie funkcje (small business). Ze względu na coraz potrzebę coraz większego dostosowania sprzętu i oprogramowania do realizowanych usług, a także dywersyfikację platform sprzętowych i programowych wymuszoną potrzebą zwiększonej niezawodności, zaczęto używać wielu serwerów, z których każdy realizował pojedynczą funkcję (rozwiązanie dla ang. corporate business]. Dalszy rozwój specjalizacji serwerów i rozwój terytorialny przedsiębiorstw wymusił nie tylko serwery rozproszone lokalnie, ale także rozproszone terytorialnie. Ponadto zauważono, że wiele serwerów korzysta wzajemnie z zawartości swoich pamięci masowych. Awaria jednego z serwerów powodowała brak możliwości dostępu do danych w tej pamięci masowej. Dlatego też oddzielono pamięć masową od serwera, tworząc ją niejako oddzielną, z możliwością dostępu z dowolnego serwera. Tym samym zaczęliśmy stosować rozproszoną pamięć masową, co wypłynęło na zwiększenie niezawodności istniejących rozwiązań. Tym samym architekturę pamięci masowych można podzielić w sposób następujący: DAS [ang. Direct Attached Storage] – pamięć (masowa) podłączona bezpośrednio NAS [ang. Network Attached Storage] – (masowa) pamięć sieciowa SAN [ang. Storage Area Network] – sieci pamięci masowej. 2 Systemy komputerowe wymagały systemu, który mógłby pracować w środowisku rozproszonym. Podstawą dla kolejnych rozwiązań stał się system UNIX. Pierwotnie jego zadaniem było przydzielanie zasobów sprzętowych (jednostka centralna, pamięć) i zarządzanie nimi umożliwiające skorzystanie z nich przez wielu użytkowników. Taki kierunek dał szanse wprowadzenie modelu klient-serwer. Model ten powoduje, że realizowane zadania są rozdzielone pomiędzy klientów i serwer tak, aby optymalnie wykorzystać zasoby i ich cechy. Tego typu model legł i podstaw powstania wielu rozwiązań stosowanych w systemach komputerowych. Jednym z nich jest sieciowy system plików NFS [ang. Network File System]. Inne rozwiązanie to system wywoływania procedur zdalnych RPC [ang. Remote Procedure Calling]. Znane jest też rozwiązanie sieciowych usług informacyjnych NIS [ang. Network Information Service]. Rozwiązania powyższe występują w większości współczesnych implementacji systemów rozruszonych UNIX. Aby mogły być tworzone rozwiązania wzbogacające systemy rozproszone o dodatkowe cechy i dodatkową funkcjonalność, system operacyjne powinny posiadać specyficzne własności. Przykładem takiej własności jest otwartość [ang. openness]. Umożliwia ona rozbudowę systemu w celu spełnienia nowych wymagań wynikających z potrzeb użytkowników i nowych zastosowań. 3