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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HTTP API v1.6 SMSBOX.GR HTTP API v

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Remote Method Invocation (RMI)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ταυτόχρονος Προγραμματισμός

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

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

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ

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

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

IPC System V. Προγραμματισμός II 1

Ειδικά Θέματα Προγραμματισμού

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

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

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

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

ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr

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

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

Πρωτόκολλο μεταφοράς Πρέπει να οριστεί η αλληλεπίδραση ανάμεσα στην πλευρά του πελάτη και την πλευρά του εξυπηρετητή Βασική διάσταση υλοποίησης: αυστηρά σειριακή ή ταυτόχρονη αποστολή αιτήσεων από την πλευρά του πελάτη (με αντίστοιχη επεξεργασία στην πλευρά του εξυπηρετητή) Βασική διάσταση υλοποίησης: χειρισμός βλαβών εξυπηρετητή και πελάτη Κατανεμημένα Συστήματα 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

Βλάβη εξυπηρετητή Χωρίς επανεκκίνηση Ο πελάτης εγκαταλείπει μετά από κάποιες προσπάθειες Αν δεν έρθει απάντηση, ο εξυπηρετητής επεξεργάστηκε την αίτηση το πολύ μια φορά (at most once) Επανεκκίνηση χωρίς μόνιμη μνήμη Ο πελάτης προσπαθεί μέχρι να λάβει απάντηση Όταν έρθει απάντηση, ο εξυπηρετητής επεξεργάστηκε την αίτηση τουλάχιστον μια φορά (at least once) Επανεκκίνηση με μόνιμη μνήμη Ο πελάτης προσπαθεί μέχρι να λάβει απάντηση Όταν έρθει απάντηση, ο εξυπηρετητής επεξεργάστηκε την αίτηση ακριβώς μια φορά (exactly once) Κατανεμημένα Συστήματα 30 lalis@inf.uth.gr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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