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.
|