1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

34
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)

Transcript of 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

Page 1: 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)

Page 2: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

4

Introduction (2) Exemple d’applications

Surveillance des équipements d’un réseau EAI (Enterprise Application Integration) Workflow …

gestion d’evénements

Page 3: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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.

Page 4: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

6

Principes directeurs

Message Passing (communication par messages) Message Queuing (communication par file de

message) Publish/Subscribe (communication par abonnements)

Page 5: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 6: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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)

Page 7: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 8: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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).

Page 9: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

11

Publish/Subscribe (2)

consommateur

publish

producteur

subscribe

recv

Page 10: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 11: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 12: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 13: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 14: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

16

Middleware à base d’agents communicants.

Agents Anytime Anywhere

Page 15: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

17

L’Environnement d’exécution A3 La plate-forme à agents L’infrastructure d’exécution Exemple d’applications

Agents Anytime AnywherePlan

Page 16: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 17: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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é).

Page 18: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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 { …}

Page 19: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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; }}

Page 20: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 21: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 22: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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 (...)

Page 23: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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); }}

Page 24: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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.

Page 25: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

27

Création et déploiement

short agentServerId; ..

// Create agent ag to be deployed on AgentServer xAg ag = new Ag(agentServerId);

// Deploy agentsag.deploy(),

..

Page 26: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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>

Page 27: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 28: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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();}

..}

Page 29: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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.

Page 30: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 31: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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.

Page 32: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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)

Page 33: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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

Page 34: 1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05 boyer.

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