1 / 34

Introduction (1)

Introduction (1). Outils à base de RPC Appels synchrones Composants fortement couplés (connexion permanente) Désignation explicite du destinataire Connexion (1-1) Communication par message Communications asynchrones Désignation anonyme (ex : diffusion sur un bus) Diffusions (1-N).

Download Presentation

Introduction (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction (1) • Outils à base de RPC • Appels synchrones • Composants fortement couplés (connexion permanente) • Désignation explicite du destinataire • Connexion (1-1) • Communication par message • Communications asynchrones • Désignation anonyme (ex : diffusion sur un bus) • Diffusions (1-N)

  2. Introduction (2) • Exemple d’applications • Surveillance des équipements d’un réseau • EAI (Enterprise Application Integration) • Workflow • …  gestion d’evénements

  3. Exemple d ’applicationSolution client-serveur • Interrogation régulière • par l'application d'administration (client) • des éléments à surveiller (serveur) • 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.

  4. Principes directeurs • Message Passing (communication par messages) • Message Queuing (communication par file de message) • Publish/Subscribe (communication par abonnements)

  5. Message passing • Principes directeurs • communication asynchrone • communication directe ou indirecte (via des “portes”) • problème de désignation, localisation des entités coopérantes • messages éventuellement typés (ex: Mach) • Interface de programmation et mise en œuvre • primitives de communication élémentaires ("envoyer", recevoir") : • dans une architecture de type micro-noyau : Chorus, Mach • dans un environnement de programmation parallèle : PVM, MPI • Outils de développement • peu évolués et de bas niveau

  6. Message passingExemple d ’utilisation • Réalisation d’une interaction de type « client-serveur » Client Serveur (nom_de_service, paramètres, port_C) exécution du service Port_S Port_C (résultat)

  7. Client Serveur send recv Message Queuing • Queue de messages • persistantes  asynchronisme et fiabilité • Indépendance de l'émetteur et du destinataire • Le destinataire n’est pas forcément actif

  8. Publish/Subscribe (1) • Désignation anonyme • L’émetteur envoie un message • Basé sur un sujet (subject-based:failure,load,…) • Basé sur un contenu (content-based:*kernighan*) • Le récepteur s’abonne (à un sujet ou un contenu) • Communication 1-N • Plusieurs récepteurs peuvent s’abonner • Un même message est diffusé à l'ensemble des abonnés (non possible avec une queue de messages / subject ou / topic).

  9.   Publish/Subscribe (2) consommateur producteur subscribe ¶ publish recv

  10. Serveur centralisé (Hub & spoke) Simplicité de mise en œuvre Peu tolérant aux pannes Passage à l’échelle difficile client client client client Implantation (1) Serveur

  11. Serveur réparti (Snow flake) Chaque serveur connaît un ensemble d’autres serveurs Routage des messages Répartition de la charge Fiabilité relative Passage à l’échelle client client client client client Implantation (2) serveur serveur serveur serveur

  12. Implantation (3) • Service réparti (bus logiciel) Processus_a Processus_b Interface Bus Interface Bus protocoles du Services du bus logiciel Services du bus logiciel bus logiciel Système d’ exploitation Système d’ exploitation Machine A Machine B

  13. Propriétés des MOM • Tolérance aux pannes • Garanties de délivrance des messages • Perte et duplication • Ordre • Garanties d’atomicité • Pour une séquence d’envoi et de réception • Sécurité • Confidentialité • Intégrité • Persistence • Arret du MOM  redémarrage avec état

  14. Agents Anytime Anywhere • Middleware à base d’agents communicants. Agents Legacy Software

  15. Agents Anytime AnywherePlan • L’Environnement d’exécution A3 • La plate-forme à agents • L’infrastructure d’exécution • Exemple d’applications

  16. La plate-forme à agentsIntroduction • Agents: objets « réactifs » se comportant selon le modèle « événement – réaction ». • Un événement est representé par une notification. • Les notifications sont envoyées via un bus logiciel. • Les agents sont composés: • d’un état, • d’un ensemble de règles décrivant leurs réactions.

  17. La plate-forme à agentsPropriétés A C B • Les agents: • Sont persistants (état sauvegardé). • Ont des réactions atomiques (état toujours cohérent). • Les communications sont: • Asynchrones (fonctionnement en mode déconnecté). • Fiables (garantie de délivrance). • Ordonnancées (causalité).

  18. Agents: Objets Java héritant de la classe de base Agent. Identifiés de façon unique par un agentId. La plate-forme à agentsModèle de programmation (1) public class HelloWorld extends Agent { public HelloWorld(short to, String name) { super(to, name); } public void react(AgentId from, Notification not) throws Exception { … }

  19. Notifications: Objets Java sérialisables héritant de la classe de base Notification. La plate-forme à agentsModèle de programmation (1) public class HelloWorldNot extends Notification { public String msg = "Hello world"; public HelloWorldNot(String msg) { this.msg = msg; } }

  20. Envoi de notifications: Directement vers un agent Vers un Role ou un RoleMultiple (configurables). La plate-forme à agentsModèle de programmation (2) sendTo(AgentId ag, Notification n) ou sendTo(Role role, Notification n) ag: id de l’agent destinataire Role: structure contenant l’id du/des destinataires (indirection) n: la notification qui doit être envoyée

  21. AgentId • Identification du serveur de l'agent créateur (from) • Identification du serveur de résidence de l'agent créé (to) • Estampille locale au serveur d'agents de l'agent créateur (stamp) Localisation engine Stamp Creation engine 16 bits 16 bits 32 bits

  22. Modèle événement/réaction Evénement = objet passif (message) émis par un agent à destination d ’un autre agent. Réaction = la réception d ’un événement par un agent provoque l ’éxécution de la méthode réact de la classe de l'agent Agent attribute1 : ... attribute2 : ... dest1 (...) event1 (...) dest2 (...) event2 (...) La plate-forme à agentsModèle de programmation (3)

  23. La plate-forme à agentsExemple d'agent public class HelloWorld extends Agent { public AgentId dest; public HelloWorld(short to, String name) { super(to, name); } public void react(AgentId from, Notification not)throws Exception { if (n instanceof HelloWorldNot) { // on a reçu une HelloWorldNot System.out.println(((HelloWorldNot)n).msg); // on peut envoyer une nouvelle notification sendTo(dest, new HelloWorldReceivedNot()); } else super.react(from,not); } }

  24. Dans un serveur d’agents: Création des agents (instanciation classe correspondante puis déploiement) Exécution des agents Communication des agents Création et déploiement: Instanciation locale de l’agent (création d’un « germe ») Déploiement de l’agent sur le serveur destinataire. La plate-forme à agentsCréation et déploiement des agents

  25. Création et déploiement short agentServerId; .. // Create agent ag to be deployed on AgentServer x Ag ag = new Ag(agentServerId); // Deploy agents ag.deploy(), ..

  26. Configuration des serveurs d'agents • Configuration décrite statiquement (a3servers.xml sur chaque site) <?xml version="1.0"?> <!DOCTYPE config SYSTEM "a3config.dtd"> <config name="test_conf1"> <host hostname="localhost"> <server id="0" name="s0" port="27300"> </server> <server id="1" name="s1" port="27301"> </server> </host> </config>

  27. La plate-forme à agentsCréation d'un serveur d'agent (1) > java fr.dyade.aaa.agent.AgentServer num rac // num = numéro du serveur // rac = racine de persistence // exemple : java fr.dyade.aaa.agentServer 1 s1

  28. La plate-forme à agentsCréation d'un serveur d'agent (2) public class Launch { // Starts an initial AgentServer public static void main (String args[]) { try { AgentServer.init(args); // Create agent ag to be deployed on AgentServer 0 (or 1) Ag ag = new Ag((short)0); // Deploy agents ag.deploy(), // Send a notification Channel.sendTo(ag.getId(), new not()); // Become an AgentServer AgentServer.start(); } .. }

  29. L’infrastructure d’exécutionVue d’ensemble (1) • Infrastructure basée sur un bus à messages: • Achemine les notifications. • Provoque la réaction du destinataire. • Mise en œuvre distribuée: sur chaque site, le bus local représente le bus à messages.

  30. L’infrastructure d’exécutionVue d’ensemble (2) • Bus local: • Achemine les notifications. • Système de queues persistantes. • Délivrance via la méthode react du destinataire.

  31. L’infrastructure d’exécutionServeurs d’agents (1) • Serveur d’agents: • Machine virtuelle hôte (incluse dans un processus). • Embarque un bus local et une fabrique à agents (allocation id + image persistente). • Bus local: • Gère les communications locales. • Assure les propriétés d’atomicité et de fiabilité (journal). • Fortement interconnecté avec les autres bus locaux. • Composé d’un Channel et d’un Engine.

  32. L’infrastructure d’exécutionServeur d’agents (2) • Channel: • Localisation et transport des notifications. • Engine: • Moteur d’exécution du serveur.

  33. Dans un serveur d’agents: Un seul flot d’exécution Une réaction est incluse dans une transaction Agent Agent msg = qin.get(); agent = Agent.load(msg.to); agent.reac(msg.from, msg.not); transaction.begin() qin.pop(); channel.dispatch(); Agent.save(); transaction.commit() React SendTo Channel Engine qout qin Network L’infrastructure d’exécutionServeur d’agents (3)

  34. Exemple considéré pour la manip: HelloWorld HelloWorldClient d HelloWorl StartNot React(from, not) { if (not instanceof StartNot) { sendTo(to,HelloWorldNot); React(from, not) { } HelloWorldNot if (not instanceof HelloWorldNot){ ... println(« helloworld»); } } ... }

More Related