Podręcznik

4. Systemy rozproszone

4.2. Cechy systemów rozproszonych

W rozumieniu ogólnym, uwarunkowanym istnieniem technologii informatycznej, system rozproszony, jest zbiorem samodzielnych komputerów połączonych za pomocą sieci i wyposażonych w rozproszone oprogramowanie systemowe. W praktyce, systemy rozproszone są realizowane z wykorzystaniem sprzętu, którego liczność zmienia się od kilku stacji roboczych, poprzez pojedyncze sieci lokalne, aż po Internet – światowy zbiór sieci lokalnych i rozległych, składający się z milionów komputerów.

Oprogramowanie systemu rozproszonego umożliwia komputerom koordynowanie ich działań oraz dzielenie zasobów systemu takich jak: sprzęt komputerowy, oprogramowanie, bazy danych. Dodanie do takiego systemu odpowiednio przystosowanych urządzeń pomiarowo-kontrolnych tworzy system pomiarowy rozproszony terytorialnie. Dobrze zaprojektowany rozproszony system pomiarowy odbierany jest jako jedno, zintegrowane środowisko obliczeniowe i pomiarowo-kontrolne. O użyteczności rozproszonych systemów pomiarowych, osadzonych w sieci komputerowej, decyduje sześć podstawowych cech przeniesionych z dziedziny technologii informatycznej [7]:

  • Współużywanie zasobów,
  • Otwartość,
  • Współbieżność,
  • Skalowalność,
  • Tolerowanie uszkodzeń,
  • Przeźroczystość.

 

Dzielenie zasobów

Termin zasób jest raczej abstrakcyjny, jednak charakteryzuje on najlepiej zbiór obiektów fizycznych i logicznych, które mogą być z pożytkiem dzielone (wspólnie wykorzystywane) w systemie. Zbiór ten obejmuje:

  • Sprzęt (drukarki, dyski, przyrządy pomiarowe itp.),
  • Dane (pliki, dane pomiarowe, bazy danych, itp.)

Wszystkie zasoby, które mają być efektywnie wykorzystane, muszą być zarządzane przez program obsługujący interfejs komunikacyjny, umożliwiający dostęp do zasobu oraz działanie na nim. Każdy typ zasobu wymaga odrębnego schematu opisującego ten dostęp. Użytkownicy komunikują się z zarządcami zasobów w celu uzyskania dostępu do nich. Proces ten najlepiej charakteryzuje model klient/serwer i jest najczęściej stosowany w praktyce.

 

Otwartość

Otwartość systemu charakteryzuje jego zdolność do rozszerzania różnych zasobów, na przykład dodawanie:

  • urządzeń zewnętrznych (w tym przyrządów pomiarowych),
  • bloków pamięci,
  • kart rozszerzeń (w tym kart zbierania danych),
  • protokołów komunikacyjnych,
  • oprogramowania (czyli nowych właściwości dla systemu).

Otwartość rozproszonych systemów pomiarowych, w tym kontekście, jest charakteryzowana przede wszystkim przez możliwość dodawania nowych usług i protokołów, a także urządzeń pomiarowych bez naruszania lub znacznej zmiany istniejących rozwiązań.

Dalszą korzyścią, często cytowaną przy okazji systemów otwartych, jest niezależność od poszczególnych dostawców czy producentów. Osiąga się to między innymi przez stosowanie standardowych i powszechnie używanych interfejsów. Najbardziej zaawansowaną inicjatywą dążąca do stworzenia podwalin systemu otwartego w środowisku sieci przemysłowych jest opracowanie zestawu norm IEEE 1451.x.

 

Współbieżność

W przypadku, gdy na jednym komputerze działa wiele procesów, to mówimy, że są one wykonywane współbieżnie. W systemach rozproszonych istnieje wiele komputerów i mogą wystąpić następujące działania równoległe:

  • wielu użytkowników jednocześnie wydaje polecenia lub współpracuje z programami użytkowymi,
  • wiele procesów serwera działa współbieżnie, odpowiadając na zamówienia pochodzące od różnych klientów.

Pierwszy przypadek zachodzi wtedy, gdy na zamówienie każdego z aktywnych użytkowników działa jedna lub więcej aplikacji. Drugi przypadek wynika z istnienia jednego lub więcej procesów usługowych dla każdego typu zasobu. Działają one na ogół w dodatkowych komputerach, pozwalając każdemu procesowi usługowemu pracować równolegle z innymi serwerami oraz procesami wykonywanymi na stacjach roboczych.

 

Skalowalność

Systemy rozproszone mogą działać skutecznie i wydajnie w wielu różnych skalach. Najmniejszy praktyczny system rozproszony składa się ze stacji roboczej i serwera, natomiast system rozproszony skonstruowany z wykorzystaniem sieci lokalnej, może zawierać kilkadziesiąt stacji roboczych i kilka serwerów. Kilka sieci lokalnych łączy się często ze sobą tworząc intersieci, które mogą zawierać wiele tysięcy komputerów składających się na jeden system rozproszony.

Potrzeba skalowalności nie jest jedynie problemem sprzętowym lub wydajności sieci. Zagadnienie to przenika niemal wszystkie aspekty projektowania systemu rozproszonego. W scentralizowanych systemach komputerowych niektóre wspólne zasoby, jak pamięć, procesory czy kanały wejścia/wyjścia, są udostępnione z ograniczeniami i nie mogą być powielane bez końca. W systemach rozproszonych ograniczenia te są usuwane automatycznie i wydaje się, że liczba komputerów jest praktycznie niemal nieograniczona, lecz wpierw trzeba jawnie przewidzieć potrzeby skalowalności. Powiększanie skali systemu i oprogramowania użytkowego nie powinno pociągać za sobą konieczności wykonywania w nich zmian.

 

Tolerowanie uszkodzeń

Systemy komputerowe mogą ulegać awariom. Wskutek uszkodzenia sprzętu lub oprogramowania mogą generować błędne wyniki lub zatrzymywać się (zawieszać), nie ukończywszy zamierzonych obliczeń. Są dwa tryby, projektowania systemów komputerowych tolerujących uszkodzenia, które mogą być użyte jednocześnie:

  • nadmiarowość sprzętowa,
  • odtwarzanie programowe.

Aby uniezależnić się od awarii sprzętu, w miejsce pojedynczej sekcji stosuje się dwa połączone ze sobą komputery, z których jeden działa jako zapasowy. W systemach rozproszonych nadmiarowość można planować z większą precyzją. Zwielokrotnianie może dotyczyć wybranych serwerów o istotnym znaczeniu dla nieprzerwanego działania ważnych procesów.

Odtwarzanie programowe polega na użyciu programów do usuwania skutków uszkodzeń i przywracania stanu trwałych danych po wystąpieniu awarii. Trzeba też pamiętać, że obliczenia wskutek wystąpienia awarii mogą być niekompletne, a przez to aktualizowane pliki mogą stracić spójność. Pomocne może być w tym przypadku użycie systemu śledzenia transakcji.

 

Przeźroczystość

Przeźroczystość definiuje się jako ukrywanie przed użytkownikiem i programistą różnorodności w realizacji oddzielnych składowych aplikacji w systemie rozproszonym tak, aby system był postrzegany jako całość, a nie zbiór niezależnych składowych. Konsekwencje przeźroczystości wywierają poważny wpływ na model oprogramowania. Wyróżnia się następujące standardy przeźroczystości:

  • przeźroczystość dostępu: umożliwia dostęp do lokalnych i odległych obiektów za pomocą takich samych operacji,
  • przeźroczystość położenia: umożliwia dostęp do danych bez znajomości miejsca ich przechowywania,
  • przeźroczystość współbieżności: umożliwia wielu procesom niezakłócone działanie współbieżne z użyciem wspólnych obiektów,
  • przeźroczystość zwielokrotniania: pozwala na użycie wielu kopii obiektów w celu zwiększenia niezawodności i wydajności bez wiedzy użytkowników i programów użytkowych,
  • przeźroczystość awarii umożliwia ukrywanie uszkodzeń, pozwalając użytkownikom i programom użytkowym na kończenie zadań, pomimo awarii sprzętu lub składowych oprogramowania,
  • przeźroczystość wędrówki pozwala na przemieszczanie obiektów w obrębie systemu, bez wpływu na działania użytkowników lub programów użytkowych,
  • przeźroczystość wydajności umożliwia rekonfigurowanie systemu w celu poprawy jakości działania przy zmianie obciążenia,
  • przeźroczystość skalowania umożliwia zmianę skali, bez zmiany struktury poszczególnych elementów systemu i algorytmów użytkowych.