Η Υλοποίηση της Επικοινωνίας στα Κατανεµηµένα Συστήµατα ιαφάνειες στα πλαίσια του µαθήµατος: Κατανεµηµένα Συστήµατα Ε Εξάµηνο, Τµήµα Πληροφορικής και Τεχνολογίας Υπολογιστών, ΤΕΙ Λαµίας Πέτρος Λάµψας 2002
Μεταβίβαση Μηνυµάτων (Message Passing) Η επικοινωνία στα κατανεµηµένα συστήµατα βασίζεται στη µεταβίβαση µηνυµάτων Όταν µια διεργασία Α θέλει να επικοινωνήσει µε µια διεργασία Β σε έναν άλλο κόµβο του κατανεµηµένου συστήµατος, δηµιουργεί το µήνυµα και χρησιµοποιεί µια κλήση συστήµατος που έχει ως αποτέλεσµα να πάρει το ΛΣ το µήνυµα και να το στείλει µέσα από το δίκτυο στη διεργασία Β Οι Α και Β πρέπει να συµφωνήσουν στο νόηµα των bits που στέλνονται! Σελίδα 2
Τρόποι Υλοποίησης Επικοινωνίας Στόµια (Sockets) Κλήσεις Αποµακρυσµένων ιαδικασιών (Remote Procedure Calls (RPCs)) Αποµακρυσµένη Επίκληση Μεθόδου (Remote Method Invocation (RMI)) CORBA Εγγραφή Αντικειµένου (Object Registration) Σελίδα 3
Στόµια (Sockets) Ορίζεται ως το «άκρο της επικοινωνίας» (endpoint for communication) Πρόκειται ουσιαστικά για το συνδυασµό διεύθυνσης IP και θύρας (port) Όλες οι θύρες < 1024 θεωρούνται «γνωστές» (wellknown). Για παράδειγµα: το TELNET χρησιµοποιεί τη θύρα 23 το FTP χρησιµοποιεί τη θύρα 21 ο HTTP server χρησιµοποιεί τη θύρα 80 Σελίδα 4
Στόµια (συνέχεια) Κόµβος Χ ιεύθυνση ΙΡ: 146.86.5.20 socket 146.86.5.20/1625 Web server ιεύθυνση ΙΡ: 161.25.19.8 socket 161.25.19.8/80 Σελίδα 5
Νήµατα Ελέγχου (Threads of Control) Ένα νήµα (lightweight process) είναι η βασική µονάδα που χρησιµοποιεί την ΚΜΕ. Αποτελείται από ένα προσδιοριστή του thread, ένα µετρητή εντολών προγράµµατος, ένα σύνολο καταχωρητών και µια στοίβα Μοιράζεται µε τα άλλα νήµατα που ανήκουν στην ίδια διεργασία το τµήµα κώδικα, το τµήµα δεδοµένων, και άλλους πόρους του ΛΣ όπως ανοικτά αρχεία Μια παραδοσιακή διεργασία έχει ένα νήµα ελέγχου. Λόγω του ότι κατέχει πολλά νήµατα, µια διεργασία µπορεί να κάνει ταυτόχρονα περισσότερες της µιας εργασίες Σελίδα 6
Οφέλη από τη χρήση νηµάτων Απόκριση (Responsiveness) ιαµοιρασµός Πόρων Οικονοµία Πόρων Υπολογιστικού Συστήµατος (µνήµης και χρόνου ΚΜΕ) Αξιοποίηση πολυεπεξεργαστικών αρχιτεκτονικών Σελίδα 7
Sockets και Java Sockets Αν θεωρήσουµε τον προσδιορισµό µιας σύνδεσης µεταξύ νηµάτων µια πεντάδα της µορφής {protocol, local_addr, local_process, foreign_address, foreign_process}, τότε ένα socket µπορεί να θεωρηθεί ως µια από τις δύο τριάδες. Χρειάζονται δύο sockets για να προσδιορίσουν δύο νήµατα που επικοινωνούν H Java παρέχει: Connection-Oriented (TCP) Sockets (Socket Class) Connection-less (UDP) Sockets (DatagramSocket Class) Multicast Connection-less Socket (MulticastSoscket class) Σελίδα 8
Παράδειγµα Υλοποίησης server socket σε Java public Server() { // create the socket the server will listen to try { s = new ServerSocket(5155); System.out.println("Server is listening..."); try { while (true) { client = s.accept(); // create a separate thread to service the request c = new Connection(client); c.start(); Σελίδα 9
Παράδειγµα Υλοποίησης client socket σε Java import java.net.*; import java.io.*; public class Client { public Client() { Socket s = new Socket("127.0.0.1",5155); InputStream in = s.getinputstream(); BufferedReader bin = new BufferedReader(new InputStreamReader(in)); System.out.println(bin.readLine()); s.close(); Σελίδα 10
Κλήσεις Αποµακρυσµένων ιαδικασιών (Remote Procedure Calls RPCs) Τα στόµια θεωρούνται µηχανισµοί χαµηλού επιπέδου (low-level mechanisms) Τα RPCs προσφέρουν µια µορφή επικοινωνίας υψηλού επιπέδου Στην περίπτωση αυτή ο πελάτης κάνει µια κλήση µιας συνάρτησης ή διαδικασίας (function ή procedure) σε έναν «αποµακρυσµένο» εξυπηρετητή χρησιµοποιώντας τους κανονικούς µηχανισµούς κλήσης των διαδικασιών Σελίδα 11
Αποµακρυσµένη Επίκληση Μεθόδου (Remote Method Invocation RMI) Η έκδοση της Java για τo RPC Ένα νήµα µπορεί να καλέσει µια µέθοδο σε ένα αποµακρυσµένο αντικείµενο (invoke a method on a remote object) Ένα αντικείµενο θεωρείται αποµακρυσµένο αν «κατοικεί» σε µια διαφορετική εικονική µηχανή (Java Virtual Machine) Σελίδα 12
Αποµακρυσµένη Επίκληση Μεθόδου (συνέχεια) Σελίδα 13
RPC εναντίον RMI To RPC υποστηρίζει το συναρτησιακό προγραµµατιστικό στυλ (procedural programming) To RMI υποστηρίζει το αντικειµενοστραφές προγραµµατιστικό στυλ (object-oriented programming) Οι παράµετροι στο RPC είναι συνηθισµένες δοµές δεδοµένων (data structures) Οι παράµετροι στο RMI είναι αντικείµενα Σελίδα 14
Μοντέλο Κατανεµηµένων Αντικειµένων A remote invocation B local C invocation local E invocation local invocation D remote invocation F Κάθε διεργασία περιέχει αντικείµενα, κάποια από τα οποία µπορούν να δεχθούν αποµακρυσµένες επικλήσεις, άλλα µόνο τοπικές επικλήσεις Αυτά που µπορούν να λάβουν αποµακρυσµένες επικλήσεις καλούνται αποµακρυσµένα αντικείµενα (remote objects) Τα αντικείµενα χρειάζεται να γνωρίζουν την αναφορά των αποµακρυσµένων αντικειµένων µιας άλλης διεργασίας προκειµένου να καλέσουν τις µεθόδους τους Η αποµακρυσµένη διεπαφή (remote interface) προσδιορίζει τις µεθόδους που µπορούν να κληθούν από απόσταση Σελίδα 15
Παραποµπές και Πλαίσια (Stubs and Skeletons) H παραποµπή (stub) είναι ένας ενδιάµεσος (proxy) για το αποµακρυσµένο αντικείµενο. Βρίσκεται στη µεριά του πελάτη Η παραποµπή συγκεντρώνει (marshals) τις παραµέτρους και τις αποστέλλει στον εξυπηρετητή σε ένα «δέµα» (parcel) Το πλαίσιο (skeleton) είναι στη µεριά του εξυπηρετητή Το πλαίσιο εξάγει τις παραµέτρους και τις παραδίδει στον εξυπηρετητή, όπου και καλείται η µέθοδος. Τα αποτελέσµατα επιστρέφουν µε δέµα στον πελάτη Σελίδα 16
Συγκέντρωση και Πέρασµα Παραµέτρων (Marshalling) Σελίδα 17
Αρχιτεκτονική της αποµακρυσµένης επίκλησης µεθόδου object A client proxy for B Request server skeleton & dispatcher for B s class remote object B Reply Remote Communication reference module module Communication module Remote reference module Σελίδα 18
Συγκέντρωση και Πέρασµα Παραµέτρων (συνέχεια) Το RMI είναι έτσι φτιαγµένο ώστε να είναι διαφανείς οι παραποµπές και τα πλαίσια, ώστε να καλούνται οι µέθοδοι ως να πρόκειται για τοπικές µεθόδους Αν οι παράµετροι είναι τοπικές περνιούνται µε αντίγραφα µε τεχνική γνωστή και ως object serialization. Αν οι παράµετροι είναι αποµακρυσµένες περνιούνται µε αναφορά Τοπικά αντικείµενα για να περαστούν παράµετροι σε αποµακρυσµένα αντικείµενα θα πρέπει να υλοποιούν τη διεπαφή java.io.serializable Σελίδα 19
CORBA To RMI είναι τεχνολογία Java-to-Java H CORBA είναι Middleware που επιτρέπει σε διαφορετικές εφαρµογές πελάτη και εξυπηρετητή να επικοινωνήσουν Η Interface Definition Language (IDL) είναι ένας γενικός τρόπος να περιγραφεί µια διεπαφή προς µια υπηρεσία που παρέχεται από ένα αποµακρυσµένο αντικείµενο Το Object Request Broker (ORB) επιτρέπει σε πελάτες και εξυπηρετητές να επικοινωνήσουν µέσω της IDL Το Internet InterORB Protocol (IIOP) είναι ένα πρωτόκολλο που προσδιορίζει πως επικοινωνούν τα ORBs Σελίδα 20
Μοντέλο CORBA Σελίδα 21