1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année
2 Plan Introduction sur les MOM Principes généraux Implantation des MOM Exemple de MOM Java Message Service (JMS)
3 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)
4 Introduction (2) Exemple dapplications Surveillance des équipements dun réseau EAI (Enterprise Application Integration) Workflow … gestion devénements
5 Exemple d application Solution 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.
6 Principes directeurs Message Passing (communication par messages) Message Queuing (communication par file de message) Publish/Subscribe (communication par abonnements)
7 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
8 Message passing Exemple d utilisation Réalisation dune interaction de type « client-serveur » Client Serveur exécution du service Port_S Port_C (nom_de_service, paramètres, port_C) (résultat)
9 Message Queuing Queue de messages persistantes asynchronisme et fiabilité Indépendance de l'émetteur et du destinataire Le destinataire nest pas forcément actif send recv ClientServeur
10 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 sabonne (à un sujet ou un contenu) Communication 1-N Plusieurs récepteurs peuvent sabonner Un même message est diffusé à l'ensemble des abonnés (non possible avec une queue de messages / subject ou / topic).
11 Publish/Subscribe (2) consommateur publish producteur Ë Ì subscribe ¶ recv
12 Implantation (1) Serveur centralisé (Hub & spoke) Simplicité de mise en œuvre Peu tolérant aux pannes Passage à léchelle difficile Serveur client
13 Implantation (2) Serveur réparti (Snow flake) Chaque serveur connaît un ensemble dautres serveurs Routage des messages Répartition de la charge Fiabilité relative Passage à léchelle serveur client serveur client
14 Implantation (3) Service réparti (bus logiciel) Machine A Système d exploitation Services du bus logiciel Processus_a Machine B Système d exploitation Services du bus logiciel Processus_b protocoles du bus logiciel Interface Bus
15 Propriétés des MOM Tolérance aux pannes Garanties de délivrance des messages Perte et duplication Ordre Garanties datomicité Pour une séquence denvoi et de réception Sécurité Confidentialité Intégrité Persistence Arret du MOM redémarrage avec état
16 Middleware à base dagents communicants. Agents Anytime Anywhere
17 LEnvironnement dexécution A3 La plate-forme à agents Linfrastructure dexécution Exemple dapplications Agents Anytime Anywhere Plan
18 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: dun état, dun ensemble de règles décrivant leurs réactions. La plate-forme à agents Introduction
19 La plate-forme à agents Propriétés B C A 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é).
20 La plate-forme à agents Modèle de programmation (1) Agents: Objets Java héritant de la classe de base Agent. Identifiés de façon unique par un agentId. public class HelloWorld extends Agent { public HelloWorld(short to, String name) { super(to, name); } public void react(AgentId from, Notification not) throws Exception { … }
21 La plate-forme à agents Modèle de programmation (1) Notifications: Objets Java sérialisables héritant de la classe de base Notification. public class HelloWorldNot extends Notification { public String msg = "Hello world"; public HelloWorldNot(String msg) { this.msg = msg; }
22 La plate-forme à agents Modèle de programmation (2) Envoi de notifications: Directement vers un agent Vers un Role ou un RoleMultiple (configurables). sendTo(AgentId ag, Notification n) ou sendTo(Role role, Notification n) ag: id de lagent destinataire Role: structure contenant lid du/des destinataires (indirection) n: la notification qui doit être envoyée
23 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) Creation engine Localisation engine Stamp 16 bits 32 bits
24 La plate-forme à agents Modèle de programmation (3) 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 :... Agent attribute1 :... attribute2 :... event1 (...) event2 (...) dest1 (...) dest2 (...)
25 La plate-forme à agents E xemple 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); }
26 La plate-forme à agents Création et déploiement des agents Dans un serveur dagents: Création des agents (instanciation classe correspondante puis déploiement) Exécution des agents Communication des agents Création et déploiement: 1. Instanciation locale de lagent (création dun « germe ») 2. Déploiement de lagent sur le serveur destinataire.
27 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(),..
28 Configuration des serveurs d'agents Configuration décrite statiquement (a3servers.xml sur chaque site)
29 La plate-forme à agents Cré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
30 La plate-forme à agents Cré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(); }.. }
31 Linfrastructure dexécution Vue densemble (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.
32 Linfrastructure dexécution Vue densemble (2) Bus local: Achemine les notifications. Système de queues persistantes. Délivrance via la méthode react du destinataire.
33 Linfrastructure dexécution Serveurs dagents (1) Serveur dagents: 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 datomicité et de fiabilité (journal). Fortement interconnecté avec les autres bus locaux. Composé dun Channel et dun Engine.
34 Channel: Localisation et transport des notifications. Engine: Moteur dexécution du serveur. Linfrastructure dexécution Serveur dagents (2)
35 Linfrastructure dexécution Serveur dagents (3) Channel Agent qin Engine React SendTo msg = qin.get(); agent = Agent.load(msg.to); agent.reac(msg.from, msg.not); transaction.begin() qin.pop(); channel.dispatch(); Agent.save(); transaction.commit() Network Agent qout Dans un serveur dagents: Un seul flot dexécution Une réaction est incluse dans une transaction
36 Exemple considéré pour la manip: HelloWorld React(from, not) { if (not instanceof StartNot) { sendTo(to,HelloWorldNot); }... } React(from, not) { if (not instanceof HelloWorldNot){ println(« helloworld»); }... } HelloWorldNot HelloWorldClient HelloWorl d StartNot