Циљ предмета
Стицање знање о технологијама и начину функционисања дистрибуираних система и њиховој примени.
Исход предмета
По завршетку курса, студент има основна знања о фундаменталним проблемима, појмовима и парадигмама дистрибуираних система. Разуме значај неструктуираних података и примене дистрибуираних фајл система за смештање података. Разуме и зна да примени адекватне платформе за дистрибуирано израчунавање.
Садржај предмета
Теоријска настава
Основе и значај дистрибуираних система. Основе Cloud, Peer2Peer и Grid Computing система. Модел дистрибуираног извршавања. Глобално стање дистрибуираног система. Пресеци код дистрибуираног израчунавања. Логичко време. Скаларно, векторско и матрично време. Синхронизација физичких часовника. Глобално стање и алгоритми за његово снимање. Алгоритми за FIFO и не-FIFO канале. Снимање стања у системима са каузалном испоруком. Конзистентни глобални снимци. Основни дистрибуирани алгоритми. Репликација и миграција. Синхронизатори. Избор лидера. Редослед порука и групна комуникација. Дистрибуирано узајамно искључивање. Дистрибуирана дељена меморија. Договор и консензус. Детекција отказа. Толеранција отказа.
Практична настава
Имплементација векторских часовника. Диференцијална техника. Техника директне зависности. Адаптивна техника. Проблеми у снимању глобалног стања. Chandy–Lamport и Spezialetti–Kearns алгоритам. Venkatesan инкрементални алгоритам. Helary таласни синхронизациони метод. Lai–Yang и Li алгоритам. Mattern алгоритам. Алгоритми за дистрибуирано узајамно искључивање. Лампортов алгоритам. Ricart–Agrawala и Singhal алгоритам. DHT и Chord. Дистрибуирани фајл системи, неструктуирани подаци и NoSQL/distributed key-value store (Google GFS, Hadoop HDFS, Cassandra, Redis). Zookeeper за синхронизацију и друге примене. Конзистентност и Paxos. MapReduce као програмски модел за дистрибуирано израчунавање. Дистрибуиране базе података. Безбедност дистрибуираних апликација.