La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Message Oriented Middleware. Plan Pourquoi un nouveau type de middleware? Quelle lignée logicielle ? Historique JMS : Java Message Server Limplémentation."— Transcription de la présentation:

1 Message Oriented Middleware

2 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

3 Pourquoi un nouveau type de middleware?

4 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

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

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

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

8 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

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

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

11 Observer Observable

12 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é.

13 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

14 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,

15 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

16 Structure

17 Collaborations

18 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.

19 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

20 Le service dévénement Corba

21 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

22 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.

23 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

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

25 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);

26 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);

27 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()

28 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()

29 Principe des MOM

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

31 Message Oriented Middleware (MOM) NT

32 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

33 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

34 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

35 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

36 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

37 Caractéristiques des MOM Modes de communication –Point-à-point (PTP): émetteur, récepteur et queue –Publication/Souscription (Pub/Sub): émetteur, abonné et nœud

38 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

39 Java Message Service

40 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

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

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

43 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

44 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

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

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

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

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

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

50 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

51 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

52 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

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

54 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);

55 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();

56 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();

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

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

59 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

60 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);

61 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);

62 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);

63 Joram: une implémentation de JMS

64 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

65 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

66 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

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

68 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

69 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

70 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 »

71 Avenir


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

Présentations similaires


Annonces Google