AMQP   Interopérabilité et découplage de systèmes hétérogènes                        avec RabbitMQPierre Queinnec         ...
SI actuels-       Grande hétérogénéité    -     ERP, CRM, DB, LDAP, etc, etc    -     différentes plateformes    -     dif...
Découplage-       Solution classique au couplage : MOM    -     Message-Oriented Middleware    -     Asynchronisme    -   ...
Implémentations-       Microsoft MSMQ-       En Java/JEE, API standardisée JMS    -     uniquement une API    -     ne défi...
Topologies-   P2P (peer-to-peer)-   ESB (Entreprise Service Bus)-   Pipeline-   etc...
Scalabilité-       Difficultés des topologies “Cloud”    -     Machines provisionnées dynamiquement-       Nécessité d’une ...
AMQP-   Advanced Message Queuing Protocol-   But de réduire le “vendor lock-in”
AMQP... un format-       AMQP est un format de message    -     “wire-level”-       Pas de langage/plateforme donnés, pas ...
Protocoles-       Pérennité protocolaire    -     IP, UDP, TCP    -     HTTP, SMTP
Positionnementasync     SMTP          ?sync      HTTP        IIOP        unreliable   reliable
Propriétés-   Fidelity - durabilité-   Security - authentification, transport-   Transactions - fiabilité-   Smart routing -...
AMQP... un standard-       Normalisé par l’OASIS-       Version 1.0 en draft quasi-final-       Technical Committee (TC) AM...
Composition TC-   JPMorgan, Goldman Sachs, Crédit Suisse,    Deutsche Börse, Bank of America...-   Microsoft,VMware, RedHa...
AMQP... un standard -   Au-delà du format de message... -   “Broker Semantics” -   Normalisation de l’interconnexion de   ...
RabbitMQ-       Implémentation de    -     AMQP 0-8-0    -     AMQP 0-9    -     AMQP 0-9-1-       AMQP 1.0-       Open-So...
RabbitMQ-       Ecrit en Erlang-       Bibliothèques pour tous les langages -        plateformes    -     .Net - Java    -...
Routage AMQP                                              Client                                        sub         pubCli...
Workflow & Concepts  -   Un Producteur poste un couple {Clef de      Routage, Message} vers un Exchange  -   Un Broker rout...
Exchanges-       Routage sur :    -     la clef de routage    -     les headers    -     les propriétés    -     le contenu
Intro aux Exchanges-       Quatre types d’Exchanges par défaut    -     Direct    -     Fanout    -     Topic    -     Hea...
Fanout-   Aucun test sur la clef de routage-   Le message est routé sur toutes les Queues    bindées à l’Exchange
Direct-   Clef de routage obligatoire-   Chaque Queue bindée à l’Exchange fournit    une valeur de clef de routage-   Pour...
Headers-       Comme pour le type Direct, mais test        d’égalité sur une valeur d’entêtes (“header”)        plutôt que...
Topic-       Comme pour le type Direct mais        comparaison avec possibilité d’utiliser des        wildcards    -     ‘...
Queues-       L’Exchange route les messages vers les        Queues concernées    -     Si multiple Queues, le message est ...
Cas Démo-       Elections Présidentielles 2007    -     Second tour    -     Visualisation des résultats du vote
Côté .Net-   MVVM Light (disponible avec Nuget)-   RabbitMQ (disponible avec Nuget)
Côté .Net-       Application TechDays.Backend    -        Lit le fichier Index.xml qui donne l’état d’un             départ...
Exemple ‘NON CLOS’<Dpt>	  	  <CodReg>82</CodReg>	  	  <CodReg3Car>082</CodReg3Car>	  	  <CodDpt>01</CodDpt>	  	  <CodDpt3C...
Exemple de résultat<Dpt>	  	  <CodReg>82</CodReg>	  	  <CodReg3Car>082</CodReg3Car>	  	  <CodDpt>01</CodDpt>	  	  <CodDpt3...
Côté .Net-       Application TechDays.UI         -     Consommateur de messages         -     Affiche les résultats reçus s...
Côté Java-   Application générant des résultats en boucle-   Utilisation du driver Java RabbitMQ 2.7.1
Architecture Producteur Java              TechDays.UI                   RabbitMQ   TechDays.UI                            ...
Démo!
Sources-       Seront disponibles rapidement sur GitHub    -     https://github.com/zenika
Fier d’êtreDéveloppeur
Votez-   Et merci à tous pour votre attention!
Questions?
Pics Credits-       ‘Past’ by inf3ktion (CC BY-NC-SA 2.0)    -      http://www.flickr.com/photos/inf3ktion/4116507516-     ...
AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ
Prochain SlideShare
Chargement dans…5
×

AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ

850 vues

Publié le

Avec une hétérogénéité sans cesse grandissante des systèmes d'information des entreprises, l'interopérabilité se retrouve soudainement au coeur des critères de décision. L'un des mécanismes populaires de découplage et de communication inter-systèmes repose sur l'utilisation de technologies orientées message ("message-oriented middleware"). Ces infrastructures ont longtemps été spécialisées en termes de plateforme cible (.Net, Java, etc) mais aussi non interopérable entre elles. Le standard émergent AMQP (Advanced Message Queueing Protocol) entre alors en scène, et permet de normaliser le format même du message. Ceci afin de pouvoir faire interopérer des implémentations diverses de middleware, sans surcoût de développement. Le standard AMQP a été initialement créé par des grands acteurs du monde bancaire tels que JPMorgan Chase, Goldman Sachs, Crédit Suisse, qui ont été rejoints par Microsoft, VMware, Cisco, et biens d'autres, dont Zenika. Bernard Jourdain et Pierre Queinnec présenteront donc une approche d'interopérabilité basée sur AMQP, permettant de faire communiquer un processus Java avec les technologies Microsoft (WPF), sur un cas réel simplifié, l'affichage temps réel commune par commune des résultats des élections présidentielles... 2007. Ils se baseront pour ce faire sur l'excellente implémentation AMQP du produit open-source RabbitMQ.

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
850
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
50
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ

  1. 1. AMQP Interopérabilité et découplage de systèmes hétérogènes avec RabbitMQPierre Queinnec @ZenikaITBernard Jourdain
  2. 2. SI actuels- Grande hétérogénéité - ERP, CRM, DB, LDAP, etc, etc - différentes plateformes - différents langages- Couplages souvent forts - appels bloquants - formats spécifiques
  3. 3. Découplage- Solution classique au couplage : MOM - Message-Oriented Middleware - Asynchronisme - “Donnée en mouvement”- Grands Acteurs - IBM, TIBCO, Microsoft
  4. 4. Implémentations- Microsoft MSMQ- En Java/JEE, API standardisée JMS - uniquement une API - ne définit pas le format du message
  5. 5. Topologies- P2P (peer-to-peer)- ESB (Entreprise Service Bus)- Pipeline- etc...
  6. 6. Scalabilité- Difficultés des topologies “Cloud” - Machines provisionnées dynamiquement- Nécessité d’une interopérabilité entre middlewares
  7. 7. AMQP- Advanced Message Queuing Protocol- But de réduire le “vendor lock-in”
  8. 8. AMQP... un format- AMQP est un format de message - “wire-level”- Pas de langage/plateforme donnés, pas d’API- À la TCP - interopérable
  9. 9. Protocoles- Pérennité protocolaire - IP, UDP, TCP - HTTP, SMTP
  10. 10. Positionnementasync SMTP ?sync HTTP IIOP unreliable reliable
  11. 11. Propriétés- Fidelity - durabilité- Security - authentification, transport- Transactions - fiabilité- Smart routing - intermédiation- Management
  12. 12. AMQP... un standard- Normalisé par l’OASIS- Version 1.0 en draft quasi-final- Technical Committee (TC) AMQP - Finance - Editeurs - Peu de Services
  13. 13. Composition TC- JPMorgan, Goldman Sachs, Crédit Suisse, Deutsche Börse, Bank of America...- Microsoft,VMware, RedHat, Cisco, Kaazing...- HCL, Zenika
  14. 14. AMQP... un standard - Au-delà du format de message... - “Broker Semantics” - Normalisation de l’interconnexion de brokers hétérogènes
  15. 15. RabbitMQ- Implémentation de - AMQP 0-8-0 - AMQP 0-9 - AMQP 0-9-1- AMQP 1.0- Open-Source (MPL)
  16. 16. RabbitMQ- Ecrit en Erlang- Bibliothèques pour tous les langages - plateformes - .Net - Java - Erlang, JavaScript, PHP, Ruby, Python...
  17. 17. Routage AMQP Client sub pubClient E m m pub sub Client m m pub EClient sub Client m m m Exchanges Queues
  18. 18. Workflow & Concepts - Un Producteur poste un couple {Clef de Routage, Message} vers un Exchange - Un Broker route un message vers une Queue en se basant sur sa Clef de Routage - Un Consommateur récupère un Message depuis une Queue - Un Message dans une Queue ne peut être récupéré que par un Consommateur
  19. 19. Exchanges- Routage sur : - la clef de routage - les headers - les propriétés - le contenu
  20. 20. Intro aux Exchanges- Quatre types d’Exchanges par défaut - Direct - Fanout - Topic - Headers
  21. 21. Fanout- Aucun test sur la clef de routage- Le message est routé sur toutes les Queues bindées à l’Exchange
  22. 22. Direct- Clef de routage obligatoire- Chaque Queue bindée à l’Exchange fournit une valeur de clef de routage- Pour chaque Queue, test d’égalité entre la clef de routage du message et la valeur fournie- Si égalité, copie du message dans la Queue- Exemple : clef = ‘nasdaq’
  23. 23. Headers- Comme pour le type Direct, mais test d’égalité sur une valeur d’entêtes (“header”) plutôt que sur la clef de routage- Exemple (clef = valeur) - lang = javascript
  24. 24. Topic- Comme pour le type Direct mais comparaison avec possibilité d’utiliser des wildcards - ‘*’ pour exactement un mot - ‘#’ pour zéro ou plus de mots- Exemples - comp.lang.# - *.erlang
  25. 25. Queues- L’Exchange route les messages vers les Queues concernées - Si multiple Queues, le message est traité comme dupliqué - La Queue stocke le message jusqu’à ce qu’il soit récupéré par un consommateur - Mécanisme de sécurité sur la récupération des messages (ack)
  26. 26. Cas Démo- Elections Présidentielles 2007 - Second tour - Visualisation des résultats du vote
  27. 27. Côté .Net- MVVM Light (disponible avec Nuget)- RabbitMQ (disponible avec Nuget)
  28. 28. Côté .Net- Application TechDays.Backend - Lit le fichier Index.xml qui donne l’état d’un département - Etat ‘CLOS’ : le résultat est là - Etat ‘NON CLOS’ : pas de résultat pour l’instant - Lorsque CLOS - lit le résultat - envoie un message à RabbitMQ
  29. 29. Exemple ‘NON CLOS’<Dpt>    <CodReg>82</CodReg>    <CodReg3Car>082</CodReg3Car>    <CodDpt>01</CodDpt>    <CodDpt3Car>001</CodDpt3Car>    <CodMinDpt>01</CodMinDpt>    <LibDpt>AIN</LibDpt>    <DateClotureDpt>19-­‐07-­‐2011</DateClotureDpt>    <HeureClotureDpt>14:59:04</HeureClotureDpt>    <Clos>NON  CLOS</Clos></Dpt>
  30. 30. Exemple de résultat<Dpt>    <CodReg>82</CodReg>    <CodReg3Car>082</CodReg3Car>    <CodDpt>01</CodDpt>    <CodDpt3Car>001</CodDpt3Car>    <CodMinDpt>01</CodMinDpt>    <LibDpt>AIN</LibDpt>    <DateClotureDpt>19-­‐07-­‐2011</DateClotureDpt>    <HeureClotureDpt>14:59:04</HeureClotureDpt>    <Clos>CLOS</Clos>    <Candidat>        <Nom>SARKOZY</Nom>        <Prenom>Nicolas</Prenom>        <Civilite>M.</Civilite>        <Voix>185  165</Voix>        <RapVoixExp>60,54</RapVoixExp>        <NumDepCand>12</NumDepCand>        <NumPanneauCand>1</NumPanneauCand>    </Candidat></Dpt>
  31. 31. Côté .Net- Application TechDays.UI - Consommateur de messages - Affiche les résultats reçus sur une carte- Librairie TechDays.Messaging.RabbitMQ - Bibliothèque de production/consommation de messages
  32. 32. Côté Java- Application générant des résultats en boucle- Utilisation du driver Java RabbitMQ 2.7.1
  33. 33. Architecture Producteur Java TechDays.UI RabbitMQ TechDays.UI TechDays.UITechDays.Backend
  34. 34. Démo!
  35. 35. Sources- Seront disponibles rapidement sur GitHub - https://github.com/zenika
  36. 36. Fier d’êtreDéveloppeur
  37. 37. Votez- Et merci à tous pour votre attention!
  38. 38. Questions?
  39. 39. Pics Credits- ‘Past’ by inf3ktion (CC BY-NC-SA 2.0) - http://www.flickr.com/photos/inf3ktion/4116507516- ‘Server Room Powerstrips’ by camknows (CC BY-NC-SA 2.0) - http://www.flickr.com/photos/camknows/3726757043/- ‘All The Same’ by inf3ktion (CC BY-NC-SA 2.0) - http://www.flickr.com/photos/inf3ktion/3365226030- ‘Survivor’ by inf3ktion (CC BY-NC-SA 2.0) - http://www.flickr.com/photos/inf3ktion/3876697091- ‘Server room with grass!’ by Tom Raftery, courtesy of 1E (CC BY-SA 2.0) - http://www.flickr.com/photos/traftery/4773457853

×