Předmět: Distribuované systémy a algoritmy

« Zpět
Název předmětu Distribuované systémy a algoritmy
Kód předmětu KIV/DSA
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Magisterský
Rok studia nespecifikován
Semestr Letní
Počet ECTS kreditů 6
Vyučovací jazyk Čeština
Statut předmětu Povinně-volitelný
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Otta Maxmilián, Ing. Ph.D.
Obsah předmětu
1. Úvod do distribuovaných systémů, jejich vlastností, architektury, požadavky, modely a cíle návrhu. Principy, protokoly a způsoby komunikace v distribuovaných systémech. 2. Úvod do distribuovaných algoritmů, standardní problémy v distribuovaných systémech a jejich řešení. Volba vedoucího, řazení událostí, správa skupin a spolehlivá skupinová komunikace. 3. Modely distribuovaných systémů a výpočtů. Distribuované algoritmy, vlastnosti, požadavky a metriky výkonu. Distribuované vzájemné vyloučení a detekce deadlocku. 4. Problém distribuované shody. Typy spolehlivého broadcastu: best effort, spolehlivý a uspořádaný broadcast. Replikace dat a služeb v distribuovaných systémech, replikovaný stavový automat, RAFT a PAXOS. Problém byzantského selhání. 5. Případové studie některých implementací distribuovaných systémů. Apache Zookeeper, etcd, Infinispan, JGroups. 6. Ladění distribuovaných systémů. Problém pozorování distribuovaného systému, pořizování konzistentního snímku globálního stavu distribuovaného systému. Model distribuovaného výpočtu, sekvence a mřížka globálních stavů. Dynamické vlastnosti distribuovaných systémů - safety, liveness, fairness, starvation an livelock. Predikáty nad globálními stavy, úvod do temporální logiky a její vztah k dynamickým vlastnostem distribuovaných systémů. 7. Formální verifikace distribuovaných systémů. Specifikace souběžných systémů a jejich klíčových vlastností. Úvod do temporální logiky akcí (TLA) a PlusCal. Specifikace a verifikace distribuovaných algoritmů v PlusCal. 8. Konzistence v distribuovaných systémech, úvod do problematiky a proč je tak důležitá. Úvod do modelů konzistence, teorémy CAP, PACELC a FLP. Modely konzistence orientované na data a klienta, bezkonfliktní replikované datové typy (CRDT). 9. Konzistence v distribuovaných systémech. Datově orientované modely konzistence: striktní, sekvenční, kauzální, FIFO a slabé modely. Linearizovatelnost a atomicita modelů konzistence. Modely konzistence orientované na klienta: monotonic read, monotonic write, read your writes a write follows reads. 10. Distribuované transakce. Definice lokální a distribuované transakce. Vlastnosti a typy transakcí. Řízení souběžnosti a algoritmy zamykání. Implementace distribuovaných transakcí: transakční model a standard X/Open XA. Vzor Saga. 11. Distribuované souborové systémy. Základní principy a architektura distribuovaných souborových systémů. Distribuované souborové systémy NFS, AFS, Coda a Ceph. Distribuované ukládání souborů, bloků dat a objektů. 12. Návrhové vzory distribuovaných systémů. Vzory pro komunikaci, koordinaci, vyvažování zátěže, odolnost a toleranci chyb. Návrhové vzory zajišťující živost, bezpečnost a spravedlnost distribuovaných systémů. Bezstavové a stavové služby. 13. Bezpečnost v distribuovaných systémech. Základní pojmy, bezpečnost jako aspekt. Bezpečnost na úrovni transportní a aplikační úrovni. Základní prvky bezpečnosti v distribuovaných systémech: politiky, řízení přístupu na základě rolí (RBAC), řízení přístupu na základě atributů (ABAC), správa klíčů, autentizace a autorizace. Koncepty infrastruktury veřejných klíčů (PKI). Monitorování bezpečnosti distribuovaných systémů.

Studijní aktivity a metody výuky
  • Kontaktní výuka - 65 hodin za semestr
  • Příprava na zkoušku [10-60] - 45 hodin za semestr
  • Vypracování seminární práce v magisterském studijním programu [5-100] - 50 hodin za semestr
Předpoklady
Odborné znalosti
prokázat znalost počítačových sítí na úrovni KIV/UPS prokázat znalost operačních systémů na úrovni KIV/OS prokazovat znalost programovacího jazyka C prokazovat znalost konečných automatů i jejich realizaci v programovacím jazyce orientovat se v abstraktních datových typech a jejich implementaci v jazyce C prokazovat znalost programování síťových aplikací prokazovat základní znalost vytváření paralelních procesů a vláken prokazovat znalost synchronizačních metod v operačním systému Linux (POSIX rozhraní)
Odborné dovednosti
použít základní vývojové a verzovací nástroje základní dovednosti pro práci s personálním počítačem pod operačním systémem Linux na základní uživatelské úrovni používat některé z vývojových prostředí jazyka C vytvářet složitější programy v jazyce C vytvářet komunikační programy s využitím BSD socketů
Obecné způsobilosti
mgr. studium: dle rámcového zadání a přidělených zdrojů koordinují činnost týmu, nesou odpovědnost za jeho výsledky,
mgr. studium: srozumitelně a přesvědčivě sdělují odborníkům i laikům informace o povaze odborných problémů a vlastním názoru na jejich řešení,
Výsledky učení
Odborné znalosti
orientovat se v problematice distribuovaných systémů prokázat teoretické znalosti o různých problémech, jejichž korektní řešení vyžaduje koordinaci činnosti programů, pracujících odděleně, včetně algoritmů, používaných pro jejich řešení prokázat hluboké znalostí o síťovém programování, zejména o systémových funkcích prokazovat znalost vybraných distribuovaných algoritmů prokazovat znalost problematiky synchronizace času, konzistentnosti, vícenásobných kopií, distribuovaných transakcí, distribuovaných souborových systémů prokazovat znalosti z oblasti spolehlivosti a detekce chyb v distribuovaných systémech
Odborné dovednosti
mít praktické zkušenosti s programováním paralelních procesů, vláken a jejich synchronizací umět předávat data mezi procesy a vlákny pod operačním systémem UNIX (Linux) orientovat se v příkazech operačního systému Linux, zejména v příkazech, které se týkají síťových aplikací. Provádět analýzu nastavení sítě včetně kontroly tohoto nastavení a diagnostiky problémů navrhnout a realizovat síťové aplikace typu server/klient Navrhnout a realizovat implementaci vybraných distribuovaných algoritmů být schopen ladit programové vybavení v distribuovaném prostředí provádět analýzu aplikace včetně lokalizace případných chyb
Obecné způsobilosti
mgr. studium: používají své odborné znalosti, odborné dovednosti a obecné způsobilosti alespoň v jednom cizím jazyce,
Vyučovací metody
Odborné znalosti
Přednáška s diskusí,
Skupinová konzultace,
Samostudium,
Odborné dovednosti
Cvičení (praktické činnosti),
Demonstrace dovedností,
Skupinová konzultace,
Obecné způsobilosti
Přednáška s aktivizací studentů,
Hodnotící metody
Odborné znalosti
Průběžné hodnocení,
Písemná zkouška,
Odborné dovednosti
Demonstrace dovedností (praktická činnost),
Průběžné hodnocení,
Obecné způsobilosti
Písemná zkouška,
Doporučená literatura
  • Burns, Brendan. Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services. 2018. ISBN 978-1-492-03177-2.
  • Coulouris, George; Dollimore, Jean; Kindberg, Tim. Distributed systems : concepts and design. 5th ed.. 2012. ISBN 978-0-13-214301-1.
  • Özsu M.Tamer; Valduriez Patrick. Principles of Distributed Database Systems, 4th ed.. Springer, 2020. ISBN 978-3-030-26252-5.
  • Tanenbaum, Andrew S.; Van Steen, Maarten. Distributed systems 3rd Edition. 2017. ISBN 978-15-430573-8-9.


Studijní plány, ve kterých se předmět nachází
Fakulta Studijní plán (Verze) Kategorie studijního oboru/specializace Doporučený ročník Doporučený semestr