Δομημένα Δίκτυα Ομοτίμων -- Κατανεμημένοι Πίνακες Κερματισμού (Distributed Hash Tables) Το Δίκτυο CHORD
Περιεχόμενα Ορισμός του προβλήματος Chord OP-Chord Αναφορές Ομότιμα συστήματα (P2P) Κατηγορίες ομότιμων συστημάτων Chord Στόχος του Chord - Τι είναι το Chord Αναγνωριστικά του Chord - Consistent hashing - Πίνακας δεικτών Εντόπιση δεδομένων Εισαγωγή/διαγραφή κόμβου - Αποτυχία κόμβου Αξιολόγηση OP-Chord Κίνητρο – προσέγγιση – επεμβάσεις στο βασικό Chord Τοποθέτηση δεδομένων – Εντόπιση Παράδειγμα αναζήτησης με διάστημα Συμπεράσματα Αναφορές
Ορισμός του προβλήματος Ομότιμα συστήματα (P2P) : αποτελούνται από ένα σύνολο ετερογενών κόμβων που αποφασίζουν να συνεργαστούν μεταξύ τους συγκεντρώνοντας όλους τους διαθέσιμους πόρους τους για το κοινό καλό, διατηρώντας την αυτονομία τους. Βασικό ερώτημα: Πώς μπορούμε να εντοπίσουμε δεδομένα σε ένα P2P σύστημα; (Lookup) Έχει την απάντηση P2P N1 N2 N3 N5 N4 (κλειδί, τιμή) Θέτει το ερώτημα Lookup(κλειδί) Lookup(“Fire Arcade:No cars go”)
Συγκεντρωτικά P2P συστήματα Χρήση κεντρικών εξυπηρετητών (πχ Napster) Έχει την απάντηση N2 N3 N1 (κλειδί, τιμή) P2P ΚΕ N5 Θέτει το ερώτημα N4 Lookup(κλειδί) Ένα σημείο αποτυχίας και σημείο συμφόρησης
Πλήρες κατανεμημένα P2P Αποστολή ερωτήματος σε όλους τους γείτονες (πχ Gnutella) Έχει την απάντηση N2 N3 N1 (κλειδί, τιμή) P2P N5 N4 Θέτει το ερώτημα Lookup(κλειδί) Χειρότερη περίπτωση O(N) μηνύματα για κάθε lookup
Δομημένα P2P Χρήση πινάκων δρομολόγησης (πχ Tapestry, Pastry, CAN, Chord, κλπ) Έχει την απάντηση N2 N3 N1 (κλειδί, τιμή) P2P N5 Θέτει το ερώτημα N4 Lookup(κλειδί)
Δομημένα P2P - DHTs DHTs – Distributed Hash Tables Χρησιμοποιούν μια hash συνάρτηση, hash() που αντιστοιχεί σε κάθε κλειδί (μονάδα δεδομένων) έναν κόμβο (το ID του). P2P N1 N2 N3 N5 N4 Key node “All good things come to an end; Nelly Furtado” N1 “The hardest part; Coldplay” N2 …
Στόχος του Chord Μικρός αριθμός μηνυμάτων/βημάτων (hops) Η σχεδίαση ενός κατανεμημένου συστήματος για το διαμοιρασμό πληροφοριών, και Η εύρεση ενός πρωτοκόλλου που θα λύνει το πρόβλημα του εντοπισμού αποδοτικά: Μικρός αριθμός μηνυμάτων/βημάτων (hops) Μικρό μέγεθος για τον πίνακα δρομολόγησης Εύρωστος (robust) σε όλες τις δυναμικές αλλαγές (πχ εισαγωγή / διαγραφή κόμβου κλπ) Τί σημαίνει «μικρός»; Οδηγεί στην κλιμακωσιμότητα
Τι είναι το Chord To Chord σύστημα ενπεριέχει μια κατανεμημένη υπηρεσία εντοπισμού δεδομένων που επιτρέπει την εισαγωγή, τον εντοπισμό και τη διαγραφή τιμών χρησιμοποιώντας ως χειριστές κλειδιά. Το Chord πρωτόκολλο υποστηρίζει μία βασική πράξη : δοθέντος ενός κλειδιού, εντοπίζει την ταυτότητα του κόμβου που το περιέχει (αν το κλειδί υπάρχει στο δίκτυο). Το Chord σύστημα επίσης υποστηρίζει τη δημιουργία και (αυτο)συντήρηση ενός δικτύου. Παρέχει τις εξής κύριες λειτουργίες : 1. insert(key, value) 2. lookup(key) 3. update(key, value) 4. join(n) 5. leave()
Consistent Hashing και Chord (IDs) m-bit αναγνωριστικό και για τα κλειδιά και για τους κόμβους Το m πρέπει να είναι αρκετά μεγάλο έτσι ώστε να αποφεύγονται «συγκρούσεις». Αναγνωριστικό κλειδιού (key): keyID = SHA-1(key) Αναγνωριστικό κόμβου: nodeID = SHA-1(IP address) Key = “DepecheMode:Precious” keyID=20 , πχ (m=6) SHA-1 IP = 150.140.143.1 nodeID=62 SHA-1
Consistent Hashing και Chord (IDs) Τα αναγνωριστικά των κλειδιών και των κόμβων είναι οργανωμένα σε ένα κύκλο, από 0 μέχρι 2m-1. Αυτό ορίζει τον αναγνωριστικό κύκλο (ID-circle, ή ID-space ή namespace). Τα αναγνωριστικά των κλειδιών και των κόμβων είναι ομοιόμορφα κατανεμημένα – (βλέπε hash()). Πώς γίνεται η αντιστοίχιση των keyIDs στα nodeIDs;
Consistent Hashing Τρόπος αποθήκευσης: κάθε κλειδί αποθηκεύεται στον πρώτο κόμβο που το αναγνωριστικό του είναι ίσο ή αμέσως μεγαλύτερο από το αναγνωριστικό του κλειδιού. succ(): {0, 1, .. 2m-1} {0, 1, .. 2m-1}. Εισαγωγή του κόμβου n στο δίκτυο ότι τα κατάλληλα κλειδιά μεταφέρονται από τον κόμβο succ(n) στον κόμβο n. Διαγραφή του κόμβου n στο δίκτυο ότι τα κατάλληλα κλειδιά μεταφέρονται από τον κόμβο n στον κόμβο succ(n).
Παράδειγμα αποθήκευσης ΚΛΕΙΔΙΑ ΚΟΜΒΟΙ κλειδιά keyIDs IP διευθύνσεις nodeIDs 8 “ShakeIt” 20 150.148.140.23 1 1 3 “Memories” 50 198.132.112.1 9 “Eden” 16 150.148.140.2 28 “Monkey” 8 50 150.148.140.33 40 “Money” 3 198.132.112.22 54 “Yesterday” 30 142.112.140.12 60 succ(20) = N28 SHA-1(“ShakeIt”) = 20 SHA-1(150.148.140.23) = 0 30 20 m=6 ID space 2m=64 16
Πίνακας δεικτών Κάθε κόμβος n ξέρει τον διάδοχό του, succ(n) Lookup(): …Απαιτεί Ο(Ν) χρόνο Κάθε κόμβος διατηρεί πληροφορίες δρομολόγησης για m κόμβους σε ένα πίνακα δεικτών (finger table): Κάθε καταχώρηση i περιέχει το αναγνωριστικό του πρώτου κόμβου s που διαδέχεται τον n σε απόσταση τουλάχιστον 2i-1 πάνω στον αναγνωριστικό κύκλο (mod 2m), για 1 i m, Ένα δείκτη στον προηγούμενο κόμβο
Παράδειγμα Πίνακα δεικτών N36 δείκτ διάστημα 1 40 [37,38) 2 [38,40) 3 [40,44) 4 44 [44,52) 5 54 [52,4) 6 [4,36) finger(5) N=16 #Data tuples= 32 Like Chord’s find_successor(): if key fall between n and succ(n), n returns its succ() Otherwise, n searches in its finger table for node n’ whose ID most immediately precedes key, and invokes find_successor at n’ finger(4) Ο δείκτης i δείχνει στον διάδοχο (succ) του n + 2i-1 finger(3)
Παράδειγμα Lookup look for key keyID=hash(“thisisthelife”) = 20 N4 δ 1 6 2 3 9 4 14 5 22 36 Παράδειγμα Lookup N14 δ 1 16 2 3 22 4 5 33 6 51 look for key keyID=hash(“thisisthelife”) = 20 N=16 #Data tuples= 32 Like Chord’s find_successor(): if key fall between n and succ(n), n returns its succ() Otherwise, n searches in its finger table for node n’ whose ID most immediately precedes key, and invokes find_successor at n’ N16 δ 1 22 2 3 4 28 5 33 6 51 N36 δεικ διαστ 1 40 [37,38) 2 [38,40) 3 [40,44) 4 44 [44,52) 5 54 [52,4) 6 [4,36) find node with key =“This Is the life”
Απόδοση lookup() Θεώρημα: Με μεγάλη πιθανότητα, ο αριθμός των κόμβων που πρέπει να προσπελαστούν -- κατά τη διάρκεια ενός lookup() -- είναι O(log2 N) σε ένα δίκτυο Ν κόμβων. Διαίσθηση: Η μεγαλύτερη απόσταση μεταξύ 2 κόμβων είναι 2m ( όπου m ο αριθμός των bits στα αναγνωρίσματα ). Σε κάθε βήμα ο αλγόριθμος χρησιμοποιεί τους πίνακες δρομολόγησης έτσι ώστε η απόσταση που πρέπει να διανυθεί να υπο-διπλασιάζεται ... m = O(log N) βήματα/hops.
Εισαγωγή/Διαγραφή νέου κόμβου (περίληψη) Προϋποθέσεις: Ο διάδοχος κάθε κόμβου να διατηρείται σωστά Κάθε κλειδί να είναι αποθηκευμένο στον κόμβο-διάδοχό του (επιθυμητό) ο πίνακας δεικτών να είναι σωστός Λειτουργίες εισαγωγής κόμβου n: Στον νέο κόμβο γίνεται αρχικοποίηση του δείκτη στον κόμβο που προηγείται του n και αρχ/ση του πίνακα δεικτών του n (με ερώτημα στον κόμβο που τυχαία συνδέθηκε) Ενημέρωση των δεικτών και των κόμβων που προηγούνται όλων των ενεργών κόμβων για να απεικονιστεί η αλλαγή Ο κόμβος n θα γίνει ο ith δείκτης ενός κόμβου p αν ο p προηγείται του n κατά τουλάχιστον 2i-1 και ο ith δείκτης του κόμβου p διαδέχεται τον n Αντιγραφή όλων των κλειδιών των οποίων ο νέος κόμβος είναι ο διάδοχός τους.
Αποτυχία κόμβου Μπορεί να προκαλέσει λανθασμένη εντόπιση δεδομένων Λίστα διαδόχων Κάθε κόμβος γνωρίζει r άμεσους διαδόχους Μετά από μια αποτυχία, θα ξέρει τον πρώτο ζωντανό διάδοχο με μεγάλη πιθανότητα...
Αξιολόγηση Κόστος εντόπισης (lookup): Μέσο όρο: O(logN) μηνύματα Χειρότερη περίπτωση: O(N) μηνύματα. Πότε συμβαίνει η χειρότερη περίπτωσή; Κόστος εισαγωγής/ διαγραφής κόμβου: O(log2N) μηνύματα
OP-Chord (Order-Preserving Chord) Το κίνητρο Υποστήριξη μιας ολοκληρωμένης λύσης για την επεξεργασία πολύπλοκων ερωτημάτων Η προσέγγιση Τα δεδομένα είναι οργανωμένα σε σχέσεις (relations): κάθε μονάδα πληροφορίας είναι μια εγγραφή/πλειάδα (tuple) με έναν αριθμό από γνωρίσματα (attributes) Το Chord είναι η βασική αρχιτεκτονική Χρησιμοποιείται Order-Preserving Hashing για τα δεδομένα (αντί για SHA-1)
Επεμβάσεις στο Chord Αντί για SHA-1 για αντιστοίχιση εγγραφών στον αναγνωριστικό χώρο, χρησιμοποιούμε μια συνάρτηση διατήρησης διάταξης (order-preserving hash function / OPH) Υπόθεση: DAi = <lowi, highi> για ένα γνώρισμα Ai και 2m > |DAi|. Χωρίζουμε τον αναγνωριστικό χώρο σε 2m / si διαστήματα, ίσου μεγέθους si, έτσι ώστε: Ορισμός: για κάθε τιμή ai DAi, ορίζουμε, Αλγόριθμοι Εισαγωγή/Διαγραφή κόμβου (όπως Chord), Εισαγωγή/Διαγραφή δεδομένων
Παράδειγμα attribute value is 10 h(10) = 10 * 2 = 20 succ(20) = N28 INPUT Παράδειγμα 1 10 1 10 3 29 2 25 2 25 6 30 3 29 3 29 4 8 4 8 5 3 2 25 5 3 5 3 6 30 6 30 attribute value is 10 h(10) = 10 * 2 = 20 succ(20) = N28 1 10 ID space 2m=64; DA= {1,2, ..,31} size s=2m/|DA|=2 h(a) = a * 2 DA= {0,2, ..,31} 1 10 4 8
Range example h(10) = 10 * 2 = 20 lookup(20) 31 Range example 1 1 2 1 30 29 3 4 4 23 23 25 5 6 6 h(10) = 10 * 2 = 20 lookup(20) h(20) = 20 * 2 = 40 lookup(40) N=16 #Data tuples= 32 Like Chord’s find_successor(): if key fall between n and succ(n), n returns its succ() Otherwise, n searches in its finger table for node n’ whose ID most immediately precedes key, and invokes find_successor at n’ 8 8 22 21 10 10 11 11 10 10 10 10 20 20 βρες εγγραφές με τιμές [10, 20] 13 13 14 14 13 13 18 18 16 16
Συμπεράσματα Προσφορά του OP-CHORD Θέματα: Προσφέρει πολύ καλύτερη λύση από το Chord στην επεξεργασία των ερωτημάτων –διαστημάτων (range queries) Θέματα: Αποφυγή σημείων «υπερθέρμανσης» hotspots τόσο από πλευράς δεδομένων όσο και από πλευράς προσπέλασης Εξισορρόπηση του φόρτου εργασίας των κόμβων (load balancing) Τεχνικές βελτιστοποίησης επεξεργασίας ερωτημάτων Τεχνικές επεξεργασίας πολύπλοκων ερωτημάτων (join, aggregation, κλπ)
Αναφορές Stoica, I., Morris, R., Karger, D., Kaashoek, and K. F., Balakrishnan, H. Chord: A scalable peer-to-peer lookup service for internet applications. In Proceedings of the 2001 SIGCOMM (2001), ACM Press, 149-160. Chord prototype, http://www.pdocs.lcs.mit.edu/chord/ FIPS180-1. Secure hash Standard. U.S. Department of Commerce/NIST, National Technical Information Service, Springield, VA (1995) Karger D, Lehman E, Leighton F, Levine M, Lewin D, and Panigrahy R. Consistent hashing and random trees: Distributed caching protocols for relieving hot spots on the World Wide Web. In Proc of the 29th Annual ACM Symposium on Theory of Computing (El Paso, TX, May 1997), pp654-663. Triantafillou, P., and Pitoura, T., “Towards a unifying framework for complex query processing over structured peer-to-peer data networks”, In Proceedings of the 2003 DBISP2P workshop. http://netcins.ceid.upatras.gr/
Additional Slides
Example