Zgrubne specyfikacje projektów na PUS

Programowanie Usług Sieciowych

Zgrubne specyfikacje projektów.

Zobacz także projekty na nierealizowany już kurs Rozproszonych Systemów Operacyjnych: rso_projekty


Serwer nazewniczy

System klient/serwer, umożliwiający zapytania o wartość do bazy kluczy, zapisanej w sposób trwały po stronie serwera.

Założenia, własności, warianty rozbudowy:

  • klient w postaci biblioteki funkcji: postać minimalna – incjalizacja (połączenie/wyspecyfikowanie serwera), zapytanie o wartość klucza, zapytanie odwrotne;
  • założenie minimalistyczne: jednoznaczność klucza i jego wartości, założenie podnoszące poziom trudności: wieloznaczność zarówno klucza jak i wartości; przy drugim założeniu opracowanie strategii poboru danych wielokrotnych (strumień = łatwo czy iterator = trudno);
  • inicjalizacja z autoryzacją i wynikające z niej prawa dostępu (sensowne by było, gdyby miejscem ich przechowywania była sama baza serwera nazewniczego), ograniczające dostęp do części interfejsu;
  • interfejs aktualizujący dane w przestrzeni trwałej serwera;
  • hierarchiczność (obiekty typu „katalog” czy „kontener”, zamykające podzbiory kluczy oraz inne katalogi);
  • zapytania niejednoznaczne (np. oparte na wyrażeniach regularnych)
  • praca wieloserwerowa z mechanizmami uczenia się (cache serwerów, dzierżawa danych);
  • partycjonowanie bazy, mechanizmy delegacji (autorytatywna obsługa przez jeden serwer jedynie fragmentu bazy);

Komunikator

System peer-to-peer do przesyłania komunikatów on-line, ze scentralizowanym serwerem rendez-vous (wiązań nick-adres).

Założenia, własności, warianty rozbudowy:

  • rejestracja i wyrejestrowywanie się w scentralizowanej bazie wiązań, umożliwiające znalezienie rozmówcy poprzez nick;
  • przeszukiwanie bazy wiązań;
  • monitorowanie (w najprostszym przypadku: przez serwer wiązań) stanu klientów (aktywny/nieaktywny);
  • buforowanie komunikatów kierowanych do klientów nieaktywnych (w najprostszym przypadku: przez serwer wiązań);
  • możliwość przesyłania/udostępniania plików (w technologii „push” = wysyłając do klienta lub „pull” = poprzez stworzenie warunków do downloadu);
  • priorytety i potwierdzenia dostarczenia;

Serwer plików zdalnych A (kopiujący)

Serwer udostępniający pliki metodą kopiowania całego pliku do systemu plikowego klienta na czas trwania sesji plikowej.

Założenia, własności, warianty rozbudowy:

  • klient w postaci nowych funkcji rozszerzających funkcjonalność posiksowych open i close; operacje wewnątrz sesji wykonywane są lokalnie, przez standardowe funkcje read, write, lseek;
  • serwer współbieżny;
  • mechanizm blokad/transakcji, rozwiązujący problemy z synchronizacją dostępu jednoczesnego;
  • system praw dostępu, niezależny od systemu platformy uruchomieniowej;
  • połączenie funkcjonalności serwera i klienta celem stworzenia mechanizmów minimalizujących konieczność transportu plików lub stwarzających możliwość pobrania ich z wielu miejsc;

Serwer plików zdalnych B (strumieniowy)

Serwer udostępniający pliki jako strumienie danych poprzez zmodyfikowany interfejs posiksowy.

Założenia, własności, warianty rozbudowy:

  • realizacja w kliencie nowego interfejsu posiksowych strumieni (open, read/write/lseek, close), realizującego wywołania funkcji bibliotecznych w przypadku plików lokalnych oraz dodatkową funkcjonalność w przypadku zdalnych;
  • identyfikacja pliku zdalnego zrealizowana w formie nieprzezroczystej (z nazwy wynika nielokalnosc oraz ewentualnie koordynaty serwera) lub przezroczystej (trudniej!);
  • serwer współbieżny w modelu jedna sesja kliencka na jeden element aktywny (proces, wątek) serwera;
  • blokady dostępu jednoczesnego (na poziomie całego pliku = wariant prosty, na poziomie np. regionów pliku = wariant skomplikowany);
  • system praw dostępu rozszerzający odziedziczony po systemie uruchomieniowym (lub od niego niezależny);
  • funkcje katalogowe po stronie zdalnej;

Pamięć rozproszona z przezroczystym dostępem

Podstawowym założeniem projektu jest uzyskanie interfejsu dostępowego do pamięci maksymalnie ukrywającego przed użytkownikiem fakt jej rozproszonego (zdalnego) charakteru. Proponowane rozwiązanie to definicja klasy (klas) w języku C++ implementującej jakąś strukturę dynamiczną, której elementy są w sposób transparenty ściągane do przestrzeni adresowej klienta z sieci. Mile widziane wykorzystanie możliwości przeciążenia operatorów = oraz []. Rozbudowa o możliwość współdzielenia pamięci, wraz z systemem zabezpieczeń przed niespójnością jednoczesnych zmian.


Zdalne wykonywanie programów o ustalonej logice

System umożliwiający wykonywanie programów na zdalnej maszynie, przy zachowaniu możliwości zasilania ich danymi wejściowymi i odbioru danych wyjściowych w środowisku lokalnym.

Założenia, własności, warianty rozbudowy:

  • w najprostszym przypadku realizacja logiki dane ze standardowego wejścia – przetwarzanie – wyniki na standardowe wyjście;
  • interpreter poleceń, pozwalający na delegację zadania do sieciowego serwera uruchomieniowego i stosowne podłączenie strumieni wejściowych i wyjściowych do gniazd sieciowych;
  • znajdowanie „najlepszego” serwera do delegacji, na podstawie statycznych (łatwo) lub dynamicznych (trudno) przesłanek maksymalizujących wydajność przetwarzania;
  • założenie heterogeniczności systemów i przesyłanie nie obrazów aplikacji binarnych a źródeł w ustalonym, standardowym języku programowania i ich (w razie konieczności) kompilacja na serwerze zdalnych uruchomień;
  • monitory obciążenia;

Mariusz Jarocki, 22/12/2004