plan du cours - lig membreslig-membres.imag.fr/krakowia/files/enseignement/m2r-sl/cr/flips/... ·...
TRANSCRIPT
1
www.scalagent.com
Systèmes et applications asynchronesMiddleware à message
Systèmes et applications asynchronesMiddleware à message
Roland BalterScalAgent Distributed Technologies
Roland BalterScalAgent Distributed Technologies
© 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é, . .
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
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
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)
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). . .
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
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
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
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
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)
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)
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 »
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();
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
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
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
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
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
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
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
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
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
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
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)
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