Επικοινωνία αίτησης-απάντησης. Κατανεμημένα Συστήματα 1

Σχετικά έγγραφα
Επικοινωνία αίτησης-απάντησης. Κατανεμημένα Συστήματα 1

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Μετακινούμενος Κώδικας (Mobile Code) Κατανεμημένα Συστήματα 1

Επικοινωνία με μηνύματα. Κατανεμημένα Συστήματα 1

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο. Κατανεμημένα Συστήματα 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Αξιόπιστη μεταφορά δεδομένων πάνω από αναξιόπιστο δίκτυο. Κατανεμημένα Συστήματα 1

Απομακρυσμένα αντικείμενα (Remote Objects) Κατανεμημένα Συστήματα 1

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

Αποµακρυσµένη κλήση διαδικασιών

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

Εισαγωγικά & Βασικές Έννοιες

Ανοχή βλαβών με καταγραφή κατάστασης και οπισθοδρόμηση (checkpoints & rollback) Κατανεμημένα Συστήματα 1

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Λειτουργικά Συστήματα 7ο εξάμηνο, Ακαδημαϊκή περίοδος

Σηματοφόροι (Σηματοφορείς) Ταυτόχρονος Προγραμματισμός 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

Επικοινωνία Client/Server

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

Προγραμματισμός Ι (HY120)

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

6.2 Υπηρεσίες Διαδικτύου

HTTP API v1.6 SMSBOX.GR HTTP API v

Ελεγκτές/Παρακολουθητές (Monitors) Ταυτόχρονος Προγραμματισμός 1

Κατανεμημένα Συστήματα

Δομημένος Προγραμματισμός

Εντοπισμός αδιεξόδου. Κατανεμημένα Συστήματα 1

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Σχήμα 1: TCP αποστολέας με παράθυρο αποστολέα = 1

Πληροφορίες. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο Ζητήµατα Επικοινωνίας Πελάτη-Εξυπηρετητή. Εξυπηρετητής

3.3 Πρωτόκολλα ανεύρεσης και απόδοσης διευθύνσεων, Address Resolution Protocol (ARP) και Dynamic Host Configuration Protocol (DHCP)

Προγραμματισμός Ι (ΗΥ120)

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο Κατανεµηµένα συστήµατα αρχείων. Μέρη κατανεµηµένου συστήµατος αρχείων

Κρίσιμη Περιοχή Υπό Συνθήκη (Conditional Critical Regions) Ταυτόχρονος Προγραμματισμός 1

Ορθότητα λειτουργίας τμημάτων λογισμικού & δομών δεδομένων υπό ταυτόχρονη εκτέλεση

Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1

Εισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός

Remote Method Invocation (RMI)

Χώροι Πλειάδων (Tuple Spaces) Ταυτόχρονος Προγραμματισμός 1

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Κατανεμημένα Συστήματα. Javascript LCR example

Υλοποίηση Σηματοφόρων

Εισαγωγικά & Βασικές Έννοιες

Αμοιβαίος αποκλεισμός με ασύγχρονη επικοινωνία (ανταλλαγή μηνυμάτων) Ταυτόχρονος Προγραμματισμός 1

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Ομαδική Επικοινωνία (Group Communication) Κατανεμημένα Συστήματα 1

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

Διάλεξη 12: Διάχυση Μηνυμάτων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Κατανεμημένα Συστήματα

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

Προγραμματισμός Ι (ΗΥ120)

Παράλληλη Επεξεργασία

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

ΗΥ486 - Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο Δεύτερη Προγραμματιστική Εργασία

Κατανεµηµένασυστήµατα αρχείων

Κατανεμημένα/δικτυακά συστήματα αρχείων (Network File Systems) Κατανεμημένα Συστήματα 1

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Ορθότητα λειτουργίας τμημάτων λογισμικού & δομών δεδομένων υπό ταυτόχρονη εκτέλεση

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Ενότητα 12 (κεφάλαιο 28) Αρχιτεκτονικές Εφαρμογών

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

Εγχειρίδιο Χρήσης για Εκπαιδευτές/Διοικητικούς. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

3. Προσομοίωση ενός Συστήματος Αναμονής.

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1

ΚΕΦΑΛΑΙΟ 4. Τεχνική Ανίχνευσης του. Πτυχιακή Εργασία Σελίδα 95

Λειτουργικά Συστήματα (Λ/Σ)

7.2.2 Σχέση OSI και TCP/IP

Βασικές Έννοιες Πρ Ταο υγρ τόα χ μ ρ μ ο α ν τισμ ος Π ό ρ ςο ΙΙΙ γραμματισμός 1

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Λειτουργικά Συστήματα Η/Υ

Οδηγίες EQL Desktop (rev ) ΣΥΝ ΕΣΗ S-710 ΜΕ ΚΑΛΩ ΙΟ USB ΠΡΟΚΑΤΑΡΚΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΕΙΣΑΓΩΓΗ

Αρχιτεκτονικές Συστημάτων

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2

Η πολυνηματική γλώσσα προγραμματισμού Cilk

Transcript:

Επικοινωνία αίτησης-απάντησης Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr

Σχήμα επικοινωνίας -reply Μια διεργασία στέλνει μια αίτηση () σε μια άλλη διεργασία, η οποία επεξεργάζεται την αίτηση και στέλνει πίσω μια αντίστοιχη απάντηση (reply) Το πλέον διαδεδομένο σχήμα επικοινωνίας στα κατανεμημένα συστήματα όπως άλλωστε και στα ανθρώπινα συστήματα Τα περισσότερα (κατανεμημένα) συστήματα μπορεί να δομηθούν (με σχετικά φυσικό / εύκολο τρόπο) με βάση το σχήμα επικοινωνίας -reply Κατανεμημένα Συστήματα 2 lalis@inf.uth.gr

P1 P2 reply Κατανεμημένα Συστήματα 3 lalis@inf.uth.gr

Σχήμα επικοινωνίας client-server Ακολουθεί το σχήμα επικοινωνίας -reply με κάποιες εξειδικεύσεις / επεκτάσεις Η διεργασία που στέλνει την αίτηση περιμένει (μπλοκάρεται) μέχρι να λάβει την απάντηση Η διεργασία που δέχεται την αίτηση παραμένει ανενεργή όσο δεν λαμβάνει/επεξεργάζεται αιτήσεις υπάρχει για να δέχεται και να επεξεργάζεται τις αιτήσεις των πελατών (υλοποιεί μια απομακρυσμένη υπηρεσία) Ορολογία πελάτης: η διεργασία που στέλνει την αίτηση εξυπηρετητής: η διεργασία που δέχεται και επεξεργάζεται τις αιτήσεις των πελατών Κατανεμημένα Συστήματα 4 lalis@inf.uth.gr

client server waiting waiting reply waiting Κατανεμημένα Συστήματα 5 lalis@inf.uth.gr

client application server application _reply sendreply getrequest API client side server side API network network Κατανεμημένα Συστήματα 6 lalis@inf.uth.gr

Ενδεικτικό API Client: int _reply(char *, int len, char **reply, int *replylen); Server: ReqID getrequest(char **, int *len); void sendreply(reqid id, char *reply, int replylen); η ρητή αντιστοίχηση απάντησης σε αίτηση, επιτρέπει την «εκτός σειράς» επεξεργασία των αιτήσεων ή/και η αποστολή απαντήσεων Κατανεμημένα Συστήματα 7 lalis@inf.uth.gr

client1 client2 server reply Κατανεμημένα Συστήματα 8 lalis@inf.uth.gr

Πολυπλεξία & ανακάλυψη εξυπηρετητών Συνύπαρξη πολλών υπηρεσιών στο ίδιο μηχάνημα Χρειάζεται διαχωρισμός ανάμεσα στους εξυπηρετητές, μέσα από κατάλληλα (συμφωνημένα) αναγνωριστικά Ένας εξυπηρετητής πρέπει να δηλώνει ρητά ποια υπηρεσία υποστηρίζει/υλοποιεί Ο κάθε πελάτης πρέπει να ανακαλύπτουν τον «σωστό» εξυπηρετητή, για την υπηρεσία που επιθυμεί Χρησιμοποιούνται οι γνωστές λύσεις ανακάλυψης: εκπομπή ή υπηρεσία καταλόγου Κατανεμημένα Συστήματα 9 lalis@inf.uth.gr

client client server A server B B A client side server side client side server side B C client client server C Κατανεμημένα Συστήματα 10 lalis@inf.uth.gr

Ενδεικτικό API Client: int _reply(srvcid svc, char *, int len, char **reply, int *replylen); Server: int register(srvcid svc); void unregister(srvcid svc); ReqID getrequest(srvcid svc, char **, int *len) void sendreply(reqid id, char *reply, int replylen) η ρητή εγγραφή χρειάζεται έτσι ώστε να μην χάνονται αιτήσεις Κατανεμημένα Συστήματα 11 lalis@inf.uth.gr

Πρωτόκολλο μετάδοσης Πρέπει να οριστεί η αλληλεπίδραση ανάμεσα στην πλευρά του πελάτη και την πλευρά του εξυπηρετητή Υπάρχουν 2 βασικές διαστάσεις Επιβεβαίωση αίτησης του πελάτη και απάντησης του εξυπηρετητή Χειρισμός βλαβών εξυπηρετητή και πελάτη Κατανεμημένα Συστήματα 12 lalis@inf.uth.gr

Σειριακή αποστολή αιτήσεων Η πλευρά του πελάτη στέλνει την επόμενη αίτηση αφού λάβει απάντηση για τη προηγούμενη αν δεν λάβει απάντηση, ξαναστέλνει την αίτηση Η απάντηση του εξυπηρετητή ερμηνεύεται ως επιβεβαίωση της προηγούμενης αίτησης Η πλευρά του εξυπηρετητή ερμηνεύει την επόμενη αίτηση ως επιβεβαίωση της τελευταίας απάντησης αν δεν υπάρχει επόμενη αίτηση, χρειάζεται ειδική επιβεβαίωση Σειριακή επεξεργασία αιτήσεων στον εξυπηρετητή Άσκοπες αποστολές της ίδιας αίτησης (αν αργεί να έρθει η απάντηση του εξυπηρετητή) Κατανεμημένα Συστήματα 13 lalis@inf.uth.gr

client B client A client side server side server application _reply _reply A getrequest B replya sendreply getrequest replyb sendreply ack Κατανεμημένα Συστήματα 14 lalis@inf.uth.gr

Ταυτόχρονη αποστολή αιτήσεων Η πλευρά του πελάτη στέλνει νέες αιτήσεις χωρίς να έχει περιμένει απάντηση για τις προηγούμενες η επόμενη αίτηση δεν χρησιμεύει ως επιβεβαίωση Η απάντηση του εξυπηρετητή ερμηνεύεται ως επιβεβαίωση για την αντίστοιχη αίτηση Χρειάζεται ξεχωριστή επιβεβαίωση της απάντησης η επόμενη αίτηση δεν χρησιμεύει ως επιβεβαίωση Αυξημένες απαιτήσεις αποθήκευσης στον εξυπηρετητή Αυξημένος φόρτος στο δίκτυο (μαζικές επιβεβαιώσεις) Άσκοπες αποστολές των ίδιων αιτήσεων (αν αργούν να έρθουν οι απαντήσεις του εξυπηρετητή) Κατανεμημένα Συστήματα 15 lalis@inf.uth.gr

client B client A client side server side server application _reply _reply A B getrequest getrequest replya sendreply ack-replya replyb sendreply ack-replyb Κατανεμημένα Συστήματα 16 lalis@inf.uth.gr

Ρητή επιβεβαίωση παραλαβής αιτήσεων Πόσο πρέπει να περιμένει η πλευρά του πελάτη μέχρι να ξαναστείλει την αίτηση, σε περίπτωση που χάθηκε; Παρόμοιο πρόβλημα με αυτό του κλασικού timeout, αλλά με περισσότερους αστάθμητους παράγοντες χρόνος επεξεργασίας αίτησης, φόρτος στον εξυπηρετητή Η πλευρά του εξυπηρετητή επιβεβαιώνει την παραλαβή της αίτησης άμεσα, με ένα ξεχωριστό μήνυμα ανεξάρτητα από την απάντηση (που στέλνεται αργότερα) Όμως, έτσι στέλνονται ακόμα περισσότερα μηνύματα πάνω από το δίκτυο (και πάλι: μαζικές επιβεβαιώσεις) Κατανεμημένα Συστήματα 17 lalis@inf.uth.gr

client B client A client side server side server application _reply _reply A B getrequest getrequest ack-a ack-b replya sendreply ack-replya replyb sendreply ack-replyb Κατανεμημένα Συστήματα 18 lalis@inf.uth.gr

client B client A client side server side server application _reply _reply A B getrequest getrequest ack-a,b replya sendreply replyb sendreply ack-replya,b Κατανεμημένα Συστήματα 19 lalis@inf.uth.gr

Βασική υπηρεσία μεταφοράς TCP/IP Κόστος σύνδεσης, αλλά η ίδια σύνδεση μπορεί να ξαναχρησιμοποιηθεί για συνεχόμενες ανταλλαγές Εγγυημένη μεταφορά, αλλά (στην γενική περίπτωση) χρειάζονται επιβεβαιώσεις και σε πιο ψηλό επίπεδο UDP/IP Ευέλικτα σχήματα επαναποστολής/επιβεβαίωσης Ιδιαίτερα κατάλληλο αν δεν υπάρχουν απαιτήσεις πλήρους αξιοπιστίας και τα μηνύματα της εφαρμογής είναι σχετικά μικρά Κατανεμημένα Συστήματα 20 lalis@inf.uth.gr

End-to-end argument Μια υπηρεσία επιπέδου Ν δεν μπορεί να προσφέρει σημασιολογία πιο ψηλού επιπέδου Ν+1 Παράδειγμα -reply πάνω από υπηρεσία αξιόπιστης μεταφοράς δεδομένων (π.χ. TCP/IP) Το γεγονός ότι η παραλαβή δεδομένων επιβεβαιώθηκε στο επίπεδο της μεταφοράς (TCP/IP), δεν επιβεβαιώνει κάτι για το παραπάνω επίπεδο (εφαρμογής) Συγκεκριμένα, το μηχάνημα / η εφαρμογή μπορεί να παρουσιάσει βλάβη αφού επιβεβαιωθεί η παραλαβή των δεδομένων στο επίπεδο μεταφοράς, αλλά προτού η εφαρμογή παραλάβει/επεξεργαστεί τα δεδομένα Χρειάζεται επιβεβαίωση και στο επίπεδο εφαρμογής Κατανεμημένα Συστήματα 21 lalis@inf.uth.gr

Ταυτόχρονη επεξεργασία αιτήσεων Worker per για κάθε αίτηση που καταφθάνει, δημιουργείται ένα νέο νήμα στο οποίο ανατίθεται η επεξεργασία της Worker pool οι αιτήσεις μπαίνουν σε κοινή ουρά, από την οποία απομακρύνονται και επεξεργάζονται από νήματα εργάτες Worker per connection για κάθε σύνδεση (ανά κόμβο / πελάτη) δημιουργείται ένα νήμα που επεξεργάζεται τις αντίστοιχες αιτήσεις Worker per function group για κάθε ομάδα αιτήσεων υπάρχει ένα ξεχωριστό νήμα που επεξεργάζεται τις σχετικές αιτήσεις Θέματα συγχρονισμού: «ανταγωνιστικές» κλήσεις; Κατανεμημένα Συστήματα 22 lalis@inf.uth.gr

server server workers queue code code 1) Worker per 2) Worker pool server server queue code code 3) Worker per connection 4) Worker per function group Κατανεμημένα Συστήματα 23 lalis@inf.uth.gr

Ασύγχρονο σχήμα αίτησης-απάντησης Απεμπλοκή της διαδικασίας αποστολής της αίτησης από την διαδικασία παραλαβής της απάντησης Ως αποτέλεσμα της αίτησης, ο πελάτης λαμβάνει μια απόδειξη/εισιτήριο, που μπορεί να χρησιμοποιήσει, αργότερα, για να παραλάβει το αποτέλεσμα Δεν απαιτείται χρήση νημάτων σε επίπεδο εφαρμογής Ούτε σε επίπεδο υπηρεσίας μεταφοράς Σημείωση: η χρήση νημάτων σε επίπεδο εφαρμογής λύνει το πρόβλημα του μπλοκαρίσματος, αλλά δυσκολεύει την υλοποίηση και καταναλώνει πόρους Κατανεμημένα Συστήματα 24 lalis@inf.uth.gr

Ενδεικτικό API Client: ReqID (SrvcID svc, char *, int len); int replyavailable(reqid id); int getreply(reqid id, char **reply, int *replylen); Server: έλεγχος και παραλαβή αποτελέσματος μέσω «απόδειξης» int register(srvcid svc); παραμένει ίδιο void unregister(srvcid svc); ReqID getrequest(srvcid svc, char **, int *len) void sendreply(reqid id, char *reply, int replylen) Κατανεμημένα Συστήματα 25 lalis@inf.uth.gr

client client side server id id replyavailable(id) 0 id reply reply replyavailable(id) 1 getreply(id) reply id reply Κατανεμημένα Συστήματα 26 lalis@inf.uth.gr

One-way s Υπάρχουν αιτήσεις που δεν επιστρέφουν κάποια απάντηση σε επίπεδο εφαρμογής Σε πιο χαμηλό επίπεδο, ο εξυπηρετητής πιθανώς εξακολουθεί να πρέπει να επιβεβαιώσει την ορθή επεξεργασία της αίτησης Δεν υπάρχει λόγος να μπλοκάρεται ο πελάτης Μπορεί να χρησιμοποιηθεί παρόμοιος μηχανισμός ασύγχρονης επικοινωνίας Σε κάποιες περιπτώσεις, μπορεί να μην απαιτείται επιβεβαίωση ούτε σε επίπεδο μεταφοράς best effort one-way s Κατανεμημένα Συστήματα 27 lalis@inf.uth.gr

client client side server ack δεν επιστρέφεται κάποιο αποτέλεσμα στην εφαρμογή Κατανεμημένα Συστήματα 28 lalis@inf.uth.gr

Βλάβες πελάτη/εξυπηρετητή Κατανεμημένα Συστήματα 29 lalis@inf.uth.gr

Βλάβη εξυπηρετητή Όσο ο εξυπηρετητής λειτουργεί χωρίς πρόβλημα, κάποια στιγμή θα λάβει την αίτηση του πελάτη, θα την επεξεργαστεί, και θα στείλει την απάντηση Τι γίνεται αν ο εξυπηρετητής παρουσιάσει βλάβη; Υπάρχει περίπτωση μια ή περισσότερες αιτήσεις που έχει στείλει ο πελάτης να μείνουν χωρίς απάντηση Τι μπορεί να κάνει ο πελάτης; Κατανεμημένα Συστήματα 30 lalis@inf.uth.gr

At most once Ο πελάτης προσπαθεί να στείλει την αίτηση στον εξυπηρετητή, μια ή περισσότερες φορές Αν μετά από έναν αριθμό προσπαθειών ο πελάτης εξακολουθεί να μην έχει λάβει απάντηση, εγκαταλείπει Ο πελάτης δεν γνωρίζει κατά πόσο ο εξυπηρετητής έλαβε / κατάφερε να επεξεργαστεί την αίτηση Ο εξυπηρετητής μπορεί να παρουσιάσει μόνιμη βλάβη Διαφορετικά, αν παρουσιάσει βλάβη και στην συνέχεια γίνει επανεκκίνηση, πρέπει να θυμάται ποιες αιτήσεις είχε λάβει στην προηγούμενη του ζωή Κατανεμημένα Συστήματα 31 lalis@inf.uth.gr

At least once Ο πελάτης προσπαθεί να στείλει την αίτηση στον εξυπηρετητή, μέχρι να λάβει απάντηση Υποθέτει πως ακόμα αν ο εξυπηρετητής παρουσιάσει βλάβη, τελικά θα γίνει επανεκκίνηση και θα ανακάμψει Αν μετά την επανεκκίνηση ο εξυπηρετητής έχει αμνησία, δεν θυμάται τις αιτήσεις που έλαβε στην προηγούμενη του ζωή Υπάρχει περίπτωση να λάβει την ίδια αίτηση και να την επεξεργαστεί ξανά (περισσότερες από μια φορές) Κατανεμημένα Συστήματα 32 lalis@inf.uth.gr

Exactly once Ο πελάτης προσπαθεί να στείλει την αίτηση στον εξυπηρετητή, μέχρι να λάβει απάντηση Υποθέτει πως ακόμα αν ο εξυπηρετητής παρουσιάσει βλάβη, τελικά θα γίνει επανεκκίνηση και θα ανακάμψει Μετά την επανεκκίνηση, ο εξυπηρετητής θυμάται τις αιτήσεις που είχε λάβει στην προηγούμενη του ζωή καθώς και τις απαντήσεις που τυχόν παρήγαγε Αν λάβει την ίδια αίτηση θα την αγνοήσει και θα στείλει πίσω την απάντηση (αν αυτή έχει ήδη παραχθεί) Κατανεμημένα Συστήματα 33 lalis@inf.uth.gr

Χειρισμός στον πελάτη/εξυπηρετητή Πελάτης Εξυπηρετητής προσπάθειες μπλοκάρισμα* χειρισμός διπλοτύπων** αποθήκευση απαντήσεων at most once Κ ΟΧΙ ΝΑΙ ΠΡΟΑΙΡΕΤΙΚΑ at least once όσες χρειαστεί ΝΑΙ ΠΡΟΑΙΡΕΤΙΚΑ ΟΧΙ exactly once όσες χρειαστεί ΝΑΙ NAI ΝΑΙ (*) μέχρι να παραληφθεί απάντηση (**) λόγω επανειλημμένης αποστολής αιτήσεων από τον πελάτη Κατανεμημένα Συστήματα 34 lalis@inf.uth.gr

Επιβεβαίωση αιτήσεων / απαντήσεων Ο σχεδιασμός του πρωτοκόλλου ανάμεσα στην πλευρά του πελάτη και την πλευρά του εξυπηρετητή για την μετάδοση και επιβεβαίωση αιτήσεων και απαντήσεων, καθώς και η επιλογή της υπηρεσίας μεταφοράς σε πιο χαμηλό επίπεδο, μπορεί να γίνει λαμβάνοντας υπόψη το γενικότερα επιθυμητό μοντέλο ανοχής βλαβών Π.χ., για at most once δεν είναι απαραίτητο να γίνονται επανεκπομπές, σε κανένα επίπεδο Π.χ., για at least once δεν χρειάζεται να γίνεται αναγνώριση διπλότυπων αιτήσεων, σε κανένα επίπεδο Κατανεμημένα Συστήματα 35 lalis@inf.uth.gr

Βλάβη πελάτη Οι αιτήσεις του πελάτη δεν έχουν νόημα ακόμα και αν ο πελάτης ανακάμψει αργότερα Πρέπει να αγνοηθούν Οι ενέργειες που πρέπει να κάνει ο εξυπηρετητής εξαρτώνται από το στάδιο που βρίσκεται η αίτηση Αν ο εξυπηρετητής δεν έχει αρχίσει την επεξεργασία, τότε η αίτηση πρέπει να αγνοηθεί Αν ο εξυπηρετητής δεν έχει ολοκληρώσει την επεξεργασία, η επεξεργασία πρέπει να τερματιστεί Αν ο εξυπηρετητής έχει ολοκληρώσει την επεξεργασία, τότε η (αποθηκευμένη) απάντηση πρέπει να αγνοηθεί Κατανεμημένα Συστήματα 36 lalis@inf.uth.gr

αρχική κατάσταση A B client side server side Κατανεμημένα Συστήματα 37 lalis@inf.uth.gr

αποστολή αίτησης εφαρμογής πελάτη A application B client side server side Κατανεμημένα Συστήματα 38 lalis@inf.uth.gr

επεξεργασία αίτησης στον εξυπηρετητή A B application process client side server side reply Κατανεμημένα Συστήματα 39 lalis@inf.uth.gr

βλάβη πελάτη A B application process client side server side reply Κατανεμημένα Συστήματα 40 lalis@inf.uth.gr

βλάβη πελάτη ignore A B application process client side server side reply Κατανεμημένα Συστήματα 41 lalis@inf.uth.gr

Εξολόθρευση Βλάβη πελάτη με επανεκκίνηση & μόνιμη μνήμη Ο πελάτης καταγράφει σε μόνιμη μνήμη τα στοιχεία κάθε νέας αίτησης (+ την διεύθυνση του εξυπηρετητή) Τα στοιχεία διαγράφονται από την μόνιμη μνήμη όταν ο πελάτης παραλάβει το αποτέλεσμα της αίτησης Όταν ο πελάτης ανακάμψει από την βλάβη, διαβάζει τα στοιχεία των (εκκρεμών) αιτήσεων από την αποθήκη Για κάθε τέτοια αίτηση, στέλνει αίτηση ακύρωσης στον αντίστοιχο εξυπηρετητή Όταν λάβει επιβεβαίωση από τον εξυπηρετητή, απομακρύνει την εγγραφή από την μόνιμη μνήμη Κατανεμημένα Συστήματα 42 lalis@inf.uth.gr

αρχική κατάσταση A B client side server side Κατανεμημένα Συστήματα 43 lalis@inf.uth.gr

αποστολή αίτησης εφαρμογής αίτησης πελάτη A application B client side server side Κατανεμημένα Συστήματα 44 lalis@inf.uth.gr

επεξεργασία αίτησης στον εξυπηρετητή A application B process client side server side Κατανεμημένα Συστήματα 45 lalis@inf.uth.gr

βλάβη πελάτη A application B process client side server side Κατανεμημένα Συστήματα 46 lalis@inf.uth.gr

ανάκαμψη πελάτη & ειδοποίηση εξυπηρετητή A B process client side server side cancel Κατανεμημένα Συστήματα 47 lalis@inf.uth.gr

ακύρωση αίτησης στον εξυπηρετητή A B process client side server side ack Κατανεμημένα Συστήματα 48 lalis@inf.uth.gr

Αναβίωση Βλάβη πελάτη με επανεκκίνηση & (μερική) αμνησία Κάθε φορά που γίνεται επανεκκίνηση, αυξάνεται αυτόματα ο αριθμός ζωής (σε μόνιμη μνήμη) εναλλακτικά, χρησιμοποιείται η μέρα/ώρα εκκίνησης Ο πελάτης επισυνάπτει τον τρέχοντα αριθμός ζωής σε κάθε αίτηση που στέλνει στους εξυπηρετητές Όταν ο πελάτης ανακάμψει, στέλνει τον νέο αριθμό ζωής στους εξυπηρετητές που με την σειρά τους ακυρώνουν τις αιτήσεις με διαφορετικό αριθμό ζωής Αυτό μπορεί να γίνει «τεμπέλικα», μέσω των αιτήσεων που θα στείλει ο πελάτης στο πλαίσιο της νέας ζωής Κατανεμημένα Συστήματα 49 lalis@inf.uth.gr

αρχική κατάσταση A B client side server side n incarnation number Κατανεμημένα Συστήματα 50 lalis@inf.uth.gr

αποστολή αίτησης εφαρμογής αίτησης πελάτη A application B client side server side n n n Κατανεμημένα Συστήματα 51 lalis@inf.uth.gr

επεξεργασία αίτησης στον εξυπηρετητή A application B process client side server side n n n Κατανεμημένα Συστήματα 52 lalis@inf.uth.gr

βλάβη πελάτη A application B process client side server side n n Κατανεμημένα Συστήματα 53 lalis@inf.uth.gr

ανάκαμψη πελάτη & ειδοποίηση εξυπηρετητών A B process client side n n server side n incarnation number Κατανεμημένα Συστήματα 54 lalis@inf.uth.gr

ακύρωση αίτησης στον εξυπηρετητή A B process client side server side n n Κατανεμημένα Συστήματα 55 lalis@inf.uth.gr

Βλάβη πελάτη χωρίς επανεκκίνηση Ρητός έλεγχος λειτουργίας πελάτη Ο εξυπηρετητής ελέγχει περιοδικά την λειτουργία των πελατών με εκκρεμείς αιτήσεις Αν δεν λάβει απάντηση από κάποιον πελάτη, διαγράφει τις αντίστοιχες εκκρεμείς αιτήσεις Αιτήσεις με περιορισμένη διάρκεια ζωής Ο πελάτης ανανεώνει ρητά (με μήνυμα) την διάρκεια ζωής των εκκρεμών αιτήσεων, σε τακτά διαστήματα Ο εξυπηρετητής ακυρώνει τις «ληγμένες» αιτήσεις Κατανεμημένα Συστήματα 56 lalis@inf.uth.gr

Απομακρυσμένη Κλήση Διαδικασίας (Remote Procedure Call RPC) Κατανεμημένα Συστήματα 57 lalis@inf.uth.gr

Απομακρυσμένη κλήση διαδικασίας Αλληλεπίδραση client-server (-reply), προσαρμοσμένη ή ενσωματωμένη σε γλώσσα/περιβάλλον προγραμματισμού Η διασύνδεση προγραμματισμού εφαρμογής έχει την μορφή συμβατικών κλήσεων συνάρτησης που εκτελούνται απομακρυσμένα απόκρυψη των λεπτομερειών της επικοινωνίας και (απο)σειροποίησης δεδομένων πάνω από το δίκτυο Οικείο μοντέλο προγραμματισμού πιο γρήγορη ανάπτυξη λογισμικού με λιγότερα λάθη Στο παρασκήνιο, μια σειρά από λειτουργίες υλοποιούν την επιθυμητή λειτουργικότητα με διαφανή τρόπο Κατανεμημένα Συστήματα 58 lalis@inf.uth.gr

Δόμηση λογισμικού υπηρεσίας RPC RPC runtime υλοποιεί το πρωτόκολλο επικοινωνίας πάνω από το δίκτυο Client stub ανάμεσα στον πελάτη και το RPC runtime πακετάρει τις παραμέτρους της κλήσης ξεπακετάρει τα αποτελέσματα Server stub ανάμεσα στο RPC runtime και τον κώδικα της διαδικασίας, ξεπακετάρει τις παραμέτρους της κλήσης καλεί τη διαδικασία και πακετάρει τα αποτελέσματα Τα client/server stubs μπορεί να παράγονται αυτόματα μέσω ειδικών εργαλείων (stub generators) με βάση μια συντακτική περιγραφή/δήλωση (σε IDL) Κατανεμημένα Συστήματα 59 lalis@inf.uth.gr

η εφαρμογή έχει την ψευδαίσθηση ότι κάλεσε μια τοπική συνάρτηση ο κώδικας που καλείται είναι μια συμβατική συνάρτηση Client Server call return user level return call pack args unpack result stub level pack result unpack args send receive reply RPC-runtime send reply receive Κατανεμημένα Συστήματα 60 lalis@inf.uth.gr

μοναδικό αναγνωριστικό διασύνδεσης, για ανακάλυψη και έλεγχο συμβατότητας περιγραφή διασύνδεσης ανεξάρτητη γλώσσας προγραμματισμού πρόγραμμα πελάτη κατασκευή client stub κατασκευή server stub πρόγραμμα εξυπηρετητή διασύνδεσης στην γλώσσα εφαρμογής Κατανεμημένα Συστήματα 61 lalis@inf.uth.gr

Ζητήματα διαφάνειας Σημασιολογία κλήσης at most once, at least once, exactly once Πέρασμα παραμέτρων & επιστροφή αποτελεσμάτων κοινή αναπαράσταση / σειριοποίηση δεδομένων Ανεύρεση του κόμβου του εξυπηρετητή μηχανισμός/πρωτόκολλο ανακάλυψης Διαχωρισμός ανάμεσα σε διαφορετικές διαδικασίες ανοιχτό σύστημα όπου διάφορες διαδικασίες ορίζονται και υλοποιούνται από διαφορετικούς προγραμματιστές αποφυγή «σύγκρουσης» ονομάτων Απόδοση ελαχιστοποίηση κόστους/καθυστέρησης ταυτόχρονη/παράλληλη εξυπηρέτηση Κατανεμημένα Συστήματα 62 lalis@inf.uth.gr

Υποστήριξη για διαφορετικές γλώσσες Η εφαρμογή που καλεί την απομακρυσμένη διαδικασία μπορεί να είναι γραμμένη σε διαφορετική γλώσσα από την υλοποίηση της διαδικασίας στον εξυπηρετητή επιθυμητή ανεξαρτησία ανάπτυξης πελάτη-εξυπηρετητή Για να επιτευχθεί διαλειτουργικότητα, απαιτείται κοινή γλώσσα προσδιορισμού της διασύνδεσης κοινό πρωτόκολλο επικοινωνίας πελάτη-εξυπηρετητή πρότυπα αναπαράστασης/ σειριοποίησης δεδομένων Για κάθε περιβάλλον / γλώσσα προγραμματισμού χρειάζονται κατάλληλοι μετατροπείς (adapters) για την κατασκευή των client και server stubs που επικοινωνούν με το RPC runtime Σύγχρονη λύση: web-based protocols, SOAP/W3C Κατανεμημένα Συστήματα 63 lalis@inf.uth.gr