l'expertise middleware JF SMA'14 8-10 Oct. 2014 A3 - Agent Anytime Anywhere une plateforme à agents distribués André Freyssinet Directeur Technique andre.freyssinet@scalagent.com www.scalagent.com
Plan Introduction A3 Une plateforme à agents distribués Modèle à agents événement / réaction, Architecture et fonctionnement, Plateforme distribuée Utilisations Joram : broker distribué de messages multi-protocoles. Médiation : Plateforme de collecte et traitement de données. VAMP : Plateforme asynchrone de déploiement et de configuration d'application virtuelle. CCSDS MAL : Plateforme de Monitoring/Control spatial. JFSMA 2014-2
Introduction La génèse Middleware / Intergiciel!= SMA Centre de recherche Bull / UJF Systèmes distribués à objets [85-95] Projets Guide et Comandos Interface, réflexivité, persistance Facilité de programmation :-) GIE Bull / Inria Dyade Transferts de technologie, applications distribuées Difficulté de fiabiliser les prototypes :-( Gestion des erreurs, problème de communication, pannes, incohérences, etc. Asynchronisme (MOM) JFSMA 2014-3
Introduction La génèse A3 Agent Anytime Anywhere Plateforme d'exécution distribuée Objets réactifs et persistants Exécution au sein d'un moniteur transactionnel Communication par message C++ puis Java Programmation de workflow distribués Datawarehouse Netwall Création de ScalAgent (2001) JFSMA 2014-4
Introduction - A3 A3 n'est pas «distribué» par ScalAgent.. mais la base de la plupart de nos produits A3 est la brique de base de Joram.. Broker de messages multi-protocole Projet open-source d'ow2 : http://joram.ow2.org mais aussi de nos solutions de monitoring/control développées pour le CNES ou de la solution de médiation de TagSys RFID JFSMA 2014-5
Introduction A3 Léger < 450 Ko de Jars, peu de ressources (mémoire, cpu) Rapide 50.000 réaction /s avec persistance (x40 sans persistance) Portable Java «Write once, Run everywhere» Modulaire, extensible et ouvert OSGi JMS, AMQP, MQTT, etc. Scalable Parallèlisation, Distribution JFSMA 2014-6
Paradigme «agent» A3 Agent un agent A3 est un objet réactif qui a un comportement proche de celui d un acteur. Les agents se conforment à un modèle de programmation de type «événement réaction». Un événement correspond à la notification d un message typé à un agent qui va se traduire par l exécution d une méthode de l objet. Modification de l'état de l'objet. Cette exécution peut, à son tour, provoquer la production d événements auxquels un ou plusieurs agents vont réagir. [AGH 86] AGHA G. A., «Actors : A Model of Concurrent Computation in Distributed Systems», Cambridge, MA, 1986. JFSMA 2014-7
La plateforme A3 - Modèle Ensemble d'agents interagissant au travers d un bus de communication Agents = objets réactifs Passifs (légers) Infrastructure d exécution partagée au sein d un serveur d agents: Engine Persistants (état implicitement conservé sur disque) Fiabilité (reprise après panne) Mécanisme de Swap in / out Bus de communication Fiable et ordonné JFSMA 2014-8
La plateforme A3 - Modèle Modèle asynchrone événement / réaction Événement = message Sous-classe de la classe fr.dyade.aaa.agent.notification Réaction = méthode react définie dans la classe Agent Sous-classe de la classe fr.dyade.aaa.agent.agent
La plateforme A3 Cycle de vie de l'agent Création d'un Agent Création d'une instance de sa classe : «Germe» ou «Avatar» Les constructeurs de la super-classe Agent permettent entre autre de déterminer son futur serveur de résidence Un identifiant unique est attribué au futur agent Configuration de cet objet Déploiement Appel de la méthode deploy() de la super-classe Agent Envoi de notification possible immédiatement Création / Swap In / Swap Out / destruction agentinitialize / agentfinalize JFSMA 2014-10
Exemple Ping/Pong Ping / Pong Pong Channel objet agent JFSMA 2014-11
Exemple Ping/Pong class Ping extends Agent { public int bounce; public AgentId pong; } public Ping(short to) { super(to); } public void react(agentid from, Notification not) throws Exception { if (not instanceof Start) { sendto(pong, new Ball(10)); } else if (not instanceof Ball) { if (((Ball) not).bounce > 0) { ((Ball) not).bounce -= 1; sendto(from, not); } } } class Pong extends Agent { public Pong(short to) { super(to); } } public void react(agentid from, Notification not) throws Exception { sendto(from, not); } class Start extends Notification {} class Ball extends Notification { public int bounce; } public Ball(int bounce) { this.bounce = bounce; } Ping ping = new Ping(ServerPing); Pong pong = new Pong(ServerPong); ping.pong = pong.getid(); ping.bounce = 10; ping.deploy(); pong.deploy(); Channel.sendTo(ping.getId(), new Start()); JFSMA 2014-12
La plateforme A3 - Implantation Server, Agent, Engine et Channel Les agents s exécutent au sein d une structure d accueil nommée serveur d agents. Cette structure d accueil est modulaire et fournit différentes politiques de fonctionnement des agents hébergés, par exemple : l atomicité des réactions aux événements : les traitements induits par la réception d une notification sont soit complètement réalisés, soit annulés. la persistance de l état des agents : un changement d état sur disque correspond à la complétion d une réaction. JFSMA 2014-13
La plateforme A3 - Implantation Engine Le cœur du serveur est un moteur d exécution qui contrôle le flot d exécution des agents. Ce flot est unique et prend la forme d une boucle qui consiste, pour chaque notification, à exécuter le code associé à la réaction de l agent destinataire. L'engine exécute le code des modules de persistance et d atomicité s ils ont été spécifiés dans la configuration initiale de l intergiciel. Le serveur d agents contrôle également les flots d exécution associés à la gestion des communications au sein d un sous-système appelé le bus local. JFSMA 2014-14
La plateforme A3 - Implantation while (true) { // Get next message msg = Channel.getNextMessage(); // Load the agent (if necessary) and process message agent = load(msg.to); agent.react(msg.from, msg.not); } BeginTransaction; // Suppress the processed message msg.delete(); // Dispatch the produced messages dispatch(); // Save the modified state of agent agent.save(); EndTransaction; JFSMA 2014-15
La plateforme A3 - Implantation Persistance des agents et des messages Atomicité des réactions (cf. algo précédent) L'exécution des réactions est réalisée au moyen d'un moniteur transactionnel : la réaction est validée : L'état de l'agent est sauvegardé les notifications émises lors de la réaction sont envoyées une erreur survient : l'état initial de l'agent est restauré les notifications émises sont détruites Persistance + Atomicité = Fiabilité Chaque notification est délivrée et traitée une fois et une seule JFSMA 2014-16
La plateforme A3 - Distribution Architecture distribuée JFSMA 2014-17
La plateforme A3 - Distribution Architecture distribuée réelle JFSMA 2014-18
La plateforme A3 Network BeginTransaction Channel.getEvent() Network.sendMsg() Network.recvAck() Channel.removeEvent() EndTransaction Network.recvMsg() CheckClock() BeginTransaction Channel.PushEvent() EndTransaction Network.SendAck() JFSMA 2014-19
La plateforme A3 AgentServer Infrastructure d exécution (container) Démarrage, Arrêt, etc. Engine Moteur d exécution des agents Garant de l atomicité des réactions Transaction Module de persistance Atomique JFSMA 2014-20
La plateforme A3 Channel Localisation des agents Routage des messages Network Transmission des messages d un serveur à un autre JFSMA 2014-21
La plateforme A3 - Distribution Transparence de la distribution Les agents sont identifiés par un identifiant unique : AgentId Création des agents Un agent peut être créé à distance sur n importe quel serveur de la plateforme Déploiement distribué, asynchrone et fiable Son identifiant unique est accessible localement immédiatement Emission des notifications Un message peut être émis vers n importe quel agent indépendamment de sa localisation JFSMA 2014-22
La plateforme A3 - Distribution JFSMA 2014-23
La plateforme A3 - Distribution Architecture distribuée réelle
La plateforme A3 - Distribution Domaines de communication Les serveurs d un même domaine communiquent directement (bus) Protocole identique (composant Network) Routage entre domaines Isolation inter-applications Isolation intra-application, Scalabilité Interconnexion de protocoles topologie réseau SSLNetwork, HttpNetwork, SMTP, SMS, etc. Connexion unidirectionelle, Translation d adresse JFSMA 2014-26
La plateforme A3 - Distribution Architecture multi-domaines SimpleNetwork / PoolNetwork SSLNetwork + Assymetrie Http(s)Network + NAT C INTERNET A NT B JFSMA 2014-28
La plateforme A3 - Configuration Fichier de configuration XML <config>... <server id=... name=... hostname=...> <network domain=... port=.../> <service class=... args=.../>... </server> </config> Dynamique : API de configuration Ajout / Suppression de serveurs Ajout / Suppression de domaines de communication Ajout / Suppression de services JFSMA 2014-29
La plateforme A3 - Evolutions Moteur transactionnel asynchrone Serveur multi-engine Acteurs, asynchronisme et parallèlisme JFSMA 2014-30
La plateforme A3 - Applications Implantation de protocoles Joram, CCSDS MAL Applications distribuées Controle VAMP Traitement de flux de données Médiation Tagsys (econnectware) JFSMA 2014-31
JORAM Un MOM Open-Source et 100% Java Fournit l interface JMS 1.1 et 2.0 Basé sur la plateforme ScalAgent Queue, Topic sont des agents Chaque client JMS est représenté par un agent Les messages JMS sont des notifications L'architecture est naturellement répartie Disponibilité, répartition de charge.. Broker multi-protocole AMQP, MQTT, etc. JFSMA 2014-32
Médiation Application distribuée de gestion de flux de données Collecte et traitement de données distribuées Chaque agent opère sur le flot de données Collecte, enrichissement, filtrage, agrégation, corrélation,etc. Les données sont distribuées, les traitements aussi Configuration centralisée Déploiement d'un point central Traitements distribués
Médiation (2) Tagsys RFID econnectware Ensemble d'antennes RFID distribuées Données = lecture des tags Applications Gestion des stocks et de la chaine d'approvisionnement Netwall : Firewall d'entreprise distribué Implantation de règles complexes Coordination des multiples firewalls de l entreprise Corrélation d'événements distribués Traitement des logs distribués Collecte, traitement, archivage JFSMA 2014-34
Virtual Applications Management Platform Résultat d'une thèse de l'ujf (2012) Déploiement d applications patrimoniales en environnements de type informatique dans le nuage X. Etchevers sous la direction de N. De Palma Déploiement autonome, générique et fiable de toute application patrimoniale répartie dans le nuage Modèlisation à base de composants. Protocole asynchrone, réparti et fiable d auto-configuration et d autoactivation de l application. A3 JFSMA 2014-35
VAMP (2) 1 instance de bus A3 par instance d'application déployée 1 serveur d'agent sur une VM dédiée Agent «gestionnaire de déploiement» 1 serveur d'agent sur chaque VM applicative Agents «configurateur» pour chaque composant applicatif déployé sur la VM Instantiation en deux phases Statique Configuration initiale connue de l'application Dynamique Mise à jour en fonction de l'évolution de l'application Panne de VM, réparation, reconfiguration explicite, etc. JFSMA 2014-36
VAMP (3) Avantage de la technologie A3 Distribution de la logique de fonctionnement Asynchronisme entre les acteurs. Fiabilité des messages échangés et de l état des agents Ordonnancement des messages transmis entre une source et une destination données. Vérification formelle de la correction du protocole d auto-configuration et d auto-activation Modélisation au moyen d un graphe Parcours exhaustif en s assurant du respect d un ensemble de contraintes quelque soit le chemin emprunté. JFSMA 2014-37
CCSDS Space Monitoring & Control (SM&C) Architecture orientée services Dédiée au monitoring / contrôle spatial Patterns d'interactions dédiées Message Abstraction Layer Abstraction de la couche de communication pour les services SM&C MAL/Joram Implantation de la spécification MAL à base d'agents A3 Prototypage rapide et performant Implantation distribuée Disponibilité, scalabilité, répartition de charge.. JFSMA 2014-38
MERCI des questions? JFSMA 2014-39
Références AAA The AAA Agent-Based Message Oriented Middleware N. De Palma, L. Bellissard, D. Feliot, A. Freyssinet, M. Herrmann, and S. Lacourte rapport n 30 C3DS, 2000. An agent platform for reliable asynchronous distributed programming L. Bellissard, N. De Palma, A. Freyssinet, M. Herrmann, and S. Lacourte SRDS 1999, pages 294 295. The MOM Card Technology: a Message -Oriented Middleware inside the Smart Card Patrick Benon, Pascal Urien esmart 2002, pp 147-156. JFSMA 2014-40
Références Olan A Scalable and Flexible Operation Support System for Networked Smart Objects R. Balter, L. Bellissard, and V. Quéma 2nd Smart Objects Conference, Grenoble, France, May 2003. ScalAgent, une plate-forme à composants pour applications asynchrones V. Quema, R. Balter, L. Bellissard, D. Feliot, A.Freyssinet, et S. Lacourte Technique et Science Informatiques 23 (2004), no. 2, 253 274. JFSMA 2014-41
Références Joram http://joram.ow2.org Site de référence du projet http://jorammq.com Description de l'offre produit de ScalAgent autour de Joram http://mqtt.jorammq.com/ Description du connecteur MQTT de Joram Présentation à la conférence «Eclipse IoT Day 2014» à Grenoble http://www.ow2.org/xwiki/bin/download/events2010an nualconference/program/joram-s-lacourte.pdf Présentation de 2 use-cases à la conférence annuelle OW2 JFSMA 2014-42