Hajussüsteemid: erinevus redaktsioonide vahel
| 48. rida: | 48. rida: | ||
Sinu ülesanne on iseseisvalt | Sinu ülesanne on iseseisvalt | ||
* tutvuda levinumate soovitustega REST-stiilis APi-de ehitamiseks: | * tutvuda levinumate soovitustega REST-stiilis APi-de ehitamiseks: | ||
** Kui sa hästi ei mäleta REST-stiili põhipointe, siis sissejuhatuseks vaata üle [https://en.wikipedia.org/wiki/Representational_state_transfer wikipedia jutt]. Põhi-idee on kasutada HTTP harilikke get, put, post "käske", et öelda, kas tahad datat, lisad datat või uuendad datat, anda vigade korral tagasi HTTP veakoode, kodeerida autentimisinfot ja muud metainfot HTTP päistesse ja püüda kodeerida API päringud ja vastused võimalikult kergelt arusaadavalt. | ** Kui sa hästi ei mäleta REST-stiili põhipointe, siis sissejuhatuseks vaata üle [https://en.wikipedia.org/wiki/Representational_state_transfer wikipedia jutt]. Põhi-idee on kasutada HTTP harilikke get, put, post "käske", et öelda, kas tahad datat, lisad datat või uuendad datat, identifitseerida data-objekte urli abil stiilis http://miski.org/data/people/25 (siin on variante), anda vigade korral tagasi HTTP veakoode, kodeerida autentimisinfot ja muud metainfot HTTP päistesse ja püüda kodeerida API päringud ja vastused võimalikult kergelt arusaadavalt. | ||
** Loe läbi terve [https://docs-apis.apigee.io/files/Web-design-the-missing-link-ebook-2016-11.pdf api design book] alternatiivina leiad [https://pages.apigee.com/eBook-Web-API-Design-The-Missing-Link-reg.html?int_source=resources-main&int_medium=website&int_campaign=ebook&int_content=web-api-design-missing-link sellelt urlilt]. | ** Loe läbi terve [https://docs-apis.apigee.io/files/Web-design-the-missing-link-ebook-2016-11.pdf api design book] alternatiivina leiad [https://pages.apigee.com/eBook-Web-API-Design-The-Missing-Link-reg.html?int_source=resources-main&int_medium=website&int_campaign=ebook&int_content=web-api-design-missing-link sellelt urlilt]. | ||
** Vaata [https://www.odata.org/getting-started/ odata] veidi eksootilisemaid, aga autoriteetse standardiorganisatsiooni oasis soovitusi REST stiilis API ehitamiseks, konkreetselt alusta [https://www.odata.org/getting-started/understand-odata-in-6-steps/ kiirsissejuhatusega], siis loe [https://www.odata.org/getting-started/basic-tutorial/ basic tutorial] ja lõpuks tutvu kiirelt [http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html pika standardidoku] peatükiga 5: [http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0-errata03-os-part2-url-conventions-complete.html#_Toc453752356 query options] | ** Vaata [https://www.odata.org/getting-started/ odata] veidi eksootilisemaid, aga autoriteetse standardiorganisatsiooni oasis soovitusi REST stiilis API ehitamiseks, konkreetselt alusta [https://www.odata.org/getting-started/understand-odata-in-6-steps/ kiirsissejuhatusega], siis loe [https://www.odata.org/getting-started/basic-tutorial/ basic tutorial] ja lõpuks tutvu kiirelt [http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html pika standardidoku] peatükiga 5: [http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0-errata03-os-part2-url-conventions-complete.html#_Toc453752356 query options] | ||
Redaktsioon: 19. märts 2020, kell 08:52
![]() |
Ainekoodid: ITI0215 |
Loengud ja seminarid piiranguajal
Loengud
- Loenguajaks paneb õppejõud üles senisest detailsemad soovitused, et mida kuni järgmise loenguajani iseseisvalt lugeda.
- Lisaks teeb õppejõud loenguajaks kas väikese sissejuhatava video või jutu nende asjade kohta, mida lugeda antakse, ja see video/jutt läheb vastava loengu peatükki wikis.
- Samuti antakse iga nädal väike kohustuslik ülesanne: nädala jooksul tuleb õppejõule saata emailiga kokkuvõte/mikroessee.
- Piiranguaja loengu-list on siin wikis kohe järgmise praktikumide alapeatüki järel.
Praktikumid
Esimese praktikumi esitamistähtaja nihutame 26. märtsile. Arusaadavalt on soovitav esitada juba 16. märtsil, nii vähendame esitamisjärjekorra pikkust.
Praktikumid ja tööde arvestamise teeme Skypes või FB chatis videoga standardsel praktikumiajal, mida vajadusel pikendame.
Praktikumitöö esitamiseks tee järgmist:
- Pane oma töö TTÜ gitlabi või avalikku githubi või gitlabi reposse.
- Pane repo esilehele loetav ülevaade protokollidest, mida su töö kasutab, koos töö üldpõhimõtete kirjeldusega.
- Tee nii, et Martin saaks seda repot lugeda: kui ei ole avalik repo, lisa ta developeriks (Github: martinve, TTU Gitlab: Martin Verrev). TTU Gitlabis peab olema developer õigustes, et koodi lugeda.
- Saada Martinile martin.verrev@gmail.com email -- enne kaitsmist -- kuhu Subject reale kirjuta "Hajussüsteemid praktikum" ja pane kirja sisse grupi liikmed ja link sinu repole.
- Praktikumiajal jälgi seda linki Hajussüsteemide praktikumi järjekord. Seal on kirjas, mis grupid on kaitsnud ja millised järgmisena kaitsevad. Uuenda iga paari minuti tagant seda lehte, kuni järjekord jõuab sinu grupini.
- Kui järjekord jõuab sinu grupini, võta Martiniga üles videokõne (Skype: martin.verrev Zoom: https://us04web.zoom.us/j/4988482784 Hangouts: martin.verrev@gmail.com)
- Kui tekib tehnilisi probleeme, kirjuta Martinile martin.verrev@gmail.com, mis probleem tekkis.
Kui sa parasjagu ei taha praktikumitööd esitada, vaid lihtsalt nõu küsida, siis kasuta põhimõtteliselt sama protseduuri: vaata, et Martinil oleks ligipääs repole, saada talle emailiga link ja võta üles videokõne.
Loeng ja töö 19. märtsil
Sinu ülesanne on iseseisvalt
- tutvuda levinumate soovitustega REST-stiilis APi-de ehitamiseks:
- Kui sa hästi ei mäleta REST-stiili põhipointe, siis sissejuhatuseks vaata üle wikipedia jutt. Põhi-idee on kasutada HTTP harilikke get, put, post "käske", et öelda, kas tahad datat, lisad datat või uuendad datat, identifitseerida data-objekte urli abil stiilis http://miski.org/data/people/25 (siin on variante), anda vigade korral tagasi HTTP veakoode, kodeerida autentimisinfot ja muud metainfot HTTP päistesse ja püüda kodeerida API päringud ja vastused võimalikult kergelt arusaadavalt.
- Loe läbi terve api design book alternatiivina leiad sellelt urlilt.
- Vaata odata veidi eksootilisemaid, aga autoriteetse standardiorganisatsiooni oasis soovitusi REST stiilis API ehitamiseks, konkreetselt alusta kiirsissejuhatusega, siis loe basic tutorial ja lõpuks tutvu kiirelt pika standardidoku peatükiga 5: query options
- kirjutada ca üks lehekülg vabas vormis ülevaadet sinu jaoks uutest/huvitavamatest või vastupidi, kahtlusi tekitavatest soovitustest, mida lugesid, ja saata see hiljemalt 25. märtsiks õppejõule emailiga tanel.tammet@ttu.ee, panes Subject rea algusse sõna "Hajussüsteemid".
Aeg, koht
Semester: kevad
Tulemus: eksam
Hindamise meetod: praktikumide tulemused (pool) pluss eksam (teine pool)
Praktikum: neljapäeval kell 08:15-09:45 ruumis ICT-A1
Loeng: neljapäeval kell 10:00-11:30 ruumis ICT-A1
Praktilised tööd ja tähtajad
Kokku on töid 2. Kumbki praktikum täismahus tehtuna annab 25 punkti, sellele võivad lisanduda ekstrapunktid. Puudulikult tehtud töö punktiarv jääb alla 25 punkti. Hilinenud kodutöö eest saab pooled muidu saadaolevad punktid.
Teine praktikumiülesanne on hetkeseisuga 2019 aastast, 2020 aastal seda veidi muudetakse. Esimene praktikumiülesanne on up-to-date.
- 1 praks on P2P rakendus: kas distributed ledgeri komponent või anonümiseeriv võrk. Tähtaeg 26 märts (nihutatud üks nädal algsest hilisemaks). Grupitöö 1-3 inimest.
- 2 praks: Grupitöö 1-3 inimest. Tähtaeg mai keskpaik, enne auditoorse töö lõppu.
Hindamine
Hindamine: praktikumid annavad kokku 50% kogupunktidest ning eksam teise 50%. Kursuse edukaks sooritamiseks on sul vaja:
- saada arvestatud mõlemid praktikumid
- teha eksam tasemel vähemalt 1/3 eksami kogupunktidest.
- saada praktikumid+eksam kokku vähemalt 50 punkti.
NB! Eksamile võtta kaasa pildiga dokument.
Loengukava
Kursus jaguneb laias laastus viieks teemaks:
- P2P ja protokollid (neil teemadel - pluss veidi andme-apidest- esimene praks),
- Distributed ledger ehk bitcoini alustehnoloogia
- Andme-apid, autentimine, pilvekeskkonnad, andmete hajutamine ja hajutatud andmete koondamine.
- Paralleelrehkendused
- X-tee ja riigi IT-korraldus
Päris hea õpiku saad tasuta alla laadida siit. Meie kursuse sisu on sellest õpikust küllalt erinev, samas on ka ühisosi.
Üldist materjali ja kursusi mujalt:
- http://en.wikipedia.org/wiki/Distributed_computing
- http://dcg.ethz.ch/lectures/podc_allstars/index.html
- http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-824-distributed-computer-systems-engineering-spring-2006/index.htm
- http://www.stanford.edu/class/cs244b/
Protokollid ja P2P
P2P sissejuhatus, 30. jaanuar
- Kohustuslikud osad lugeda:
- vikipeedia ülevaade
- loengumaterjal: pikem ülevaade eri P2P tehnoloogiatest
- TOR wikipedias
Protokollid, 6. veebruar
- Kohustuslikud osad lugeda:
- Http ja json: võrgurakenduste protokollid 1 (loengus kuni https, edasised osad järgmises loengus)
- Täiendavalt soovitav lugeda:
- Gaffer on games: UDP vs TCP ja selle jätk
- Veidi seotud asi ad hoc networks vt ka Defendeci ja Jürgo Predeni patent
Protok lõpp: http fancy stuff, 13 veebruar
- Http ja json: võrgurakenduste protokollid 1 lõpuosa alates https
- Loe lisaks https kohta
- xml protokollid xml-rpc, soap ja seotud tehnoloogiad: võrgurakenduste protokollid 2
- Vanad tekstid SOAPi probleemidest: veebiteenuste võlu ja valu ja s stands for simple
P2P DHT ja bittorrent, 20 veebruar
DHT (distributed hash tables):
- ülevaade wikipedias
- Chord:
- Põhimaterjal - kas vanem versioon, loe kuni Ivy osani või uuem, Chordi põhimõtted. Täiendavalt võib vaadata seda presentatsiooni visualiseeritud algoritmidega (ppt presentatsioonirezhiimis!) ja eriti detailideks seda presentatsiooni
- Lisaks tasuks veidi uurida artikleid wikipedia sissekande lõpus (external links)
- Kademlia:
- Põhimaterjal presentatsioon autoritelt
- Täiendavalt autorite artikkel ja detailsem presentatsioon
Bittorrent
Distributed ledger, ajatemplid ja bitcoin
Soovitav on lugeda neid materjale algusest: põhiasjad on esimestes, ning mida kaugemale edasi, seda detailsemad/spetsiifilisemad materjalid tulevad.
Kriitiline taust järgneva mõistmiseks
- https://en.wikipedia.org/wiki/Cryptographic_hash_function : ühtlaselt jaotuv hash, nii et kui püüad leida stringi S, et hash(S)=teadaolev_hash, siis parim viis S leidmiseks on lihtsalt random S-de katsetamine. Bitcoin kasutab SHA2 hash algoritmi varianti, mis annab tulemuseks 256 bitise (ehk 32 baiti) väärtuse.
- https://en.wikipedia.org/wiki/Merkle_tree : kirjete sidumine hashide puuna (veidi keerukam/efektiivsem, kui lihtne hashiahel). Mis on hashiahel: kui tahad siduda kirjeid K1, K2, K3, siis salvestad [K1,hash(K1)], [K2,hash(K2+eelmise hash (ehk hash(K1)))], [K3,hash(K3+eelmise hash(ehk hash(K2+hash(K1))))], jne, kus hashi-osa node N jaoks on üldiselt hash(KN+(KN-1 hashi-osa)) ehk hash(KN+hash(KN-1+hash(KN-2+hash(KN-3+...) ...)
- https://en.wikipedia.org/wiki/Proof-of-work_system : arvuti sundimine mõttetut tööd tegema, et raskendada spammimist. Levinud meetod on nõuda, et hashi alguses oleks N nulli (mida suurem N, seda raskem leida). Selleks tuleb sul hash(S) asemel katsetada läbi palju hash(S+nonce) arvutusi, kus nonce on random string, kuni juhtumisi saad N nulliga algava hashi. Reaalselt kasutab Bitcoin ajas muutuvat keerukust (mida aeg edasi, seda keerulisem ülesanne), detaile vaata siit ja siit ja siit.
- https://en.wikipedia.org/wiki/Blockchain : lihtsalt ülevaade kogu teemast
- Eelmiste asjade demo: vajuta üleval "Hash", "Block", "Blockchain" linkidele ja proovi igal lehel ise datat muuta ja "Mine" nupule vajutada. "Mine" teeb proof-of-worki ehk otsib random stringi (nonce) mille lisamisel datale saame mitme nulliga algava hashi.
Kasulik taust laiema pildi jaoks
- Konsensus hajutatud süsteemides: hea presentatsioon põhjalikumaks arusaamiseks (siin on klassikaline Bütsantsi kindralite probleemi artikkel, mis on suht keeruline)
- Põhjalikum konsensuse-artiklite-selgituste kogu
- RIA tellitud ja küberi koostatud eestikeelsest uuringust lugeda alates lk 15 ptk "Plokiahelad"
Best intro for reading
- https://bitsonblocks.net/2015/09/01/a-gentle-introduction-to-bitcoin/
- https://bitsonblocks.net/2015/09/09/a-gentle-introduction-to-blockchain-technology/
- https://bitsonblocks.net/2015/09/21/a-gentle-introduction-to-bitcoin-mining/
Põhjalik õpik
- Lae alla hea tasuta õpik
- Kui eelmine link mingil põhjusel ei tööta, mine õpiku lehele (sealt leiad ka videoloengud) ja otsi sealt alapealkiri "Free pre-publication draft" mille all on link "... for download here".
Python examples with detailed explanations
It is enough to go through one or two of these:
- One example http://ecomunsing.com/build-your-own-blockchain
- Another example
- An even more detailed example
- https://bigishdata.com/2017/10/17/write-your-own-blockchain-part-1-creating-storing-syncing-displaying-mining-and-proving-work/
- https://bigishdata.com/2017/10/27/build-your-own-blockchain-part-2-syncing-chains-from-different-nodes/
- https://bigishdata.com/2017/11/02/build-your-own-blockchain-part-3-writing-nodes-that-mine/
- https://bigishdata.com/2017/11/21/how-to-build-your-own-blockchain-part-4-2-ethereum-proof-of-work-difficulty-explained/
- And then some:
More details and tutorials
Have a look at the actual bitcoin data, latest blocks and transactions:
How does the P2P stuff work, i.e finding nodes:
- https://bitcoin.stackexchange.com/questions/3536/how-do-bitcoin-clients-find-each-other
- https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery
Real hardcore documentation:
- https://bitcoin.org/en/developer-guide#p2p-network
- https://en.bitcoin.it/wiki/Protocol_documentation
Just a big collection of materials and examples: https://github.com/openblockchains/awesome-blockchains
Some additional OK tutorials:
- The Blockchain Explained to Web Developers, Part 1: The Theory. https://marmelab.com/blog/2016/04/28/blockchain-for-web-developers-the-theory.html
- The Blockchain Explained to Web Developers, Part 2: In Practice https://marmelab.com/blog/2016/05/20/blockchain-for-web-developers-in-practice.html
- https://medium.com/blockchain-review/how-does-the-blockchain-work-for-dummies-explained-simply-9f94d386e093
- Ever wonder how Bitcoin (and other cryptocurrencies) actually work? https://youtu.be/bBC-nXj3Ng4
- https://medium.com/@annamcabee/learning-about-block-chain-with-python-8b2178cf1fca
- https://crypto.stanford.edu/cs251/
Andme-apid, autentimine, pilveteenused, andmete koondamine
Erinevad API-stiilid
- rest wikipedias ja rest tutorial (vt linke all!)
- odata.org: microsoft/oasis recommendations for rest style
- api design book download or api design book (must register)
- Graphql start and graphql vs rest and similar take on rest vs graphql and wrap rest in graphql
Suured avalikud andme-apid
- API-de kogu uurimiseks
- list of open apis from wikipedia
- google api explorer
- Andme-apide näiteid
- facebook api limitations/shutdowns in 2018
Autentimine
- facebook, google, pangalink.
- Autentimise märkmed: facebook ja google
- veebiserveri seadistamine id-kaardi jaoks ja abistavad koodijupid
- taustaks id-kaardi kasutusstsenaariumid
Pilvekeskkonnad
Suured:
Pilveteenuse tarkvara:
Näide: Azure
Google appengine, database api, google bigtable and file system stack
http://cloud.google.com/appengine/ AppEngine on nüüd osa Google Cloud platvormist
Hajutatud failisüsteemide märkmed loengust
Paralleelrehkendused
Esimene osa
Näited:
- C: alguses oli fork(), hea pthreads tutorial.
- Thread, Queue ja Lock Pythonis
Presentatsioonid lugemiseks:
Lukustamine, andmebaasid jms
Lisaks võib lugeda:
- Konspekt, käsitleb teemat oluliselt põhjalikumalt kui loeng/slaidid
- Introduction to Transactions (slaidid)
- Sünkroniseerimisprimitiivid: slaidid
Mittekohustuslik lisalugemine:
- Konspekt pikemalt ja põhjalikumalt loengus läbitud teemadest.
Paralleliseerimise automatiseerimine ja klastrid
- Mapreduce framework
- Mapreduce katsetused Azure platvormil
- Mapreduce klassikaline põhiartikkel
- memcached
- memcached ülevaade
Hajutatud andmekogud
Integreerimine:
Hajutamine:
Konsensus:
Hulk teemasid põhjalikult:
Detailsed lisamaterjalid:
X-tee ja e-riigi IT korraldus
X-tee
Kasulikud lisamaterjalid:
- x-tee protokolli spec
- UXP: AS Cybernetica eksport-kommertsversioon X-teest.
- Kaks screencasti UXP keskserveri konfimisest 1 ja 2
- Ahto Kalja detailne ülevaade X-tee projektist aastast 2004
- X-road official page
- X-road security server manual (detailed)
- Paper by Ansper and Willemson
Riigi IT-infrastruktuuri korraldus
Kasulikud lisamaterjalid:
