plan du cours - lig membreslig-membres.imag.fr/krakowia/files/enseignement/m2r-sl/cr/flips/... ·...

24
www.scalagent.com Systèmes et applications asynchrones Middleware à message Systèmes et applications asynchrones Middleware à message Roland Balter ScalAgent Distributed Technologies [email protected] Roland Balter ScalAgent Distributed Technologies [email protected] © ScalAgent Distributed Technologies – 2005 2 Objectifs du cours Objectifs du cours Contexte : Module CR - Construction d’applications parallèles et réparties Introduction aux systèmes répartis Caractéristiques des systèmes répartis Zoom sur les applications asynchrones Importance croissante du domaine des applications asynchrones Internet à grande échelle, réseaux sans fil, terminaux mobiles Présenter les problèmes posés par la conception et la mise en œuvre des systèmes asynchrones Présenter les solutions en usage aujourd’hui (modèle de programmation et middleware) et les illustrer à l’aide d’exemples d’applications Etat des lieux et perspectives du domaine : industrie et recherche © ScalAgent Distributed Technologies – 2005 3 Plan du cours Plan du cours I. Caractérisation des systèmes asynchrones II. Modèles pour la programmation asynchrone III. Middleware asynchrone (MOM) IV. JMS : un exemple de programmation asynchrone V. JORAM : un exemple de middleware asynchrone VI. Etude de cas VII. Conclusion : état des lieux et perspectives © ScalAgent Distributed Technologies – 2005 4 Architecture distribuée Architecture distribuée Application/système distribué Ensemble de composants logiciels coopérants Coopération = communication + synchronisation Eléments de choix d’une architecture distribuée Modèle de programmation communication & synchronisation ----------------- API -------------------- Middleware services systèmes pour gestion de ressources distribuées Système d’exploitation + TCP/IP Synchrone : Client-serveur (RPC, RMI, ORB, etc.) Asynchrone : messages et événements Objets mobiles Objets partagés CORBA, JMS, . . Flots d’exécution, mémoire, persistance Fiabilité, disponibilité, sécurité, scalabilité, . .

Upload: truongliem

Post on 14-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

1

www.scalagent.com

Systèmes et applications asynchronesMiddleware à message

Systèmes et applications asynchronesMiddleware à message

Roland BalterScalAgent Distributed Technologies

[email protected]

Roland BalterScalAgent Distributed Technologies

[email protected]

© ScalAgent Distributed Technologies – 2005 2

Objectifs du coursObjectifs du cours

Contexte : Module CR - Construction d’applications parallèles et réparties

Introduction aux systèmes répartisCaractéristiques des systèmes répartis

Zoom sur les applications asynchronesImportance croissante du domaine des applications asynchrones

Internet à grande échelle, réseaux sans fil, terminaux mobilesPrésenter les problèmes posés par la conception et la mise en œuvre des systèmes asynchronesPrésenter les solutions en usage aujourd’hui (modèle de programmation et middleware) et les illustrer à l’aide d’exemples d’applicationsEtat des lieux et perspectives du domaine : industrie et recherche

© ScalAgent Distributed Technologies – 2005 3

Plan du coursPlan du cours

I. Caractérisation des systèmes asynchrones

II. Modèles pour la programmation asynchrone

III. Middleware asynchrone (MOM)

IV. JMS : un exemple de programmation asynchrone

V. JORAM : un exemple de middleware asynchrone

VI. Etude de cas

VII. Conclusion : état des lieux et perspectives

© ScalAgent Distributed Technologies – 2005 4

Architecture distribuéeArchitecture distribuée

Application/système distribuéEnsemble de composants logiciels coopérantsCoopération = communication + synchronisation

Eléments de choix d’une architecture distribuée

Modèle de programmationcommunication & synchronisation

----------------- API --------------------

Middlewareservices systèmes pour

gestion de ressources distribuées

Système d’exploitation+

TCP/IP

Synchrone : Client-serveur (RPC, RMI, ORB, etc.)Asynchrone : messages et événementsObjets mobilesObjets partagés

CORBA, JMS, . .

Flots d’exécution, mémoire, persistanceFiabilité, disponibilité, sécurité, scalabilité, . .

Page 2: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

2

© ScalAgent Distributed Technologies – 2005 5

Exemple : supervision de ressources distribuéesExemple : supervision de ressources distribuées

Cahier des chargesSurveillance de l'état de machines, de systèmes d'exploitation et d'applications dans un environnement distribué.

Flot continuel de données (d’état et d’usage) en provenance de sources hétérogènes sur le réseau

Les éléments du système peuvent apparaître ou disparaître dynamiquementconnexion – déconnexion, évolution du système (exemple : nouvelle machine)

Les administrateurs doivent pouvoir accéder à l'information quelle que soit leur localisation

© ScalAgent Distributed Technologies – 2005 6

Solution (traditionnelle) client / serveurSolution (traditionnelle) client / serveur

Interrogation régulière des éléments à surveiller par l'application d'administration 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.

© ScalAgent Distributed Technologies – 2005 7

Solution traditionnelle client / serveurSolution traditionnelle client / serveur

NT

admadm

© ScalAgent Distributed Technologies – 2005 8

Solution « Messaging »Solution « Messaging »

Les différents éléments administrés émettent des messages :

changements d'état et de configurationalertes, statistiques

Un ou plusieurs démons reçoivent ces notifications et maintiennent l'état courant du système

suivi des changements de configuration dynamiquesémission de messages signalant les changements d'états significatifs ou les mises à jour

Inversion des rôles des producteurs et des consommateurs de données

Page 3: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

3

© ScalAgent Distributed Technologies – 2005 9

Solution « Messaging »Solution « Messaging »

NT

admadm

© ScalAgent Distributed Technologies – 2005 10

Bilan : les atouts du mode ‘‘asynchrone’’Bilan : les atouts du mode ‘‘asynchrone’’

Systèmes faiblement couplésCouplage temporel : systèmes autonomes communicants

Communication « spontanée » en mode « push »Fonctionnement en mode déconnecté : site absent ou utilisateur mobile

Couplage spatial : systèmes à grande échelleFonctionnement en mode partitionné : pannes temporaires de réseauCommunication « anonyme » : non connaissance des correspondants

SimplicitéModèle de communication « canonique »

Envoi de messageBase universelle : TCP-UDP/IP

© ScalAgent Distributed Technologies – 2005 11

Un peu d’histoireUn peu d’histoire

Les systèmes asynchrones sont en usage dans le monde de l’Internet depuis longtemps

Le courrier électronique (communication point-à-point)le producteur envoie un message à un destinataire qu’il connaîtle message est stocké sur un serveur, le consommateur lit ultérieurement le message lorsqu’il se connecte

Les listes de diffusion (communication multi-points)Le message est diffusé à tous les éléments de la liste

Les news (Anonymat, Publish/Subscribe)le consommateur s’abonne à une liste de diffusionle producteur publie une information dans un forumle consommateur lit le contenu du forum quand il le souhaite

© ScalAgent Distributed Technologies – 2005 12

Les usages des systèmes asynchronesLes usages des systèmes asynchrones

SupervisionParc d’équipements distribuésApplications distribuées

Echange et partage de donnéesEnvoi de documents (EDI) Mise à jour d’un espace de données partagées distribuées

Intégration de donnéesAlimentation d’un datawarehouse/datamart depuis des sources de données hétérogènes autonomes : ETL (Extract – Transfer – Load)

Intégration d’applicationIntra-entreprise : EAI (communication, routage, workflow)Inter-entreprises : B2B et Web Services (communication, orchestration)

Informatique mobileCommunication entre équipements mobiles (souvent déconnectés) et serveurs d’appplication

Page 4: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

4

© ScalAgent Distributed Technologies – 2005 13

Systèmes asynchrones : mode d’emploiSystèmes asynchrones : mode d’emploi

Modèle de programmation(communication par messages)

API exemple : JMSenvoi – réception messagesmessagesadministration. . .

Applications

Environnement d’exécutionMOM

communicationfiabilitésécurité. . .

Système hôte, TCP-IP

Out

ils d

e dé

velo

ppem

ent

et d

’adm

inis

trat

ion

Modèle de programmation(communication par messages)

exemple : Joram

© ScalAgent Distributed Technologies – 2005 14

Communication par messages : modèle de programmation

Mode de synchronisationCommunication asynchrone

émission non bloquanteréception bloquante (attente jusqu'à arrivée d'un message, ou retour d’erreur)

Mode de désignationcommunication directe entre processus (acteurs, agents, . . .)communication indirecte entre processus via des objets intermédiaires (portes, boîtes aux lettres, queues de message, etc.)

Mode de transmissionmessages possiblement typés

© ScalAgent Distributed Technologies – 2005 15

Communication par messages : exemple 1Communication par messages : exemple 1

Réalisation d'un échange asynchrone

Processusémetteur/producteur

Processusrécepteur/consommateur

Send (Id_bal, message)

Msg = Receive (Id_bal)

© ScalAgent Distributed Technologies – 2005 16

Communication par messages : exemple 2Communication par messages : exemple 2

Réalisation d’une interaction de type « client-serveur »

Client Serveur

bal_S

bal_C

< nom_de_service, paramètres, bal_C >

(résultat)

Send(bal-S, nom-de-service, paramètres)Msg = Receive(bal_S)

Msg = Receive(bal_C)exec (nom_de_service, paramètres)..Send (bal-C, résultat)

Page 5: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

5

© ScalAgent Distributed Technologies – 2005 17

Environnement de type "micro-noyau"mécanisme et primitives de baseexemples : Chorus, Mach/OSF-1

Environnement "à la unix""sockets"

Environnement de programmation parallèlePVM et/ou MPI

Environnement d'intégration d'applications (et/ou de données)

middleware à messages: MOMinterface de programmation ad hoc

tentative de normalisation via Java JMS

Communication par messages : exemples d’environnements existants

Communication par messages : exemples d’environnements existants

© ScalAgent Distributed Technologies – 2005 18

Les éléments de définition d’un système de messagerie

Les éléments de définition d’un système de messagerie

Modèle de programmationStructure des messagesMode de production des messages : non bloquantMode de désignation : indirect, groupe, anonymeMode de communication : point à point, multi-pointsMode de consommation des messages : push, pull

APIJMS (Java Messaging Service)

Environnement d’exécution (run time)Architecture : centralisée, partitionnée, répartieQualité de service : fiabilité, sécurité, scalabilité, etc.

© ScalAgent Distributed Technologies – 2005 19

Plan du coursPlan du cours

I. Caractérisation des systèmes asynchrones

II. Modèles pour la programmation asynchrone

III. Middleware asynchrone (MOM)

IV. JMS : un exemple de programmation asynchrone

V. JORAM : un exemple de middleware asynchrone

VI. Etude de cas

VII. Conclusion : état des lieux et perspectives

© ScalAgent Distributed Technologies – 2005 20

Format des messagesFormat des messages

Entête Information permettant l'identification et l'acheminement du message

Id. unique, destination, priorité, durée de vie, etc.

Attributs Couples (nom, valeur) utilisables par le système ou l'application pour sélectionner les messages (opération de filtrage)

Données définies par l'applicationTexteDonnées structurées (XML)BinaireObjets (sérialisés). . .

Page 6: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

6

© ScalAgent Distributed Technologies – 2005 21

Modes de désignationModes de désignation

Désignation indirecteLes entités communiquent via un objet intermédiaire : destination

Destination : structure de données réceptacle de messagesExemple : Queue (file) de messages

Désignation de groupegroupe = ensemble de consommateurs identifiés par un nom unique

gestion dynamique du groupe : arrivée/départ de membresdifférentes politiques de service dans le groupe : 1/N, N/N

Désignation anonymedésignation associative : les destinataires d'un message sont identifiés par des propriétés (attributs du message)Publish/Subscribe (Publication / Abonnement)

© ScalAgent Distributed Technologies – 2005 22

Modes de communicationModes de communication

4 Relations entre producteur(s) et consommateur(s)1 producteur 1 consommateur1 producteur N consommateursP producteurs 1 consommateurP producteurs N consommateurs

. . mais seulement

2 Modèles de communication de basePoint-To-Point : 1 producteur 1 consommateurMulti-points : 1 producteur N consommateurs

© ScalAgent Distributed Technologies – 2005 23

Modèle Point à point (1/2) Modèle Point à point (1/2)

Un message émis sur une queue de messages donnée est consommé par une unique application

asynchronisme et fiabilité

receive

Application AApplication B

Application CMessage Queue

send

receive

Gestion desmessages

© ScalAgent Distributed Technologies – 2005 24

Modèle Point à Point (2/2)Modèle Point à Point (2/2)

Séparation entre destination et consommateurdestination statique : commune à plusieurs producteurs/consommateursConsommateur unique pour un message donné

Indépendance du producteur et du consommateurVia l’objet « Queue de messages »Rend possible l’évolution de la relation producteur - consommateurIndépendance temporelle : asynchronisme

Acquittement du traitement par le consommateurAcquittement de niveau système

Libération de l’emplacement du message dans la queueFiabilisation de l’opération de consommation

Acquittement de niveau applicatif : à programmer explicitement

Page 7: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

7

© ScalAgent Distributed Technologies – 2005 25

Modèle multi-points : communication de groupe (1/2)

Modèle multi-points : communication de groupe (1/2)

send

Application A

Gestiondu groupe

EB C D

Application D

receive

Application E

receive

Application C

receiveApplication B

receive

© ScalAgent Distributed Technologies – 2005 26

Communication de groupe (2/2)Communication de groupe (2/2)

Gestion du groupeCommunication multi-points (1 producteur N consommateurs)Indépendance vis-à-vis des émetteursGestion dynamique

Arrivée / départ de membres

Politiques de gestion des messagesPersistance, durée de vieHistorique (forum)

Politiques de service des messages1 / N : répartition de chargeN / N : réplication (tolérance aux pannes)P / N : réplication partielle

© ScalAgent Distributed Technologies – 2005 27

Modèle Publish/Subscribe (1/2)Modèle Publish/Subscribe (1/2)

Un message émis vers un sujet (Topic) est délivré à l’ensemble des applications abonnées à ce Topic.

publish

subscribeApplication A

Application B

Application C

Topic

on message do

On message dosubscribe

Gestion desmessages

Gestion desabonnements

B C

© ScalAgent Distributed Technologies – 2005 28

Modèle Publish/Subscribe (2/2)Modèle Publish/Subscribe (2/2)

Relation producteur - consommateurCommunication multi - points : 1 producteur N consommateursDésignation anonyme via le TopicDépendance temporelle

Le message est délivré aux consommateurs « actifs » lors de la production

Critères d’abonnementStatique : « subject based »

Organisation plate ou hiérarchique des sujetsDynamique : « content based »

Implantation distribuée délicate

Abonnements temporaires/durables

Peugeot Renault

206 307

Auto

Page 8: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

8

© ScalAgent Distributed Technologies – 2005 29

Modes de consommationModes de consommation

« Pull » – consommation expliciteLes consommateurs programment explicitement l’accès aux messages En cas d’absence de message : attente ou exception

« Push » – consommation impliciteUne méthode prédéfinie (réaction) est attachée à la production d’un message (événement)L’occurence d'un événement entraîne l'exécution de la réaction associée. Modèle Evénement / Réaction

Gestion desmessages

Consommateur

Receive

Gestion desMessages

Consommateur

On Message do Reaction

ReactionReaction

© ScalAgent Distributed Technologies – 2005 30

Plan du coursPlan du cours

I. Caractérisation des systèmes asynchrones

II. Modèles pour la programmation asynchrone

III. Middleware asynchrone (MOM)

IV. JMS : un exemple de programmation asynchrone

V. JORAM : un exemple de middleware asynchrone

VI. Etude de cas

VII. Conclusion : état des lieux et perspectives

© ScalAgent Distributed Technologies – 2005 31

Environnement d’exécution (run time)Environnement d’exécution (run time)

Architecture logiqueService de messagerie (message server, message provider)

Gestion des messages (queues, topics) Gestion des connexions avec les clients : producteurs, consommateurs

Clients du service : producteurs, consommateurs

Architecture physiqueCentralisée, partitionnée, répartie

Qualité de serviceDisponibilité, fiabilitéSécuritéPerformancescalabilité

© ScalAgent Distributed Technologies – 2005 32

Architecture logiqueArchitecture logique

Serveurde

Messagerie

ApplicationX

API messagerie

Client messagerieproducteur /

Consommateur

ApplicationY

API messagerie

Client messagerieproducteur /

Consommateur

ApplicationZ

API messagerie

Client messagerieproducteur /

Consommateur Service demessagerie

Émetteur ------------------------ Récepteur

Page 9: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

9

© ScalAgent Distributed Technologies – 2005 33

Architecture physiqueArchitecture physique

Serveur centralisée ‘‘Hub and Spoke’’

Serveur distribué‘‘Snowflake’’

Serveur distribuéBus

Serv.MSG

Client

Client Client

Client

Serv.MSG

Client

Serv.MSG

Client

Serv.MSG

Client

Serv.MSGClient

Client

Serv.MSG

Client

Client

Serv.MSGClient

Client

© ScalAgent Distributed Technologies – 2005 34

Qualité de serviceQualité de service

Disponibilité et fiabilitéPersistance des messages et Garantie de délivrance

Au plus une fois, au moins une fois, exactement une fois

Performance et scalabilitéNombre de sites, nombre de messages, taille des messages

Réseau local (Intranet)Réseaux hétérogènes à grande échelle (Internet)

TransactionSécuritéRépartition de chargeOrdonnancement

© ScalAgent Distributed Technologies – 2005 35

AdministrationAdministration

Administration du MOMConfiguration, déploiementMonitoring

Administration du service de messagerieService de désignation : identification des serveurs, émetteurs/récepteursService de messagerie : gestion des objets de communication : queues, topics, etc.

Configuration, déploiementMonitoring, reconfiguration

Clients : création/destruction, droits d’accès

© ScalAgent Distributed Technologies – 2005 36

Systèmes asynchrones : technologies alternatives

Systèmes asynchrones : technologies alternatives

Web asynchroneHTTP asynchrone (‘one way’)

Requête sans réponseMêmes propriétés que HTTP (fiabilité, sécurité, etc.)

CORBACorba Notification Service

Communication asynchrone en JavaJAXMJINI

JMS

Page 10: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

10

© ScalAgent Distributed Technologies – 2005 37

Les systèmes asynchrones dans le monde Corba (1/2)

Les systèmes asynchrones dans le monde Corba (1/2)

Bus CorbaModèle de communication synchrone (client-serveur)API : interfaces IDLMiddleware : ORB (Object Request Broker)

ClientService

ORB

Contrat(IDL)

Stub Skeleton

Demande de service, paramètres d’appels

résultat

Objet CorbaObjet Corba

Object adaptor

Inte

rfac

e

© ScalAgent Distributed Technologies – 2005 38

Les systèmes asynchrones dans le monde Corba (2/2)

Les systèmes asynchrones dans le monde Corba (2/2)

Service de Notification CorbaService de notification : courtier de messages

Gestionnaire des messages, queues, abonnements, . . Accessible via des interfaces IDL

ProductionSend (msg, Queue) Call Serv_Not(msg, queue)

ConsommationMsg = Receive (Queue) Msg = Call Serv_Not(Queue)

Modes de production – consommationMixte push – pull

QoSGarantie délivranceReprise après pannePersistance

Producteur consommateur

Service denotification

gestion messagesqueues, abonnements,

ORB

PushPullPullPush

© ScalAgent Distributed Technologies – 2005 39

Messagerie Java : JAXMMessagerie Java : JAXM

JAXM: Java API for XML MessagingAPI Java pour émettre et recevoir des messages SOAPUsage de profils de messagerie définis sur SOAPSupport de protocoles de transport variés : HTTP, SMTP, POP, . .Modèles de programmation

Point à point : client-serveur (sans garantie de délivrance)Asynchrone : via un service de messagerie (JAXM provider)

Différences avec JMSSystème de messagerie « léger » (version stand-alone sans service de msg.)Interopérabilité avec un client SOAP 1.1Pas mature – peu d’implémentations disponibles

© ScalAgent Distributed Technologies – 2005 40

JINIJINI

La technologie JINIModèle de programmation pour construire un systèmecomme une fédération de services et de clients

Run time pour ajouter, enlever, localiser et accéder aux services

Discovery, Join & LookupDiscovery : localisation d’un service de rechercheJoin : enregistrement d’un serviceLookup : recherche d’un service

Distributed eventsEvent generator : génère des événements sur changement d’étatEvent listener : s’abonne aux événements de l’Event GeneratorÉvénement : identifié par un ID-événement et un ID-source

NetworkService Lookup

Service

NetworkClient

ServiceProxy

ServiceProxy

Discovery

Join

Lookup

Receive

Use(client-serveur)

Page 11: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

11

© ScalAgent Distributed Technologies – 2005 41

Plan du coursPlan du cours

I. Caractérisation des systèmes asynchrones

II. Modèles pour la programmation asynchrone

III. Middleware asynchrone (MOM)

IV. JMS : un exemple de programmation asynchrone

V. JORAM : un exemple de middleware asynchrone

VI. Etude de cas

VII. Conclusion : état des lieux et perspectives

© ScalAgent Distributed Technologies – 2005 42

Présentation de JMSPrésentation de JMS

JMS en bref : objectifs et limitations

Les concepts de JMS

JMS en mode point à point

JMS en mode Publish – Subscribe

Qualité de service (QoS)

© ScalAgent Distributed Technologies – 2005 43

JMS en bref (1/2)JMS en bref (1/2)

Spécification d’un système de messagerie JavaAPI Java entre une application et un bus à messagesModèles de communication

Point à point : message queuingMulti points : publish – subscribe

Divers types de données échangées : binaire, objets, texte, XML, . .

JMS ne définit pas le mode de fonctionnement du bus

Les applications JMS sont indépendantes d’un bus (e.g.objectif de portabilité)

… mais l’interopérabilité entre des plates-formes JMS hétérogènes nécessite la définition d’une passerelle entre les bus à messages

© ScalAgent Distributed Technologies – 2005 44

La spécification JMS n’est pas complète e.g. déploiement et administration sont spécifiques d’un produit donnéLes produits offrent des fonctions additionnelles : ‘‘topics’’ hiérarchiques, . .

Le support de JMS est un élément stratégique de la spécification J2EE 1.4

La dernière spécification JMS 1.1. unifie la manipulationdes ‘‘queues’’ : communication point-à-pointet des ‘‘topics’’ : communication multi-points (Publish-Subscribe)

API simplifiéeRessources réduites

JMS en bref (2/2)JMS en bref (2/2)

Page 12: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

12

© ScalAgent Distributed Technologies – 2005 45

Les concepts de JMSLes concepts de JMS

Éléments d’architecture

Serveur JMS(JMS Provider)

Client JMS

Objets administrés

ConnectionFactory

Destination(Queue & Topic)

Objets de communication

ConnexionsSessions

Producteur/consommateurMessages

Le fournisseur d’unesolution JMS

L’administrateur(administration JMS)

Le programmeur d’application(API JMS)

© ScalAgent Distributed Technologies – 2005 46

Architecture d’une application JMSArchitecture d’une application JMS

Service de nomsJNDI

ConnectionFactory

Destination

Client JMS(producteur)

Outil d’administration

JMS Provider

bindlookup

Connexion logique

Client JMS(consommateur)

© ScalAgent Distributed Technologies – 2005 47

Objets de communication et diagramme de séquence

Objets de communication et diagramme de séquence

Client JMSProducteur

Client JMSConsommateur

ConnectionConnection

SessionSession

MessageProducer

MessageConsumer

JNDI

ConnectionFactory

Destination1 - Lookup

2

1 - Lookup

2

3 3

4 4

Objets administrés

Queue Senderou

Topic Publisher

Queue Receiverou

Topic Subscriber

© ScalAgent Distributed Technologies – 2005 48

« Messaging Domains »« Messaging Domains »

Point-to-Point

Publish/Subscribe

JMS 1.1 : unification des domainesRéduit et simplifie l’API (à terme)Permet l’utilisation de Queues et Topics dans une même session (transaction)

TopicSubscriberQueueReceiverMessageConsumerTopicPublisherQueueSenderMessageProducerTopicSessionQueueSessionSessionTopicConnectionQueueConnectionConnectionTopicConnectionFactoryQueueConnectionFactoryConnectionFactoryTopicQueueDestinationPublish/SubscribePoint-à-pointInterface « parent »

Page 13: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

13

© ScalAgent Distributed Technologies – 2005 49

Les objets JMSLes objets JMS

Objets administrésConnectionFactory : point d’accès à un serveur MOMDestination : Queue ou Topic

Objet ConnectionCrée à partir d’un objet ConnectionFactoryAuthentifie le client et encapsule la liaison avec le JMS providerGère les Sessions

Objet SessionCréé à partir d’un objet ConnectionFournit un contexte (transactionnel) mono-threadé de production/consommation de messagesGère les acquittements de messages et les transactions

© ScalAgent Distributed Technologies – 2005 50

Les objets JMSLes objets JMS

MessageProducerFabriqué par la session QueueSender, TopicPublisherPermet l’émission de message méthodes Send, Publish

MessageConsumerFabriqué par la session QueueReceiver, TopicSubscriberPermet la réception de message

Synchrone méthodes Receive { (), (timeout)} ReceiveNoWait ()Asynchrone objet MessageListener à l’écoute des messages

exécution de la méthode onMessage de l’objetPermet le filtrage des messages

Syntaxe proche d’une condition SQL appliquée sur les champs de l’en-tête et des propriétés

© ScalAgent Distributed Technologies – 2005 51

Le message JMSLe message JMS

EntêteJMSMessageId, JMSDestination, JMSDeliveryMode, JMSExpiration, JMSPriority, etc.

PropriétésCouple <nom, valeur>

CorpsTextMessage, MapMessageStreamMessage, ObjectMessageBytesMessage

© ScalAgent Distributed Technologies – 2005 52

Producteur Consommateur

JMS - "Point-to-Point"JMS - "Point-to-Point"

QueueConnectionFactory

Messaging

QueueSession

QueueConnection

QueueSession

QueueConnection

+

QueueSender

+

send

Queue

QueueReceiverreceive

QueueConnectionFactory connectionFactory = (QueueConnectionFactory) messaging.lookup("…");Queue queue = (Queue) messaging.lookup("…");QueueConnection connection = connectionFactory.createQueueConnection();connection.start();QueueSession session = connection.createQueueSession(…);

QueueSender sender = session.createSender(queue);String selector = new String("(name = ‘ObjectWeb') or (name = ‘Scalagent'))");QueueReceiver receiver = session.createReceiver(queue, selector);TextMessage msg = session.createTextMessage();msg.setText("…");sender.send(msg);

TextMessage msg = (TextMessage) receiver.receive();

Page 14: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

14

© ScalAgent Distributed Technologies – 2005 53

JMS - "Point-to-Point"JMS - "Point-to-Point"

QueueConnectionFactory connectionFactory = (QueueConnectionFactory) messaging.lookup("…");Queue queue = (Queue) messaging.lookup("…");QueueConnection connection = connectionFactory.createQueueConnection();connection.start();QueueSession session = connection.createQueueSession(…);

QueueSender sender = session.createSender(queue);String selector = new String("(name = ‘ObjectWeb') or (name = ‘Scalagent'))");QueueReceiver receiver = session.createReceiver(queue, selector);

TextMessage msg = session.createTextMessage();msg.setText("…");sender.send(msg);

TextMessage msg = (TextMessage) receiver.receive();

© ScalAgent Distributed Technologies – 2005 54

Producteur Consommateur

Topic

TopicConnectionFactory

Messaging

A B

x y

JMS - "Publish/Subscribe"JMS - "Publish/Subscribe"

TopicSession

TopicConnection

TopicSession

TopicConnection

+

TopicPublisher

publish

+

TopicSubscriberListener

onMessage

TopicConnectionFactory connectionFactory = (TopicConnectionFactory) messaging.lookup("…");Topic topic = (Topic) messaging.lookup("/A/x");TopicConnection connection = connectionFactory.createTopicConnection();connection.start();TopicSession session = connection.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE);

TopicPublisher publisher = session.createPublisher(topic);Topic topic = (Topic) messaging.lookup("/A");TopicSubscriber subscriber = session.createSubscriber(topic);Subscriber.setMessageListener(listener);

publisher.publish(msg);void onMessage(Message msg) throws JMSException {// unpack and handle the message…

}

© ScalAgent Distributed Technologies – 2005 55

JMS - "Publish/Subscribe"JMS - "Publish/Subscribe"

TopicConnectionFactory connectionFactory = (TopicConnectionFactory) messaging.lookup("…");Topic topic = (Topic) messaging.lookup("/A/x");TopicConnection connection = connectionFactory.createTopicConnection();connection.start();TopicSession session = connection.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE);

TopicPublisher publisher = session.createPublisher(topic);

Topic topic = (Topic) messaging.lookup("/A");TopicSubscriber subscriber = session.createSubscriber(topic);Subscriber.setMessageListener(listener);

void onMessage(Message msg) throws JMSException {// unpack and handle the message…

}

publisher.publish(msg);

© ScalAgent Distributed Technologies – 2005 56

Production et consommation des messagesProduction et consommation des messages

Client JMSProducteur

Client JMSConsommateurServeur JMS

Send

Ackretour de laméthode Publish

Pull message

Ack

Client JMSConsommateur

Destination

synchronesynchrone

Push message

asynchrone

asynchrone

Message

Receive

On message do

Page 15: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

15

© ScalAgent Distributed Technologies – 2005 57

Qualité de serviceQualité de service

Abonnements durables (durable subscriptions)ID unique associé à un abonnement durableSi l’abonné n’est pas actif, le serveur JMS stocke le message sur un support persistant jusqu’à l’activation (ou jusqu’à expiration du TTL)Par défaut, les abonnements ne sont pas durables

Messages persistantsClient JMSProducteur

Client JMSConsommateur

ServeurJMS1 - Send

2 - sauvegarde

3 - Ack

4 - retour de laméthode Publish

5 - Receive

6 - Ack

7 – libération sur lesupport persistant

Message

Message

© ScalAgent Distributed Technologies – 2005 58

Plan du coursPlan du cours

I. Caractérisation des systèmes asynchrones

II. Modèles pour la programmation asynchrone

III. Middleware asynchrone (MOM)

IV. JMS : un exemple de programmation asynchrone

V. JORAM : un exemple de middleware asynchrone

VI. Etude de cas

VII. Conclusion : état des lieux et perspectives

© ScalAgent Distributed Technologies – 2005 59

Implantation open source de la spécification JMSAPI JMS : communication asynchrone entre applications JavaBus à messages distribué

Disponible sur ObjectWebhttp://joram.objectweb.orgDéveloppé initialement par une équipe mixte Bull – Université – INRIADéveloppement et support par ScalAgent Distributed Technologies

Usage doubleService de messagerie autonome pour applications Java (J2EE à J2ME)Composant de messagerie asynchrone intégré dans un serveur d’application J2EE (JonAS, Jboss, autres)

© ScalAgent Distributed Technologies – 2005 60

JORAM : une plate-forme JMSJORAM : une plate-forme JMS

JORAM est une plate-forme JMS open source

conforme à la specification JMS

qui fournit les deux modes de communication point-à-point et Publish/Subscribe

qui s’appuie sur un MOM fiable, construit à l’aide d’une technologie d’agents distribués

JMS ClientApplication_X

JMS API

JORAM Clientproducer / Consumer

JMS ClientApplication_Y

JMS API

JORAM Clientproducer / Consumer

JORAM Server(queues, topics, . .)

agent agent

Distributed MOM

JORAM Platform

Page 16: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

16

© ScalAgent Distributed Technologies – 2005 61

JORAM : architecture logiqueJORAM : architecture logiqueArchitecture distribuée (type ‘‘snowflake’’)

Serveurs de messagerie interconnectés sur Internet

Architecture configurableServeurs et clients associésObjets de communication (queues, topics)Protocoles de communication, sécurité, persistance, etc.

Q1Q1

T1T1

Q2Q2

T2T2

Q3Q3

MOM

MOM

MOM

MOM

MOM

Distributed MOM

TCP/IP

JORAM ServerJORAM Server

JORAM Server

QQ

TT

Queue

Topic

ApplicationJoramClient

ApplicationJoramClient

Application

JoramClient

EmbeddedApplication

LightweightClient

ApplicationJoramClient

ApplicationJoramClient

© ScalAgent Distributed Technologies – 2005 62

JORAM – Architecture logiqueJORAM – Architecture logique

Serveur Joram

ConnectionFactory

Clie

nt 1

Clie

nt J

oram

Proxy Client1 Proxy Client2

Destination

Message JMS

Clie

nt 2

Clie

nt J

oram Receiver

Session

Connection

Message JMS

Sender

Session

Connection

© ScalAgent Distributed Technologies – 2005 63

Clie

nt 1

Clie

nt 2

JORAM – Point To PointJORAM – Point To Point

Serveur JORAM

Proxy1 Proxy2

Queue

Clie

nt J

oram

Message MOM

Message JMS

Send

Message JMS

Receive

Message MOM

Receiver

Session

Connection

Sender

Session

Connection

Clie

nt J

oram

Flot de données(send - receive)Accusé de réception

© ScalAgent Distributed Technologies – 2005 64

Clie

nt 1

Clie

nt 2

JORAM – Publish/SubscribeJORAM – Publish/Subscribe

Serveur JORAM

Proxy1 Proxy2

Topic

Clie

nt J

oram

Message MOM

Message JMS

Send

Message JMS

Receive

Message MOM

Publisher

Session

Connection

Subscriber

Session

Connection

Clie

nt J

oram

Flot de données(send - receive)Accusé de réception

Page 17: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

17

© ScalAgent Distributed Technologies – 2005 65

JORAM – Architecture centraliséeJORAM – Architecture centralisée

Client 1

ClientJoram

Client 2

Client Joram

Serveur Joram

Dest.

Px1 PX2

TCP/IP TCP/IP

© ScalAgent Distributed Technologies – 2005 66

JORAM – Serveur co-localiséJORAM – Serveur co-localisé

Client 1

ClientJoram

Client 2

Client Joram

Serveur Joram

Dest.

Px1 PX2

TCP/IP

© ScalAgent Distributed Technologies – 2005 67

JORAM – Architecture distribuéeJORAM – Architecture distribuée

Client 1

ClientJoram

Client 2

ClientJoram

Px1 Px2

T

QT

MOM Scalagent

Message MOM

Message JMS

Message MOM

Message MOM

Message JMS

ServeurJoram 1

ServeurJoram 3

ServeurJoram 2

TCP-IPHTTPSSL. . .

TCP-IPHTTPSSL. . .

© ScalAgent Distributed Technologies – 2005 68

JORAM – Architecture distribuéeJORAM – Architecture distribuée

Client 1

Joram

Client 3

Joram

Px1 Px3MOM Scalagent

Q1 Q3

Client 2

Joram

Px2

ServeurJoram 1

ServeurJoram 3

ServeurJoram 2

Page 18: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

18

© ScalAgent Distributed Technologies – 2005 69

Queues / Topics

MOMTCP/IP SSL

HTTP SOAP

Client 2

JMS API

Client JoramClient léger

Client 3

Queues / Topics

MOM

Client 1

Client Joram

TCP/IP SSL

HTTP SOAP

JMS API

JORAM : protocoles de communicationJORAM : protocoles de communication

SOAP Proxy

Messages Soap/XMLprotocole HTTP

KXML / KSOAP Apache / Axis

Messages Soap/XMLprotocole HTTPProtocole TCP

(objets Java)

TCP Proxy TCP Proxy

Protocole TCP(objets Java)

Apache

SOAP Proxy

© ScalAgent Distributed Technologies – 2005 70

JORAM V4.x – fonctions avancéesJORAM V4.x – fonctions avancées

Répartition de chargeTopic “clustérisé”Queue “clustérisée”

Haute disponibilitéServeur Joram HA

Queues et topics répliqués

ConnectivitéPasserelle JMS Passerelles Mail et FTPClient “léger” - KJoramSupport de JCA 1.5

Annuaire JNDI distribué

AdministrationSupport de l’API JMX

SécuritéLiens sécurisés par protocole SSL (Server to Server, Client to Server)Gestion des pare-feux

Joram “embarqu锓bundle” JORAM pour passerelle OSGiServeur embarqué

communication peer-to-peer

© ScalAgent Distributed Technologies – 2005 71

Joram – Topic « clusterisé »Joram – Topic « clusterisé »

Sub

T

Sub

Sub

T

T

Sub

Sub

Sub

SubPub

Message

MessageMessage

MessageMessageMessageMessageMessage

MessageMessage

© ScalAgent Distributed Technologies – 2005 72

JORAM – Clustered QueueJORAM – Clustered Queue

“Clustered” Queue = ensemble de queues coopérantesIndépendance des queues (les accès locaux sont privilégiés)Répartition de charge lorsque le nombre de messages reçus/demandés excède une limiteLa sémantique des Queues est respectée (i.e. un seul consommateur)

Producteurs Consommateurs

Clustered_Q_2Serveur JORAM

JMSMessage

JMSMessage

Clustered_Q_1Serveur JORAM

QQ

QQ

Page 19: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

19

© ScalAgent Distributed Technologies – 2005 73

Haute disponibilité : JORAM HAHaute disponibilité : JORAM HA

Serveur JORAM HAArchitecture physique en grappe (cluster)Réplication (Queues et Topics) et redondance active

Q1Q1 TaTa

JORAM Server

QQ Queue

TT Topic

Application

JoramClient

Q1Q1 TaTa

JORAM Server

JORAMServer

HA

© ScalAgent Distributed Technologies – 2005 74

Communication peer-to-peerserveur JORAM « embarqué »

Communication peer-to-peerserveur JORAM « embarqué »

Client 2

Client Joram

Serveur Joram

Dest.

Px1 PX2

TCP/IP

Client 1

ClientJoram

TCP/IP

Client 2

Client Joram

Client 2

Client Joram

Serveur Joram

Dest.Dest.

Px1 PX2

TCP/IP

Client 1

ClientJoram

Client 1

ClientJoram

TCP/IP

Client 1

ClientJoram

Serveur Joram

Proxy-1

Client 2

ClientJoram

Serveur Joram

Proxy-1

© ScalAgent Distributed Technologies – 2005 75

Plan du coursPlan du cours

I. Caractérisation des systèmes asynchrones

II. Modèles pour la programmation asynchrone

III. Middleware asynchrone (MOM)

IV. JMS : un exemple de programmation asynchrone

V. JORAM : un exemple de middleware asynchrone

VI. Etude de cas

VII. Conclusion : état des lieux et perspectives

© ScalAgent Distributed Technologies – 2005 76

Etude de cas : FastTrackEtude de cas : FastTrack

Réseau d’échange mondial sur les droits d’auteurs pour

les oeuvres musicalesDescription des oeuvres et des auteurs, utilisation des oeuvres,

gestion des droits, …

Réseau d’échange mondial sur les droits d’auteurs pour

les oeuvres musicalesDescription des oeuvres et des auteurs, utilisation des oeuvres,

gestion des droits, …

FastTrack est un GIEregroupant des sociétés de gestion de droits d’auteurs

du monde entier

FastTrack est un GIEregroupant des sociétés de gestion de droits d’auteurs

du monde entier

Page 20: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

20

© ScalAgent Distributed Technologies – 2005 77

Motivations et ObjectifsMotivations et Objectifs

MotivationsCoopération entre sociétés de gestion des droits d’auteurs

Echange de documentation sur les œuvres Traitement des droits d’auteurs

Automatisation des procéduresDiminuer (éliminer) les échanges ‘‘physiques’’Accélérer le traitement des droits d’auteursArbitrer les conflits

ObjectifFournir un système d’échange d’information sur les œuvres

Commun à l’ensemble des partenairesQui respecte l’indépendance et l’autonomie des partenaires(choix de fournisseur, procédures internes, exploitation, etc.)

© ScalAgent Distributed Technologies – 2005 78

Spécifications fonctionnellesSpécifications fonctionnelles

Application de consultation des œuvresServeur Web (HTTP, SOAP, XML)

Application d’échange des œuvresEchanges interactifs

Mode Push : œuvre demandée par un utilisateur extérieurMode Pull : œuvre envoyée par un utilisateur local à des sites distants

Echanges batchEnvoi de mises à jour sur un ensemble d’œuvres

Futurs usagesCollection et traitement des droits d’auteursLiaison automatisée avec les procédures internesCroissance de la charge dimensionnement

Sitedemandeur

Envoi Requête(id. œuvre)

Envoi Oeuvre

Sitegestionnaire

Siterécepteur

© ScalAgent Distributed Technologies – 2005 79

Couplage faibleCouverture à grande échelle (planète) sur InternetOrganisations et modes de fonctionnement indépendantsSolution non intrusive (respecte l’autonomie des participants)

Solution scalable et configurableGros volumes de données et communications multi - pointsÉchanges asymétriques (ex. US goulot d’étranglement)

Solution évolutiveCroissance rapide de la communauté d’utilisateursNouveaux usages

Mise en oeuvre de la solutionMaîtrise des coûts - solution « logiciel libre »

Cahier des chargesCahier des charges

© ScalAgent Distributed Technologies – 2005 80

DimensionnementDimensionnement

La description des œuvres>15 millions aujourd’hui, En augmentation rapide : musique électronique, arrivée de nouveaux membresDocumentation sur une œuvre : de 5 KB à 10 KB

Les échanges entre sociétésInteractifs : une (ou plusieurs) œuvre(s) Batch (mise à jour) : un grand nombre d’œuvre simultanément

n MBCharge interactive (exemple : Sacem)

20 utilisateurs concurrents (mais pics de charge)Echanges asymétriques

60% des œuvres US utilisées en France90% des œuvres US utilisées en AllemagneSituation très hétérogène à l’intérieur de l’Europe

Page 21: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

21

© ScalAgent Distributed Technologies – 2005 81

Choix d’architectureChoix d’architecture

Architecture centraliséeServeur JMS unique

Architecture asymétriqueUn serveur par site/organisationServeurs indépendants (pas de communication entre eux)Fonctionnement privilégiant les clients « locaux »

Architecture distribuéeUn serveur par site/organisation (par groupe de sites)Serveurs interconnectés

Architectures hybridesFondées sur un placement optimal des Queues et Topics

© ScalAgent Distributed Technologies – 2005 82

Critères d’évaluationCritères d’évaluation

AutonomiePréserver l’autonomie et la disponibilité des SI locaux malgré les pannes

FiabilitéGarantie de délivrance des messages

PerformanceNb. et volume des messages, Dimensionnement des ressources systèmes

ScalabilitéCapacité de croissance des charges dans les évolutions du système

ExploitationDéploiement et administrationMonitoring et reporting

Flexibilité - évolutivitéÉvolution du nombre d’organisationsÉvolution des usages

Coût de la solutionCoûts de développement/maintenanceCoûts de déploiement (hardw; & softw.)Coûts d’exploitation

Autres. . .

© ScalAgent Distributed Technologies – 2005 83

Architecture centraliséeArchitecture centralisée

Administration/Exploitation simple et efficaceFaible disponibilité : panne du serveur, panne réseau vers le serveurFaible scalabilité : toutes ressources concentrées sur le même serveur

Réponse possible : architecture en grappe (cluster) répartition de chargemais « clustering » ne signifie pas ici « haute disponibilité »

JMS ServerQa Qb Qc

ClientA

JMS ServerQb

JMS ServerQc

ClientB

ClientC

© ScalAgent Distributed Technologies – 2005 84

Architecture asymétriqueArchitecture asymétrique

Autonomie : les clients locaux sont privilégiés Administration: systèmes JNDI locaux (pas de connexion entre serveurs)Performance : 2 échanges à grande distance pour une lectureScalabilité : la complexité de la gestion des queues croit comme le carré du nombre de sites

JMS Server A

Qb Qc

ClientA

ClientC

ClientB

JMS Server B

Qa Qc

Send Receive

Receive

Page 22: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

22

© ScalAgent Distributed Technologies – 2005 85

Haute disponibilité des clients et scalabilitéUn serveur peut être partagé par plusieurs organisationsSolution reconfigurableAdministration plus complexe

Architecture distribuéeArchitecture distribuée

Joram Server AProxy

A Qa

Joram Server B&C

ProxyBQbQc

ProxyC

SendReceive

ClientC

SI_C

ClientB

SI_B

ClientA

SI_A

© ScalAgent Distributed Technologies – 2005 86

SynthèseSynthèse

EasyComplexEasy Flexibilité

MediumMediumLowCoût

HighPoorPoorScalabilité

ComplexMediumEasy Administration

HighHigh for senderPoor for receiver

PoorDisponibilité

OKOKOKFiabilité

Architecturedistribuée

Architectureasymétrique

Architecturecentralisée

© ScalAgent Distributed Technologies – 2005 87

Qgema

Qsacem

Qsgae

Europe

Evolution : architecture hybrideEvolution : architecture hybride

QfasttrackClientBMI

USA

cache

Traitement des flots asymétriques

© ScalAgent Distributed Technologies – 2005 88

Plan du coursPlan du cours

I. Caractérisation des systèmes asynchrones

II. Modèles pour la programmation asynchrone

III. Middleware asynchrone (MOM)

IV. JMS : un exemple de programmation asynchrone

V. JORAM : un exemple de middleware asynchrone

VI. Etude de cas

VII. Conclusion : état des lieux et perspectives

Page 23: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

23

© ScalAgent Distributed Technologies – 2005 89

Systèmes asynchrones : synthèseSystèmes asynchrones : synthèse

Modèle de programmationLe modèle point à point est stableNombreux travaux pour faire évoluer le modèle multi-points (publish/subscribe) JMS est le seul effort de normalisation au niveau API

MiddlewarePas d’architecture de référenceInteropérabilité à travers des passerelles ad hoc (pas d’équivalent du protocole IIOP de Corba)

Paramètres d’efficacitéL’architecture distribuée évite les goulots d’étranglement et permet le passage à l’échelle

répartition de charge et réduction de la bande passanteLes réceptacles de messages (queues et topics) doivent être proches des consommateursConfiguration des paramètres de QoS pour éviter les coûts inutiles

persistance, sécurité

Fiabilité et disponibilitéFonction ‘‘store and forward’’Garantie de délivrance des messages

© ScalAgent Distributed Technologies – 2005 90

Systèmes asynchrones : perspectivesSystèmes asynchrones : perspectives

Systèmes à grande échelle (Internet)Performance : latence, congestionMontée en charge (scalabilité)Flexibilité : adaptation à des configurations variéesDisponibilité et fiabilité : gestion des pannes temporaires Sécurité

Publish-Subscribe par le contenuGestion des abonnements et des événementsConséquences sur l’architecture du systèmePassage à l’échelle

Exemple : GRYPHONProjet de recherche (IBM T.J. Watson Center) sur ces thèmeshttp://www.research.ibm.com/gryphon/research.html

© ScalAgent Distributed Technologies – 2005 91

Systèmes à grande échelleSystèmes à grande échelle

VolumétrieNb de sites (émetteurs, consommateurs, serveurs)Volume et taille des messages échangés

Congestion du réseau, Capacité de stockage des serveurs (proxy, queues)Impact du mode déconnecté : stockage et flots de données à la reprise

Réduction du volume des échanges (Publish/Subscribe)Utilisation de IP Multicast pour les réseaux locauxRegroupement des messages dans les réseaux à grande distance

par l’administrateur : utilisation de « topics clustérisés »directement par le middleware : algorithmes de multiplexage/routage

Elimination des échanges inutilesRapprocher les filtres des sources d’informationPurge des messages ayant perdu leur intérêt pour le consommateur

Paramètre « durée de vie » (positionné par l’émetteur)Critères sémantiques fixés par le consommateur

© ScalAgent Distributed Technologies – 2005 92

Publish / Subscribe « étendu »Publish / Subscribe « étendu »

ObjectifRendre l’association entre abonnement et publication plus dynamiqueÉtat des lieux

« topic » hiérarchisésSélecteur sur la partie < en-tête + propriétés> du message

BesoinsSélectionner des messages en fonction du contenu (content-based PS, data-centric PS)créer des événements sémantiquement plus riches par combinaison d’événements élémentairesInterpréter des séquences d’événements

Problèmes à résoudreGestion de données : expression et résolution de requêtes complexesMise en œuvre dans un environnement distribué (à grande échelle)

Page 24: Plan du cours - LIG Membreslig-membres.imag.fr/krakowia/Files/Enseignement/M2R-SL/CR/Flips/... · Contexte : Module CR - Construction d’applications parallèles et réparties

24

© ScalAgent Distributed Technologies – 2005 93

Publish / Subscribe « par le contenu »Publish / Subscribe « par le contenu »

Expression du filtrageChaînes de caractères : requêtes SQL sur des tuples < nom_propriété,valeur >

Extension du mécanisme de filtrage de JMSObjets « modèles » : l’abonnement fournit un objet de référence pour la sélection

inspiré du modèle de JavaSpacesCode exécutable : l’abonnement fournit un programme de filtrage

Mise en œuvre du filtrageDiffusion des événements et filtrage local

Utilisation possible de IP Multicast sur réseaux locauxPropagation des filtres dans le réseau de serveurs

© ScalAgent Distributed Technologies – 2005 94

Evénements sémantiquesEvénements sémantiques

Enrichir l’espace des événements: événements composés

Utiliser les propriétés des événements pour optimiser la gestion des flots de données

COURS_MOYEN(nom: C_moyen, chute)

COURS_MAX(nom : C_max, C_actuel)

FUSION(nom, cours, nb_titres)

Expansion

Expansion

construction

construction

Ev-cours_max

Ev-cours_moyen

NYSE(titre, cours, nb_titres)

Select

NASDASQ(titre, cours, volume)

Select

Transformation

Transformation

© ScalAgent Distributed Technologies – 2005 95

Bibliographie (1/2)Bibliographie (1/2)

ObjectWeb JORAMhttp://joram.objectweb.orghttp://www.scalagent.comRéférence article

IEEE Distributed Systems OnLine, http://dsonline.computer.org/middleware/index.htmMessage-oriented middlewareEvent-based middleware

Publish/SubscribeEugster et al. « The Many Faces of Publish/Subscribe » ACM Computing Surveys, 35(2), 2003Gryphon (2003) : The Gryphon System, http://www.research.ibm.com/gryphon

Les agents distribuéshttp://dsonline.computer.org/agents/index.htmhttp://www.agentcities.org

© ScalAgent Distributed Technologies – 2005 96

Bibiliographie (2/2)Bibiliographie (2/2)

IBM WebSphere MQhttp://www.ibm.com/software/integration/mqfamily

Microsoft Message Queue Server (MSMQ)http://www.microsoft.com/windows2000/technologies/communications/msmq

BEA MessageQhttp://www.bea.com/content/products/more/messageq

TIBCO Rendezvoushttp://www.tibco.com/solutions/products/active_enterprise/rv

FioranoMQ 5http://www.fiorano.com/products/fmq/overview.htm

Softwired iBus//MessageBushttp://www.softwired-inc.com/products/products.html

Sun Java Message Service (JMS)http://java.sun.com/products/jms

Progress Sonic MQhttp://www.sonicsoftware.com/products/enterprise_messaging