3/9/ Content-based Publish Subscribe Πάνω από Structured P2P Networks Peter Triantafillou and Ioannis Aekaterinidis University of Patras Greece
3/9/ Εισαγωγή Τα Content-based pub/sub συστήματα κερδίζουν αυξανόμενη προσοχή Τα Content-based pub/sub συστήματα κερδίζουν αυξανόμενη προσοχή Χρειάζεται κλιμάκωση για: Χρειάζεται κλιμάκωση για: Δημοσιεύσεις, Δημοσιεύσεις, Εγγραφές, Εγγραφές, Πελάτες, … Πελάτες, … Τα P2P δομημένα δίκτυα (π.χ., DHTs) παρέχουν μια υποδομή που μπορεί να λύσει πολλά από τα προβλήματα κλιμακωσιμότητας Τα P2P δομημένα δίκτυα (π.χ., DHTs) παρέχουν μια υποδομή που μπορεί να λύσει πολλά από τα προβλήματα κλιμακωσιμότητας
3/9/ Στόχοι και Προσέγγιση: Μια οπτική υψηλού επιπέδου Αξιοποίηση της υποδομής δημοφιλών DHT για το χτίσιμο μεγάλης κλίμακας content-based pub/sub systems – Αξιοποίηση της υποδομής δημοφιλών DHT για το χτίσιμο μεγάλης κλίμακας content-based pub/sub systems – “μην ανακαλύπτετε ξανά τον τροχό” Τα DHTs ύποστηρίζουν απλά lookups – Τα DHTs ύποστηρίζουν απλά lookups – χρειάζονται επέκταση. ΑΛΛΆ: Κάνε παρέμβαση στο στρώμα πάνω από το DHT και κάνε όσο το δυνατόν λιγότερα – Κάνε παρέμβαση στο στρώμα πάνω από το DHT και κάνε όσο το δυνατόν λιγότερα – “μην δημιουργείς ένα παχύ σωρό από στρώματα υπηρεσιών/συστημάτων” … για λόγους απόδοσης, πολυπλοκότητας,κλπ.
3/9/ Στόχοι και Προσέγγιση : Ειδικά (1/2) Θα χρησιμοποιήσουμε το Chord – σαν παράδειγμα υποδομής Θα χρησιμοποιήσουμε το Chord – σαν παράδειγμα υποδομής Υπάρχουν δύο θέματα εδώ: Υπάρχουν δύο θέματα εδώ: Μπορεί να γίνει? Πως? Πόσο δύσκολο είναι? Μπορεί να γίνει? Πως? Πόσο δύσκολο είναι? Πόσο αποτελεσματικό είναι? Πόσο αποτελεσματικό είναι? Επεκτείνουμε το Chord, γενικά, για να του επιτρέψουμε να υποστηρίζει αποτελεσματικά σύνθετα ερωτήματα… Επεκτείνουμε το Chord, γενικά, για να του επιτρέψουμε να υποστηρίζει αποτελεσματικά σύνθετα ερωτήματα…
3/9/ Στόχοι και Προσέγγιση : Ειδικά (2/2) Εδώ θα δείξουμε: Εδώ θα δείξουμε: Πως μπορεί το Chord να γίνει μια υποδομή για pub/sub : i.e. Επεξεργασία εγγραφών και δημοσιεύσεων Πως μπορεί το Chord να γίνει μια υποδομή για pub/sub : i.e. Επεξεργασία εγγραφών και δημοσιεύσεων Οι εγγραφές θα περιλαμβάνουν ισότητα και περιορισμούς εύρους (range queries) Οι εγγραφές θα περιλαμβάνουν ισότητα και περιορισμούς εύρους (range queries) Θα εξετάσουμε το ‘κόστος’ αυτού, και Θα εξετάσουμε το ‘κόστος’ αυτού, και Προτείνουμε ελαφριές προσθήκες για να βελτιώσουμε την απόδοση του pub/sub συστήματος που προκύπτει. Προτείνουμε ελαφριές προσθήκες για να βελτιώσουμε την απόδοση του pub/sub συστήματος που προκύπτει.
3/9/ Εποπτεία του Μοντέλου και των Ισχυρισμών Σχήμα δημοσιεύσεων: Σχήμα δημοσιεύσεων: Ένα γνωστό σετ από δηλωμένα χαρακτηριστικά Ένα γνωστό σετ από δηλωμένα χαρακτηριστικά Τα χαρακτηριστικά είναι ζεύγη Τα χαρακτηριστικά είναι ζεύγη Εγγραφές: Εγγραφές: Συνένωση των περιορισμών περιέχοντας χαρακτηριστικά του σχήματος εγγραφών Συνένωση των περιορισμών περιέχοντας χαρακτηριστικά του σχήματος εγγραφών Ταίριασμα της δημοσίευσης e στην εγγραφή s: Ταίριασμα της δημοσίευσης e στην εγγραφή s: iff όλοι οι περιορισμοί του s ικανοποιούνται από το e. iff όλοι οι περιορισμοί του s ικανοποιούνται από το e.
3/9/ Το Chord σαν υποδομή για Pub/Sub Αναπαράσταση Δεδομένων Αναπαράσταση Δεδομένων Εγγραφές : Περιορισμοί στις τιμές ενός υποσυνόλου των χαρακτηριστικών Εγγραφές : Περιορισμοί στις τιμές ενός υποσυνόλου των χαρακτηριστικών Δημοσιεύσεις : δώσε τιμές σε ένα υποσύνολο των χαρακτηριστικών Δημοσιεύσεις : δώσε τιμές σε ένα υποσύνολο των χαρακτηριστικών Αρχιτεκτονική (Chord) κλιμακώσιμη κατανεμημένη υπηρεσία αναζήτησης Consistent Hashing m-bit ids (nodes & objects) Κάθε id αντικειμένου τοποθετείται στον κόμβο succ(id) Οι κόμβοι έχουν δείκτες προς τα succ, pred, και ειδικά ‘fingers’ Look-up σε O(logN) hops
3/9/ Storing && LookingUp Attribute Values ID space 2 m =64 Παράδειγμα Chord για Pub/Sub sID:1; attribute:a; value:10 h(10) = 18 succ(18) = N
3/9/ Εποπτεία Αλγορίθμου Επεξεργασία Συνδρομής : Επεξεργασία Συνδρομής : Πρόσθεσε την sID της συνδρομής και την τιμή του χαρακτηριστικού στον κόμβο που δίνεται από το hash(a-value), για κάθε χαρακτηριστικό a της sID Πρόσθεσε την sID της συνδρομής και την τιμή του χαρακτηριστικού στον κόμβο που δίνεται από το hash(a-value), για κάθε χαρακτηριστικό a της sID Επανέλαβε για την επόμενη a-value του χαρακτηριστικού στο εύρος (αν υπάρχει) Επανέλαβε για την επόμενη a-value του χαρακτηριστικού στο εύρος (αν υπάρχει) Επεξεργασία Δημοσίευσης : Επεξεργασία Δημοσίευσης : Hash(a-value) για κάθε χαρακτηριστικό a της δημοσίευσης Hash(a-value) για κάθε χαρακτηριστικό a της δημοσίευσης Μετατροπή της επεξεργασίας εγγραφών και δημοσιεύσεων σε απλά DHT lookups!
3/9/ Αποτελεσματικότητα με το Chord? Επεξεργασία συνδρομής: για κάθε χαρακτηριστικό Επεξεργασία συνδρομής: για κάθε χαρακτηριστικό Χρειάζεται O(logN) hops για να βρεί τον κόμβο για κάθε τιμή στο εύρος Χρειάζεται O(logN) hops για να βρεί τον κόμβο για κάθε τιμή στο εύρος O(r logN), όπου r είναι το “εύρος διαστήματος” O(r logN), όπου r είναι το “εύρος διαστήματος” για μεγάλα r, αυτό μπορεί να είναι πρόβλημα ! για μεγάλα r, αυτό μπορεί να είναι πρόβλημα ! Επεξεργασία δημοσίευσης: για κάθε χαρακτηριστικό Επεξεργασία δημοσίευσης: για κάθε χαρακτηριστικό Όλες οι σχετικές συνδρομές βρίσκονται με ένα lookup Όλες οι σχετικές συνδρομές βρίσκονται με ένα lookup O(log N) O(log N) Trade-off αποτελεσματικότητα επεξεργασίας δημοσίευσης vs συνδρομής … Trade-off αποτελεσματικότητα επεξεργασίας δημοσίευσης vs συνδρομής …
3/9/ Αντί να χρησιμοποιούμε π.χ., SHA-1 για να χαρτογραφήσουμε τις τιμές στο χώρο διευθύνσεων, χρησιμοποιούμε μία order-preserving hash function (OPH) – δηλαδή OP-Chord Αντί να χρησιμοποιούμε π.χ., SHA-1 για να χαρτογραφήσουμε τις τιμές στο χώρο διευθύνσεων, χρησιμοποιούμε μία order-preserving hash function (OPH) – δηλαδή OP-Chord Ορισμός : για κάθε τιμή v j (a i ), του χαρακτηριστικού a i ορίζουμε : Ορισμός : για κάθε τιμή v j (a i ), του χαρακτηριστικού a i ορίζουμε : Το s 0 (a i ) χρησιμοποιείται για να δώσουμε τυχαία τιμή στον πρώτο κόμβο του εύρους,και ¨¨ Το OP-Chord σαν υποδομή για Pub/Sub
3/9/ Αλγόριθμος Επεξεργασίας Εγγραφών - ισότητα Εγγραφή subID j Εγγραφή subID j Είδος περιορισμού: ισότητα Είδος περιορισμού: ισότητα INPUT: attribute value v(a i ), subscription id subID j BEGIN calculate h i (v(a i )), using the OPH function h i ; n_target = Chord_lookup h i (v(a i )) on peer n; store the identifier subID j at node n_target; END n: the requestor node
3/9/ Παράδειγμα Ισότητας 10 Subscription subID 1 with attribute value v(a i )= 10 OPH: look for key h(10) = 2 * 10 = 20 subID 12 subID subID 7 9 subID 2 subID 8 22 subID 14 subID 11 subID 1 L ai
3/9/ Αλγόριθμος Επεξεργασίας Εγγραφής- εύρος Εγγραφή subID j Εγγραφή subID j Είδος περιορισμού: εύρος Είδος περιορισμού: εύρος INPUT: attribute range v low (a i ), v high (a i ), v pr (a i ) and subscription id subID j BEGIN calculate h i (v low (a i )) and h i (v high (a i )), using the OPH function h i ; n_start = Chord_lookup h i (v low (a i )) on peer n; n_end = Chord_lookup h i (v high (a i )) on peer n; forward (subID j, n, n_end) to n_start ; END forward (subID j, n, n_end) on n j BEGIN store subID j locally in the L ai list if n j != n_end forward (subID j, n, n_end) to its successor; END
3/9/ Subscription subID 1 with attribute value 10≤v(a i ) ≤ 20 h(10) = 20 lookup(20) h(20) = 40 lookup(40) 9 subID subID 7 8 subID 2 subID 8 25 subID 14 subID 11 subID 1 L ai subID 1 20 subID 1 subID 12 Παράδειγμα εύρους
3/9/ Αλγόριθμος Επεξεργασίας Δημοσίευσης INPUT: attribute value v(a i ) of an incoming event BEGIN calculate h i (v(a i )), using the OPH function h i ; n_target = Chord_lookup h i (v(a i )) on peer n; Retrieve the subIDs found at node n_target in the L ai list; END
3/9/ subID subID 7 8 subID 2 subID 8 25 subID 14 subID 11 subID 1 L ai subID 1 20 subID 1 subID 12 Παράδειγμα επεξεργασίας Event with attribute value v(a i ) = 15
3/9/ Ο Αλγόριθμος Ταιριάσματος INPUT: collected lists with subIDs (L ai ) for each attribute a i in the event BEGIN for every collected list L ai of subIDs for every subID k retrieve the number of attributes defined in the subscription: N a-sub-k count the number of collected lists that subID k appears: N list-sub-k if N a-sub-k equals N list-sub-k we have a match: deliver the incoming event to interested subscribers END
3/9/ Αποτελεσματικότητα με το OP-Chord ? Επεξεργασία συνδρομής: για κάθε χαρακτηριστικό Επεξεργασία συνδρομής: για κάθε χαρακτηριστικό Χρειάζεται O(logN) hops για να βρεί τον κόμβο για την πρώτη τιμή στο εύρος, συν ένα hop το περισσότερο για κάθε άλλη τιμή Χρειάζεται O(logN) hops για να βρεί τον κόμβο για την πρώτη τιμή στο εύρος, συν ένα hop το περισσότερο για κάθε άλλη τιμή O(r + logN), όπου r είναι το “εύρος διαστήματος” O(r + logN), όπου r είναι το “εύρος διαστήματος” μια σημαντική βελτίωση για μεγάλα r ! μια σημαντική βελτίωση για μεγάλα r ! Επεξεργασία δημοσίευσης: για κάθε χαρακτηριστικό Επεξεργασία δημοσίευσης: για κάθε χαρακτηριστικό Όλες οι σχετικές εγγραφές βρίσκονται με ένα lookup Όλες οι σχετικές εγγραφές βρίσκονται με ένα lookup O(log N) O(log N)
3/9/ Συμπεράσματα Δείξαμε πως να αξιοποιείται το Chord για να χτιστεί ένα content-based pub/sub σύστημα Δείξαμε πως να αξιοποιείται το Chord για να χτιστεί ένα content-based pub/sub σύστημα Επεκτείναμε στο OP-Chord για την βελτίωση της απόδοσης Επεκτείναμε στο OP-Chord για την βελτίωση της απόδοσης Η επεξεργασία εγγραφών και δημοσιεύσεων μετατρέπονται σε απλές lookup operations: Τα DHTs τα καταφέρνουν καλά εδώ! Η επεξεργασία εγγραφών και δημοσιεύσεων μετατρέπονται σε απλές lookup operations: Τα DHTs τα καταφέρνουν καλά εδώ! Αποτελεσματικότητα! Αποτελεσματικότητα! Εγγραφές: O(r + logN), r είναι το εύρος διαστήματος, r >=1 Εγγραφές: O(r + logN), r είναι το εύρος διαστήματος, r >=1 Δημοσιεύσεις: O(log N) Δημοσιεύσεις: O(log N)
3/9/ Συζήτηση Κέρδος, Κέρδος, Κέρδος,… Κέρδος, Κέρδος, Κέρδος,… Δρομολόγηση, τοπολογία χτίσιμο/διατήρηση, ανοχή σφαλμάτων,… Δρομολόγηση, τοπολογία χτίσιμο/διατήρηση, ανοχή σφαλμάτων,… Κλιμακώσιμο? Απέδειξε το ! Κλιμακώσιμο? Απέδειξε το ! Απόδοση: πρέπει να έιναι προβλέψιμη ! Απόδοση: πρέπει να έιναι προβλέψιμη ! id “χαμένα κομμάτια” (eg “app semantics”..) id “χαμένα κομμάτια” (eg “app semantics”..) Τότε, αποφάσισε Τότε, αποφάσισε Πρέπει να επεκτείνουμε τις δημοφιλείς υποδομές ή Πρέπει να επεκτείνουμε τις δημοφιλείς υποδομές ή Να χτίσουμε από την αρχή? Να χτίσουμε από την αρχή? DEBS04 outing – beers, coffees, … DEBS04 outing – beers, coffees, …
3/9/ Format Eγγραφής c1: το m-bit (chord) id του κόμβου που λαμβάνει την εγγραφή(εκεί που ανήκει η εγγραφή). c 2 : το id της ίδιας της εγγραφής (running counter). c3: ο αριθμός των χαρακτηριστικών στα οποία δηλώνονται περιορισμοί c 1 =2 c 2 =2 c 3 =5