Πανεπιστήµιο Αιγαίου Τµήµα Μηχανικών Πληροφοριακών & Επικοινωνιακών Συστηµάτων Πρόγραµµα Προπτυχιακών Σπουδών Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο Κατανεµηµένος Προγραµµατισµός (Γενικά Αρχές) Κωνσταντίνος Ράπτης Πραγµατικά Υπολογιστικά Συστήµατα Τυπικά κατανεµηµένα και ολοκληρωµένα πολλαπλοί υπολογιστές εργάζονται µαζί βελτιώνοντας, µεταξύ άλλων, την κλιµάκωση και την διαθεσιµότητα. χρησιµοποιούν τεχνολογίες ενδιαµέσων (middleware) ως συνδετικούς κρίκους.
Τι είναι ένας ενδιάµεσος; Αποτελεί των συνδετικό κρίκο µεταξύ λογισµικού και επιπλέον περιλαµβάνει συνεργαζόµενες υπηρεσίες για την κατασκευή κατανεµηµένων συστηµάτων. Αναλαµβάνει τις κλήσεις σε αποµακρυσµένες υπηρεσίες εµφανίζει τον κατανεµηµένο προγραµµατισµό ως τοπικό καλύπτει τις δικτυακές πολυπλοκότητες και γενικότερα τις πολυπλοκότητες του κατανεµηµένου προγραµµατισµού Ενδιάµεσος: Βασικά τµήµατα Εφαρµογές Αποµακρυσµένες επικλήσεις µεθόδων Αποµακρυσµένες κλήσεις διαδικασιών Πρωτόκολλο αίτησης/απόκρισης Αναπαράσταση δεδοµένων Ενδιάµεσος Λειτουργικό σύστηµα / ίκτυο
Ενδιάµεσος: Συνεργαζόµενες υπηρεσίες Βασικά πρόσθετα στον ενδιάµεσο Εκπληρώνουν κοινές ανάγκες των εφαρµογών σε ένα κατανεµηµένο σύστηµα Ασφάλειας ιαδράσεων Κατάλογου Ονοµασίας Ενδιάµεσος Ενδιάµεσος: Ουσιαστική συνεισφορά Βοηθάει στην αντιµετώπιση προβληµάτων, όπως: προσπέλαση σε παλαιά συστήµατα, ακεραιότητα δεδοµένων, κλιµάκωση, διαθεσιµότητα, ολοκλήρωση µεταξύ ετερογενών τµηµάτων.
Ενδιάµεσος: Πλεονεκτήµατα Πλεονεκτήµατα κρύβει το ετερογενές περιβάλλον > πρωτόκολλα > υλικό > λειτουργικά συστήµατα > γλώσσες προγραµµατισµού επιτρέπει τη διαφάνεια τοποθεσίας Ενδιάµεσος : Πλεονεκτήµατα (συν.) παρέχει υπηρεσίες > ασφάλειας > ονοµατολογίας > καταλόγου >...
Κατανεµηµένος Προγραµµατισµός Εµπεριέχει: τοπικό προγραµµατισµό και δεδοµένα διαφανή ολοκλήρωση και κατανοµή κλήσεις σε αποµακρυσµένα προγράµµατα προσπέλαση αποµακρυσµένων δεδοµένων κατανεµηµένη φόρτωση σε πολλά συστήµατα αξιοπιστία µέσω αυτονοµίας Κατανεµηµένος Προγραµµατισµός: ιαφάνεια φαινοµενικά ως τοπικός προγραµµατισµός κλήσεις διαδικασιών αντικείµενα εξαρτήµατα * Όµως, ο κατανεµηµένος προγραµµατισµός δεν είναι τοπικός *
Κατανεµηµένος Προγραµµατισµός: Θέµατα ιαφάνειας Ύπαρξη δικτύου λανθάνουσα κατάσταση κολλήµατα εφαρµογών, συµφόρηση δικτύου, αποτυχίες σπασµένοι δεσµοί, χαµένα µηνύµατα,. οι εφαρµογές πρέπει να έχουν την έννοια του δικτύου Αποµακρυσµένες ιαδικασίες διαδικασίες, όχι µέθοδοι Τα πρότυπα είναι ανεξάρτητα γλώσσας προγραµµατισµού οι πελάτες δεν γνωρίζουν και δεν ενδιαφέρονται για την γλώσσα προγραµµατισµού της εφαρµογής του εξυπηρετητή προσδιορίζεται η διεπαφή της διαδικασίας µε τρόπο ανεξάρτητο ως προς τη γλώσσα προγραµµατισµού
Μοντέλο Αντικειµένου Αντικείµενο δεδοµένα µέθοδοι Σηµαντικό στοιχείο: ενθυλάκωση Αναφορές αντικειµένων µοναδικές ταυτότητες αντικειµένων δεν πρέπει να επαναχρησιµοποιούνται δεν πρέπει να συγχέονται µε τους δείκτες Μοντέλο Αντικειµένου (συν.) Μοντέλο αλληλεπίδρασης: επίκληση µεθόδων αναφορά αντικειµένου + όνοµα µεθόδου ιεπαφές υπογραφή συνόλου µεθόδων > τύποι ορισµάτων > επιστρεφόµενες τιµές > εξαιρέσεις
Μοντέλο Αντικειµένου (συν.) Εξαιρέσεις σηµατοδοτούν σφάλµατα διαχωρίζουν τη διαχείριση σφαλµάτων ο έλεγχος περνάει στον κώδικα διαχείρισης σφάλµατος στόχος: επαναφορά από σφάλµατα προκειµένου να αποφευχθεί η αποτυχία Συλλογή σκουπιδιών διαγράφονται αντικείµενα τα οποία δεν χρησιµοποιούνται Αποµακρυσµένα Αντικείµενα οι κλήσεις αποµακρυσµένων διαδικασιών δεν ήταν αντικειµενοστραφής ως συνέπεια έχουµε τους Object Request Brokers αποµακρυσµένα αντικείµενα µε µεθόδους δηµιουργία/τοποθέτηση αποµακρυσµένων αντικειµένων κλήση των µεθόδων τους
Αποµακρυσµένα Αντικείµενα (συν.) πλέον καλούνται οι µέθοδοι αντικειµένων τα αντικείµενα κρατάνε τα δεδοµένα πολλοί πελάτες δύναται να συνδεθούν σε ένα αντικείµενο ζητήµατα διαφάνειας η διάρκεια ζωής ενός αντικειµένου δηµιουργία, διαγραφή, συλλογή σκουπιδιών ταυτοχρονισµός Αποµακρυσµένα αντικείµενα (συν.) Συχνά υιοθετείται η αρχιτεκτονική πελάτη/εξυπηρετητή πιθανές σειρές αλληλεπιδράσεων ενισχύεται η ενθυλάκωση ύναται να δηµιουργηθούν αντίγραφα ύναται να µεταναστεύσουν ύναται να προσπελασθούν ταυτοχρόνως
Αποµακρυσµένα αντικείµενα (συν.) Λαµβάνουν αποµακρυσµένες επικλήσεις µεθόδων απαιτούνται αποµακρυσµένες αναφορές αντικειµένων θα πρέπει να είναι µοναδικές σε ολόκληρο το σύστηµα δύναται να χρησιµοποιούνται ως παράµετροι και αποτελέσµατα αποµακρυσµένων επικλήσεων Εκθέτουν αποµακρυσµένες διεπαφές Εξαρτήµατα Λογισµικού Τα εξαρτήµατα είναι: επαναχρησιµοποιούµενα τµήµατα λογισµικού µε ορισµένη και σταθερή συµπεριφορά µέσω διεπαφών, καταστάσεων και ιδιοτήτων Επιτρέπουν απλή και αποτελεσµατική επαναχρησιµοποίηση κώδικα τοπικά και αποµακρυσµένα εξαρτήµατα ελαχιστοποιείται η πολυπλοκότητα µέσω των διεπαφών
Εξαρτήµατα Λογισµικού (συν.) Τα εξαρτήµατα δεν είναι αντικείµενα δεν υπάρχει κληρονοµικότητα δεν υπάρχει εγγενής κατάσταση Ως πλεονεκτήµατα επαναχρησιµοποιούµενος κώδικας µε ορισµένη συµπεριφορά σταθερά και αξιόπιστα ιεπαφές Ορίζουν συµπεριφορά/λειτουργία τα εξαρτήµατα µπορούν να υποστηρίξουν πολλαπλές διεπαφές ίδιες διεπαφές δύναται να παρέχονται από πολλαπλά εξαρτήµατα πολυµορφισµός Οι πελάτες προσπελάζουν µόνο µεθόδους και ιδιότητες όχι τα αντικείµενα και ούτε το εσωτερικό τους
Γλώσσες Ορισµού ιεπαφών Interface Definition Languages - IDL Ο ορισµός διεπαφών ενσωµατώνεται σε µία γλώσσα προγραµµατισµού επιτρέπει τη χρήση µίας απλής γλώσσας επιτρέπει την απεικόνιση παραµέτρων εισόδου/εξόδου ως κανονικές παράµετροι Πρόβληµα: ετερογένεια Λύση: οι γλώσσες ορισµού διεπαφών ανεξάρτητες από τις γλώσσες υλοποίησης Γλώσσες Ορισµού ιεπαφών // Person.idl Struct Person { string name; string place; long year; }; interface PersonList { readonly attribute string listname; void addperson(in Person p); void getperson(in string name, out Person p); }; CORBA IDL
Κατανεµηµένη Συλλογή Σκουπιδιών Θα πρέπει να υποστηρίζεται, εάν είναι δυνατόν Συνεργασία µεταξύ τοπικού συλλέκτη σκουπιδιών κατανεµηµένου συλλέκτη σκουπιδιών Συνήθως βασίζεται σε µέτρηση αναφορών Εξαιρέσεις Νέες αποτυχίες αποτυχία αποµακρυσµένης διαδικασίας λανθάνουσα κατάσταση διαδικασίας ή µέσου χάσιµο µηνυµάτων Νέες εξαιρέσεις αποµακρυσµένες εξαιρέσεις
Κατανεµηµένες Εφαρµογές Μοντέλο peer-to-peer : εξυπηρετητής ηλεκτρονικού ταχυδροµείο µε εξυπηρετητή ηλεκτρονικού ταχυδροµείου (mail server to mail server) τηλεφωνικές συναλλαγές επιχειρηµατικές (business to business) Κατανεµηµένες Εφαρµογές (συν.) Εφαρµογές πολλαπλών επιπέδων (multi-tier applications) επίπεδο πελάτη: διεπαφές χρήστη επίπεδο εφαρµογής: διεργασίες και κανόνες επίπεδο δεδοµένων: προσπέλαση δεδοµένων και κανόνες ακεραιότητας δεδοµένων
Εφαρµογές πολλαπλών επιπέδων Επίπεδο πελάτη (client layer) στατικές σελίδες Web Web-based µέσω προγραµµάτων CGI ενεργές σελίδες Web στον πελάτη ενεργές σελίδες web στον εξυπηρετητή παραδοσιακές εφαρµογές πελάτη πελάτες υπηρεσιών web Εφαρµογές πολλαπλών επιπέδων (συν.) Επίπεδο εφαρµογής (application layer) πιθανών πολλαπλά επίπεδα κατανοµή και αντιγραφή ανάλογα βασικός στόχος η επαναχρησιµοποίηση της λογικής (business logic)
Εφαρµογές πολλαπλών επιπέδων (συν.) Επίπεδο δεδοµένων (data layer) προάγεται η ακεραιότητα των δεδοµένων αποµόνωση της λογικής από τα δεδοµένα δύναται να διαιρεθούν και να αντιγραφούν Πηγές - Βιβλιογραφία George Coulouris, Jean Dollimore and Tim Kindberg, Distributed Systems: Concepts and Design, 3rd Edition, Addison-Wesley, 2001.
Προτεινόµενα άρθρα Andrew Birrell, Greg Nelson, Susan S. Owicki and Edward Wobber, Network Objects, Software Practice and Experience 25 (S4) : 87-130 (1995). Theo Dirk Meijler and Oscar Nierstrasz, Beyond Objects: Components, In Cooperative Information Systems: Current Trends and Directions, M. P. Papazoglou, G. Schlageter (Ed.), Academic Press, 49-78 (1997). R. Schantz and D. Schmidt, Middleware for Distributed Systems: Evolving the Common Structure for Network-centric Applications, Encyclopedia of Software Engineering, Wiley & Sons, 2001.