pl en
pl
Systemy rozproszone
Karta opisu przedmiotu

Informacje podstawowe

Kierunek studiów
Informatyka (kierunek wspólny - WI)
Specjalność
-
Jednostka organizacyjna
Wydział Informatyki
Poziom kształcenia
Studia inżynierskie I stopnia
Forma studiów
Stacjonarne
Profil studiów
Ogólnoakademicki
Cykl dydaktyczny
2022/2023
Kod przedmiotu
WIINFS.Ii20.02816.22
Języki wykładowe
polski
Obligatoryjność
Obowiązkowy
Blok zajęciowy
Przedmioty ogólne
Przedmiot powiązany z badaniami naukowymi
Tak
Koordynator przedmiotu
Krzysztof Zieliński
Prowadzący zajęcia
Krzysztof Zieliński
Okres
Semestr 6
Forma zaliczenia
Egzamin
Forma prowadzenia i godziny zajęć
Wykład: 30
Ćwiczenia laboratoryjne: 30
Liczba punktów ECTS
4

Efekty uczenia się dla przedmiotu

Kod Efekty w zakresie Kierunkowe efekty uczenia się Metody weryfikacji
Wiedzy – Student zna i rozumie:
W1 Posiada szczegółową wiedzę w zakresie budowy i implementacji systemów działających w rozproszonym środowisku sieciowym. INF1A_W04 Egzamin
W2 Ma elementarną wiedzę na temat cyklu życia systemów komputerowych INF1A_W04 Egzamin
W3 Orientuje się w obecnym stanie oraz najnowszych trendach rozwojowych informatyki. INF1A_W02 Egzamin
Umiejętności – Student potrafi:
U1 Potrafi tworzyć efektywne aplikacje pracujące w rozproszonych systemach komputerowych. INF1A_U07, INF1A_U10 Wykonanie ćwiczeń laboratoryjnych
U2 Potrafi projektować i implementować oprogramowanie. INF1A_U05 Wykonanie ćwiczeń laboratoryjnych
U3 Potrafi ocenić istniejące oprogramowanie, wskazać możliwości jego poprawy i ulepszenia INF1A_U10 Aktywność na zajęciach, Wykonanie ćwiczeń laboratoryjnych
Kompetencji społecznych – Student jest gotów do:
K1 Potrafi odpowiednio określić priorytety służące realizacji określonego przez siebie lub innych zadania oraz adekwatnie zaplanować pracę. INF1A_K03, INF1A_K04 Udział w dyskusji, Wykonanie ćwiczeń laboratoryjnych

Treści programowe zapewniające uzyskanie efektów uczenia się dla modułu zajęć

Moduł wprowadza studenta w podstawy systemów rozproszonych.

Nakład pracy studenta

Rodzaje zajęć studenta Średnia liczba godzin* przeznaczonych na zrealizowane aktywności
Wykład 30
Ćwiczenia laboratoryjne 30
Przygotowanie do zajęć 20
Samodzielne studiowanie tematyki zajęć 30
Egzamin lub kolokwium zaliczeniowe 2
Dodatkowe godziny kontaktowe 5
Łączny nakład pracy studenta
Liczba godzin
117
Liczba godzin kontaktowych
Liczba godzin
60

* godzina (lekcyjna) oznacza 45 minut

Treści programowe

Lp. Treści programowe Efekty uczenia się dla przedmiotu Formy prowadzenia zajęć
1. # *Gniazda (4 godz.). Cechy protokołów TCP/UDP.* Zastosowanie portów, definicja gniazda i asocjacji. Kolejność bajtów w przesyle danych liczbowych (Big endian / Little endian). Podstawy programowania gniazd w językach Java i Python. Przykład aplikacji klient-serwer z użyciem protokołów TCP oraz UDP. Zaprojektowanie i implementacja aplikacji do komunikacji sieciowej z użyciem gniazd TCP oraz UDP.
# *Komunikacja grupowa (4 godz.).*Definicja problemu. Koncepcja wirtualnej synchroniczności. Problem porządkowania wiadomości. JGroups jako przykład realizacji wirtualnej synchroniczności. Implementacja przykładowej aplikacji.
# *Samodzielne prace praktyczne (2 godz.).* - sprawdzenie wiadomości.
# *Message Oriented Middleware (MOM) (4 godz.).* Modele komunikacji - synchroniczna oraz asynchroniczna. Cechy komunikacji opartej o wiadomości. RabbitMQ jako przykład realizacji MOM. Cechy i elementy składowe, nawiązywanie połączeń, deklaracja kolejek, publikowanie oraz konsumowanie wiadomości. Niezawodność oraz load-balancing, metody routingu wiadomości. Zaprojektowanie oraz implementacja zaawansowanej aplikacji wykorzystującej poznane mechanizmy RabbitMQ.
# *Technologie middleware (4 godz.).* Przeźroczystość w kontekście technologii middleware. OO middleware i RPC middleware. Języki definiowania interfejsów technologii middleware. Technologie Zeroc Ice, Apache Thrift i gRPC - podstawowe informacje, porównanie i prosta aplikacja klient-serwer. Zaprojektowanie, implementacja i demonstracja zaawansowanej aplikacji wykorzystującej middleware.
# *Samodzielne prace praktyczne (2 godz.).* - sprawdzenie wiadomości.
# *Systemy reaktywne (4 godz.).* Cechy systemów reaktywnych według The Reactive Manifesto. Akka jako przykład platformy do budowy systemów reaktywnych. Cechy platformy Akka. Cechy, hierarchia, cykl życia aktorów. Referencje oraz ścieżki do aktorów, transparentność lokalizacji. Strategie obsługi błędów. Strumienie reaktywne z użyciem Akka Streams API. Zaprojekotwanie oraz implementacja zaawansowanej aplikacji reaktywnej z użyciem Akka.
# *Środowisko Zookeeper (4 godz.).* Zookeeper jako przykład środowiska umożliwiającego koordynowanie rozproszonych aplikacji/usług. Pojęcie Znode. Rodzaje Znode - efemeryczny i sekwencyjny. Mechanizm powiadomień. Replikacja stanu serwerów Zookeeper - pojęcia lider i kworum. Gwarancje spójności. Testy działania serwera Zookeeper na pojedynczym urządzeniu oraz w środowisku zreplikowanym. Zaprojektowanie i implementacja przykładowej aplikacji wykorzystującej mechanizm obserwatorów i umożliwiającej sprawdzenie aktualnej ilości potomków oraz uruchomienie zewnętrznej aplikacji.
# *Samodzielne prace praktyczne (2 godz.).* - sprawdzenie wiadomości.
U1, U2, U3, K1 Ćwiczenia laboratoryjne
2. # *Systemy rozproszone – definicja, pojęcia podstawowe, usługi bazowe w systemach rozproszonych (2 godz.)* Omówienie podstawowych definicji i własności systemów rozproszonych. Przegląd usług transparentności w systemach rozproszonych.
# *Pojęcia systemu operacyjnego rozproszonego, sieciowego oraz warstwy pośredniczącej (2 godz.)* Przedstawienie kategorii systemów operacyjnych dla systemów rozproszonych oraz zasad ich budowy. Wprowadzenie pojęcia warstwy pośredniczącej omówienie podstawowych usług zapewnianych przez warstwy pośredniczące. Przykłady warstw pośredniczących.
# *Mechanizmy komunikacji w systemach rozproszonych - zdalne wywołanie procedury, zdalne wywołanie metody, przesyłanie komunikatów. Migracja - rodzaje oraz znaczenie w budowie środowisk przetwarzania rozproszonego (2 godz.)* Porównanie różnych mechanizmów komunikacji w systemach rozproszonych. Sposoby implementacji zdalnego wywołania procedury. Model imperatywny a model obiektowy zdalnego wywołania procedury. Techniki przesyłania komunikatów.
# *Warstwy pośredniczące obiektowe – OOM, oraz zorientowane na wiadomości – MOM (2 godz.)* Charakterystyka obiektowego przetwarzania rozproszonego. Obiektowe warstwy pośredniczące oparte na mechanizmie zdalnego wywołania metod. Wady i zalety warstw pośredniczących opartych na mechanizmie zdalnego wywołania metod. Przykłady: CORBA, RMI. Charakterystyka warstw pośredniczących zorientowanych na przesyłanie komunikatów. Przykłady MOM: JMS, Active MQ.
# *Model Actora - AKKA (2 godz.)*
# *Systemy reaktywne, reaktywne przetwarzanie strumieniowe,zasady budowy skalowalych systemów rozproszonych(2 godz.)*
# *Kanoniczne problemy systemów rozproszonych – pojęcie czasu, zegary logiczne Lamporta, zegary wektorowe (2 godz.)* Wprowadzenie do kanonicznych problemów systemów rozproszonych. Modele czasu i ich znaczenie w systemach rozproszonych. Protokół NTP. Zegary logiczne – zegar Lamporta. Zegary wektorowe i ich zastosowania.
# *Modele spójności w systemach rozproszonych (2 godz.)* Pojęcie spójności danych. Modele spójności: spójność ścisła, spójność sekwencyjna, spójność linearyzowana, spójność przyczynowa, spójność FIFO.
# *Replikacja oraz protokoły zarządzanie replikami danych (2 godz.)* Pojęcie globalnego stanu systemu i algorytmy jego wyznaczania. Sposoby wyznaczenia stanu zakończenia obliczenia rozproszonego. Replikacja danych i jej znaczenie dla efektywności i niezawodności dla pracy systemów rozproszonych. Algorytmy utrzymywania konsystentności replik.
# *Algorytmu elekcji oraz synchronizacji w środowisku rozproszonym (2 godz.)* Rodzaje algorytmów elekcji: Bully, Ring. Zastosowanie algorytmów elekcji. Algorytmy synchronizacji i wzajemnego wkluczania w systemach rozproszonych, Zookeeper.
# *Zagadnienia konstrukcji systemów rozproszonych odpornych na uszkodzenia. Semantyka błędów. Protokoły odtwarzania spójnego stanu systemu rozproszonego (2 godz.)* Omówienie sposobów replikacji systemów rozproszonych. Klastryzacja systemów rozproszonych i zasady jej konfiguracji.
# *Problemy uzgadniania stanu w warunkach występowania uszkodzeń – uzgodnienie Bizantyjskie (2 godz.)* Omówienie źródeł problemów związanych z ustaleniem konsystentnego stanu rozproszonego.
# *Mechanizmy bezpieczeństwa w systemach rozproszonych (2 godz.)* Omówienie zagrożeń bezpieczeństwa występujących w systemach rozproszonych oraz źródeł ich występowania.
# *Teoria CAP i jej znaczenie w budowie aplikacji rozproszonych dużej skali(2 godz.)*
W1, W2, W3 Wykład

Informacje rozszerzone

Metody i techniki kształcenia :

Mini wykład

Rodzaj zajęć Metody zaliczenia Warunki zaliczenia przedmiotu
Wykład Egzamin
Ćwiczenia laboratoryjne Aktywność na zajęciach, Udział w dyskusji, Wykonanie ćwiczeń laboratoryjnych

Dodatkowy opis

Wykłady z przedmiotu będą prowadzone w sposob zdalny z wykorzystaniem platformy Webex/Teams.

Pozostałe zajęcia będą odbywać się w salach. Dotyczy to także zaliczeń i egzaminów odbywajacych się w sesjach egzaminacyjnych.

Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu

Warunkiem zaliczenia zajęć laboratoryjnych jest zrealizowanie wszystkich zadań oraz zaliczenie kolokwium. Brak zaliczenia laboratorium nie uniemożliwia przystąpienia do egzaminu.

Sposób obliczania oceny końcowej

Ocena końcowa jest oceną z laboratorium z uwzględnieniem terminu uzyskania zaliczenia: za każdy dodatkowy termin jest obniżana o pół stopnia. Ocena z laboratorium bierze pod uwagę aktywność na zajęciach i przygotowanie do nich, oceny z zadań domowych i kolokwium. Oceny są wyznaczane zgodnie z regulaminem studiów AGH.

Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach

Studenci nieobecni na zajęciach laboratoryjnych muszą samodzielnie nadrobić zaległości, oddanie zadania jest możliwe w dodatkowych terminach.

Wymagania wstępne i dodatkowe

Znajomość podstaw systemów operacyjnych oraz komunikacji sieciowej.

Zasady udziału w poszczególnych zajęciach, ze wskazaniem, czy obecność studenta na zajęciach jest obowiązkowa

Wykład: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego. Ćwiczenia laboratoryjne: Studenci wykonują ćwiczenia laboratoryjne zgodnie z materiałami udostępnionymi przez prowadzącego. Student jest zobowiązany do przygotowania się w przedmiocie wykonywanego ćwiczenia, co może zostać zweryfikowane kolokwium w formie ustnej lub pisemnej. Zaliczenie zajęć odbywa się na podstawie zaprezentowania rozwiązania postawionego problemu. Zaliczenie modułu jest możliwe po zaliczeniu wszystkich zajęć laboratoryjnych.

Literatura

Obowiązkowa
  1. # Nurkiewicz Tomasz, Reactive Programming with RxJava, O'Reilly Media, Inc, USA, 2016
  2. # Raymond Roestenburg,Rob Bakker, Rob Williams, Akka in Action, O'Reilly Media, Inc, USA, 2014
  3. # A. Tanenbaum, S. Maatern, “Systemy rozproszone. Zasady I paradygmaty”, Klasyka Informatyki, WNT,2006
  4. # M. Henning, S. Vinowski, „Advanced CORBA Programming in C++” , Addison-Wesley, 1999
  5. # R. Johson, J. Hoeller, A. Anderson, T, Risberg, C. Sampaleanu, ”Spring Framework. Profesjonalne tworzenie oprogramowania w Javie”, Helion, 2006
  6. # G. F. Coulouris, „Systemy rozproszone. Podstawy i projektowanie”, WNT, 1999
  7. # W. Grosso, „Java RMI – Design and Building Distributed Systems”, O’Reilly, 2002

Badania i publikacje

Publikacje
  1. # Przemyslaw Dadel, Krzysztof Zielinski:Evolution of Reactive Streams API for Context-Aware Mobile Applications. Computing and Informatics 35(4): 852-869 (2016)
  2. # Marek Psiuk, Daniel Zmuda, Krzysztof Zielinski: Distributed OSGi built over message-oriented middleware. Softw., Pract. Exper. 43(1): 1-31 (2013)
  3. # Pierre de Leusse, Bartosz Kwolek, Krzysztof Zielinski: A Middleware Infrastructure for Multi-rule-Engine Distributed Systems. ServiceWave 2010: 231-232
  4. # Pierre de Leusse, Bartosz Kwolek, Krzysztof Zielinski: A common interface for multi-rule-engine distributed systems. RuleML Challenge 2010