Message Oriented Middleware

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

SOA et Services Web Dr. Rim Samia Kaabi 26 mars 2017.
Retour sur RMI.
Message Oriented Middleware. Plan Pourquoi un nouveau type de middleware? Quelle lignée logicielle ? Historique JMS : Java Message Server Limplémentation.
Des sockets à RMI Programmation réseau versus programmation objet
Module SI4 Applications réparties Questions Réponses Extraits de Mireille Blay-Fornarino, Audrey Occello et Didier Donsez.
Objets Distribués Chronique d ’une invasion annoncée
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
Chapitre 1 Introduction
Kiamo – CONNECTEUR CRM.
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
Localisation de services techniques dans un modèle à composants H. GRINE, C. Hérault, S. Lecomte, T. Delot Journées Composants, le Croisic 7 avril 2005.
JORAM Java Open Reliable Asynchronous Messaging


Stéphane Frenot - Département Télécommunication - SID - II - Comp 312 Avantages de l'approche distribuée Economie Performance.
UV EJB Message Module Java Expert
Etude des Technologies du Web services
SECURITE DU SYSTEME D’INFORMATION (SSI)
Module 1 : Préparation de l'administration d'un serveur
Analyse et Conception des Systèmes d’Informations
1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05
Aide à la décision et à la négociation dans un problème de gestion de production distribuée Jean-Pierre Camalot et Patrick Esquirol LAAS-CNRS 7, avenue.
7 - EAI Les EAI : Enterprise Application Integration Marché
Lycée Louis Vincent Séance 1
Le protocole FTP.
CAT 2000 LES MIDDLEWARES Présenté par : Tagmouti Siham Smires Ali
.Net Remoting.
Programmation concurrente
PROJET DE GENIE LOGICIEL 2005
J2EE: les composants distribués et transactionnels
Cilia Mediation Framework v0.9.0 Implantation.. Plan Cilia: c'est quoi? Capacités. Cilia: Modèle d'implantation. Mise en œuvre: Médiateur Cilia. Assemblage.
RPC / MOM : Comparaison.
Interoperabilité des SI - Urbanisation
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Modèle de communication par message
Technique de programmation : Le client/Serveur de traitements.
Présentation de CORBA et de IIOP
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Développement d’application client/serveur
Cours 5 Le modèle de référence.
Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
OSI et TCP/IP CNAM
Mise en place d’une plate-forme d’expérimentation d’applications adaptables à partir de composants Encadreurs : Mireille Blay-Fornarino Anne-Marie Dery-Pinna.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
Le web service
Mastère Professionnel Systèmes de Communication et Réseaux
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Les Réseaux Informatiques Clients & Serveurs Le protocole FTP Laurent JEANPIERRE DEUST AMMILoR.
Les sockets.
Master 1 SIGLIS Ingénierie des réseaux Stéphane Tallard Chapitre 4 – Couche réseau Master 1 SIGLIS1 Ingénierie des réseaux - Chapitre 4 La couche réseau.
Notifications, Communication, Traitement et Configuration DJBEL – 04/12/2010NSY208 CNAM 1.
Présence et communication peer-to-peer Diplômant : Yves Bresson Professeur responsable : Yves Dennebouy EIVD Septembre - Décembre 2003.
Module 3 : Création d'un domaine Windows 2000
Les différents modèles d’architecture technique
Couche transport du modèle OSI
COMPARAISON ENTRE GNUTELLA ET FREENET
Notifications et Communication réseau D. BELLEBIA – 18/12/2007NSY208 CNAM.
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Plate-forme de réalisation d’agents mobiles. Plan Introduction La plate-forme Voyager implantation Conclusion.
Architecture Client/Serveur
Java Remote Method Invocation
IFT 703 Informatique cognitive ACT-R Modèle symbolique et perceptuel
Parquet Geoffrey 3 ARIL EXIA.CESI ARRAS. Présentation du MLD Présentation de la persistance Présentation récapitulatif du projet JSP/SERVLET MVC Cycle.
Applications distribuées Introduction Jean-Jacques LE COZ.
CentralWeb F. Playe1 Principes de base du routage IP Ce cours est la propriété de la société CentralWeb. Il peut être utilisé et diffusé librement.
Transcription de la présentation:

Message Oriented Middleware

Plan Pourquoi un nouveau type de middleware? Quelle lignée logicielle ? Historique JMS : Java Message Server L’implémentation Joram L’avenir pour ce type de middleware

Pourquoi un nouveau type de middleware?

Intention Quelles sont les contraintes RPC derrière RMI ? communication synchrone Client-Serveur le serveur est prédominant dans la communication On souhaite ne pas être bloqué pendant une communication (asynchrone) ne pas connaître toujours au préalable ceux avec qui on communique

Exemple l’administration de réseaux Gestion à distance de machines, serveurs, hubs, etc Notification des événements en cas de panne

Objectifs principaux Intégration de modules hétérogènes distribués Indépendance (asynchronisme) Fiabilité

Quelle lignée logicielle ? Historique Ce que vous connaissez déjà

Quelle lignée logicielle ? Historique Communication par message au niveau socket : communication udp et multicast Connexions faibles entre objets : le design Pattern Observer Observable Programmation Java : interface graphique et gestion d’événements (listeners) Et en Corba : le service d’événements

Le service d’événement Corba

Le service de notification d'événements Corba La plupart des requêtes CORBA se traduisent par l’exécution synchrone d’une opération (le client connaît la référence de l’objet auquel la requête s’adresse et le client ainsi que l’objet doivent être tous deux actifs) et sinon? Le service d'Evénements ou Event service permet de découpler la communication entre objets. Mode de communication découplé : lorsque le client et l’objet ne se connaissent pas; lorsque le client et l’objet ne sont pas actifs simultanément. Je saurais le compléter.par un dessin.. Il permet aux objets de produire des événements asynchrone à destination d’objets consommateurs. Producteurs et consommateurs dialoguent à travers un intermédiaire appelé canal d’événements. Les producteurs n’ont pas besoins de connaître tous les consommateurs intéressés. Etendu avec le Notification service ou les consommateurs sont notifiés uniquement des évènements les interessant ce qui permet de réduire le trafic. Voir l ’exemple de Douglas si je pouvais recuperer le transparent…. dans le mode push le producteur a l ’initiative de la production le consommateur est notifié. Dans le mode pull, le consommateur demande explicitement les événements, le producteur est alors sollicité. ..

Communication événementielle principes de fonctionnement • concepts de base : événements, réactions (traitements associés à l’occurrence d’un événement) • principe d’attachement : association dynamique entre un nom d’événement et une réaction • communication anonyme : indépendance entre l’émetteur et les “consommateurs” d’un événement

Un canal d’évènements Flot des évènements Consommateur Producteur

Un canal d’évènements : notification PushConsumer PushSupplier Consommateur Producteur Push void push(in any data) raises(Disconnected); Consommateur Producteur Canal Push Consommateur Consommateur Producteur actif / Consommateur réactif Le canal diffuse les évènements

Un canal d’évènements : demande Consommateur Producteur Pull() Consommateur Producteur Canal Pull() Consommateur PullSupplier { //demande de production d’un événement any pull() raises(Disconnected); // présence d’un événement any try_pull(out boolean has_event) raises(Disconnected); demande Consommateur Like consumers, suppliers can also use push or pull behavior. Push suppliers are the more common type, in which the supplier directly forwards data to the event channel and thus plays the client role in the link to the channel. Pull suppliers, on the other hand, are polled by the event channel and supply an event in response, if a new event is available. Polling is done by the try_pull() operation if it is to be non-blocking or by the blocking pull() call: // IDL interface PullSupplier { any pull() raises(Disconnected); any try_pull(out boolean has_event) void disconnect_pull_supplier(); }; Producteur réactif / Consommateur actif Le canal procure les évènements

Un canal d’évènements : file d’évènements Consommateur Producteur Pull() Consommateur Producteur Canal Push() Consommateur Consommateur Producteur actif / Consommateur actif Le canal gère des files d’évènements

Un canal d’évènements : collecte d’évènements Consommateur Producteur Push() Consommateur Producteur Canal Pull() Consommateur Consommateur Producteur réactif / Consommateur réactif Le canal est une entité active voire intelligente

Principe des MOM JORAM a été construit sur la base d’une technologie à agents développée dans le cadre du GIE Dyade (Bull + INRIA). JORAM fait partie de l’offre Objectweb depuis un peu plus d’un an.

Récepteur Emetteur Emetteur et récepteur connaissent seulement la destination Plusieurs émetteurs et récepteurs sur la même destination Persistance du message (reçu ou non reçu) Format du message libre Acheminement par un bus de message message Destination

Systèmes de messages 2 mode de communication Modèle point à point Couplage lâche Asynchronisme Communication par message Modèle par diffusion Notification Diffusion à une liste, un groupe d’intérêt Surveillance du réseau Communication par événement

Principe de base des MOM Message Queueing Queues de messages persistantes Transmission des messages asynchrone (stockage des messages si nécessaire) Reprise après panne Un émetteur remet son message au système et peut continuer son exécution sans se soucier de l’état du destinataire Les MOM sont basés sur des systèmes de queues de messages persistantes qui permettent de transmettre de manière asynchrone des messages entre des composants qui peuvent ne pas fonctionner aux mêmes instants. Les queues de messages stockent les messages si le composant destinataire n’est pas accessible. Le mécanisme de reprise après panne permet d’envoyer les messages à la reprise sans intervention du client.

2 modes Mode push Mode pull Le serveur diffuse une information Le récepteur reçoit l’information Publicité, spam Mode pull Le serveur livre une information Le récepteur va chercher l’information Consultation méteo

Le message Non formatté Mais on peut utiliser XML Et ajouter au contenu : une entête, des propriétés Entête peut contenir des informations permettant l’identification et l’acheminement du message Propriétés couples utilisables pour sélectionner messages et/ou destinataires

Caractéristiques des MOM Modes de communication Point à point (PTP): émetteur, récepteur et queue Publication/Souscription (Pub/Sub): émetteur, abonné et nœud Différentes relations possibles entre émetteurs et récepteurs: PTP (~mail), PubSub (~listes)… Différents modèles de programmation: réception explicite/implicite. Messages dotés de propriétés: durée de vie, priorité, filtrage en fonction des propriétés et d’attributs. Ordonnancement.

Caractéristiques des MOM Modèle de programmation Réception explicite / implicite Messages Messages dotés d’attributs et de propriétés Priorités, garantie de délivrance Différentes relations possibles entre émetteurs et récepteurs: PTP (~mail), PubSub (~listes)… Différents modèles de programmation: réception explicite/implicite. Messages dotés de propriétés: durée de vie, priorité, filtrage en fonction des propriétés et d’attributs. Ordonnancement.

Java Message Service

L’interface Java Message Service (JMS) API Java d’accès uniforme aux systèmes de messagerie Provider X JVM Client MQ X JMS JMS fournit une API commune aux programmes Java pour utiliser les MOMs, en minimisant les concepts tout en en s’efforçant de préserver leur diversité: PTP (queues), Pub/Sub (topics), réception implicite/explicite, … L’intérêt de JMS est de fournir une façon unifiée d’utiliser les services des MOM. Un code client JMS peut donc utiliser n’importe quel MOM du moment que celui-ci propose l’interface JMS.

Architecture JMS Client JMS Client JMS Client JMS Récepteur Emetteur message Destination Serveur de messages

Architecture JMS Client JMS Client JMS Connection Connection Session Producer Consumer message Destination Serveur de messages

Architecture JMS Une connexion est liée à un serveur de message Une session existe à l’intérieur d’une connexion Il peut y avoir plusieurs session par connexion La session gère le processus global de transmission Le consommateur/producteur existe seulement à l’intérieur d’une session Le consommateur/producteur connaît la destination Le message n’existe qu’à l’intérieur d’une session

2 types de destinations Queue pour le point à point Chaque message n’a qu’un consommateur Pas de couplage temporel fort Topic pour le publish/subscribe Similaire à un modèle d’événements Un message peut avoir plusieurs consommateurs par abonnement Abonnement et activité du consommateur requise

Point à Point et Publish/ Subscribe Client2 Client1 Le consommateur envoie un reçu Le message est détruit à réception du reçu Il peut y avoir plusieurs consommateurs en attente send acknowledges consumes queue subscribes Client2 delivers publishes Un client doit s’abonner au préalable Tous les abonnés reçoivent Le message publié Client1 subscribes Client3 delivers

Le mode Point-à-Point (PTP) receive send Emetteur Récepteur Systèmes PTP construits autour du concept de queue de message. Les messages sont adressés sur une queue spécifique au destinataire. Le destinataire extrait ses messages de la queue. queue

Le mode Point-à-Point (PTP) Queue QueueConnectionFactory QueueSession QueueConnection QueueSession QueueConnection + QueueSender + QueueReceiver send receive Systèmes PTP construits autour du concept de queue de message. Les messages sont adressés sur une queue spécifique au destinataire. Le destinataire extrait ses messages de la queue. Emetteur Récepteur

Etapes du mode Point-à-Point Emetteur Destinataire Trouver la queue Créer une connexion et une session Systèmes PTP construits autour du concept de queue de message. Les messages sont adressés sur une queue spécifique au destinataire. Le destinataire extrait ses messages de la queue.

Etapes du mode Point-à-Point Emetteur Destinataire Trouver la queue Créer une connexion et une session Spécialiser une communication d’envoi sur la queue Systèmes PTP construits autour du concept de queue de message. Les messages sont adressés sur une queue spécifique au destinataire. Le destinataire extrait ses messages de la queue.

Etapes du mode Point-à-Point Emetteur Destinataire Trouver la queue Créer une connexion et une session Spécialiser une communication D’envoi sur la queue Systèmes PTP construits autour du concept de queue de message. Les messages sont adressés sur une queue spécifique au destinataire. Le destinataire extrait ses messages de la queue. Spécialiser une communication de Réception sur la queue

Etapes du mode Point-à-Point Emetteur Destinataire Trouver la queue Créer une connexion et une session Spécialiser une communication D’envoi sur la queue Systèmes PTP construits autour du concept de queue de message. Les messages sont adressés sur une queue spécifique au destinataire. Le destinataire extrait ses messages de la queue. Spécialiser une communication de Réception sur la queue Envoyer un message sur la queue

Etapes du mode Point-à-Point Emetteur Destinataire Trouver la queue Créer une connexion et une session Spécialiser une communication D’envoi sur la queue Systèmes PTP construits autour du concept de queue de message. Les messages sont adressés sur une queue spécifique au destinataire. Le destinataire extrait ses messages de la queue. Spécialiser une communication de Réception sur la queue Envoyer un message sur la queue Demander la réception d’un message

Mode Publication / Souscription (Pub/Sub) Emetteur Destinataire Topic A B TopicSubscriber + Listener x y + TopicPublisher publish Les messages sont adressés à un nœud particulier. Émetteurs et abonnés sont anonymes. Le système distribue les messages arrivés aux différents abonnés. onMessage

Mode Publication / Souscription (Pub/Sub) Emetteur Destinataire TopicConnectionFactory TopicSession TopicConnection TopicSession TopicConnection Topic A B TopicSubscriber + Listener x y + TopicPublisher publish Les messages sont adressés à un nœud particulier. Émetteurs et abonnés sont anonymes. Le système distribue les messages arrivés aux différents abonnés. onMessage

Mode Publication / Souscription (Pub/Sub) Emetteur Destinataire Trouver la queue Créer une connexion et une session Créer un sujet Préparer un message à écouter Publier un message Les messages sont adressés à un nœud particulier. Émetteurs et abonnés sont anonymes. Le système distribue les messages arrivés aux différents abonnés. Se mettre à l’écoute d’un sujet

Joram: une implémentation de JMS

La plate-forme SCALAGENT Bus logiciel à base d’agents communicants Agents = objets réactifs Persistants Légers : infrastructure d’exécution partagée au sein d’un serveur d’agents Modèle événement / réaction asynchrone Événement : changement d’état significatif du système auquel un ou plusieurs agents réagissent Événement  Notification Réaction  fonction dans la classe Agent Agent SendTo Agent React Agents composés d’un état et d’un ensemble de règles décrivant leur comportement. Un événement est représenté par une notification. Les notifications sont envoyées via un bus logiciel. Channel

L’architecture distribuée SCALAGENT Infrastructure basée sur un bus à messages Acheminement des notifications Exécution de la réaction du destinataire Distribution: forte interconnexion des bus locaux Agent Agent Agent Agent SendTo React Server A Channel Engine Channel Engine Serveur d’agents: JVM hôte, embarque un bus local et une fabrique à agents. Mise en œuvre distribuée: sur chaque site, le bus local représente le bus à messages. Bus local: gère les communications locales, est fortement interconnecté avec les autres bus locaux, est composé d’un Channel (loc et transport des notifs) et d’un Engine (moteur d’exécution). La délivrance des notifications se fait par la méthode react() des destinataires. Server B mq mq

Les propriétés de la plate-forme Persistance Sauvegarde des agents et notifications Atomicité Cohérence garantie par un moniteur transactionnel Persistance + Atomicité = Fiabilité Une notification est délivrée une et une seule fois Ordonnancement causal Les notification sont délivrées selon un ordre causal B C A Propriétés d’atomicité et de fiabilité assurées par le bus local.

JORAM JORAM est l’interface JMS du MOM SCALAGENT Les queues et topics sont des agents Les messages sont encapsulés dans des notifications Délivrance asynchrone Garantie de délivrance Reprise après panne Apports de l’infrastructure à agents Architecture totalement distribuée Scalabilité

JMS via le MOM Scalagent Message JMS QueueSender MOM Scalagent Client 1 QueueSession Agent Proxy QueueConnection Connexion TCP Notification Agent Queue Clients JMS queue Notification Agent Proxy QueueConnection Connexion TCP QueueSession Client 2 Les messages échangés par les clients JMS transitent via le MOM: L’objet JMS Connection encapsule une connexion TCP entre le client et le MOM. Les clients JMS se connectent à des agents « proxy ». Les messages sont encapsulés dans des notifications. QueueReceiver Message JMS

QueueConnectionFactory Points forts de JORAM Architecture distribuée Facilité de mise en oeuvre Passage à l’échelle Implémentation complète des « Application Server Facilities » Intégration au serveur EJB JOnAS Emetteur Serveur 2 Serveur 1 Serveur 0 QueueConnectionFactory Queue Récepteur

Intégration dans JOnAS JORAM implémente la partie ASF (Application Server Facilities) de la spéc. JMS Intégration de JORAM en tant que ressource dans un environnement transactionnel distribué tel qu’un serveur EJB Envoi et réception de messages dans des transactions gérées par le serveur EJB Réception asynchrone via les « Message-driven Beans »