340 likes | 419 Views
Introduction (1). Outils à base de RPC Appels synchrones Composants fortement couplés (connexion permanente) Désignation explicite du destinataire Connexion (1-1) Communication par message Communications asynchrones Désignation anonyme (ex : diffusion sur un bus) Diffusions (1-N).
E N D
Introduction (1) • Outils à base de RPC • Appels synchrones • Composants fortement couplés (connexion permanente) • Désignation explicite du destinataire • Connexion (1-1) • Communication par message • Communications asynchrones • Désignation anonyme (ex : diffusion sur un bus) • Diffusions (1-N)
Introduction (2) • Exemple d’applications • Surveillance des équipements d’un réseau • EAI (Enterprise Application Integration) • Workflow • … gestion d’evénements
Exemple d ’applicationSolution client-serveur • Interrogation régulière • par l'application d'administration (client) • des éléments à surveiller (serveur) • et mise à jour d'une base de données centralisée. • Utilisation d'une configuration complexe afin de connaître l'ensemble des éléments à surveiller. • Maintien de cette configuration lorsque des machines ou des applications rejoignent, quittent ou se déplacent dans le système. • Interrogation par les administrateurs de la base centrale.
Principes directeurs • Message Passing (communication par messages) • Message Queuing (communication par file de message) • Publish/Subscribe (communication par abonnements)
Message passing • Principes directeurs • communication asynchrone • communication directe ou indirecte (via des “portes”) • problème de désignation, localisation des entités coopérantes • messages éventuellement typés (ex: Mach) • Interface de programmation et mise en œuvre • primitives de communication élémentaires ("envoyer", recevoir") : • dans une architecture de type micro-noyau : Chorus, Mach • dans un environnement de programmation parallèle : PVM, MPI • Outils de développement • peu évolués et de bas niveau
Message passingExemple d ’utilisation • Réalisation d’une interaction de type « client-serveur » Client Serveur (nom_de_service, paramètres, port_C) exécution du service Port_S Port_C (résultat)
Client Serveur send recv Message Queuing • Queue de messages • persistantes asynchronisme et fiabilité • Indépendance de l'émetteur et du destinataire • Le destinataire n’est pas forcément actif
Publish/Subscribe (1) • Désignation anonyme • L’émetteur envoie un message • Basé sur un sujet (subject-based:failure,load,…) • Basé sur un contenu (content-based:*kernighan*) • Le récepteur s’abonne (à un sujet ou un contenu) • Communication 1-N • Plusieurs récepteurs peuvent s’abonner • Un même message est diffusé à l'ensemble des abonnés (non possible avec une queue de messages / subject ou / topic).
Publish/Subscribe (2) consommateur producteur subscribe ¶ publish recv
Serveur centralisé (Hub & spoke) Simplicité de mise en œuvre Peu tolérant aux pannes Passage à l’échelle difficile client client client client Implantation (1) Serveur
Serveur réparti (Snow flake) Chaque serveur connaît un ensemble d’autres serveurs Routage des messages Répartition de la charge Fiabilité relative Passage à l’échelle client client client client client Implantation (2) serveur serveur serveur serveur
Implantation (3) • Service réparti (bus logiciel) Processus_a Processus_b Interface Bus Interface Bus protocoles du Services du bus logiciel Services du bus logiciel bus logiciel Système d’ exploitation Système d’ exploitation Machine A Machine B
Propriétés des MOM • Tolérance aux pannes • Garanties de délivrance des messages • Perte et duplication • Ordre • Garanties d’atomicité • Pour une séquence d’envoi et de réception • Sécurité • Confidentialité • Intégrité • Persistence • Arret du MOM redémarrage avec état
Agents Anytime Anywhere • Middleware à base d’agents communicants. Agents Legacy Software
Agents Anytime AnywherePlan • L’Environnement d’exécution A3 • La plate-forme à agents • L’infrastructure d’exécution • Exemple d’applications
La plate-forme à agentsIntroduction • Agents: objets « réactifs » se comportant selon le modèle « événement – réaction ». • Un événement est representé par une notification. • Les notifications sont envoyées via un bus logiciel. • Les agents sont composés: • d’un état, • d’un ensemble de règles décrivant leurs réactions.
La plate-forme à agentsPropriétés A C B • Les agents: • Sont persistants (état sauvegardé). • Ont des réactions atomiques (état toujours cohérent). • Les communications sont: • Asynchrones (fonctionnement en mode déconnecté). • Fiables (garantie de délivrance). • Ordonnancées (causalité).
Agents: Objets Java héritant de la classe de base Agent. Identifiés de façon unique par un agentId. La plate-forme à agentsModèle de programmation (1) public class HelloWorld extends Agent { public HelloWorld(short to, String name) { super(to, name); } public void react(AgentId from, Notification not) throws Exception { … }
Notifications: Objets Java sérialisables héritant de la classe de base Notification. La plate-forme à agentsModèle de programmation (1) public class HelloWorldNot extends Notification { public String msg = "Hello world"; public HelloWorldNot(String msg) { this.msg = msg; } }
Envoi de notifications: Directement vers un agent Vers un Role ou un RoleMultiple (configurables). La plate-forme à agentsModèle de programmation (2) sendTo(AgentId ag, Notification n) ou sendTo(Role role, Notification n) ag: id de l’agent destinataire Role: structure contenant l’id du/des destinataires (indirection) n: la notification qui doit être envoyée
AgentId • Identification du serveur de l'agent créateur (from) • Identification du serveur de résidence de l'agent créé (to) • Estampille locale au serveur d'agents de l'agent créateur (stamp) Localisation engine Stamp Creation engine 16 bits 16 bits 32 bits
Modèle événement/réaction Evénement = objet passif (message) émis par un agent à destination d ’un autre agent. Réaction = la réception d ’un événement par un agent provoque l ’éxécution de la méthode réact de la classe de l'agent Agent attribute1 : ... attribute2 : ... dest1 (...) event1 (...) dest2 (...) event2 (...) La plate-forme à agentsModèle de programmation (3)
La plate-forme à agentsExemple d'agent public class HelloWorld extends Agent { public AgentId dest; public HelloWorld(short to, String name) { super(to, name); } public void react(AgentId from, Notification not)throws Exception { if (n instanceof HelloWorldNot) { // on a reçu une HelloWorldNot System.out.println(((HelloWorldNot)n).msg); // on peut envoyer une nouvelle notification sendTo(dest, new HelloWorldReceivedNot()); } else super.react(from,not); } }
Dans un serveur d’agents: Création des agents (instanciation classe correspondante puis déploiement) Exécution des agents Communication des agents Création et déploiement: Instanciation locale de l’agent (création d’un « germe ») Déploiement de l’agent sur le serveur destinataire. La plate-forme à agentsCréation et déploiement des agents
Création et déploiement short agentServerId; .. // Create agent ag to be deployed on AgentServer x Ag ag = new Ag(agentServerId); // Deploy agents ag.deploy(), ..
Configuration des serveurs d'agents • Configuration décrite statiquement (a3servers.xml sur chaque site) <?xml version="1.0"?> <!DOCTYPE config SYSTEM "a3config.dtd"> <config name="test_conf1"> <host hostname="localhost"> <server id="0" name="s0" port="27300"> </server> <server id="1" name="s1" port="27301"> </server> </host> </config>
La plate-forme à agentsCréation d'un serveur d'agent (1) > java fr.dyade.aaa.agent.AgentServer num rac // num = numéro du serveur // rac = racine de persistence // exemple : java fr.dyade.aaa.agentServer 1 s1
La plate-forme à agentsCréation d'un serveur d'agent (2) public class Launch { // Starts an initial AgentServer public static void main (String args[]) { try { AgentServer.init(args); // Create agent ag to be deployed on AgentServer 0 (or 1) Ag ag = new Ag((short)0); // Deploy agents ag.deploy(), // Send a notification Channel.sendTo(ag.getId(), new not()); // Become an AgentServer AgentServer.start(); } .. }
L’infrastructure d’exécutionVue d’ensemble (1) • Infrastructure basée sur un bus à messages: • Achemine les notifications. • Provoque la réaction du destinataire. • Mise en œuvre distribuée: sur chaque site, le bus local représente le bus à messages.
L’infrastructure d’exécutionVue d’ensemble (2) • Bus local: • Achemine les notifications. • Système de queues persistantes. • Délivrance via la méthode react du destinataire.
L’infrastructure d’exécutionServeurs d’agents (1) • Serveur d’agents: • Machine virtuelle hôte (incluse dans un processus). • Embarque un bus local et une fabrique à agents (allocation id + image persistente). • Bus local: • Gère les communications locales. • Assure les propriétés d’atomicité et de fiabilité (journal). • Fortement interconnecté avec les autres bus locaux. • Composé d’un Channel et d’un Engine.
L’infrastructure d’exécutionServeur d’agents (2) • Channel: • Localisation et transport des notifications. • Engine: • Moteur d’exécution du serveur.
Dans un serveur d’agents: Un seul flot d’exécution Une réaction est incluse dans une transaction Agent Agent msg = qin.get(); agent = Agent.load(msg.to); agent.reac(msg.from, msg.not); transaction.begin() qin.pop(); channel.dispatch(); Agent.save(); transaction.commit() React SendTo Channel Engine qout qin Network L’infrastructure d’exécutionServeur d’agents (3)
Exemple considéré pour la manip: HelloWorld HelloWorldClient d HelloWorl StartNot React(from, not) { if (not instanceof StartNot) { sendTo(to,HelloWorldNot); React(from, not) { } HelloWorldNot if (not instanceof HelloWorldNot){ ... println(« helloworld»); } } ... }