• Nie Znaleziono Wyników

Modele usług sieciowych oraz aplikacji rozproszonych

7. KONCEPCJE PRZETWARZANIA ROZPROSZONEGO

7.1. Modele usług sieciowych oraz aplikacji rozproszonych

Znaczna część programów – mimo że są sprowadzane z innego komputera w sieci – jest wykonywana na komputerze lokalnym, bez wykorzystywania zasobów innych komputerów przyłączonych do sieci. Takie aplikacje nie są aplikacjami sieciowymi. Jednak część aplikacji pracujących w sieci charakteryzuje się tym, że podczas realizacji wykorzystują zasoby innych komputerów w sieci. Takie aplikacje można określić mianem aplikacji sieciowych.

W sieci mogą być rozproszone nie tylko programy użytkowe, lecz także programy stanowiące część sieciowego systemu operacyjnego, wykonujące określone funkcje w systemie rozproszonym. Programy takie są określane mianem usług sieciowych.

Na organizację pracy aplikacji sieciowych mają wpływ następujące czynniki:

 sposób podziału aplikacji na części, wykonywane na różnych komputerach w sieci,

 wydzielenie specjalizowanych serwerów w sieci, wykonujących funkcje wykorzystywane przez wszystkie aplikacje,

 organizacja współpracy poszczególnych części aplikacji wykonywanych na różnych komputerach w sieci.

7.1.1. Sposób podziału aplikacji na części

W ogólnym przypadku aplikację można podzielić na sześć części funkcjonalnych:

 środki prezentacji danych (interfejs użytkownika),

 logika prezentacji danych, opisująca zasady oraz możliwe scenariusze współdziałania użytkownika z aplikacją (menu, listy elementów itp.),

 logika aplikacji – zbiór zasad przetwarzania danych,

 wewnętrzne operacje bazy danych – operacje wykonywane przez serwer bazy danych,

 operacje plikowe – operacje standardowe w systemie plików.

Na podstawie tego modelu można zbudować cały szereg schematów rozłożenia części składowych aplikacji pomiędzy poszczególne komputery w sieci. Rozłożenie aplikacji między wieloma komputerami może znacznie podnieść jakość tej aplikacji (zwiększenie szybkości pracy, zwiększenie liczby równolegle obsługiwanych użytkowników itd.). Jednocześnie jednak czyni aplikację bardziej złożoną.

Do podstawowych schematów, powszechnie stosowanych w aplikacjach sieciowych, należą architektury dwu- oraz trójwarstwowe.

Architektura 2-warstwowa

Architektura ta, określana mianem klient/serwer, charakteryzuje się rozłożeniem sześciu części funkcjonalnych aplikacji między dwa komputery, określane mianem serwera oraz klienta.

W architekturze z komputerem centralnym komputer użytkownika pracuje jako terminal, wykonujący wyłącznie funkcje prezentacji danych. Natomiast wszystkie pozostałe funkcje aplikacji są realizowane przez centralny komputer, pełniący rolę serwera (rys. 7.1a). W takim przypadku zasoby komputera klienckiego są wykorzystywane w niewielkim stopniu, gdyż wykonuje on wyłącznie następujące operacje: prezentacja danych (obsługa okien graficznych), obsługa sieci (przyjmowanie poleceń oraz danych od serwera, przesyłanie informacji o działaniach użytkownika – przyciśnięcie klawisza, współrzędne myszy itp.). Program wykonywany na komputerze klienckim określa się w takim przypadku mianem emulatora terminala. W istocie architektura ta naśladuje pracę komputera typu mainfraim z przyłączonymi terminalami z tą różnicą, że w miejscu terminali występują komputery podłączone nie poprzez lokalny interfejs, lecz poprzez sieć (lokalną lub globalną).

Główną wadą tej architektury jest niska skalowalność oraz wysoka wrażliwość na awarie. Podstawowym czynnikiem ograniczającym liczbę użytkowników (klientów) w systemie jest w tym przypadku moc obliczeniowa (wydajność) komputera centralnego, a awaria tego komputera uniemożliwia pracę wszystkim użytkownikom.

W architekturze z serwerem plików (rys. 7.1b) na komputerze klienckim są wykonywane wszystkie części funkcjonalne aplikacji z wyjątkiem operacji plikowych. Serwer w tym przypadku udostępnia wszystkim użytkownikom pliki przechowywane w systemie plików. Aplikacja rozproszona funkcjonująca w systemie z serwerem plików nieznacznie różni się od aplikacji działającej na lokalnym komputerze. Jedyną różnicą jest odwoływanie się aplikacji do plików przechowywanych na odległym komputerze. Aby w architekturze z serwerem plików było możliwe wykonywanie programów napisanych dla aplikacji lokalnych, do sieciowych systemów operacyjnych wprowadzono komponent

wykonujący operację przekierowania (ang. redirector), który przechwytuje odwołania do zdalnych plików (na podstawie specjalnej notacji dla nazw sieciowych, jak np. //server1/doc/plik1.txt) i kieruje te odwołania w sieć do odpowiedniego serwera plików.

Emulator terminala Komputer A Klient Logika aplikacji i odwołania do bazy danych Operacje w bazie

danych Operacje plikowe

Komputer B Serwer

a)

b)

Interfejs użytkownika Logika aplikacji i odwołania do bazy danych Operacje w bazie danych Komputer A Klient Operacje plikowe Komputer B Serwer

c)

Interfejs użytkownika Logika aplikacji i odwołania do bazy danych Operacje w bazie

danych Operacje plikowe

Serwer Klient

Komputer B Komputer A

Rys. 7.1.Systemy rozproszone w architekturze 2-warstwowej

Serwer plików realizuje jedną z najbardziej rozpowszechnionych usług sieciowych – sieciowy system plików. Pierwsze sieciowe systemy operacyjne (NetWare firmy Novell, IBM PC LAN Program, Microsoft MS-Net) wspierały dwie podstawowe usługi sieciowe: sieciowy system plików oraz usługę drukowania sieciowego, pozostawiając realizację pozostałych funkcji programistom aplikacji rozproszonych.

Architektura z serwerem plików charakteryzuje się wysoką skalowalnością, gdyż kolejni użytkownicy obciążają serwer w niewielkim stopniu. Jednak posiada także swoje wady:

 w wielu przypadkach jest generowany znaczny ruch w sieci (np. podczas operacji na danych może wystąpić konieczność przesłania całej bazy danych z serwera na komputer kliencki, na którym wykonywane są określone operacje, a następnie przesłanie bazy danych na serwer),

 komputer kliencki musi posiadać odpowiednią moc obliczeniową, gdyż wykonuje wszystkie operacje związane z przetwarzaniem danych.

Pozostałe warianty architektury dwuwarstwowej charakteryzują się bardziej równomiernym rozłożeniem funkcji między komputerem klienckim a serwerem. W najczęściej wykorzystywanym schemacie serwer wykonuje wewnętrzne operacje bazy danych oraz operacje plikowe (rys. 7.1c), podczas gdy na komputerze klienckim wykonywane są wszystkie pozostałe funkcje, związane z funkcjonowaniem konkretnej aplikacji. Dzięki temu, że serwer w takim przypadku wykonuje operacje niezależne od konkretnej aplikacji, funkcje realizowane przez niego mogą przyjmować postać usług sieciowych. Ze względu jednak na to, że funkcje związane z zarządzaniem bazami danych nie są potrzebne wielu aplikacjom sieciowym, więc usługi serwera bazy danych nie są najczęściej włączane do usług sieciowych, lecz udostępniane w postaci odrębnego oprogramowania spełniającego funkcje zarządzania bazami danych (serwery baz danych).

Architektura trójwarstwowa

Architektura ta pozwala na jeszcze korzystniejsze rozłożenie obciążenia pomiędzy poszczególnymi komputerami w sieci, a także umożliwia dalszą specjalizację serwerów. Za przykład architektury trójwarstwowej może służyć taka organizacja aplikacji, w której na komputerze klienckim znajduje się interfejs użytkownika oraz wykonywane są programy realizujące logikę prezentacji danych, jak również programy pełniące rolę interfejsu z kolejną warstwą – serwerem aplikacji (rys. 7.2).

Interfejs użytkownika Komputer A Klient Logika aplikacji i odwołania do bazy danych Komputer B Serwer aplikacji Operacje w bazie danych Serwer bazy danych Operacje plikowe Komputer C

Rys. 7.2. System rozproszony w architekturze 3-warstwowej

Na serwerze aplikacji realizowane są funkcje związane z logiką aplikacji oraz logiką przetwarzania danych, stanowiące najważniejszą część aplikacji. Warstwa środkowa wywołuje z kolei wewnętrzne operacje bazy danych, które realizowane są w warstwie serwera. Serwer bazy danych realizuje wewnętrzne operacje na danych, jak również operacje plikowe. Przykładem takiej architektury może być system zawierający trzy komputery połączone siecią:

 komputer kliencki, wykorzystujący przeglądarkę internetową (interfejs użytkownika),

 serwer aplikacji OAS (Oracle Application Server) firmy Oracle, realizujący funkcje przetwarzania danych z wykorzystaniem różnych środowisk programistycznych (Java, JSP, PHP, Servlety),

 serwer bazy danych Oracle 10g realizujący operacje związane z przechowywaniem, udostępnianiem i przetwarzaniem danych.

Moduły programowe realizujące funkcje warstwy pośredniej w architekturze trójwarstwowej określane są mianem middleware i mają także inne zastosowania niż bazy danych, np.:

 asynchroniczne przetwarzanie komunikatów (ang. Message Oriented Middleware – MOM),

 zdalne wywołanie procedury (ang. Remote Procedure Call – RPC),

 broker obiektów (ang. Object Request Broker – OBR).

Środki te poprawiają współdziałanie klientów z serwerami dzięki uporządkowaniu wywołań wielu klientów do szeregu serwerów, a także odgrywają rolę regulatorów rozkładających obciążenie między wiele serwerów. Serwer aplikacji powinien dysponować odpowiednią mocą obliczeniową, w przeciwnym wypadku będzie wąskim gardłem (ang. bottle neck) w systemie. Osiąga się to dzięki zastosowaniu komputerów wieloprocesorowych, a przede wszystkim komputerów klastrowych lub gridowych. Architektury takie charakteryzują się wysoką skalowalnością, gdyż istnieje możliwość znacznej rozbudowy systemu przy rosnących wymaganiach.

7.2. Mechanizm przekazywania komunikatów w systemach