Ε ΝΤΟΠΙΣΜΟΣ Κ ΙΝΟΥΜΕΝΩΝ Α ΝΤΙΚΕΙΜΕΝΩΝ ΠΑΡΟΥΣΙΑΣΗ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗΣ ΕΡΓΑΣΙΑΣ Βόγκλης Κωνσταντίνος Τσίπουρας Μάρκος
Εντοπισμός Κινούμενων Αντικειμένων Αντικείμενο της εργασίας Υλοποίηση Υπηρεσίας Καταλόγου (directory service) Εργαλείο Voyager (οικογένεια προϊόντων για κατανεμημένες εφαρμογές) Μέθοδοι Υπηρεσίας Καταλόγου με χρήση Home Location Register Υπηρεσίας Καταλόγου με χρήση ιεραρχικής δομής (δέντρο)
Εντοπισμός Κινούμενων Αντικειμένων Σημερινή κατάσταση στο Internet Όλο και περισσότεροι χρήστες του Internet δεν έχουν σταθερό σημείο πρόσβασης, ούτε ζητάνε σταθερούς πόρους Αναπτύσσονται εφαρμογές για τις οποίες είναι απαραίτητη η μετακίνηση λογισμικού και δεδομένων σε ένα δίκτυο (ubiquitous computing). Απαιτείται δυναμική μεταφορά WEB σελίδων μεταξύ replication servers Πράκτορες λογισμικού (software agents) χρειάζεται να μετακινούνται στο δίκτυο σε αναζήτηση πληροφορίας Με την ανάπτυξη της Java, ο μεταφέρσιμος κώδικας αποτελεί σημαντικό συστατικό εφαρμογών WEB
Εντοπισμός Κινούμενων Αντικειμένων Ανάγκες που Δημιουργούνται Δημιουργία αντιστοίχησης μεταξύ του ονόματος του κινούμενου αντικειμένου και της τρέχουσας διεύθυνσής του Ανάπτυξη εφαρμογών που διαχειρίζονται κινούμενα αντικείμενα Οι εφαρμογές να είναι επεκτάσιμες να εκμεταλλεύονται την τοπικότητα να είναι σταθερές να έχουν ανοχή στα λάθη Ανάπτυξη απανταχού επικοινωνίας (ubiquitous) Διατήρηση της μυστικότητας της θέσης Μετατροπή μεταξύ πρωτοκόλλων Γενικότητα της αρχιτεκτονικής
Εντοπισμός Κινούμενων Αντικειμένων Προηγούμενη Δουλειά Για την υλοποίηση υπηρεσίας καταλόγου έχουν προταθεί πολλές τεχνικές : Χρήση Home Location Register, για αποθήκευση της τρέχουσας θέσης ενός αντικειμένου. Το HLR είναι ένα σύνολο εγγραφών (μια για κάθε αντικείμενο) που βρίσκονται σε έναν κόμβο και περιέχουν την τρέχουσα θέση των κινούμενων αντικειμένων. Ιεραρχική κατανομή μιας γεωγραφικής περιοχής, σε μικρότερες. Συνήθως χρησιμοποιείται δεντρική δομή τα φύλλα της οποίας περιέχουν πληροφορίες για κινούμενα αντικείμενα στην περιοχή τους Χρήση κεντρικοποιημένης σχεσιακής βάσης δεδομένων στην οποία αποθηκεύονται στοιχεία σχετικά με τη θέση και τη κατάσταση του αντικειμένου και στην οποία γίνονται κάποιοι υπολογισμοί για να προβλεφθεί η μελλοντική τους θέση.
Εντοπισμός Κινούμενων Αντικειμένων Υλοποίηση - Εργαλείο Voyager Για την υλοποίηση υπηρεσίας καταλόγου θα χρησιμοποιήσουμε την οικογένεια προϊόντων Voyager. Πλεονεκτήματα : Απλοποίηση πρόσβασης στα πιο κοινά βιομηχανικά πρότυπα (CORBA, RMI και DCOM) Απλοποίηση της δημιουργίας κατανεμημένων συστημάτων. (π.χ. οι Java κλάσεις δεν χρειάζεται να τροποποιηθούν για να χρησιμοποιηθούν από απόσταση) Προσφέρουν μια παγκόσμια αρχιτεκτονική που απομονώνει τον κώδικα του χρήστη από λεπτομέρειες επικοινωνιακών πρωτοκόλλων Υποστήριξη των ποιο γνωστών πρωτοκόλλων υπηρεσίας απόδοσης ονομάτων (CORBA, RMI, DCOM)
Εντοπισμός Κινούμενων Αντικειμένων Υλοποίηση - Εργαλείο Voyager Χαρακτηριστικά : Επιτρέπει την από απόσταση ενεργοποίηση μιας Java κλάσης κατά την εκτέλεση μιας εφαρμογής (runtime). Μπορούμε να κατασκευάσουμε ένα απομακρυσμένο στιγμιότυπο μιας κλάσης και να δημιουργήσουμε έναν proxy για το αντικείμενο αυτό Οι κλάσεις μπορούν να φορτώνονται δυναμικά από μια ή περισσότερες τοποθεσίες. Μέθοδοι που καλούνται στον proxy προωθούνται στο αντικείμενο του Αν συμβεί μια απομακρυσμένη εξαίρεση, συλλαμβάνεται και επιστρέφεται τοπικά. Επιτρέπει δημιουργία αυτόνομων κινητών πρακτόρων
Εντοπισμός Κινούμενων Αντικειμένων Υλοποίηση - Βήματα Η υλοποίηση περιλαμβάνει τα ακόλουθα βήματα: Εγκατάσταση του Voyager Εξοικείωση με το περιβάλλον του. Υλοποίηση βασικών παραδειγμάτων Δημιουργία κινητών πρακτόρων Εντοπισμός της κλάσης που υλοποιεί την υπηρεσία καταλόγου Συνδυασμός των μεθόδων της κλάσης αυτής, με δομές έτσι ώστε να καταλήξουμε στους δυο τρόπους υλοποίησης της υπηρεσίας καταλόγου. Μετρήσεις απόδοσης
Εντοπισμός Κινούμενων Αντικειμένων Υλοποίηση - Τι έχει γίνει Έχει γίνει η εγκατάσταση στo εργαστήριο με τα SUN ultra Έχουν υλοποιηθεί τα βασικά παραδείγματα χρήσης του Voyager (δημιουργία απομακρυσμένων αντικειμένων, επικοινωνία, ανταλλαγή μηνυμάτων, μετακίνηση) Η κλάση που υλοποιεί την βασική υπηρεσία καταλόγου είναι η Directory. Περιλαμβάνει μεθόδους για εισαγωγή και διαγραφή μιας εγγραφής
Εντοπισμός Κινούμενων Αντικειμένων Υλοποίηση - Χρονοδιάγραμμα
Εντοπισμός Κινούμενων Αντικειμένων Δομές Σχήμα δύο Επιπέδων (two-tier scheme) Ιεραρχικό Σχήμα (hierarchical Scheme)
Εντοπισμός Κινούμενων Αντικειμένων Σχήμα Δυο Επιπέδων (two-tier) Τοπική Βάση Δεδομένων (Home Location Register - HLR ένας για κάθε ζώνη) Σχετίζεται με κάθε χρήστη Προκαθορισμένος για κάθε χρήστη Περιέχει την τρέχουσα τοποθεσία του χρήστη Όταν ο χρήστης μετακινηθεί, ενημερώνει τον HLR για την νέα του τοποθεσία Χρησιμοποιείται σε κινητή τηλεφωνία και mobile IP
Εντοπισμός Κινούμενων Αντικειμένων Σχήμα Δυο Επιπέδων (two-tier) Επέκταση - Βελτίωση του HLR (Visitors Location Registers - VLRs) Σχετίζεται με κάθε χρήστη που δεν ανήκει στην συγκεκριμένη ζώνη Περιέχει την τρέχουσα τοποθεσία του χρήστη Ένας χρήστης, εξετάζεται πρώτα αν βρίσκεται στον τοπική VLR και μετά η κλήση πηγαίνει στον HLR. Όταν ο χρήστης μετακινηθεί διαγράφεται η εγγραφή του στον αρχικό VLR και δημιουργείται μία νέα εγγραφή στον τελικό VLR.
HLR VLR Δίκτυο Εντοπισμός Κινούμενων Αντικειμένων Σχήμα Δυο Επιπέδων (two-tier)
Εντοπισμός Κινούμενων Αντικειμένων Ιεραρχικό σχήμα Κατακερματισμός του συνολικού δικτύου σε περιοχές Δημιουργία ενός Κόμβου Καταλόγου για κάθε περιοχή Ο Κόμβος Κατάλογος περιέχει την τρέχουσα τοποθεσία του κάθε χρήστη Δημιουργία ενός επιπέδου πιο πάνω από ευρύτερες περιοχές Δημιουργία ενός Κόμβου Καταλόγου για κάθε ευρύτερη περιοχή Ο Κόμβος Κατάλογος περιέχει την τρέχουσα τοποθεσία του κάθε Κόμβου Καταλόγου του προηγούμενου επιπέδου
Εντοπισμός Κινούμενων Αντικειμένων Ιεραρχικό σχήμα Εικονικό Δέντρο Αναζήτησης
Εντοπισμός Κινούμενων Αντικειμένων Ιεραρχικό σχήμα Κάθε κόμβος περιέχει πληροφορίες μόνο για το υποδέντρο του Η εισαγωγή - διαγραφή ενός αντικειμένου γίνεται με διαδοχική αίτηση των κόμβων από το αντίστοιχο φύλλο μέχρι την ρίζα και ολοκλήρωση της πράξης με ενημέρωση από τη ρίζα μέχρι το φύλλο
Εντοπισμός Κινούμενων Αντικειμένων Παράδειγμα εφαρμογής - Κώδικας import com.objectspace.voyager.*; import com.objectspace.voyager.directory.*; public class naming_test { public static void main( String[] args ) { try { Voyager.startup(); // δημιουργία καταλόγου αρχικών ονομάτων String dirClass=Directory.class.getName(); IDirectory symbols=(IDirectory)Factory.create(dirClass,"//pontus:8000"); symbols.put("CV","costas voglis"); symbols.put("MT","markos tsipouras"); // δημιουργία 2ου καταλόγου root IDirectory root=(IDirectory)Factory.create(dirClass,"//halimedes:9000"); root.put("symbols",symbols); // πρόσβαση στο symbols από το root System.out.println("CV -> " + root.get( "symbols/CV")); System.out.println("MT -> " + root.get( "symbols/MT")); root.remove("symbols/MT"); System.out.println("MT -> " + root.get( "symbols/MT")); } catch( Exception exception ) { System.err.println( exception ); } Voyager.shutdown(); } }
Εντοπισμός Κινούμενων Αντικειμένων Παράδειγμα εφαρμογής - Αποτέλεσμα > voyager 8000 voyager 3.2 copyright objectspace > voyager 9000 voyager 3.2 copyright objectspace > java naming_test.class CV->costas voglis MT->markos tsipouras MT->NULL >