1 Communication par messages Message Oriented Middleware Andr

  • Slides: 48
Download presentation
1 Communication par messages " Message Oriented Middleware " André Freyssinet Equipe AAA -

1 Communication par messages " Message Oriented Middleware " André Freyssinet Equipe AAA - GIEBull/Inria Dyade Andre. Freyssinet @dyade. fr http: //dyade. inrialpes. fr/membres/ freyssin 14/08/98 Autrans 1998

2 Communication par messages 4 Introduction 4 Problème et solution 4 Exemple 4 Analogies

2 Communication par messages 4 Introduction 4 Problème et solution 4 Exemple 4 Analogies r Message Queuing r Publish /Subscribe r Java Message Service r AAA/DDW 14/08/98 Autrans 1998

3 Introduction - Le problème n Intégration n Distribution NT • inhérente, mobilité n

3 Introduction - Le problème n Intégration n Distribution NT • inhérente, mobilité n Hétérogénéité • machines, systèmes • communications n n 14/08/98 Indépendance Evolution Autrans 1998

4 Introduction - Les solutions n Message Oriented Middleware • Asynchronisme et Fiabilité •

4 Introduction - Les solutions n Message Oriented Middleware • Asynchronisme et Fiabilité • Gestion de l'hétérogénéité • Communication anonyme è 14/08/98 Inversion des rôles des producteurs et des consommateurs de données Autrans 1998

5 Scénario - Monitoring n Problème : • Surveillance de l'état de machines, de

5 Scénario - Monitoring n Problème : • Surveillance de l'état de machines, de systèmes d'exploitation et d'applications dans un environnement distribué. • Flot continuel de données en provenance de sources diverses sur le réseau. • Les éléments du système peuvent apparaître, disparaître, migrer, etc. • Les administrateurs doivent pouvoir accéder à l'information quel que soit leur localisation 14/08/98 Autrans 1998

6 Scénario - Monitoring n Solution traditionnelle : • Interrogation régulière des éléments à

6 Scénario - Monitoring n Solution traditionnelle : • 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. 14/08/98 Autrans 1998

7 Scénario - Monitoring adm NT 14/08/98 Autrans 1998

7 Scénario - Monitoring adm NT 14/08/98 Autrans 1998

8 Scénario - Monitoring n Solution "Messaging" : • Les différents éléments administrés émettent

8 Scénario - Monitoring n 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 ses 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 14/08/98 Autrans 1998

9 Scénario - Monitoring adm NT 14/08/98 Autrans 1998

9 Scénario - Monitoring adm NT 14/08/98 Autrans 1998

10 … Révolution ? n Non ! Ü Années 70: • Message Queuing :

10 … Révolution ? n Non ! Ü Années 70: • Message Queuing : IBM MQSeries, etc. Ü Le Mail • Listes de diffusion (multicast ) • News (publish /subscribe subject based) 14/08/98 Autrans 1998

11 Communication par messages r Introduction 4 Message Queuing 4 Fonctionnement et propriétés 4

11 Communication par messages r Introduction 4 Message Queuing 4 Fonctionnement et propriétés 4 API r Publish /Subscribe r Java Message Service r AAA/DDW 14/08/98 Autrans 1998

12 Message Queuing n Queue de messages • persistantes asynchronisme et fiabilité Client Serveur

12 Message Queuing n Queue de messages • persistantes asynchronisme et fiabilité Client Serveur send 14/08/98 recv Autrans 1998

13 Message Queuing n n Indépendance de l'émetteur et du destinataire Anonymat • L'émetteur

13 Message Queuing n n Indépendance de l'émetteur et du destinataire Anonymat • L'émetteur n'a pas à connaître l'identité du destinataire ; il peut désigner le destinataire du message par un nom logique, de groupe ou par un ensemble de propriétés. n Gestion de l'hétérogénéité • Des données, des systèmes et des systèmes de communication. 14/08/98 Autrans 1998

14 Message Queuing - Message n Entête : • Information permettant l'identification et l'acheminement

14 Message Queuing - Message n Entête : • Information permettant l'identification et l'acheminement du message n Attributs : • Couples (nom, valeur) utilisables par le système ou l'application pour sélectionner les messages n Données : • Définies par l'application 14/08/98 Autrans 1998

15 Message Queuing - Propriétés n n n Priorité Durée de vie Filtrage des

15 Message Queuing - Propriétés n n n Priorité Durée de vie Filtrage des messages • émetteur, type de message, priorité • attributs • contenu n n n 14/08/98 Notification des erreurs Répartition de charge Ordonnancement Autrans 1998

16 Message Queuing - API n n n 14/08/98 Msg. Q. attach(name, type) msg.

16 Message Queuing - API n n n 14/08/98 Msg. Q. attach(name, type) msg. Q Send. Q. send. Msg (msg) Recv. Q. recv. Msg (wait) msg Recv. Q. confirm. Msg (msg) Msg. Q. detach() Autrans 1998

17 Message Queuing - Références n MQSeries d'IBM • http: //www. software. ibm. com/ts/mqseries

17 Message Queuing - Références n MQSeries d'IBM • http: //www. software. ibm. com/ts/mqseries n Message. Q de BEA System • http: //www. beasys. com/products /mq/mqdata. htm n Falcon. MQ • http: //www. level 8. com n PLC Scottland's I/O Exchange • http: //www. prl 01. demon. co. uk/product. html n Peer. Logic Pipes • http: //www. peerlogic. com/products /f_pp. htm 14/08/98 Autrans 1998

18 Communication par messages r Introduction r Message Queuing 4 Publish /Subscribe 4 Propriétés

18 Communication par messages r Introduction r Message Queuing 4 Publish /Subscribe 4 Propriétés 4 Architectures 4 Ambrosia et Tibco r Java Message Service r AAA/DDW 14/08/98 Autrans 1998

19 Publish /Subscribe Client 1 Serveur publish · ¶ subscribe ¸ 14/08/98 Autrans 1998

19 Publish /Subscribe Client 1 Serveur publish · ¶ subscribe ¸ 14/08/98 Autrans 1998 react

20 Publish /Subscribe - Propriétés n Critères d’abonnement • "subject based" versus "content based"

20 Publish /Subscribe - Propriétés n Critères d’abonnement • "subject based" versus "content based" • Organisation hiérarchique n Qualité de service • • 14/08/98 "best effort" fiable persistant transactionnel Autrans 1998

21 Architecture - "Hub and Spoke" Client Broker Client Utilisation d'un protocole de communication

21 Architecture - "Hub and Spoke" Client Broker Client Utilisation d'un protocole de communication Point-to-Point 14/08/98 Autrans 1998

22 Architecture - "Snowflake " Client Broker Client Utilisation d'un protocole de communication Point-to-Point

22 Architecture - "Snowflake " Client Broker Client Utilisation d'un protocole de communication Point-to-Point 14/08/98 Autrans 1998

23 Architecture - bus de message Client Bus Hub Bus S. E. Machine A

23 Architecture - bus de message Client Bus Hub Bus S. E. Machine A Machine B Machine C Utilisation d'un protocole de communication multicast 14/08/98 Autrans 1998

24 Publish /Subscribe - Ambrosia n n http: //www. openhorizon. com Architecture : Hub

24 Publish /Subscribe - Ambrosia n n http: //www. openhorizon. com Architecture : Hub and Spoke • Serveur Centralisé et Protocole "unicast" fiable • Chaque participant ouvre une session TCP avec le broker n Propriétés : • Routage en fonction du sujet (hiérarchie de sujets) • Garantie de délivrance • Sécurité et support des transactions : 14/08/98 Applications largement distribuées Autrans 1998

25 Publish /Subscribe - Tibco n n htpp: //www. rv. tibco. com Architecture :

25 Publish /Subscribe - Tibco n n htpp: //www. rv. tibco. com Architecture : bus de messages • Protocole fiable de multicast • un démon par site pour émettre et recevoir • routeurs "intelligents" de messages n Propriétés : • routage des messages en fonction de leurs sujets • fiable ou garantie de délivrance 14/08/98 Autrans 1998

26 Evénement/Réaction n Pull • Les clients viennent prendre périodiquement leurs messages sur le

26 Evénement/Réaction n Pull • Les clients viennent prendre périodiquement leurs messages sur le serveur. n Push • Une méthode prédéfinie (réaction) est attachée à chaque type de message (événement) ; • la réception d'un événement entraîne l'exécution de la réaction associée. 14/08/98 Autrans 1998

27 Ev t/Réaction - i. Bus n n http: //www. softwired. ch/ibus/ Architecture :

27 Ev t/Réaction - i. Bus n n http: //www. softwired. ch/ibus/ Architecture : bus de messages • Protocole IP-Multicast (intranet ) • Passerelles TCP (internet ) n Propriétés : • Push (asynchrone), Pull (synchrone) et Subscribe • Message = objets Java Serializable Adressage = i. Bus URL's • ibus: //<@IP>[: port]/< subject > 14/08/98 Autrans 1998

28 Ev t/Réaction - i. Bus n Qualité de service à la demande •

28 Ev t/Réaction - i. Bus n Qualité de service à la demande • Piles de protocoles (IPMCAST, NAK, FRAG, CRYPT, COMPRESS, etc. ) Public class Stack { Public class Posting { … Public interface Receiver { … public void push(i. Bus. URL url, Posting p) {…}; public void dispatch. Push(i. Bus. URL src, Posting p); public void put(String name, Serializable value) {…}; public Posting pull(i. Bus. URL url, Posting req, }; public Serializable get(String name) {…}; FRAG long timeout) {…}; }; NAK public void subscribe(i. Bus. URL url, Receiver rcv) {…}; JVM IPMCAST public void unsubscribe(i. Bus. URL url, Receiver rcv) {…}; }; Machine A 14/08/98 Autrans 1998

29 Ev t/Réaction - i. Bus public class Tick. Producer { public void main(String

29 Ev t/Réaction - i. Bus public class Tick. Producer { public void main(String argv[]) { final i. Bus. URL url = new i. Bus. URL("ibus: //bourse. fr/cac 40/ticks"); final Stack stack = new Stack("CRYPT: NAK: IPMCAST"); final Posting = new Posting(); stack. register. Talker(url); for (; ; ) { // Get next tick … // then multicast it. Posting. set. Object("Tick", t); stack. push(url, posting); } } } 14/08/98 Autrans 1998

30 Ev t/Réaction - i. Bus public class Tick. Consumer { public void main(String

30 Ev t/Réaction - i. Bus public class Tick. Consumer { public void main(String argv[]) { final i. Bus. URL url = new i. Bus. URL("ibus: //bourse. fr/cac 40/ticks"); final Stack stack = new Stack("CRYPT: NAK: IPMCAST"); final Tick. Dispatch disp = new Tick. Dispatch(); stack. subscribe(url, disp); } } class Tick. Dispatch implements i. Bus. Receiver { … public void dispatch. Push(i. Bus. URL src, Posting p) { Tick t = (Tick) p. get. Object("Tick"); graph. draw. Tick(t); } } 14/08/98 Autrans 1998

31 Communication par messages r Introduction r Message Queuing r Publish /Subscribe 4 Java

31 Communication par messages r Introduction r Message Queuing r Publish /Subscribe 4 Java Message Service 4 Point-to-Point 4 Publish /Subscribe r AAA/DDW 14/08/98 Autrans 1998

32 Java Message Service n JMS : API Java d'accès uniforme aux systèmes de

32 Java Message Service n JMS : API Java d'accès uniforme aux systèmes de messagerie • IBM MQSeries • Novell, Oracle, Sybase • Tibco • Point-to-Point • Publish /Subscribe 14/08/98 Autrans 1998

33 JMS Client JMS Provider X JMS Client JVM MQ X 14/08/98 Provider X

33 JMS Client JMS Provider X JMS Client JVM MQ X 14/08/98 Provider X JVM MQ X Autrans 1998 MQ X

34 JMS - Architecture JNDI Destination JMS Client Connection. Factory Connection + + Session

34 JMS - Architecture JNDI Destination JMS Client Connection. Factory Connection + + Session 14/08/98 Autrans 1998 Message. Producer Message. Consummer

35 JMS - Message n Entête • JMSDestination , JMSDelivery. Mode , JMSMessage. Id

35 JMS - Message n Entête • JMSDestination , JMSDelivery. Mode , JMSMessage. Id , JMSExpiration , JMSPriority , etc. n Propriétés • Couple <nom, valeur> n Corps • Text. Message , Map. Message • Stream. Message , Object. Message • Bytes. Message 14/08/98 Autrans 1998

36 JMS - "Point-to-Point" Emetteur Destinataire Messaging Queue. Connection. Factory Queue. Connection Queue. Session

36 JMS - "Point-to-Point" Emetteur Destinataire Messaging Queue. Connection. Factory Queue. Connection Queue. Session + send + Queue. Connection. Factory connection. Factory = (Queue. Connection. Factory) messaging. lookup("…"); Queue queue = (Queue) messaging. lookup("…"); Queue. Connection connection = connection. Factory. create. Queue. Connection(); Queue. Session session = connection. create. Queue. Session(…); Queue. Receiver Queue. Sender Text. Message msg = (Text. Message) session. create. Text. Message(); Queue. Sender msg sender = session. create. Sender(queue); Text. Message = receiver. receive(); msg. set. Text("…"); sender. send(msg); String selector = new String("(name = 'Bull') or (name = 'IBM'))"); Queue. Receiver receiver = session. create. Receiver(queue, selector); 14/08/98 receive Autrans 1998

37 JMS - "Publish /Subscribe " Emetteur Destinataire Messaging Topic. Connection. Factory Topic. Connection

37 JMS - "Publish /Subscribe " Emetteur Destinataire Messaging Topic. Connection. Factory Topic. Connection A Topic. Session publish x Topic. Connection B Topic. Session y + + Topic. Connection. Factory connection. Factory = (Topic. Connection. Factory) messaging. lookup("…"); Topic topic = (Topic) messaging. lookup("/A/x"); Topic. Connection connection = connection. Factory. create. Topic. Connection(); Topic. Session session = connection. create. Topic. Session(false, Session. CLIENT_ACKNOWLEDGE); Topic. Subscriber Topic. Publisher Listener publisher. publish(msg); Topic. Publisher publisher = session. create. Publisher(topic); void on. Message(Message msg) throws JMSException { // unpack and handle the message Topic. Subscriber subscriber = session. create. Subscriber(topic); … Subscriber. set. Message. Listener(listener); } 14/08/98 Autrans 1998 on. Message

38 Communication par messages r Introduction r Message Queuing r Publish /Subscribe r Java

38 Communication par messages r Introduction r Message Queuing r Publish /Subscribe r Java Message Service 4 AAA/DDW 4 Plateforme AAA 4 Application DDW 14/08/98 Autrans 1998

39 AAA - Modèle n Agents Agent Send. To • Objets réactifs n Agent

39 AAA - Modèle n Agents Agent Send. To • Objets réactifs n Agent React Modèle événement/réaction Channel • Evénement = transition significative de l'état du système à laquelle un ou plusieurs agents vont réagir. • Evénement Notification = objet passif. • Réaction méthode réact de la classe de l'agent 14/08/98 Autrans 1998

40 AAA - Propriétés n Bus de message • Garantie de délivrance : toute

40 AAA - Propriétés n Bus de message • Garantie de délivrance : toute notification acceptée sera délivrée une fois et une seule à son destinataire. • Ordonnancement causal : l'ordre d'exécution des réactions est conforme à l'ordre causal d'émission. A n Atomicité des réactions C B • L'exécution des réactions est réalisée au moyen d'un moniteur transactionnel. 14/08/98 Autrans 1998

41 AAA - Architecture Agent Send. To React Channel qout Engine msg = qin.

41 AAA - Architecture Agent Send. To React Channel qout Engine msg = qin. get(); agent = Agent. load(msg. to); agent. react(msg. from, msg. not); transaction. begin() qin. pop(); channel. dispatch(); Agent. save(); transaction. commit() Channel Engine qin Network 14/08/98 React qout qin Agent Send. To Autrans 1998

42 AAA/DDW n 14/08/98 Data. Warehousing Autrans 1998 NT

42 AAA/DDW n 14/08/98 Data. Warehousing Autrans 1998 NT

Architecture DDW requête ETTL Extract Tranfert Transform Load 14/08/98 Data. Warehouse Autrans 1998 43

Architecture DDW requête ETTL Extract Tranfert Transform Load 14/08/98 Data. Warehouse Autrans 1998 43

44 AAA -DDW n L'agent Event • Machine à états Event. Start Init Agreement

44 AAA -DDW n L'agent Event • Machine à états Event. Start Init Agreement Status. Notification Run Wait Fail Done Schedule Action. Done • Delegating. Event : • Load. Event , Extract. Event , etc. • Composed. Event : • Seq. Event , Par. Event, Complex. Event 14/08/98 Autrans 1998 Action. Failed

45 AAA - DDW Par. Event Composed. Event Seq. Event Complex. Event Extract. Event

45 AAA - DDW Par. Event Composed. Event Seq. Event Complex. Event Extract. Event Transfert. Event Delegating. Event Transform. Event Oracle. Load. Event Sybase. Load. Event Sql. Event Web. Event 14/08/98 . . . Autrans 1998 Informix. Load. Event

46 Architecture AAA/DDW Data. Warehouse … 14/08/98 Autrans 1998

46 Architecture AAA/DDW Data. Warehouse … 14/08/98 Autrans 1998

47 AAA/DDW Bénéfices n Extensibilité • Ajout dynamique d'un type d'Event : Web. Event

47 AAA/DDW Bénéfices n Extensibilité • Ajout dynamique d'un type d'Event : Web. Event • Distribution automatique des Events • Intégration simple dans le processus • Réalisations de compositions complexes 14/08/98 n Gestion des pannes n Monitoring Autrans 1998

48 Conclusions 14/08/98 Autrans 1998

48 Conclusions 14/08/98 Autrans 1998