Distribuované systémy a výpočty X36DSV Jan Janeček (dnes Peter Macejko)
P2P Distribuce dat Požadavky Řešení decentralizace škálovatelnost rovnoměrné rozložení dat a zátěže rychlé vyhledávání a výběr dynamická architektura obecnost nezávislost na identifikaci Chord kruh Pastry/Tapestry strom CAN - hyperkrychle X36DSV - Distribuované systémy a výpočty (2) - v.3 2
P2P Vyhledávání Problém put(name,data) N N 2 N 3 N 4? N 5 N 6 data = get (name) X36DSV - Distribuované systémy a výpočty (2) - v.3 3
P2P Vyhledávání Problém put(name,data) N N 2 N 3 N 4? key = hash(name) IP_address = lookup(key) put(ip_address,data) N 5 N 6 data = get (name) key = hash(name) IP_address = lookup(key) data = get(ip_address) X36DSV - Distribuované systémy a výpočty (2) - v.3 4
P2P Vyhledávání Centralizovaný adresář - Napster put(loc,data) N N 2 N 3 N 4 N 5 N 6 data = get (loc) X36DSV - Distribuované systémy a výpočty (2) - v.3 5
P2P Vyhledávání Centralizovaný adresář - Napster put(loc,data) N N 2 N 3 N 4 setloc(name,n 5 ) put(loc,data) N 5 N 6 DB data = get (loc) loc = lookup(name) data = get(loc) X36DSV - Distribuované systémy a výpočty (2) - v.3 6
P2P Vyhledávání Broadcast - Gnutela N N 2 N 3 N 4 N 5 N 6 loc = lookup(name) X36DSV - Distribuované systémy a výpočty (2) - v.3 7
P2P Vyhledávání Broadcast - Gnutela N N 2 N 3 N 4 N 5 N 6 loc = lookup(name) X36DSV - Distribuované systémy a výpočty (2) - v.3 8
P2P Vyhledávání Prohledávání - FreeNet N N 2 N 3 N 4 N 5 N 6 loc = lookup(name) X36DSV - Distribuované systémy a výpočty (2) - v.3 9
P2P Vyhledávání Prohledávání - FreeNet N N 2 N 3 N 4 N 5 N 6 loc = lookup(name) X36DSV - Distribuované systémy a výpočty (2) - v.3 0
DHT Distributed Hash Table efektivita počet zpráv na vyhledání průměr grafu škálovatelnost počet stavových položek na uzel stupeň uzlu odolnost proti výpadkům uzlu proti výpadkům uzlů replikace dat počet redundantních kopií X36DSV - Distribuované systémy a výpočty (2) - v.3
DHT Distributed Hash Table Chord jednoduchý interface IP_address = lookup(key) efektivní O(log N) zpráv na vyhledání škálovatelný O(log N) stavových dat na uzel odolný proti výpadkům uzlů X36DSV - Distribuované systémy a výpočty (2) - v.3 2
DHT Chord Hashing N20 K 5 N05 vzdálenost K 20 circular 7-bit ID space N32 N90 K 80 N72 N60 X36DSV - Distribuované systémy a výpočty (2) - v.3 3
DHT Chord Hashing - konzistentní - Chord se opírá o SHA- - skutečná délka klíče je 60 bitů - vzdálenost pohyb po směru hodinových ručiček X36DSV - Distribuované systémy a výpočty (2) - v.3 4
DHT Chord Sequential lookup where is K80? N20 N05 circular 7-bit ID space N32 N90 K 80 N72 N60 X36DSV - Distribuované systémy a výpočty (2) - v.3 5
DHT Chord Sequential lookup where is K80? N20 N05 circular 7-bit ID space N32 N90 K 80 N72 N60 X36DSV - Distribuované systémy a výpočty (2) - v.3 6
DHT Chord Finger table N20 N 32 N 32 N 32 N05 N 32 N32 N90 N 60 N72 N60 X36DSV - Distribuované systémy a výpočty (2) - v.3 7
DHT Chord Finger table where is K80? N20 N 32 N 32 N 32 N05 N 32 N32 N90 N 60 K 80 N72 N60 X36DSV - Distribuované systémy a výpočty (2) - v.3 8
DHT Chord Finger table where is K80? N20 N 32 N 32 N 32 N05 N 32 N32 N90 N 60 K 80 N72 N60 X36DSV - Distribuované systémy a výpočty (2) - v.3 9
DHT Chord Finger table N20 i n+2 i succ 0 K2 N32 K22 N32 2 K24 N32 3 K0 N32 4 K8 N32 5 K24 N32 6 K56 N60 X36DSV - Distribuované systémy a výpočty (2) - v.3 20
DHT Chord insert - určení Id - znalost jednoho uzlu Chord - nalezení následníka a uložení odkazů - vytvoření finger table stabilize - periodický dotaz na následníka - ten sdělí svého (nového) předchůdce - neshoda update vazby - uložení dat fix_fingers - periodický update jednotlivých odkazů X36DSV - Distribuované systémy a výpočty (2) - v.3 2
DHT Chord výpadek finger table - fix_fingers() násobný výpadek - udržování seznamu r následníků opuštění Chordu - zkopírování dat k následníkovi - update odkazů X36DSV - Distribuované systémy a výpočty (2) - v.3 22
DHT Chord Replikace N20 N 32 N 32 N 32 K 5 N05 N 32 N32 K 5 N90 N 60 N72 N60 K 5 X36DSV - Distribuované systémy a výpočty (2) - v.3 23
DHT Pastry Id space N33 K 32 K 33 K 0 N0 circular 4-bit ID space K 23 K 03 N22 K 2 K 2 N0 X36DSV - Distribuované systémy a výpočty (2) - v.3 24
DHT Pastry Node state routing table n = 03220 2-bit ID space 0 2 3 4 5 0320 0 0022 0 0003 0203 032 0320 20303 2032 02303 2 2 0 3220 3202 3 03302 leaf set 0323 0320 03302 03330 neighborhood set 0320 3220 2032 0203 X36DSV - Distribuované systémy a výpočty (2) - v.3 25
DHT Pastry lookup insert - blízký uzel v leaf table (pokud je v rozsahu) - uzel s delší shodou prefixu v routing table - nejbližší z uzlů se shodným prefixem - vyhledání síťově (geograficky, topologicky) blízkého uzlu k - převzetí neighbourhood table - join zpráva směrem k vybrané ID pozici - převzetí leaf table od uzlu c nejbližšího k ID pozici - převzetí prvního řádku routing table od uzlu k - převzetí dalších rádků routing table od uzlů cesty k c - odeslání stavové informace směrem k c - optimistické řešení kolize časovými známkami X36DSV - Distribuované systémy a výpočty (2) - v.3 26
DHT Pastry výpadky - periodické testování platnosti tabulek - udržování i ne nejvýhodnějších sousedů jako zálohu - při opravě routing table pomohou sousedi ze stejného řádku - při opravě leaf set pomohou sousedi z leaf set - při opravě neghborhood set pomohou sousedi z neiborhood set opuštění Pastry X36DSV - Distribuované systémy a výpočty (2) - v.3 27
DHT CAN Id space routing d-dimensional Id space (x,y,...) y x X36DSV - Distribuované systémy a výpočty (2) - v.3 28
DHT CAN insert y x X36DSV - Distribuované systémy a výpočty (2) - v.3 29
DHT CAN insert y x X36DSV - Distribuované systémy a výpočty (2) - v.3 30
DHT Kademlia Id space - circular n-bit space - XOR metric 0 0 0 0 0 0 0 X36DSV - Distribuované systémy a výpočty (2) - v.3 3