Hajussüsteemid

Allikas: Lambda
revolutsioon

Ainekoodid: ITI0215
Aine nimed: Hajussüsteemid
Link: http://lambda.ee/wiki/Hajuss%C3%BCsteemid
Punkte: 6 EAP

Õppejõud: Tanel Tammet, Martin Verrev
Kontakt: tanel.tammet@ttu.ee
Olemas on ka 2019 aasta materjalide arhiiv.


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 19 märts. 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

bittorrenti protokoll ja ülevaade
täiendavalt wikipediast

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

Best intro for reading

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:

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:

Real hardcore documentation:

Just a big collection of materials and examples: https://github.com/openblockchains/awesome-blockchains

Some additional OK tutorials:


Andme-apid, autentimine, pilveteenused, andmete koondamine

Erinevad API-stiilid

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
Autentimise märkmed: mobiil-ID

Pilvekeskkonnad

Understanding cloud computing

Suured:

Pilveteenuse tarkvara:

OpenStack

Näide: Azure

Azure märkmed

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:

Integreerimise lühimärkmed
data warehousing

Hajutamine:

Hajutamise lühimärkmed
memcached
Postgres replication intro
Postgres clustering and replication

Konsensus:

Paxos algoritm ja veel Paxos ja väga palju Paxost ja sõpru
bitcoinist tuttav proof-of-work

Hulk teemasid põhjalikult:

readings in distributed databases
Chapter for db system concepts book

Detailsed lisamaterjalid:

Postgres high availability
Oracle information integration


X-tee ja e-riigi IT korraldus

X-tee

x-tee märkmed loengust

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

Riigi IT korralduse märkmeid loengust

Kasulikud lisamaterjalid:

RIHA ja jutud RIHA kohta