1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.
-
Upload
aimeri-schaeffer -
Category
Documents
-
view
105 -
download
0
Transcript of 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.
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 d’applications
Surveillance des équipements d’un réseau EAI (Enterprise Application Integration) Workflow …
gestion d’evénements
5
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.
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 passingExemple d ’utilisation
Réalisation d’une 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 n’est pas forcément actif
sendrecv
Client Serveur
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 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).
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
clientclient
client
13
Implantation (2)
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
serveur serveur
serveur
client
client
client
client
serveur
client
14
Implantation (3)
Service réparti (bus logiciel)
Machine A
Système d’exploitation
Services dubus logiciel
Processus_a
Machine B
Système d’exploitation
Services dubus logiciel
Processus_b
protocoles du
bus logiciel
Interface Bus Interface Bus
15
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
16
Middleware à base d’agents communicants.
Agents Anytime Anywhere
17
L’Environnement d’exécution A3 La plate-forme à agents L’infrastructure d’exécution Exemple d’applications
Agents Anytime AnywherePlan
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: d’un état, d’un ensemble de règles décrivant
leurs réactions.
La plate-forme à agentsIntroduction
Agent
Agent React SendTo
Bus Logiciel à messages
19
La plate-forme à agentsPropriétés
B
CA
• 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 à agentsModè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 à agentsModè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 à agentsModè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 l’agent destinataireRole: structure contenant l’id 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 16 bits 32 bits
24
La plate-forme à agentsModè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
AgentAgent
attribute1 : ...attribute1 : ...attribute2 : ...attribute2 : ...
AgentAgent
attribute1 : ...attribute1 : ...attribute2 : ...attribute2 : ...
event1 (...)
event2 (...)
dest1 (...)
dest2 (...)
25
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); }}
26
La plate-forme à agentsCréation et déploiement des agents
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:1. Instanciation locale de l’agent (création d’un « germe »)2. Déploiement de l’agent sur le serveur destinataire.
27
Création et déploiement
short agentServerId; ..
// Create agent ag to be deployed on AgentServer xAg ag = new Ag(agentServerId);
// Deploy agentsag.deploy(),
..
28
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>
29
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
30
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 agentsag.deploy(),// Send a notificationChannel.sendTo(ag.getId(), new not());// Become an AgentServerAgentServer.start();}
..}
31
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.
32
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.
Agent A1
Agent A2
Agent A3
Agent A4
? sendTo(A3) react
Bus Local
Serveur d ’agents 1 Serveur d ’agents 2
Bus Local
33
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.
34
Agent Server
A2A1
Channel
Engine
A3 A4
Agent Server
A6A5
Channel
Engine
A7 A7
Local Bus Local Bus
• Channel:• Localisation et transport des notifications.
• Engine:• Moteur d’exécution du serveur.
L’infrastructure d’exécutionServeur d’agents (2)
35
L’infrastructure d’exécutionServeur d’agents (3)
Channel
Agent
qin
Engine
ReactSendTo
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 d’agents: Un seul flot d’exé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 HelloWorld
StartNot