Επικοινωνία με μηνύματα Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr
Επικοινωνία με ανταλλαγή μηνυμάτων Η επικοινωνία με μηνύματα είναι ο πιο ευέλικτος τρόπος αλληλεπίδρασης σε κατανεμημένα συστήματα πιο κοντά στις τεχνολογίες δικτύων (μετάδοση πακέτων) Σχετικά «χαλαρή» διασύνδεση μεταξύ των διεργασιών που αλληλεπιδρούν μεταξύ τους δεν υφίσταται «αυστηρή» σχέση αίτησης-απάντησης υποστήριξη ασύγχρονης και έμμεσης επικοινωνίας Μεγάλο πεδίο εφαρμογών υπολογισμοί υψηλών επιδόσεων (MPI) εμπορικές εφαρμογές μεγάλης κλίμακας (IBM MQ) χαλαρές αλληλεπιδράσεις σε IoT (MQTT) Κατανεμημένα Συστήματα 2 lalis@inf.uth.gr
Ενδεικτικό API int send_msg(endpoint dst, char *msg, int mlen); int recv_msg(endpoint *src, char **msg, int *mlen); η έννοια του άκρου επικοινωνίας μπορεί να διαφέρει σημαντικά, ανά περίπτωση, π.χ., να αντιστοιχεί σε κάποια συγκεκριμένη διεύθυνση ή σε κάποιο πιο αφαιρετικό αναγνωριστικό επικοινωνίας Κατανεμημένα Συστήματα 3 lalis@inf.uth.gr
Παράδοση/διατήρηση μηνυμάτων Εγγυήσεις παράδοσης μηνυμάτων Best-effort: το σύστημα θα προσπαθήσει να επιδώσει το μήνυμα στον παραλήπτη, αλλά μπορεί να αποτύχει Guaranteed: το σύστημα εγγυάται πως το μήνυμα θα επιδοθεί στον παραλήπτη, αν αυτός υφίσταται Διατήρηση μηνυμάτων Παροδική επικοινωνία: ο παραλήπτης πρέπει να υφίσταται, διαφορετικά η επικοινωνία αποτυγχάνει Διατηρούμενη επικοινωνία: ο παραλήπτης ή το μονοπάτι επικοινωνίας προς αυτόν μπορεί να μην υφίσταται την στιγμή της αποστολής Κατανεμημένα Συστήματα 4 lalis@inf.uth.gr
Μπλοκάρισμα αποστολέα Ασύγχρονη αποστολή το μήνυμα αντιγράφεται σε αποθήκη και η εφαρμογή συνεχίζει την εκτέλεση της Ημι-ασύγχρονη αποστολή μπλοκάρισμα εφαρμογής μέχρι το μήνυμα να σταλεί πάνω από το δίκτυο (να παραδοθεί στην υπηρεσία δικτύου) Ημι-σύγχρονη αποστολή η εφαρμογή μπλοκάρεται μέχρι το μήνυμα να αποθηκευτεί στην πλευρά του παραλήπτη χωρίς αυτό να επιδοθεί στον παραλήπτη Σύγχρονη αποστολή η εφαρμογή μπλοκάρεται μέχρι το μήνυμα να επιδοθεί στον παραλήπτη Κατανεμημένα Συστήματα 5 lalis@inf.uth.gr
σημεία συγχρονισμού ασύγχρονη A applications B σύγχρονη υπηρεσία επικοινωνίας MP service ημι-ασύγχρονη ημι-σύγχρονη Κατανεμημένα Συστήματα 6 lalis@inf.uth.gr
Ενδιάμεση αποθήκευση μηνυμάτων Πλευρά αποστολέα αποφυγή μπλοκαρίσματος εφαρμογής μαζική αποστολή/μετάδοση μηνυμάτων Πλευρά παραλήπτη απεμπλοκή αποστολής/παραλαβής Ενδιάμεσοι αναμεταδότες/διακομιστές ένα «υπερ-δίκτυο» πάνω από το διαδίκτυο (overlay network) πότε έχει νόημα κάτι τέτοιο; Οι αποθήκες είναι πεπερασμένες: συνήθως γίνεται η υπόθεση ότι οι διεργασίες που επικοινωνούν μεταξύ τους υλοποιούν δικό τους μηχανισμό ελέγχου ροής Κατανεμημένα Συστήματα 7 lalis@inf.uth.gr
Δίκτυο διακομιστών/αναμεταδοτών Η μετάδοση των μηνυμάτων από τον αποστολέα προς τον παραλήπτη μπορεί να γίνει μέσω ενός δικτύου ενδιάμεσων διακομιστών ένα υπερ-δίκτυο, πάνω από το διαδίκτυο Η ύπαρξη διακομιστών είναι χρήσιμη για καλύτερη κλιμάκωση και υλοποίηση διατηρούμενης επικοινωνίας ένα μήνυμα μπορεί να τα ταξιδέψει προς τον προορισμό του, χωρίς ποτέ να είναι συνεχώς διαθέσιμη η πλήρης διαδρομή ανάμεσα στον αποστολέα και στον παραλήπτη Η διαχείριση γίνεται συνήθως με το χέρι εγκατάσταση μηχανημάτων/διεργασιών αναμετάδοσης τήρηση πινάκων δρομολόγησης Κατανεμημένα Συστήματα 8 lalis@inf.uth.gr
application API application API application API Κατανεμημένα Συστήματα 9 lalis@inf.uth.gr
application A B service MP service MP service MP service network IP link L1 IP link L2 IP link up L1 link down L2 Κατανεμημένα Συστήματα 10 lalis@inf.uth.gr
Πρωτόκολλο μετάδοσης μηνυμάτων Stop&Wait: το επόμενο μήνυμα στέλνεται μόνο αφού επιβεβαιωθεί η παραλαβή του προηγούμενου Send-Ack: το επόμενο μήνυμα στέλνεται χωρίς αναμονή, αλλά η άλλη πλευρά πρέπει να στέλνει ξεχωριστές (μαζικές) επιβεβαιώσεις για τα μηνύματα που παρέλαβε (και αποθήκευσε) επιτυχώς Ack-Piggybacking: επιβεβαιώσεις επισυνάπτονται σε μηνύματα που στέλνονται στην αντίθετη κατεύθυνση Βασικό πρωτόκολλο μεταφοράς διαφανές για την εφαρμογή π.χ., UDP ή TCP Κατανεμημένα Συστήματα 11 lalis@inf.uth.gr
P2 P1 MP service MP service send(p3,m1) m1 send(p4,m2) m2 m1 m1 ack1 m1 m1 to P3 m2 m1 m2 m2 ack2 m2 m1 m2 to P4 m2 Κατανεμημένα Συστήματα 12 lalis@inf.uth.gr
P2 P1 MP service MP service send(p3,m1) m1 send(p4,m2) m2 m1 m1 m2 m1 m1 to P3 m2 m1 ack1 m2 m1 m2 to P4 m2 ack2 Κατανεμημένα Συστήματα 13 lalis@inf.uth.gr
P2 P1 MP service MP service send(p3,m1) m1 send(p4,m2) m2 m1 m1 m2 m1 m1 to P3 m2 m1 m2 to P4 m2 m1 ack1+2 Κατανεμημένα Συστήματα 14 lalis@inf.uth.gr
P2 P1 MP service MP service send(p3,m1) m1 send(p4,m2) m2 m1 m1 m2 m1 m1 to P3 m2 m1 m2 to P4 m3 m3 m3 m3 ack1+2 m2 m1 Κατανεμημένα Συστήματα 15 lalis@inf.uth.gr
Παροδικά άκρα επικοινωνίας Τα άκρα επικοινωνίας είναι προσωρινά Στενά συσχετισμένα με την ζωή των διεργασιών που τα δημιουργούν Αν η διεργασία τερματιστεί, το άκρο επικοινωνίας χάνει την ισχύ του, και η όποια περαιτέρω απόπειρα επικοινωνίας με αυτό αποτυγχάνει Παράδειγμα: UDP/IP sockets/ports Κατανεμημένα Συστήματα 16 lalis@inf.uth.gr
A Β Κατανεμημένα Συστήματα 17 lalis@inf.uth.gr
A Β Κατανεμημένα Συστήματα 18 lalis@inf.uth.gr
Μόνιμα άκρα επικοινωνίας Τα άκρα επικοινωνίας είναι μόνιμα Δεν είναι στενά συσχετισμένα με την ζωή των διεργασιών που τα δημιούργησαν Αν η διεργασία τερματιστεί, το άκρο επικοινωνίας εξακολουθεί να ισχύει, και μπορεί να χρησιμοποιηθεί από άλλες διεργασίες Παράδειγμα: mailboxes Κατανεμημένα Συστήματα 19 lalis@inf.uth.gr
A Β Κατανεμημένα Συστήματα 20 lalis@inf.uth.gr
A Β Κατανεμημένα Συστήματα 21 lalis@inf.uth.gr
A Κατανεμημένα Συστήματα 22 lalis@inf.uth.gr
A Β Κατανεμημένα Συστήματα 23 lalis@inf.uth.gr
Επικοινωνία 1->Ν Κατανεμημένα Συστήματα 24 lalis@inf.uth.gr
Υποστήριξη επικοινωνίας 1->Ν Φυσική πολυεκπομπή το δίκτυο υποστηρίζει broadcasting/multicasting επίπεδο τοπικού δικτύου / διαδικτύου (με δρομολόγηση) Επανειλημμένη αποστολή από την εφαρμογή το μήνυμα στέλνεται σε κάθε διεργασία ξεχωριστά Δρομολόγηση σε επίπεδο εφαρμογής οργάνωση των διεργασιών σε υπερδίκτυο (overlay), και δρομολόγηση σε επίπεδο εφαρμογής Κατανεμημένα Συστήματα 25 lalis@inf.uth.gr
Φυσική πολυεκπομπή b f a c e g d h p l o n m i j k Κατανεμημένα Συστήματα 26 lalis@inf.uth.gr
Φυσική πολυεκπομπή a b c d e f g h i j k l m n o p Κατανεμημένα Συστήματα 27 lalis@inf.uth.gr
Επανειλημμένη αποστολή b f a c e g d h p l o n m i j k Κατανεμημένα Συστήματα 28 lalis@inf.uth.gr
Επανειλημμένη αποστολή μηνύματος a b c d e f g h i j k l m n o p Κατανεμημένα Συστήματα 29 lalis@inf.uth.gr
Δρομολόγηση σε επίπεδο εφαρμογής (1) b f a c e g a d h b f i m k n p l o n m i j k Κατανεμημένα Συστήματα 30 lalis@inf.uth.gr
Δρομολόγηση σε επίπεδο εφαρμογής (1) a b c d e f g h i j k l m n o p Κατανεμημένα Συστήματα 31 lalis@inf.uth.gr
Δρομολόγηση σε επίπεδο εφαρμογής (2) b f a c e g a d h m f k b n i p l o n m i j k Κατανεμημένα Συστήματα 32 lalis@inf.uth.gr
Δρομολόγηση σε επίπεδο εφαρμογής (2) a b c d e f g h i j k l m n o p Κατανεμημένα Συστήματα 33 lalis@inf.uth.gr
Δέντρο πολυεκπομπής (Multicast tree) Μπορεί να κατασκευαστούν σε φυσικό επίπεδο καθώς και σε επίπεδο εφαρμογής Απαιτείται ανταλλαγή πληροφοριών ανάμεσα στις διεργασίες, και εκμετάλλευση αυτών για την κατασκευή του δέντρου επικάλυψης Τα κριτήρια δρομολόγησης μπορεί να διαφέρουν φυσική τοπολογία, δρομολόγηση σε επίπεδο δικτύου, καθυστέρηση επικοινωνίας, πόροι διεργασιών/κόμβων Προσαρμογή της δομής δρομολόγησης σε αλλαγές Πρόβλημα αν υπάρχει μεγάλη δυναμική, π.χ. συχνές αλλαγές στον αριθμό / τις ιδιότητες των διεργασιών το κόστος διαχείρισης μπορεί να είναι απαγορευτικό Κατανεμημένα Συστήματα 34 lalis@inf.uth.gr
Κατανεμημένα Συστήματα 35 lalis@inf.uth.gr
Κατανεμημένα Συστήματα 36 lalis@inf.uth.gr
Κατανεμημένα Συστήματα 37 lalis@inf.uth.gr
Κατανεμημένα Συστήματα 38 lalis@inf.uth.gr
Κατανεμημένα Συστήματα 39 lalis@inf.uth.gr
Κατανεμημένα Συστήματα 40 lalis@inf.uth.gr
Αξιοπιστία πολυεκπομπής Χρειάζονται επανεκπομπές, επιβεβαιώσεις το πρόβλημα της κλιμάκωσης εντείνεται Εφαρμογή (και εδώ) της ιδέας των «μαζικών» επιβεβαιώσεων για πολλά μηνύματα Επιπλέον, μπορεί να γίνει εκμετάλλευση της δομής δρομολόγησης για την επιβεβαίωση των μεταδόσεων κατά μήκος των ακμών του δέντρου πολυεκπομπής ιδανικά, μόνο 1 μετάδοση επιβεβαίωσης πάνω από κάθε ακμή Κάθε κόμβος μπορεί να επιβεβαιώνει άμεσα την παραλαβή ενός μηνύματος ή αφού πρώτα λάβει επιβεβαιώσεις από το «δικό του» υπο-δέντρο Κατανεμημένα Συστήματα 41 lalis@inf.uth.gr
m m Κατανεμημένα Συστήματα 42 lalis@inf.uth.gr
m m Κατανεμημένα Συστήματα 43 lalis@inf.uth.gr
m m m Κατανεμημένα Συστήματα 44 lalis@inf.uth.gr
ack ack m m Κατανεμημένα Συστήματα 45 lalis@inf.uth.gr
ack ack ack Κατανεμημένα Συστήματα 46 lalis@inf.uth.gr
ack ack Κατανεμημένα Συστήματα 47 lalis@inf.uth.gr
Κατανεμημένα Συστήματα 48 lalis@inf.uth.gr ack
Κατανεμημένα Συστήματα 49 lalis@inf.uth.gr ack
m m Κατανεμημένα Συστήματα 50 lalis@inf.uth.gr
m m ack ack Κατανεμημένα Συστήματα 51 lalis@inf.uth.gr
ack m m ack m Κατανεμημένα Συστήματα 52 lalis@inf.uth.gr
ack ack ack m m Κατανεμημένα Συστήματα 53 lalis@inf.uth.gr
ack ack Κατανεμημένα Συστήματα 54 lalis@inf.uth.gr
IP multicast Το IP προσδιορίζει ειδικές διευθύνσεις πολυεκπομπής στις οποίες ένας κόμβος πρέπει να εγγραφεί για να λάβει τα μηνύματα που στέλνονται σε αυτές Ο αποστολέας δεν γνωρίζει τους κόμβους/διεργασίες που είναι εγγεγραμμένοι στη διεύθυνση πολυεκπομπής (οι κόμβοι προσέρχονται/αποχωρούν δυναμικά) Η αποστολή μηνυμάτων σε διεύθυνση πολυεκπομπής γίνεται χωρίς εγγυήσεις παράδοσης (best effort) Οι δρομολογητές του διαδικτύου υποστηρίζουν (θεωρητικά) την πολυεκπομπή οι διαχειριστές την περιορίζουν σε τοπικό επίπεδο Κατανεμημένα Συστήματα 55 lalis@inf.uth.gr
Συνδρομητική επικοινωνία (publish-subscribe) Τα μηνύματα προωθούνται/δρομολογούνται με βάση το θέμα (είδος) της πληροφορίας που περιέχουν Τα διάφορα μέρη δεν χρησιμοποιούν συγκεκριμένα άκρα επικοινωνίας ή διευθύνσεις επικοινωνίας Γίνεται ρητή καταγραφή των ενδιαφερομένων για κάθε θέμα, και ειδοποίηση όταν υπάρχει νέο μήνυμα Αποστολέας -> εκδότης (publisher) Παραλήπτης -> συνδρομητής (subscriber) Κατανεμημένα Συστήματα 56 lalis@inf.uth.gr
Ενδεικτικό API Subscriber: int subscribe(subjectid s); int unsubscribe(subjectid s); void recv_msg(subjectid s, char **msg, int mlen); Publisher: int publish_msg(subjectid s, char *msg, int mlen); η δρομολόγηση των μηνυμάτων γίνεται με βάση το περιεχόμενο τους Κατανεμημένα Συστήματα 57 lalis@inf.uth.gr
Κεντρικοποιημένη υλοποίηση Ένας μοναδικός εξυπηρετητής μεσολαβεί ανάμεσα στους εκδότες και συνδρομητές Οι συνδρομητές δηλώνουν στον εξυπηρετητή το είδος των μηνυμάτων που τους ενδιαφέρουν Οι εκδότες στέλνουν τα μηνύματα στον εξυπηρετητή Ο εξυπηρετητής προωθεί κάθε μήνυμα μόνο στους συνδρομητές που έχουν δηλώσει ενδιαφέρον Κεντρικό σημείο βλάβης και συμφόρησης Ο εξυπηρετητής μπορεί να είναι πολύ μακριά από τους εκδότες και συνδρομητές (που μπορεί να είναι κοντά) Κατανεμημένα Συστήματα 58 lalis@inf.uth.gr
server subscribe publish_msg recv_msg Κατανεμημένα Συστήματα 59 lalis@inf.uth.gr
publish_msg server subscribe publish_msg recv_msg Κατανεμημένα Συστήματα 60 lalis@inf.uth.gr
server publish_msg subscribe recv_msg Κατανεμημένα Συστήματα 61 lalis@inf.uth.gr
Κατανεμημένη υλοποίηση Η υπηρεσία υλοποιείται από πολλούς εξυπηρετητές Οι εξυπηρετητές οργανώνονται σε ένα δίκτυο το σχήμα του δικτύου μπορεί να είναι ιεραρχικό ή ομότιμο Κάθε εκδότης και συνδρομητής επικοινωνεί με έναν εξυπηρετητή (π.χ., τον πλησιέστερο) Τα μηνύματα δρομολογούνται ανάμεσα στους εξυπηρετητές με βάση πληροφορίες για τις τρέχουσες εκδόσεις και συνδρομές Κατανεμημένα Συστήματα 62 lalis@inf.uth.gr
subscribe publish_msg recv_msg Κατανεμημένα Συστήματα 63 lalis@inf.uth.gr
Τοπική διαχείριση συνδρομών Κάθε εξυπηρετητής με συνδρομητές κρατά τοπικά τις συνδρομές (προτιμήσεις) των πελατών του Κάθε μήνυμα προωθείται σε όλους τους εξυπηρετητές Κάθε εξυπηρετητής προωθεί στους συνδρομητές του μόνο τα μηνύματα που τους ενδιαφέρουν Πρόβλημα κλιμάκωσης αν #msgs >> #matches υπάρχουν λίγοι συνδρομητές στο δίκτυο Χάνονται πόροι για την άσκοπη μετάδοση μηνυμάτων προς κατευθύνσεις που δεν οδηγούν σε συνδρομητές Κατανεμημένα Συστήματα 64 lalis@inf.uth.gr
subscribe subscription info Κατανεμημένα Συστήματα 65 lalis@inf.uth.gr
subscription info Κατανεμημένα Συστήματα 66 lalis@inf.uth.gr
publish_msg recv_msg subscription info Κατανεμημένα Συστήματα 67 lalis@inf.uth.gr
publish_msg subscription info Κατανεμημένα Συστήματα 68 lalis@inf.uth.gr
Προώθηση πληροφορίας συνδρομών Κάθε εξυπηρετητής με συνδρομητές μεταδίδει τις συνδρομές προς όλους τους εξυπηρετητές Ένας εξυπηρετητής προωθεί ένα μήνυμα μόνο στους εξυπηρετητές από τους οποίους έχουν λάβει πληροφορία για αντίστοιχους συνδρομητές Ιδανικά, η προώθηση μηνυμάτων για τα οποία δεν υπάρχουν καθόλου συνδρομητές «κόβεται» απευθείας στους εξυπηρετητές όπου έχουν συνδεθεί οι εκδότες Σημαντική μείωση άσκοπων προωθήσεων μηνυμάτων Προκύπτει «αυτόματα» ένα multicast tree, καθώς η πληροφορία συνδρομής ταξιδεύει προς τον εκδότη Κατανεμημένα Συστήματα 69 lalis@inf.uth.gr
subscribe subscription info Κατανεμημένα Συστήματα 70 lalis@inf.uth.gr
subscription info Κατανεμημένα Συστήματα 71 lalis@inf.uth.gr
subscription info Κατανεμημένα Συστήματα 72 lalis@inf.uth.gr
publish_msg recv_msg subscription info Κατανεμημένα Συστήματα 73 lalis@inf.uth.gr
publish_msg subscription info Κατανεμημένα Συστήματα 74 lalis@inf.uth.gr
Διαφημίσεις Οι εκδότες καταθέτουν διαφημίσεις (advertisements) για το θέμα μηνυμάτων που πρόκειται να δημοσιεύουν Αν ένας εξυπηρετητής δεν πρόκειται να προωθήσει μηνύματα για ένα θέμα, τότε δεν έχει νόημα να αποθηκεύει ή να προωθεί πληροφορία συνδρομής για αυτό το θέμα προς την «αντίθετη» κατεύθυνση Κέρδος αν #advertisements << #subscriptions όταν αλλάζουν συχνά οι συνδρομές / οι συνδρομητές Δεν χάνονται πόροι για την μετάδοση/αποθήκευση συνδρομών προς κατευθύνσεις που δεν οδηγούν σε αντίστοιχους εκδότες Κατανεμημένα Συστήματα 75 lalis@inf.uth.gr
advertise advertisement info subscription info Κατανεμημένα Συστήματα 76 lalis@inf.uth.gr
advertisement info subscription info Κατανεμημένα Συστήματα 77 lalis@inf.uth.gr
advertisement info subscription info Κατανεμημένα Συστήματα 78 lalis@inf.uth.gr
subscribe advertisement info subscription info Κατανεμημένα Συστήματα 79 lalis@inf.uth.gr
advertisement info subscription info Κατανεμημένα Συστήματα 80 lalis@inf.uth.gr
subscribe advertisement info subscription info Κατανεμημένα Συστήματα 81 lalis@inf.uth.gr
advertisement info subscription info Κατανεμημένα Συστήματα 82 lalis@inf.uth.gr
Περιγραφή περιεχομένου / συνδρομών Στην απλούστερη περίπτωση μπορεί να είναι ένα «απλό» αναγνωριστικό (ακέραιος, όνομα) Οι περιγραφές μπορεί να είναι πιο πολύπλοκες π.χ., βασισμένες σε κατάλληλη οντολογία Όσο πιο ετερογενής/πολύπλοκη είναι η πληροφορία, τόσο πιο σημαντική είναι η καλή δόμηση της Αυξημένες δυνατότητες για καλύτερο φιλτράρισμα και πιο εστιασμένη προώθηση μηνυμάτων Υπολογισμός σχέσεων επικάλυψης των συνδρομών μείωση της πληροφορίας στους ενδιάμεσους κόμβους επιτάχυνση φιλτραρίσματος μηνυμάτων Κατανεμημένα Συστήματα 83 lalis@inf.uth.gr