Εισαγωγή στην πλατφόρμα κινητών αντιπροσώπων Grasshopper Δημήτρης Καρτέρης dkart@di.uoa.gr
Τι είναι ένας Κινητός Αντιπρόσωπος; Οι κινητοί αντιπρόσωποι (mobile agents) είναι προγράμματα τα οποία μπορούν να μεταναστεύουν από ένα υπολογιστή σε έναν άλλο μέσα σε ένα δίκτυο, σε χρονικές στιγμές και τοποθεσίες της επιλογής τους 2
Τι είναι η Μετανάστευση; Η διαδικασία κατά την οποία η κατάσταση του εκτελούμενου προγράμματος αποθηκεύεται, μεταφέρεται σε ένα νέο υπολογιστή και ανακατασκευάζεται δίνοντας την δυνατότητα στο πρόγραμμα να συνεχίσει την εκτέλεσή του από το σημείο όπου αυτή διακόπηκε 3
Κινητός Κώδικας εναντίον Κινητών Αντιπροσώπων ο παραδοσιακός κινητός κώδικας υποστηρίζει απομακρυσμένη εκτέλεση (remote execution) οι κινητοί αντιπρόσωποι υποστηρίζουν μετανάστευση (migration) 4
Ισχυρή και Αδύναμη Μετανάστευση Ισχυρή Μετανάστευση ο αντιπρόσωπος μεταναστεύει με όλη την κατάσταση εκτέλεσής του Αδύναμη Μετανάστευση ο αντιπρόσωπος μεταναστεύει διατηρώντας μόνο την κατάσταση δεδομένων του 5
Πλεονεκτήματα της Τεχνολογίας των Κινητών Αντιπροσώπων υποστήριξη λειτουργίας χωρίς σύνδεση μειωμένος φόρτος δικτύου μειωμένη καθυστέρηση δυναμική προσαρμογή βελτιωμένη ευρωστία και ανοχή σε σφάλματα αυξημένη ευλυγισία (flexibility) ενθυλάκωση πρωτοκόλλων ανεξαρτησία από πλατφόρμες 6
Εφαρμογές της τεχνολογίας των κινητών αντιπροσώπων ηλεκτρονικό εμπόριο κατανεμημένη ανάκτηση πληροφοριών τηλεπικοινωνιακές υπηρεσίες εφαρμογές ροής εργασιών (workflow apps) παρακολούθηση και γνωστοποίηση διασπορά πληροφορίας παράλληλη επεξεργασία 7
Πλατφόρμες Κινητών Αντιπροσώπων Aglets D Agents (πρώην Agent Tcl) Voyager Odyssey Grasshopper 8
Γενικές πληροφορίες για το Grasshopper πλατφόρμα ανάπτυξης και εκτέλεσης κινητών αντιπροσώπων αναπτύχθηκε από τις GMD FOKUS και IKV++ GmbH μη εμπορική χρήση χωρίς χρέωση Τρέχουσα έκδοση: 2.2.4 web site: www.grasshopper.de 9
Γενικές πληροφορίες για το Grasshopper έχει χτιστεί πάνω από ένα κατανεμημένο αντικειμενοστραφές ενδιάμεσο λογισμικό ενοποίηση της τεχνολογίας των κινητών αντιπροσώπων και του μοντέλου client/server υλοποίηση σε Java συμμορφώνεται: στο πρότυπο MASIF (Mobile Agent System Interoperability Facility) στις προδιαγραφές του FIPA (Foundation for Intelligent Physical Agents) 10
Το Grasshopper είναι ένα......κατανεμημένο Περιβάλλον Αντιπροσώπων (Distributed Agent Environment) Αποτελείται από: Agents Agencies Places Regions 11
Agent Ένας αντιπρόσωπος μπορεί να αποτελείται από μία ή περισσότερες κλάσεις Δύο είδη αντιπροσώπων: Κινητοί (Mobile) Στάσιμοι (Stationary) Καταστάσεις αντιπροσώπου: Ενεργός (Active) Σε αναστολή (Suspended) Αποθηκευμένος (Flushed) 12
Agency παρέχει το περιβάλλον εκτέλεσης των κινητών αντιπροσώπων οι κινητοί αντιπρόσωποι μεταναστεύουν από μία agency σε μία άλλη αποτελείται από: το Core Agency ένα ή περισσότερα Places 13
Places σε αυτά «διαμένουν» ένας ή περισσότεροι αντιπρόσωποι παρέχουν λογική ομαδοποίηση λειτουργικότητας που παρέχεται από ένα Agency 14
Core Agency αντιπροσωπεύει την ελάχιστη λειτουργικότητα η οποία απαιτείται από ένα agency για την υποστήριξη της εκτέλεσης αντιπροσώπων παρέχει τις εξής υπηρεσίες: Communication Service Registration Service Management Service Transport Service Security Service Persistence Service 15
Region διευκολύνει την διαχείριση των agencies, places και agents περιλαμβάνει έναν αριθμό από agencies και μία region registry Τα places και οι agents ενός agency συσχετίζονται αυτόματα με την region στην οποία ανήκει το agency 16
Region Registry παρέχει μία βάση δεδομένων με πληροφορίες για τα agencies, places και τους agents μιας region περιέχει την τρέχουσα τοποθεσία κάθε αντικειμένου το οποίο είναι εγγεγραμμένο στην αντίστοιχη region λειτουργεί ως directory service παρέχοντας λειτουργίες αναζήτησης με χρήση κριτηρίων 17
Κατανεμημένο περιβάλλον αντιπροσώπων 18
Communication Service υπεύθυνη για όλες τις απομακρυσμένες αλληλεπιδράσεις μεταξύ των συστατικών του Grasshopper επικοινωνία με διαφάνεια τοποθεσίας μεταφορά αντιπροσώπων υποστήριξη πολλαπλών πρωτοκόλλων CORBA IIOP MAF IIOP RMI (δυνατότητα χρήσης SSL) Plain sockets (δυνατότητα χρήσης SSL) 19
Communication Service (CS) 20
Διαφάνεια τοποθεσίας ο αντιπρόσωπος δεν γνωρίζει την ακριβή τοποθεσία της οντότητας με την οποία επικοινωνεί επιτυγχάνεται με την χρήση των πληρεξούσιων αντικειμένων (proxy objects) oι απομακρυσμένες επικλήσεις μεθόδων μοιάζουν με τοπικές επικλήσεις σε αντικείμενα της ίδιας JVM υποστηρίζεται μόνο στα πλαίσια μιας region και απαιτεί registry 21
Διαφάνεια τοποθεσίας 22
Τρόποι επικοινωνίας synchronous asynchronous blocking polling call back dynamic multicast 23
Grasshopper URL για άμεση επικοινωνία με ένα αντικείμενο χωρίς διαφάνεια τοποθεσίας, η τοποθεσία-στόχος περιγράφεται με μία URL σύνταξη <protocol>://<host>:<port>/<agency>/<place> 24
Registration Service καταχωρεί όλες τις οντότητες (places, agents) που φιλοξενεί το αντίστοιχο agency και παρέχει πληροφορίες για αυτές είναι συνδεδεμένη με την region registry της region στην οποία ανήκει το αντίστοιχο agency 25
Management Service επιτρέπει την διαχείριση των agents και των places ενός agency από εξωτερικούς χρήστες υποστηρίζει: δημιουργία, αναστολή, απαλοιφή και επανασύνδεση agents και places ανάκτηση λίστας agents και places που φιλοξενούνται σε μία agency ανάκτηση πληροφοριών για agents και places που φιλοξενούνται σε μία agency 26
Transport Service υποστηρίζει την μετανάστευση ενός αντιπροσώπου από ένα agency σε ένα άλλο αναλαμβάνει τον συντονισμό της μεταφοράς του αντιπροσώπου η οποία πραγματοποιείται μέσω της communication service 27
Security Service Εξωτερική ασφάλεια: προστασία απομακρυσμένων αλληλεπιδράσεων μεταξύ κατανεμημένων συστατικών του Grasshopper Χρήση πιστοποιητικών X.509 και πρωτοκόλλου SSL Εσωτερική ασφάλεια: προστασία πόρων των agencies από μη εξουσιοδοτημένους αντιπροσώπους προστασία ενός αντιπροσώπου από τον άλλο χρησιμοποιεί τους μηχανισμούς ασφάλειας της Java 28
Persistence Service παρέχει την δυνατότητα αποθήκευσης των agents και των places ενός agency σε ένα διαρκές μέσο (persistent medium) οπότε, είναι δυνατή η ανάκτηση ενός agent ή ενός place (π.χ. μετά από κατάρρευση του συστήματος) 29
Η Δομή του Αντιπροσώπου αποτελείται από μία ή περισσότερες κλάσεις έχει ακριβώς μία agent class η οποία είναι υποκλάση μιας εκ των κλάσεων: MobileAgent StationaryAgent PersistentMobileAgent PersistentStationaryAgent 30
Η Δομή του Αντιπροσώπου σημαντικότερες μέθοδοι που κληρονομεί η agent class: init(): καλείται αυτόματα από την agency κατά την δημιουργία του αντιπροσώπου live(): η υλοποίησή της πραγματοποιεί την αυτόνομη συμπεριφορά του αντιπροσώπου. πρέπει οπωσδήποτε να γίνει override όταν αυτή τερματιστεί, ο αντιπρόσωπος δεν απαλείφεται αλλά παραμένει ως παθητικό αντικείμενο στην agency move(): χρησιμοποιείται για την μετανάστευση του αντιπροσώπου από μία agency σε μία άλλη 31
Παράδειγμα 1 (1/4) αντιπρόσωπος μεταναστεύει σε μία agency και μετά επιστρέφει στην αρχική τοποθεσία του public class BoomerangAgent extends MobileAgent { int state; // A little data state. public void init(object[] creationargs) { state = 0; } public String getname() { return "BoomerangAgent"; } 32
Παράδειγμα 1 (2/4) public void live() { String location; switch(state) { case 0: location = //...είσοδος από Dialog... if (location!= null) { state = 1; try { move(new GrasshopperAddress(location)); } catch(exception e) { log("migration failed: ); } // reached only if migration failed state = 0; } 33
Παράδειγμα 1 (3/4)... case 1: log("arrived at destination!"); JOptionPane.showMessageDialog( null, "Let me go home!"); state = 0; try { move(getinfo().gethome()); } catch (Exception e) { log("return trip failed: ", e); } break; } log("terminating my life."); 34
Παράδειγμα 1 (4/4) 35
Παράδειγμα 2 (1/7) Σενάριο απλής επικοινωνίας ServerAgent: αντιπρόσωπος που παρέχει μία μέθοδο στην CS, μέσω της οποίας, ένας client μπορεί να του δώσει εντολή να μεταναστεύσει σε μία άλλη τοποθεσία. IServerAgent: η διεπαφή που περιέχει την εν λόγω μέθοδο ClientAgent: ο αντιπρόσωπος που καλεί την εν λόγω μέθοδο 36
Παράδειγμα 2 (2/7) // ΙServerAgent.java public interface IServerAgent { public void go(string location); } 37
Παράδειγμα 2 (3/7) // ServerAgent.java... /* This method is exported and accessible via the communication service by other agents. */ public void go(string location) { // notify the agent's thread this.location = location; synchronized(lock) { lock.notify(); } }... 38
Παράδειγμα 2 (4/7)... public void live() { while (true) { synchronized(lock) { try { lock.wait(5 * 60 * 1000); }... } if (location == null) { log("timeout"); break; } else { log("notification received - moving..."); try { move(new GrasshopperAddress(location)); } catch (MigrationFailedException e) { log("migration failed: " + e.getmessage()); } 39
Παράδειγμα 2 (5/7) // ClientAgent.java... // Get proxy of local agency. agencyproxy = getagentsystem();... // Create the server agent. try { serverinfo = agencyproxy.createagent("serveragent", getinfo().getcodebase(), getinfo().getlocation().getplace(), null); } catch (AgentCreationFailedException e) { log("creation of server agent failed."); } 40
Παράδειγμα 2 (6/7)... // create proxy of the server agent. serverproxy = (IServerAgent) ProxyGenerator.newInstance( IServerAgent.class, serverinfo.getidentifier());... public void live() { log("life has just begun"); String location = requestlocation(); while (location!= null) { serverproxy.go(location); location = requestlocation(); } } 41
Παράδειγμα 2 (7/7) 42
Διεπαφή με την πλατφόρμα 43
Διεπαφή με την πλατφόρμα 44
Μερικές Αναφορές Grasshopper Basic and Concepts rel. 2.2, http://www.grasshopper.de Grasshopper Programmer s Guide rel. 2.2, http://www.grasshopper.de G. P. Picco, "Mobile Agents: An Introduction", Journal of Microprocessors and Microsystems, 2001 D.B. Lange and M. Oshima, "Seven Good Reasons for Mobile Agents", Communications of the ACM, 1999 45
Ερωτήσεις; 46