Plan du cours. Systèmes et applications asynchrones Middleware à message. Architecture distribuée. Objectifs du cours



Documents pareils
MOM: Concepts & Applications

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

Introduction aux applications réparties

Messagerie asynchrone et Services Web

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

NFP111 Systèmes et Applications Réparties

Urbanisme du Système d Information et EAI

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Intégration de systèmes

Le modèle client-serveur

Des solutions J2EE open source professionnelles adaptées à votre système d information d entreprise

TD sur JMS ) Qu est-ce qu un middleware orienté message (MOM)? Quelles différences faites-vous entre un MOM et JMS?

MQPerf un outil de diagnostic en mode SaaS des performances optimales du MOM JORAM

Software Engineering and Middleware A Roadmap

JOnAS 5. Serveur d application d

Gestion et sécurisation des échanges XcMon, PMPI 03.31/2004 PDB. Global Data Exchange System

L EAI. par la pratique. François Rivard. Thomas Plantain. Groupe Eyrolles, 2003 ISBN :

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

18 TCP Les protocoles de domaines d applications

Mettez les évolutions technologiques au service de vos objectifs métier

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

NOVA BPM. «Première solution BPM intégr. Pierre Vignéras Bull R&D

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Architectures n-tiers Intergiciels à objets et services web

Nouvelles technologies pour l intégration : les ESB

Intégration de systèmes client - serveur Des approches client-serveur à l urbanisation Quelques transparents introductifs

Services OSI. if G.Beuchot. Services Application Services Présentation - Session Services Transport - Réseaux - Liaison de Données - Physique

Conception des systèmes répartis

Urbanisation des SI. Des composants technologiques disponibles. Urbanisation des Systèmes d'information Henry Boccon Gibod 1

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Prise en compte des ressources dans les composants logiciels parallèles

Description de la formation

Le 09 et 10 Décembre 09

Windows Internet Name Service (WINS)

Conception Exécution Interopérabilité. Déploiement. Conception du service. Définition du SLA. Suivi du service. Réception des mesures

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

JF SMA'14. A3 - Agent Anytime Anywhere. une plateforme à agents distribués Oct l'expertise middleware.

Architectures d'intégration de données

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Urbanisation des Systèmes d'information

Smart Notification Management

Introduction aux intergiciels

Les nouvelles architectures des SI : Etat de l Art

Cours de sécurité. Pare-feux ( Firewalls ) Gérard Florin -CNAM - - Laboratoire CEDRIC -

Axway SecureTransport

Environnements de Développement

SQL Server 2014 Administration d'une base de données transactionnelle avec SQL Server Management Studio

Le passage à l échelle de serveur J2EE : le cas des EJB

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Services Réseaux - Couche Application. TODARO Cédric

Mise en œuvre des serveurs d application

PROJET : ETNIC ESB JANUS. Guide technique : WS-Notification - Clustering. BULL Services et Solutions

CORBA. (Common Request Broker Architecture)

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Cisco Certified Network Associate

Contrôle d accès Centralisé Multi-sites

EFIDEM easy messaging systems. EFIDEM SAS 3 rue de Téhéran Paris T : F : info@efidem.

L'EAI (Enterprise Application Intégration)

1. Introduction à la distribution des traitements et des données

Fiche de l'awt Intégration des applications

INSTITUT NATIONAL POLYTECHNIQUE DE GRENOBLE

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

SOLUTION POUR CENTRE D'APPEL

e-business, EAI et Business Intelligence Le triptyque gagnant profondément les structures des organisations et par conséquence

Gouvernez les flux de données au sein de votre entreprise pour une meilleure flexibilité

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

MEAD : temps réel et tolérance aux pannes pour CORBA

BMC Middleware Management

Enterprise Intégration

Les Architectures Orientées Services (SOA)

PACK SKeeper Multi = 1 SKeeper et des SKubes

LIVRE BLANC OCTOBRE CA Unified Infrastructure Management : architecture de la solution

LES FONCTIONS DE SURVEILLANCE DES FICHIERS

1.Introduction - Modèle en couches - OSI TCP/IP

Cours Bases de données

ORACLE 10g Découvrez les nouveautés. Jeudi 17 Mars Séminaire DELL/INTEL/ORACLE

SQL Server Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)

Programmation Web Avancée Introduction aux services Web

Ethernet Industriel Réseaux Ethway Coupleur Ethernet sur Automates Programmables. Plan. Contexte

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication

L Orchestration de Services Web avec Orchestra. Goulven Le Jeune Orchestra Project Manager

Devoir Surveillé de Sécurité des Réseaux

NSY102. Conception de logiciels Intranet Introduction

Introduction à la conception de systèmes d information

CORBA haute performance

Les formations. Administrateur Systèmes et Réseaux. ENI Ecole Informatique

Intergiciel - concepts de base

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Groupe Eyrolles, 2004 ISBN :

RCS : Rich Communication Suite. EFORT

Internet Information Services (versions 7 et 7.5) Installation, configuration et maintenance du serveur Web de Microsoft

Serveurs de noms Protocoles HTTP et FTP

Ordinateur central Hôte ERP Imagerie/Archivage Gestion des documents Autres applications d'administration. Messagerie électronique

ETUDE ET IMPLÉMENTATION D UNE CACHE L2 POUR MOBICENTS JSLEE

Présentation Internet

Introduction aux «Services Web»

Groupe Eyrolles, 2004, ISBN :

Juillet Fax sur IP & Virtualisation

EAI. De l intégration à l e-business. Novembre François Rivard consultant senior Tél :

Transcription:

Plan du cours Systèmes et applications asynchrones Middleware à message Roland Balter ScalAgent Distributed Technologies 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 Roland.Balter@scalagent.com www.scalagent.com ScalAgent Distributed Technologies 2005 3 Objectifs du cours Architecture distribuée 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 Application/système distribué Ensemble de composants logiciels coopérants Coopération = communication + synchronisation Eléments de choix d une architecture distribuée ----------------- API -------------------- Modèle de programmation communication & synchronisation Middleware services systèmes pour gestion de ressources distribuées Système d exploitation + TCP/IP CORBA, JMS,.. Synchrone : -serveur (RPC, RMI, ORB, etc.) Asynchrone : messages et événements Objets mobiles Objets partagés Flots d exécution, mémoire, persistance Fiabilité, disponibilité, sécurité, scalabilité,.. ScalAgent Distributed Technologies 2005 2 ScalAgent Distributed Technologies 2005 4

NT Exemple : supervision de ressources distribuées Solution traditionnelle client / serveur Cahier des charges Surveillance 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 dynamiquement connexion déconnexion, évolution du système (exemple : nouvelle machine) Les administrateurs doivent pouvoir accéder à l'information quelle que soit leur localisation adm adm ScalAgent Distributed Technologies 2005 5 ScalAgent Distributed Technologies 2005 7 Solution (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. Solution «Messaging» Les différents éléments administrés émettent des messages : changements d'état et de configuration alertes, 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 ScalAgent Distributed Technologies 2005 6 ScalAgent Distributed Technologies 2005 8

NT Solution «Messaging» Un peu d histoire adm adm 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ît le 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 diffusion le producteur publie une information dans un forum le consommateur lit le contenu du forum quand il le souhaite ScalAgent Distributed Technologies 2005 9 ScalAgent Distributed Technologies 2005 11 Bilan : les atouts du mode asynchrone Systèmes faiblement couplés Couplage 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 échelle Simplicité Fonctionnement en mode partitionné : pannes temporaires de réseau Communication «anonyme» : non connaissance des correspondants Modèle de communication «canonique» Envoi de message Base universelle : TCP-UDP/IP Les usages des systèmes asynchrones Supervision Parc d équipements distribués Applications distribuées Echange et partage de données Envoi de documents (EDI) Mise à jour d un espace de données partagées distribuées Intégration de données Alimentation d un datawarehouse/datamart depuis des sources de données hétérogènes autonomes : ETL (Extract Transfer Load) Intégration d application Intra-entreprise : EAI (communication, routage, workflow) Inter-entreprises : B2B et Web Services (communication, orchestration) Informatique mobile Communication entre équipements mobiles (souvent déconnectés) et serveurs d appplication ScalAgent Distributed Technologies 2005 10 ScalAgent Distributed Technologies 2005 12

Systèmes asynchrones : mode d emploi Communication par messages : exemple 1 Outils de développement et d administration Applications API envoi réception messages messages administration... Modèle de programmation (communication par messages) Environnement d exécution MOM Système hôte, TCP-IP communication fiabilité sécurité... exemple : JMS exemple : Réalisation d'un échange asynchrone Processus émetteur/producteur Send (Id_bal, message) Processus récepteur/consommateur Msg = Receive (Id_bal) ScalAgent Distributed Technologies 2005 13 ScalAgent Distributed Technologies 2005 15 Communication par messages : modèle de programmation Mode de synchronisation Communication asynchrone émission non bloquante réception bloquante (attente jusqu'à arrivée d'un message, ou retour d erreur) Mode de désignation communication 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 transmission messages possiblement typés Communication par messages : exemple 2 Réalisation d une interaction de type «client-serveur» Send(bal-S, nom-de-service, paramètres) Msg = Receive(bal_C) < nom_de_service, paramètres, bal_c > bal_c (résultat) bal_s Serveur Msg = Receive(bal_S) exec (nom_de_service, paramètres).. Send (bal-c, résultat) ScalAgent Distributed Technologies 2005 14 ScalAgent Distributed Technologies 2005 16

Communication par messages : exemples d environnements existants Environnement de type "micro-noyau" mécanisme et primitives de base exemples : Chorus, Mach/OSF-1 Environnement "à la unix" "sockets" Environnement de programmation parallèle PVM et/ou MPI Environnement d'intégration d'applications (et/ou de données) middleware à messages: MOM interface de programmation ad hoc tentative de normalisation via Java JMS 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 17 ScalAgent Distributed Technologies 2005 19 Les éléments de définition d un système de messagerie Modèle de programmation Structure des messages Mode de production des messages : non bloquant Mode de désignation : indirect, groupe, anonyme Mode de communication : point à point, multi-points Mode de consommation des messages : push, pull API JMS (Java Messaging Service) Environnement d exécution (run time) Architecture : centralisée, partitionnée, répartie Qualité de service : fiabilité, sécurité, scalabilité, etc. Format 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'application Texte Données structurées (XML) Binaire Objets (sérialisés)... ScalAgent Distributed Technologies 2005 18 ScalAgent Distributed Technologies 2005 20

Modes de désignation Désignation indirecte Les entités communiquent via un objet intermédiaire : destination Destination : structure de données réceptacle de messages Exemple : Queue (file) de messages Désignation de groupe groupe = ensemble de consommateurs identifiés par un nom unique gestion dynamique du groupe : arrivée/départ de membres différentes politiques de service dans le groupe : 1/N, N/N Désignation anonyme désignation associative : les destinataires d'un message sont identifiés par des propriétés (attributs du message) Publish/Subscribe (Publication / Abonnement) 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é Application A send Gestion des messages Queue Application B Application C receive receive ScalAgent Distributed Technologies 2005 21 ScalAgent Distributed Technologies 2005 23 Modes de communication 4 Relations entre producteur(s) et consommateur(s) 1 producteur 1 consommateur 1 producteur N consommateurs P producteurs 1 consommateur P producteurs N consommateurs.. mais seulement 2 Modèles de communication de base Point-To-Point : 1 producteur 1 consommateur Multi-points : 1 producteur N consommateurs Modèle Point à Point (2/2) Séparation entre destination et consommateur destination statique : commune à plusieurs producteurs/consommateurs Consommateur unique pour un message donné Indépendance du producteur et du consommateur Via l objet «Queue de messages» Rend possible l évolution de la relation producteur - consommateur Indépendance temporelle : asynchronisme Acquittement du traitement par le consommateur Acquittement de niveau système Libération de l emplacement du message dans la queue Fiabilisation de l opération de consommation Acquittement de niveau applicatif : à programmer explicitement ScalAgent Distributed Technologies 2005 22 ScalAgent Distributed Technologies 2005 24

Modèle multi-points : communication de groupe (1/2) Modèle Publish/Subscribe (1/2) Application A send Application B receive Application C receive Application D B C D E receive Gestion du groupe Application E receive Un message émis vers un sujet (Topic) est délivré à l ensemble des applications abonnées à ce Topic. Application A publish Gestion des messages Topic B C Gestion des abonnements Application B subscribe Application C on message do subscribe On message do ScalAgent Distributed Technologies 2005 25 ScalAgent Distributed Technologies 2005 27 Communication de groupe (2/2) Gestion du groupe Communication multi-points (1 producteur N consommateurs) Indépendance vis-à-vis des émetteurs Gestion dynamique Arrivée / départ de membres Politiques de gestion des messages Persistance, durée de vie Historique (forum) Politiques de service des messages 1 / N : répartition de charge N / N : réplication (tolérance aux pannes) P / N : réplication partielle Modèle Publish/Subscribe (2/2) Relation producteur - consommateur Communication multi - points : 1 producteur N consommateurs Désignation anonyme via le Topic Dépendance temporelle Le message est délivré aux consommateurs «actifs» lors de la production Critères d abonnement Statique : «subject based» Organisation plate ou hiérarchique des sujets Dynamique : «content based» Implantation distribuée délicate Abonnements temporaires/durables Peugeot Auto 206 307 Renault ScalAgent Distributed Technologies 2005 26 ScalAgent Distributed Technologies 2005 28

Modes de consommation Environnement d exécution (run time) «Pull» consommation explicite Les consommateurs programment explicitement l accès aux messages En cas d absence de message : attente ou exception «Push» consommation implicite Une 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 des messages Gestion des s Reaction Consommateur Receive Consommateur On do Reaction Reaction Architecture logique Service de messagerie (message server, message provider) Gestion des messages (queues, topics) Gestion des connexions avec les clients : producteurs, consommateurs s du service : producteurs, consommateurs Architecture physique Centralisée, partitionnée, répartie Qualité de service Disponibilité, fiabilité Sécurité Performance scalabilité ScalAgent Distributed Technologies 2005 29 ScalAgent Distributed Technologies 2005 31 Plan du cours Architecture logique I. Caractérisation des systèmes asynchrones II. Modèles pour la programmation asynchrone Application X Émetteur ------------------------ Récepteur Application Y III. Middleware asynchrone (MOM) IV. JMS : un exemple de programmation asynchrone V. JORAM : un exemple de middleware asynchrone API messagerie messagerie producteur / Consommateur Serveur de rie API messagerie messagerie producteur / Consommateur VI. Etude de cas VII. Conclusion : état des lieux et perspectives Service de messagerie messagerie producteur / Consommateur API messagerie Application Z ScalAgent Distributed Technologies 2005 30 ScalAgent Distributed Technologies 2005 32

Architecture physique Serveur centralisée Hub and Spoke Serveur distribué Snowflake Serv. MSG Serv. Serv. MSG MSG Serv. MSG Administration Administration du MOM Configuration, déploiement Monitoring Administration du service de messagerie Service de désignation : identification des serveurs, émetteurs/récepteurs Service de messagerie : gestion des objets de communication : queues, topics, etc. Configuration, déploiement Monitoring, reconfiguration s : création/destruction, droits d accès Serveur distribué Bus Serv. MSG Serv. MSG Serv. MSG ScalAgent Distributed Technologies 2005 33 ScalAgent Distributed Technologies 2005 35 Qualité 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) Transaction Sécurité Répartition de charge Ordonnancement Systèmes asynchrones : technologies alternatives Web asynchrone HTTP asynchrone ( one way ) Requête sans réponse Mêmes propriétés que HTTP (fiabilité, sécurité, etc.) CORBA Corba Notification Service Communication asynchrone en Java JAXM JINI JMS ScalAgent Distributed Technologies 2005 34 ScalAgent Distributed Technologies 2005 36

Les systèmes asynchrones dans le monde Corba (1/2) rie Java : JAXM Bus Corba Modèle de communication synchrone (client-serveur) API : interfaces IDL Middleware : ORB (Object Request Broker) Objet Corba Stub Demande de service, paramètres d appels Contrat (IDL) Interface Objet Corba Service Skeleton Object adaptor résultat JAXM: Java API for XML Messaging API Java pour émettre et recevoir des messages SOAP Usage de profils de messagerie définis sur SOAP Support 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 JMS Système de messagerie «léger» (version stand-alone sans service de msg.) Interopérabilité avec un client SOAP 1.1 Pas mature peu d implémentations disponibles ORB ScalAgent Distributed Technologies 2005 37 ScalAgent Distributed Technologies 2005 39 Les systèmes asynchrones dans le monde Corba (2/2) JINI Service de Notification Corba Service de notification : courtier de messages Gestionnaire des messages, queues, abonnements,.. Accessible via des interfaces IDL Production Send (msg, Queue) Call Serv_Not(msg, queue) Consommation Msg= Receive(Queue) Msg = Call Serv_Not(Queue) Modes de production consommation Service de notification Mixte push pull gestion messages Producteur queues, abonnements, QoS Garantie délivrance Reprise après panne Persistance Pull Push ORB consommateur Push Pull ScalAgent Distributed Technologies 2005 38 La technologie JINI Discovery Modèle de programmation pour construire un système comme une fédération de services et de clients Run time pour ajouter, enlever, localiser et accéder Join Network aux services Service Discovery, Join & Lookup Receive Discovery : localisation d un service de recherche Use (client-serveur) Service Join : enregistrement d un service Proxy Network Lookup : recherche d un service Distributed events Event generator : génère des événements sur changement d état Event listener : s abonne aux événements de l Event Generator Événement : identifié par un ID-événement et un ID-source Service Proxy Lookup Lookup Service ScalAgent Distributed Technologies 2005 40

Plan du cours JMS en bref (1/2) 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 Spécification d un système de messagerie Java API Java entre une application et un bus à messages Modèles de communication Point à point : message queuing Multi 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 41 ScalAgent Distributed Technologies 2005 43 Pré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) JMS en bref (2/2) 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 manipulation des queues : communication point-à-point et des topics : communication multi-points (Publish-Subscribe) API simplifiée Ressources réduites ScalAgent Distributed Technologies 2005 42 ScalAgent Distributed Technologies 2005 44

Les concepts de JMS Objets de communication et diagramme de séquence Éléments d architecture Serveur JMS (JMS Provider) JMS Objets administrés ConnectionFactory Destination (Queue & Topic) L administrateur (administration JMS) Le fournisseur d une solution JMS Objets de communication Connexions Sessions Producteur/consommateur s Le programmeur d application (API JMS) ScalAgent Distributed Technologies 2005 45 2 4 JMS Producteur Connection Session Producer 1 - Lookup Objets administrés JNDI Connection Factory Destination 3 3 Queue Sender ou Topic Publisher Queue Receiver ou Topic Subscriber JMS Consommateur 1 - Lookup Connection Session Consumer ScalAgent Distributed Technologies 2005 47 2 4 Architecture d une application JMS «Messaging Domains» Point-to-Point lookup JMS (producteur) Service de noms JNDI ConnectionFactory Destination bind Outil d administration Publish/Subscribe JMS 1.1 : unification des domaines Réduit et simplifie l API (à terme) Permet l utilisation de Queues et Topics dans une même session (transaction) Connexion logique JMS (consommateur) JMS Provider Interface «parent» Destination ConnectionFactory Connection Session Producer Consumer Point-à-point Queue QueueConnectionFactory QueueConnection QueueSession QueueSender QueueReceiver Publish/Subscribe Topic TopicConnectionFactory TopicConnection TopicSession TopicPublisher TopicSubscriber ScalAgent Distributed Technologies 2005 46 ScalAgent Distributed Technologies 2005 48

Les objets JMS Objets administrés ConnectionFactory : point d accès à un serveur MOM Destination : Queue ou Topic Objet Connection Crée à partir d un objet ConnectionFactory Authentifie le client et encapsule la liaison avec le JMS provider Gère les Sessions Objet Session Créé à partir d un objet Connection Fournit un contexte (transactionnel) mono-threadé de production/consommation de messages Gère les acquittements de messages et les transactions Le message JMS Entête JMSId, JMSDestination, JMSDeliveryMode, JMSExpiration, JMSPriority, etc. Propriétés Couple <nom, valeur> Corps Text, Map Stream, Object Bytes ScalAgent Distributed Technologies 2005 49 ScalAgent Distributed Technologies 2005 51 Les objets JMS Producer Fabriqué par la session QueueSender, TopicPublisher Permet l émission de message méthodes Send, Publish Consumer Fabriqué par la session QueueReceiver, TopicSubscriber Permet la réception de message Synchrone méthodes Receive { (), (timeout)} ReceiveNoWait () Asynchrone objet Listener à l écoute des messages exécution de la méthode on de l objet Permet 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 JMS - "Point-to-Point" Producteur QueueConnection send QueueSession QueueSender + Messaging QueueConnectionFactory Queue + Consommateur QueueConnection QueueSession QueueReceiver receive QueueConnectionFactory QueueSender String Text selector sender msg = new session.createtext(); (Text) = session.createsender(queue); String("(name connectionfactory receiver.receive(); = ObjectWeb') = (QueueConnectionFactory) or (name = Scalagent'))"); messaging.lookup(" "); QueueReceiver msg.settext(" "); queue = (Queue) receiver messaging.lookup(" "); = session.createreceiver(queue, selector); QueueConnection sender.send(msg); connection = connectionfactory.createqueueconnection(); connection.start(); QueueSession session = connection.createqueuesession( ); ScalAgent Distributed Technologies 2005 50 ScalAgent Distributed Technologies 2005 52

JMS - "Point-to-Point" JMS - "Publish/Subscribe" 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); Text msg = session.createtext(); msg.settext(" "); sender.send(msg); Text msg = (Text) receiver.receive(); 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.setListener(listener); publisher.publish(msg); void on( msg) throws JMSException { // unpack and handle the message } ScalAgent Distributed Technologies 2005 53 ScalAgent Distributed Technologies 2005 55 JMS - "Publish/Subscribe" Production et consommation des messages asynchrone Producteur TopicConnection TopicSession + Messaging TopicConnectionFactory Topic A B x y + Consommateur TopicConnection TopicSession synchrone JMS Send Producteur Ack retour de la méthode Publish synchrone Pull message Serveur JMS Destination Ack Push message JMS Consommateur Receive JMS Consommateur On message do publish TopicPublisher TopicSubscriber Listener asynchrone on TopicConnectionFactory TopicPublisher publisher.publish(msg); void on( topic = (Topic) messaging.lookup("/a"); connectionfactory msg) = session.createpublisher(topic); throws JMSException = (TopicConnectionFactory) { messaging.lookup(" "); TopicSubscriber // unpack topic = and (Topic) subscriber handlemessaging.lookup("/a/x"); the = message session.createsubscriber(topic); TopicConnection Subscriber.setListener(listener); connection = connectionfactory.createtopicconnection(); connection.start(); } TopicSession session = connection.createtopicsession(false, Session.CLIENT_ACKNOWLEDGE); ScalAgent Distributed Technologies 2005 54 ScalAgent Distributed Technologies 2005 56

Qualité de service Abonnements durables (durable subscriptions) ID unique associé à un abonnement durable Si 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 s persistants JMS Producteur 4 - retour de la méthode Publish 1 - Send 3 - Ack 2 - sauvegarde Serveur JMS 5 - Receive 6 - Ack 7 libération sur le support persistant JMS Consommateur Implantation open source de la spécification JMS API JMS : communication asynchrone entre applications Java Bus à messages distribué Disponible sur ObjectWeb http://joram.objectweb.org Développé initialement par une équipe mixte Bull Université INRIA Développement et support par ScalAgent Distributed Technologies Usage double Service 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 57 ScalAgent Distributed Technologies 2005 59 Plan du cours JORAM : une plate-forme JMS 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 JMS Application_X JMS API JORAM producer / Consumer agent JORAM Server (queues, topics,..) JMS Application_Y JMS API JORAM producer / Consumer agent Distributed MOM JORAM Platform 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 ScalAgent Distributed Technologies 2005 58 ScalAgent Distributed Technologies 2005 60

JORAM : architecture logique JORAM Point To Point Architecture distribuée (type snowflake ) Serveurs de messagerie interconnectés sur Internet Architecture configurable Serveurs et clients associés Objets de communication (queues, topics) Protocoles de communication, sécurité, persistance, etc. 1 JMS Send Sender Session Flot de données (send - receive) Accusé de réception 2 JMS Receive Receiver Session Application Application Application JORAM Server Q1 Q1 Q2 Q2 T1 T1 M O M TCP/IP Distributed MOM JORAM Server M O M Q3 Q3 Application Application Connection Proxy1 MOM Connection Proxy2 QQ TT Queue Topic MOM T2 T2 JORAM Server Embedded Application Lightweight MOM Queue Serveur JORAM ScalAgent Distributed Technologies 2005 61 ScalAgent Distributed Technologies 2005 63 JORAM Architecture logique JORAM Publish/Subscribe 1 JMS 2 JMS 1 JMS Send 2 JMS Receive Sender Session Receiver Session Publisher Session Flot de données (send - receive) Accusé de réception Subscriber Session Connection Connection Connection Connection Proxy 1 ConnectionFactory Destination Proxy 2 Serveur Proxy1 MOM Topic Proxy2 MOM Serveur JORAM ScalAgent Distributed Technologies 2005 62 ScalAgent Distributed Technologies 2005 64

JORAM Architecture centralisée JORAM Architecture distribuée 1 2 1 2 JMS TCP/IP TCP/IP Px1 Dest. PX2 Serveur Px1 MOM MOM Serveur 1 MOM Scalagent Q T T TCP-IP Serveur HTTP 2 SSL... TCP-IP HTTP SSL... JMS Px2 Messag e MOM Serveur 3 ScalAgent Distributed Technologies 2005 65 ScalAgent Distributed Technologies 2005 67 JORAM Serveur co-localisé JORAM Architecture distribuée 1 2 1 2 3 TCP/IP Px1 PX2 Px1 MOM Scalagent Px2 Px3 Dest. Serveur Serveur 1 Q1 Serveur 2 Q3 Serveur 3 ScalAgent Distributed Technologies 2005 66 ScalAgent Distributed Technologies 2005 68

JORAM : protocoles de communication Topic «clusterisé» 1 JMS API Protocole TCP (objets Java) 3 léger s Soap/XML protocole HTTP KXML / KSOAP 2 JMS API s Protocole Soap/XML TCP protocole (objets Java) HTTP Apache / Axis Sub Sub Sub T T Sub Sub SOAP Proxy TCP Proxy Apache TCP Proxy SOAP Proxy T Sub Queues / Topics Queues / Topics MOM TCP/IP SSL HTTP SOAP MOM TCP/IP SSL HTTP SOAP Pub Sub ScalAgent Distributed Technologies 2005 69 ScalAgent Distributed Technologies 2005 71 JORAM V4.x fonctions avancées JORAM Clustered Queue Répartition de charge Topic clustérisé Queue clustérisée Haute disponibilité Serveur HA Queues et topics répliqués Connectivité Passerelle JMS Passerelles Mail et FTP léger - K Support de JCA 1.5 Annuaire JNDI distribué Administration Support de l API JMX Sécurité Liens sécurisés par protocole SSL (Server to Server, to Server) Gestion des pare-feux embarqué bundle JORAM pour passerelle OSGi Serveur embarqué communication peer-to-peer Clustered Queue = ensemble de queues coopérantes Indé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 limite La sémantique des Queues est respectée (i.e. un seul consommateur) JMS Producteurs JMS Serveur JORAM Clustered_Q_1 Q Serveur JORAM Clustered_Q_2 Q Consommateurs ScalAgent Distributed Technologies 2005 70 ScalAgent Distributed Technologies 2005 72

Haute disponibilité : JORAM HA Plan du cours Serveur JORAM HA Q TT Architecture physique en grappe (cluster) Réplication (Queues et Topics) et redondance active Queue Topic JORAM Server HA JORAM Server Q1 Q1 Q1 Q1 Ta Ta Ta Ta JORAM Server Application 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 73 ScalAgent Distributed Technologies 2005 75 Communication peer-to-peer serveur JORAM «embarqué» Etude de cas : FastTrack 1 2 1 Serveur Proxy-1 FastTrack est estun un GIE GIE regroupant des des sociétés de de gestion de de droits droitsd auteurs du dumonde entier entier TCP/IP TCP/IP Px1 PX2 Dest. Serveur 2 Proxy-1 Serveur Réseau Réseau d échange d échange mondial mondial sur sur les les droits droits d auteurs d auteurs pour pour les les oeuvres oeuvres musicales musicales Description Description des des oeuvres oeuvres et et des des auteurs, auteurs, utilisation utilisation des des oeuvres, oeuvres, gestion gestion des des droits, droits, ScalAgent Distributed Technologies 2005 74 ScalAgent Distributed Technologies 2005 76

Motivations et Objectifs Motivations Coopé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édures Diminuer (éliminer) les échanges physiques Accélérer le traitement des droits d auteurs Arbitrer les conflits Objectif Fournir un système d échange d information sur les œuvres Commun à l ensemble des partenaires Qui respecte l indépendance et l autonomie des partenaires (choix de fournisseur, procédures internes, exploitation, etc.) Cahier des charges Couplage faible Couverture à grande échelle (planète) sur Internet Organisations et modes de fonctionnement indépendants Solution non intrusive (respecte l autonomie des participants) Solution scalable et configurable Gros volumes de données et communications multi - points Échanges asymétriques (ex. US goulot d étranglement) Solution évolutive Croissance rapide de la communauté d utilisateurs Nouveaux usages Mise en oeuvre de la solution Maîtrise des coûts - solution «logiciel libre» ScalAgent Distributed Technologies 2005 77 ScalAgent Distributed Technologies 2005 79 Spécifications fonctionnelles Dimensionnement Application de consultation des œuvres Serveur Web (HTTP, SOAP, XML) Application d échange des œuvres Echanges interactifs Mode Push : œuvre demandée par un utilisateur extérieur Mode Pull : œuvre envoyée par un utilisateur local à des sites distants Echanges batch Envoi de mises à jour sur un ensemble d œuvres Futurs usages Collection et traitement des droits d auteurs Liaison automatisée avec les procédures internes Croissance de la charge dimensionnement Envoi Requête (id. œuvre) Site demandeur récepteur Site gestionnaire Envoi Oeuvre La description des œuvres >15 millions aujourd hui, En augmentation rapide : musique électronique, arrivée de nouveaux membres Documentation sur une œuvre : de 5 KB à 10 KB Les échanges entre sociétés Interactifs : une (ou plusieurs) œuvre(s) Batch (mise à jour) : un grand nombre d œuvre simultanément n MB Charge interactive (exemple : Sacem) 20 utilisateurs concurrents (mais pics de charge) Echanges asymétriques 60% des œuvres US utilisées en France 90% des œuvres US utilisées en Allemagne Situation très hétérogène à l intérieur de l Europe ScalAgent Distributed Technologies 2005 78 ScalAgent Distributed Technologies 2005 80