Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεXylina Makos Τροποποιήθηκε πριν 10 χρόνια
1
A Balanced Tree Structure for Peer-to-Peer Networks
BATON A Balanced Tree Structure for Peer-to-Peer Networks Ευφροσύνη Κουρή Παναγιώτης Κατσίκος Γιώργος Μαργαρίτης Θεόδωρος Αθανασιάδης Γιάννης Ζιαγκλιαβός Μαρία Κρομμύδα Ελευθέριος Κοσμάς Σάκης Αγγελίδης
2
Δομή του BATON Το overlay δίκτυο του ΒATON βασίζεται σε ένα δυαδικό ισορροπημένο δέντρο Ένα δέντρο είναι ισορροπημένο ανν για κάθε κόμβο του, το ύψος των δύο υποδέντρων του κόμβου διαφέρει κατά ένα το πολύ Κάθε κόμβος ανήκει σε ένα επίπεδο L και έχει έναν αριθμό (από 1 έως 2L) Στους κόμβους κάθε επιπέδου δίνονται αριθμοί σαν να υπήρχαν όλοι οι κόμβοι (τέλειο δέντρο) Κάθε κόμβος αντιστοιχεί σε ένα peer του συστήματος
3
Δομή του BATON (2) Κάθε peer αποθηκεύει δείκτες στο πατέρα, στα παιδιά, στους γείτονες (in-order διάσχιση) και σε ένα σύνολο από κόμβους ίδιου επιπέδου στα δεξιά και στα αριστερά του Oι τελευταίοι αποθηκεύονται στους κατάλληλους πίνακες (left – right routing tables) Στους πίνακες αποθηκεύονται σύνδεσμοι προς κόμβους που απέχουν αποστάσεις ίσες με δυνάμεις του 2 από τον κόμβο Αν δεν υπάρχουν κάποιοι κόμβοι, εισάγονται null εγγραφές για αυτούς στους πίνακες Ένα αριστερό (ή δεξί) routing table είναι γεμάτο αν δεν υπάρχουν έγκυρες null εγγραφές σε αυτό
4
Παράδειγμα Links to parent, children Links to adjacent nodes 1 2
Links to parent, children Links to adjacent nodes 1 2 Links to neighbor nodes 4 3 5 6 7 8 9 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
5
Θεωρήματα Θεώρημα 1: Ένα δέντρο είναι ισορροπημένο αν το αριστερό και το δεξί routing table κάθε κόμβου που έχει παιδί είναι γεμάτα Θεώρημα 2: Αν ένας κόμβος, έστω ο x, περιέχει ένα σύνδεσμο προς ένα άλλο κόμβο, έστω y, στο αριστερό ή δεξί routing table, τότε ο γονέας του x θα συνδέεται με τον γονέα του y (εκτός αν έχουν ίδιο γονέα)
6
Node Join Για να εισαχθεί ένας κόμβος αρκεί να γνωρίζει έναν ήδη υπάρχοντα κόμβο, στον οποίο στέλνει Join Request. Κάθε κόμβος που λαμβάνει Join Request κάνει τα εξής: Αν τα Routing Tables του είναι full και έχει λιγότερα από 2 παιδιά, τον δέχεται ως παιδί του (Θεώρημα 1) Διαφορετικά: Αν κάποιο από τα Routing Tables του δεν είναι full, προωθεί την αίτηση στον πατέρα. Αλλιώς αν υπάρχει κόμβος στο Routing Table του που έχει λιγότερα από 2 παιδιά, προωθεί την αίτηση σε αυτόν. Αλλιώς προωθεί την αίτηση σε κάποιον γείτονά του (in-order neighbor)
7
Node Join – Παράδειγμα 1 1 2 4 3 5 6 7 8 9 10 11 12 13 14 ? x 15 16 17
At (8): are (8)’s Rtables full? Y has (8) less than 2 children? N has (8) a neighbor with less than 2 children? Y forward REQ to him = (7) At (7): are (7)’s Rtables full? Y has (7) less than 2 children? Y (x) becomes a child of (7) (x) knows node (16) (x) sends JOIN REQ to (16) At (16): are (16)’s Rtables full? N forward REQ to parent = (8) 1 2 4 3 5 6 7 8 9 10 11 12 13 14 ? x 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Join REQ x
8
Node Join – Παράδειγμα 2 x 1 2 4 3 5 6 7 8 9 10 11 12 13 14 15 16 17
At (4): are (4)’s Rtables full? Y has (4) less than 2 children? N has (4) a neighbor with less than 2 children? Ν forward REQ to one adjacent At (19): are (19)’s Rtables full? Y has (19) less than 2 children? Y (x) becomes a child of (19) (x) knows node (4) (x) sends JOIN REQ to (4) x 1 2 Join REQ 4 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 x
9
Node Join Η αίτηση για εισαγωγή μπορεί να προωθηθεί O(logN) φορές, αφού εξαρτάται από το ύψος του δένδρου. Όταν ένας κόμβος x δέχεται έναν κόμβο y ως παιδί του, το εύρος τιμών που εξυπηρετεί, μοιράζεται στους δύο κόμβους Επίσης, ενημερώνονται κατάλληλα οι adjacent του x και του y, ανάλογα με το αν το y εισήχθει σαν αριστερό η δεξί παιδί του x. Τέλος, ο x ενημερώνει όλους τους κόμβους στο αριστερό και στο δεξί routing table του για την ύπαρξη του y a a x x y
10
Node Departure Για να αποχωρήσει ένας κόμβος φύλλο:
Αν δεν υπάρχει κόμβος στα Routing Table του που έχει παιδιά μπορεί να αποχωρήσει Διαφορετικά, πρέπει να βρει κάποιον κόμβο να τον αντικαταστήσει (FINDREPLACEMENT) Για να αποχωρήσει ένας εσωτερικός κόμβος μια αίτηση FINDREPLACEMENT σε έναν γειτονικό του κόμβο (in-order) Αλγόριθμος FINDREPLACEMENT για τον κόμβο n: Αν ο n έχει αριστερό παιδί προωθεί την αίτηση σε αυτό Αλλιώς αν έχει δεξί παιδί προωθεί την αίτηση σε αυτό Αλλιώς αν υπάρχει κόμβος m στα Routing Table του που έχει κάποιο παιδί, προωθεί την αίτηση σε κάποιο παιδί του m Αλλιώς αντικαθιστά τον κόμβο που θέλει να αποχωρήσει
11
Παράδειγμα Node Departure
1 18 2 4 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
12
Node Departure Η αίτηση FINDREPLACEMENT μπορεί να προωθηθεί O(logN) φορές, αφού εξαρτάται από το ύψος του δένδρου. Πριν ένας κόμβος y αντικαταστήσει ένα κόμβο x, ο οποίος αποχωρεί από το δίκτυο, πρέπει να ενημερώσει τους γειτονικούς του κόμβους και τον γονέα του ότι θα αποχωρήσει και μοιράζει το εύρος τιμών που εξυπηρετεί σε αυτούς Όλοι οι κόμβοι με συνδέσμους στον x πρέπει να ενημερωθούν ώστε να δείχνουν στον y (γονέας, παιδιά, γειτονικοί κόμβοι, κόμβοι που είχαν συνδέσμους στον x στα routing tables)
13
Match Query Αναθέτουμε σε κάθε κόμβο ένα εύρος τιμών
Για κάθε κόμβο του Routing Table αποθηκεύουμε το εύρος τιμών που εξυπηρετεί Το εύρος τιμών που εξυπηρετείται από έναν κόμβο πρέπει να είναι μεγαλύτερο από το εύρος που εξυπηρετείται από το αριστερό υποδένδρο και μικρότερο αυτού του δεξιού υποδένδρου Όταν ένας κόμβος x δέχεται ένα exact match query ελέγχει πρώτα αν ανήκει στο δικό του εύρος Διαφορετικά δρομολογεί την αναζήτηση στον κόμβο προορισμού σύμφωνα με τον ακόλουθο αλγόριθμο
14
Exact Match Query Algorithm
Algorithm: search exact(node n, query q, value v) If ((LowerBound(n)<=v) and (v<=UpperBound(n))) q is executed at x 1 Else If (UpperBound(n)<v) m=TheFarthestNodeSatisfyingCondition (lowerBound(m)<=v) If (there exists such an m) Forward q to m If (RightChild(n)!=null) Forward q to RightChild(n) Forward q to RightAdjacentNode(n) End If //A similar process is followed towards the left
15
Παράδειγμα exact query
(45-51) 1 2 (72-75) (12-17) 4 3 (23-29) (5-8) 5 6 (54-61) (81-85) 7 8 9 10 (34-39) 11 12 13 14 (89-93) (0-5) (8-12) (17-23) (61-68) (75-81) (51-54) 15 16 17 18 19 (29-34) (39-45) (68-72) (85-89) (93-100)
16
Range Query Ένα range query λειτουργεί με τον ίδιο ακριβώς τρόπο όπως και ένα exact query, με την διαφορά ότι ψάχνουμε για μια τομή του αναζητούμενου εύρους με το εύρος κάποιου κόμβου Όταν βρεθεί η τομή έχουμε ένα τμήμα του εύρους τιμών που αναζητούμε Ελέγχουμε δεξιά και αριστερά του κόμβου για να καλύψουμε το ζητούμενο εύρος
17
Data Insertion - Deletion
Χρησιμοποιούμε την διαδικασία αναζήτησης για exact match query για να βρούμε τον κόμβο στον οποίο θα γίνει η εισαγωγή Εκτελούμε την εισαγωγή Στους κόμβους στο αριστερό (δεξί) άκρο του δέντρου ρυθμίζουμε το εύρος τους αν η τιμή που εισάγεται δεν καλύπτεται από το υπάρχον εύρος Για την διαγραφή δεδομένων βρίσκουμε με την μέθοδο που χρησιμοποιείται για exact query τον κόμβο που χειρίζεται τα δεδομένα και τα διαγράφουμε
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.