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 nespecifikováno
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Brenkus David, Ing. Ph.D.
Obsah předmětu
1. Úvod do distribuovaných systémů, jejich vlastnosti, architektura, požadavky, modely a cíle návrhu. 2. Distribuované algoritmy, rozdělení, základní vlastnosti a řešené úlohy, aplikace distribuovaných algoritmů, detekce uvíznutí v distribuovaném systému. 3. Volba koordinátora, vzájemné vyloučení, řazení událostí, správa skupin a spolehlivá skupinová komunikace, atomický broadcast a vzájemná shoda. 4. Problematika ladění distribuovaných systémů, logické časové značky, konzistentní globální stav, pozorovatelnost a monitoring 5. Řešení základních koordinačních úloh distribuovaných výpočtů pomocí distribuovaných úložišť 6. Zobecnění distribuované shody, replikace, replikovaný stavový automat, Paxos a RAFT 7. Konzistentnost v distribuovaných systémech, CAP teorém, přehled modelů konzistence, CRDT - Conflict-free Replicated Data Types 8. Modely konzistence orientované na klienta a na data. 9. Transakce, vnořené transakce, distribuované transakce, uzamykání, časové značky, obnova po chybě. Blockchain, Saga pattern, orchestrace vs choreografie procesů 10. Architekturální návrhové vzory v distribuovaných systémech, hexagonální architektura, strategie fragmentace dat, distribuované hashovací tabulky, událostmi řízené zpracování, reaktivní služby, CQRS, event sourcing, FaaS 11. Správa zdrojů a plánování úloh v distribuovaných systémech 12. Swarm intelligence, inteligentní sítě, distribuovaná simulace 13. Bezpečnost v distribuovaných systémech, základy PKI, SCEP, autentikační služby, OAuth a JWT

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