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