Message Oriented Middleware. Plan Pourquoi un nouveau type de middleware? Quelle lignée logicielle ? Historique JMS : Java Message Server Limplémentation.

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.
Message Oriented Middleware
Retour sur RMI.
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.
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
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
1 Les technologies XML Cours 1 : Les Web Services et Architectures Orientées Services Fé vrier Version 1.0 -
JORAM Java Open Reliable Asynchronous Messaging


Design Pattern MVC En PHP5.
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
UV EJB Message Module Java Expert
Introduction à la POO: Les classes vs les objets
Introduction aux Session Beans
Etude des Technologies du Web services
Programmation orientée objet
Module 1 : Préparation de l'administration d'un serveur
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Analyse et Conception des Systèmes d’Informations
1 Message Oriented Middlewares: Le middleware AAA F. Boyer, RICM2, année 04-05
Réalisée par :Samira RAHALI
7 - EAI Les EAI : Enterprise Application Integration Marché
Chaque use-case génère un ou des scénarios, traduits par des diagrammes objets, qui permettent d’introduire et/ou de compléter les diagrammes des catégories.
CAT 2000 LES MIDDLEWARES Présenté par : Tagmouti Siham Smires Ali
.Net Remoting.
Behavioral Design Patterns The Observer Pattern Roberto Demontis Sylvain Giroux.
Programmation concurrente
PROJET DE GENIE LOGICIEL 2005
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.
Module 2 : Préparation de l'analyse des performances du serveur
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
Modèle de communication par message
Présentation de CORBA et de IIOP
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Propriétés. Propriétés ► Les propriétés peuvent être visibles dans les environnements de scripts ► Les propriétés peuvent être accédées par programmation.
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
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.
Advisor Advanced IP Présentation Télémaintenance Télésurveillance.
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
Couche transport du modèle OSI
Behavioral Design Patterns The Observer Pattern. Intention Définir une dépendance de “1” à “n” entre des objets de telle sorte que lorsque l’état d’un.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
La programmation par objets Principes et concepts Etude de Smalltalk.
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.
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Architecture Client/Serveur
Introduction à la Programmation Orientée Objet
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 Limplémentation Joram Lavenir 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 ladministration 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

Communication par message : Envoi de datagrammes application opération Client Serveur req1 rep1 reqn repn

Communication par diffusion : Multicast application Clientn Serveur application Client1 application Client2 Gr

Observer Observable

Motivation Un effet de bord fréquent de la partition dun système en une collection de classes coopérantes est la nécessité de maintenir la consistance entre les objets reliés entre eux. On ne veut pas obtenir la consistance en liant étroitement les classes, parce que cela aurait comme effet de réduire leur réutilisabilité.

Moyen Définir une dépendance de 1 à n entre des objets telle que lorsque létat dun objet change, tous ses dépendants sont informés et mis à jour automatiquement

Quand lappliquer Lorsquune abstraction possède deux aspects dont lun dépend de lautre. –Lencapsulation de ces aspects dans des objets séparés permet de les varier et de les réutiliser indépendemment. –Exemple : Modèle-Vue-Contrôleur Lorsquune modification à un objet exige la modification des autres, et que lon ne sait pas a priori combien dobjets devront être modifiés. Lorsquun objet devrait être capable dinformer les autres objets sans faire dhypothèses sur ce que sont ces objets,

Besoin dévénements Le pattern Observer décrit –comment établir les relations entre les objets dépendants. Les objets-clés sont –la source Peut avoir nimporte quel nombre dobservateurs dépendants Tous les observateurs sont informés lorsque létat de la source change – lobservateur. Chaque observateur demande à la source son état afin de se synchroniser

Structure

Collaborations

Bénéfices Utilisation indépendante des sources et des observateurs. –On peut réutiliser les sources sans réutiliser les observateurs et vice-versa. –On peut ajouter des observateurs sans modifier la source et les autres observateurs. Support pour la communication broadcast –La source ne se préoccupe pas du nombre dobservateurs.

Implémentations Java du pattern Une classe et une interface : class Observable {... } et interface Observer Un objet Observable doit être une instance de la classe qui dérive de la classe Observable Un objet observer doit être instance dune classe qui implémente linterface Observer void update(Observable o, Object arg); Des listeners

Le service dévénement Corba

Emetteur Récepteur Destination message 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

Le service de notification d'événements Corba La plupart des requêtes CORBA se traduisent par lexécution synchrone dune opération (le client connaît la référence de lobjet auquel la requête sadresse et le client ainsi que lobjet 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 lobjet ne se connaissent pas; lorsque le client et lobjet ne sont pas actifs simultanément.

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

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

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

Un canal dévènements : demande Producteur Consommateur Canal Producteur réactif / Consommateur actif Le canal procure les évènements Pull() demande PullSupplier { //demande de production dun événement any pull() raises(Disconnected); // présence dun événement any try_pull(out boolean has_event) raises(Disconnected);

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

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

Principe des MOM

Introduction Modèle de communication entre logiciels –Intégration de modules hétérogènes distribués –Indépendance (asynchronisme) –Fiabilité

Message Oriented Middleware (MOM) NT

Emetteur Récepteur Destination message 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

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 dinté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

2 modes Mode push –Le serveur diffuse une information –Le récepteur reçoit linformation Publicité, spam Mode pull –Le serveur livre une information –Le récepteur va chercher linformation 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 lidentification et lacheminement 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

Caractéristiques des MOM Modèle de programmation –Réception explicite / implicite Messages –Messages dotés dattributs et de propriétés –Priorités, garantie de délivrance

Java Message Service

Linterface Java Message Service (JMS) API Java daccès uniforme aux systèmes de messagerie Provider X JVM Client MQ X JMS Client Provider X JVM Client JMS

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

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

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

2 types de destinations Queue pour le point à point –Chaque message na quun 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 Client1 Client2 queue send consumes acknowledges Client2 publishes Client1 subscribes delivers Client3 subscribes delivers Le consommateur envoie un reçu Le message est détruit à réception du reçu Il peut y avoir plusieurs consommateurs en attente Un client doit sabonner au préalable Tous les abonnés reçoivent Le message publié

Le mode Point-à-Point (PTP) send receive Emetteur Récepteur queue

Le mode Point-à-Point (PTP) Queue QueueConnectionFactory QueueSession QueueConnection QueueSession QueueConnection + QueueSender + QueueReceiver send receive Emetteur Récepteur

Etapes du mode Point-à-Point EmetteurDestinataire Trouver la queue Créer une connexion et une session

Etapes du mode Point-à-Point EmetteurDestinataire Trouver la queue Créer une connexion et une session Spécialiser une communication denvoi sur la queue

Etapes du mode Point-à-Point EmetteurDestinataire Trouver la queue Créer une connexion et une session Spécialiser une communication Denvoi sur la queue Spécialiser une communication de Réception sur la queue

Etapes du mode Point-à-Point EmetteurDestinataire Trouver la queue Créer une connexion et une session Spécialiser une communication Denvoi sur la queue Spécialiser une communication de Réception sur la queue Envoyer un message sur la queue

Etapes du mode Point-à-Point EmetteurDestinataire Trouver la queue Créer une connexion et une session Spécialiser une communication Denvoi sur la queue Spécialiser une communication de Réception sur la queue Envoyer un message sur la queue Demander la réception dun message

Etapes du mode Point-à-Point QueueConnectionFactory connectionFactory = (QueueConnectionFactory) messaging.lookup("…"); Queue queue = (Queue) messaging.lookup("…"); QueueConnection connection = connectionFactory.createQueueConnection(); QueueSession session = connection.createQueueSession(…);

Etapes du mode Point-à-Point QueueConnectionFactory connectionFactory = (QueueConnectionFactory) messaging.lookup("…"); Queue queue = (Queue) messaging.lookup("…"); QueueConnection connection = connectionFactory.createQueueConnection(); QueueSession session = connection.createQueueSession(…); QueueSender sender = session.createSender(queue); String selector = new String("(name = 'Bull') or (name = 'IBM'))"); QueueReceiver receiver = session.createReceiver(queue, selector);

Etapes du mode Point-à-Point QueueConnectionFactory connectionFactory = (QueueConnectionFactory) messaging.lookup("…"); Queue queue = (Queue) messaging.lookup("…"); QueueConnection connection = connectionFactory.createQueueConnection(); QueueSession session = connection.createQueueSession(…); QueueSender sender = session.createSender(queue); String selector = new String("(name = 'Bull') or (name = 'IBM'))"); QueueReceiver receiver = session.createReceiver(queue, selector); TextMessage msg = session.createTextMessage(); msg.setText("…"); sender.send(msg); TextMessage msg = (TextMessage) receiver.receive();

Etapes du mode Point-à-Point QueueConnectionFactory connectionFactory = (QueueConnectionFactory) messaging.lookup("…"); Queue queue = (Queue) messaging.lookup("…"); QueueConnection connection = connectionFactory.createQueueConnection(); QueueSession session = connection.createQueueSession(…); QueueSender sender = session.createSender(queue); String selector = new String("(name = 'Bull') or (name = 'IBM'))"); QueueReceiver receiver = session.createReceiver(queue, selector); TextMessage msg = session.createTextMessage(); msg.setText("…"); sender.send(msg); TextMessage msg = (TextMessage) receiver.receive();

Mode Publication / Souscription (Pub/Sub) EmetteurDestinataire Topic AB x y + TopicPublisher publish TopicSubscriber + Listener onMessage

Mode Publication / Souscription (Pub/Sub) EmetteurDestinataire Topic TopicConnectionFactory AB x y TopicSession TopicConnection TopicSession TopicConnection + TopicPublisher publish TopicSubscriber + Listener onMessage

Mode Publication / Souscription (Pub/Sub) EmetteurDestinataire Trouver la queue Créer une connexion et une session Créer un sujet Se mettre à lécoute dun sujet Préparer un message à écouter Publier un message

Mode Publication / Souscription (Pub/Sub) EmetteurDestinataire TopicConnectionFactory connectionFactory = (TopicConnectionFactory) messaging.lookup("…"); Topic topic = (Topic) messaging.lookup("/A/x"); TopicConnection connection = connectionFactory.createTopicConnection(); TopicSession session = connection.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE);

Mode Publication / Souscription (Pub/Sub) EmetteurDestinataire TopicConnectionFactory connectionFactory = (TopicConnectionFactory) messaging.lookup("…"); Topic topic = (Topic) messaging.lookup("/A/x"); TopicConnection connection = connectionFactory.createTopicConnection(); TopicSession session = connection.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE); TopicPublisher publisher = session.createPublisher(topic); publisher.publish(msg);

Mode Publication / Souscription (Pub/Sub) EmetteurDestinataire TopicConnectionFactory connectionFactory = (TopicConnectionFactory) messaging.lookup("…"); Topic topic = (Topic) messaging.lookup("/A/x"); TopicConnection connection = connectionFactory.createTopicConnection(); TopicSession session = connection.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE); TopicPublisher publisher = session.createPublisher(topic); TopicSubscriber subscriber = session.createSubscriber(topic); Subscriber.setMessageListener(listener); void onMessage(Message msg) throws JMSException { // unpack and handle the message … } publisher.publish(msg);

Joram: une implémentation de JMS

La plate-forme S CALAGENT Bus logiciel à base dagents communicants Agents = objets réactifs –Persistants –Légers : infrastructure dexécution partagée au sein dun serveur dagents 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 React SendTo Channel Agent

Larchitecture distribuée S CALAGENT ChannelEngine mq ChannelEngine mq Agent SendTo React Server A Server B Infrastructure basée sur un bus à messages –Acheminement des notifications –Exécution de la réaction du destinataire –Distribution: forte interconnexion des bus locaux

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

JORAM JORAM est linterface 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 linfrastructure à agents –Architecture totalement distribuée –Scalabilité

JMS via le MOM Scalagent Clients JMS QueueSenderQueueSessionQueueConnection queue Client 1 QueueReceiverQueueSession Client 2 QueueConnection Connexion TCP MOM Scalagent Message JMS Connexion TCP Notification Agent Proxy Agent Queue

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 QueueConnectionFactory 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 quun 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 »

Avenir