SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
ANALYSE DES FLOTS
D’ÉVÉNEMENTS: TUTORIEL
ESPER
 Par Epal Njamen Orléant, epaln@imag.fr
 Master 2 Informatique
Plan
   Contexte et motivations
       scénario

   Implantation
       Installationdes outils
       Présentation de l’implantation du scénario
       Application
La notion d’événement
   Quelque chose qui s’est produit à un certain
    instant
     Achat  d’un article
     Fermeture d’une porte

     Accident de la circulation

     Changement climatique

     Notification d’un capteur

     etc...
Communication à base
d’événements
   Style de
    communication basé
    sur la production et la
    réception
    d’événements
    (publish/subscribe)
       Producteurs
           composants applicatifs
            produisant des
            événements (publish)
       Consommateurs
           composants applicatifs
            intéressés en la
            réception de certains
            événements
            (subscribe)
Scénario: ville intelligente
    On désire permettre aux
     habitants d’une ville de se
     déplacer en restant informés
     sur la façon dont la ville
     évolue.

    Plus précisément, donner la
     possibilité aux habitants
     d’être notifiés de certaines
     situations intéressantes et
     utiles à leur existence:
        offres d’article en solde
        état du trafic routier
        zones à faible degré de
         violence
         etc…
Scénario: ville intelligente (2)
   Le type d’information que chacun veut recevoir dépend
    de ses préférences et ses besoins pendant des périodes
    spécifiques…
                     Je souhaite recevoir des informations
                     sur le trafic chaque soir entre 17h et
                     19h, en semaine

                    Pour le weekend, les offres de cinéma
                    et des rassemblements artistiques.

                    Quand je me déplace, j’aimerai savoir
                    le degré de violence des quartiers que
                    je traverse.
La notion de type d’événement
   Représente une classe d’événements de même
    caractéristiques
     Ex: TraficEvent (long timestamp, String roadName, String
      state )


   Un événement est donc une instance d’un type
    d’événement
     t(52344945, "Av. J O", "fluide" )
Type d’Evénement simple,
complexe,
   Evénement simple
       représente une situation atomique directement signalée
        par un producteur.
   Evénement complexe ou composite
       Événement qui est une abstraction d’autres événements,
        appelés membres
           Tsunami: abstraction de plusieurs événements naturels…
           Crash d’un avion: abstraction de plusieurs pannes du système
            de contrôle
           Bug de l’an 2000: abstraction du crash de plusieurs systèmes
            informatiques, dus au passage à l’année 2000
       Il est crée en combinant des événements de base, en
        utilisant des opérateurs de composition spécifiques tel que
        l’agrégation, conjonction, disjonction, séquence, etc…
Composition d’événements dans la
    ville
   Une infrastructure à base
    d’événements, devant
    interconnecter dans un style
    producteurs/consommateurs
    (publish/subscribe) les habitants
    et les sources de données:
       Sources de données
        (producteurs): génèrent les flux
        d’événements
           Service Météo => données
            météorologiques
           Service Routier => info trafic,
            incidents, etc…
           Service Sécurité => infos sur les
            actes de vandalisme dans les rues
           Service Calendrier => jours fériés,
            dates importantes, etc…
           Service Annonces => mises en
            vente, publicités, artistique,
            cinéma, etc…
       Les habitants (consommateurs):
        spécifient la nature des
        informations qu’ils désirent
        recevoir.
Solutions existantes
   Esper [1], Stream [2], StreamBase [3],
    StreamInSight [4]
   Principales fonctionnalités offertes
     Agrégation:  avg, count, sum
     Corrélation : followed by, and, or, not
      A  => (B or C)
       A and (not B)

     Filtrage:   Type et attributs
         ActionEvent (user="toto", action="exit")
Tutoriel Esper
   Un système centralisé d’analyse de flux
    d’événements
   Langages cibles
     Java: Esper
     .NET: NEsper

   Open source, téléchargeable gratuitement
   JDK 1.5 ou version supérieure
   Langage proche du sql, l’EPL
       Permet de spécifier des requêtes complexes
   Modèle d’analyse en continue des requêtes
   Site principal: http://esper.codehaus.org/
Types d’événements sous
Esper
   3 représentations:
     java.lang.Object:  POJO avec getters et setters…
     java.util.Map: paires clé-valeur

     org.w3c.dom.Node: xml DOM

   Des adaptateurs permettant la prise en
    compte des flux CSV, JMS, HTTP
Exemple: classe Java
public class SellEvent {
    private String item;
    private String description;
    private double price;
    public SellEvent() {
    }
/*
 * ainsi que les getteurs et setteurs…
 */
}
Production des événements
   Avertissement au préalable du type d’événement:
    EPServiceProvider cep=EPServiceProviderManager.getProvider();
    cep.getEPAdministrator().
    getConfiguration().addEventType("SellEvent",
    SellEvent.class.getName());
   Production proprement dite:
    SellEvent event=new SellEvent();
    event.setItem("iPhone 4 S");
    event.setDescription("version 16 Go");
    event.setPrice(400);
    event.setTimestamp(System.currentTimeMillis());
    cep.getEPRuntime().send(event);
Formulation d’une requête
   Détection des articles en solde: le prix a chuté
    de 50% par rapport au prix initial au cours du
    même mois…

      select a.item as item, a.price as oldprice, b.price as
      price, a.description as description
      from pattern [
        every-distinct(a.item) a=SellEvent ->
         every b=SellEvent(item=a.item, price< (a.price*0.5))
      ].win:time(1 month)
Définition d’un consommateur
   Association requête-consommateur
     cepStatement = CEPManager.getInstance().getCepAdm().createEPL(query);
     cepStatement.addListener(new SoldeListener());

   Code du consommateur

    public class SoldeListener implements UpdateListener {
      public void update(EventBean[] ebs, EventBean[] ebs1) {
         EventBean o = ebs[0];
         double price = (Double) o.get("price");
         double oldprice = (Double) o.get("oldprice");
         String item = (String) o.get("item");
         String descr = (String) o.get("description");
        // traitement…
      }
    }
Implantation et exécution du
scénario
   Le projet démo:
     Un   exécutable java
       Producteurs d’événements simples
       Création automatique d’un consommateur pour
        chaque requête fournie dans le fichier
        custom_query.txt
Dans le fichier custom_query.txt
   Requête 1: soldes…
   requête 2: détection de l’absence de vandalisme dans la ville de Grenoble
    lors de la dernière minute

       @Name('custom2')
       select * from pattern
       [every ( timer:interval(1 min) and not PoliceEvent(city='grenoble'))]

   requête 3: détection des offres de loisir (artistique, cinéma) dans la ville de
    Grenoble les weekends et les jours fériés

       @Name ('custom3')
       select e.type, e.city, e.title, e.description
       from pattern [ every (
         ( CalendarEvent(state='férié chomé') or timer:at (*,*,*,*,*/6,*) )
          -> e=PubEvent (type in ('Cinema', 'Artistique') )
          )
        ].win:time(1 day)|e.type, e.city, e.title, e.description
Exécution


  Visualisation   du projet sous eclipse

  $>   java –jar scenarioTest.jar
Conclusion
   Nous avons présenté la notion d’analyse des flux
    d’événements, et à travers un scénario, nous
    avons pu expérimenter ces notions en utilisant
    Esper [1].
   Dans la prochaine présentation, nous nous
    attaquerons à la problématique qui consiste à
    distribuer le processus d’analyse sur plusieurs
    machines.
   Nous illustrerons les principaux défis, et nous
    présenterons une approche pour la distribution
   TAF
     Spécifier un service composition distribuée des flux
      d’événements
     Implémentation et validation ?
References
   [1] Esper, http://esper.codehaus.org/
   [2] Stream,
    http://infolab.stanford.edu/stream/code/user.pdf
   [3] StreamInsight, http://msdn.microsoft.com/en-
    us/library/ee362541.aspx
   [4] StreamBase, http://www.streambase.com/
Merci pour votre aimable
attention !

Contenu connexe

Tendances

Ecriture de classes javascript
Ecriture de classes javascriptEcriture de classes javascript
Ecriture de classes javascriptThierry Gayet
 
Aide mémoire de caml
Aide mémoire de camlAide mémoire de caml
Aide mémoire de camlzan
 
Corrige examen cc1
Corrige examen cc1Corrige examen cc1
Corrige examen cc1bourabah
 
Initiation au JavaScript
Initiation au JavaScriptInitiation au JavaScript
Initiation au JavaScriptMouna Dhaouadi
 
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15megaplanet20
 

Tendances (8)

Ecriture de classes javascript
Ecriture de classes javascriptEcriture de classes javascript
Ecriture de classes javascript
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Aide mémoire de caml
Aide mémoire de camlAide mémoire de caml
Aide mémoire de caml
 
Js part2
Js part2Js part2
Js part2
 
Université des langages scala
Université des langages   scalaUniversité des langages   scala
Université des langages scala
 
Corrige examen cc1
Corrige examen cc1Corrige examen cc1
Corrige examen cc1
 
Initiation au JavaScript
Initiation au JavaScriptInitiation au JavaScript
Initiation au JavaScript
 
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
UML : Diagrammes de cas d'utilisation -- modele detaille -- 15
 

En vedette

Complex Event Processing with Esper
Complex Event Processing with EsperComplex Event Processing with Esper
Complex Event Processing with EsperTed Won
 
Complex Event Processing in Practice at jDays 2012
Complex Event Processing in Practice at jDays 2012Complex Event Processing in Practice at jDays 2012
Complex Event Processing in Practice at jDays 2012Peter Norrhall
 
Debs 2011 tutorial on non functional properties of event processing
Debs 2011 tutorial  on non functional properties of event processingDebs 2011 tutorial  on non functional properties of event processing
Debs 2011 tutorial on non functional properties of event processingOpher Etzion
 
Reactconf 2014 - Event Stream Processing
Reactconf 2014 - Event Stream ProcessingReactconf 2014 - Event Stream Processing
Reactconf 2014 - Event Stream ProcessingAndy Piper
 
Installing Complex Event Processing On Linux
Installing Complex Event Processing On LinuxInstalling Complex Event Processing On Linux
Installing Complex Event Processing On LinuxOsama Mustafa
 
Access control attacks by nor liyana binti azman
Access control attacks by nor liyana binti azmanAccess control attacks by nor liyana binti azman
Access control attacks by nor liyana binti azmanHafiza Abas
 
Comparative Analysis of Personal Firewalls
Comparative Analysis of Personal FirewallsComparative Analysis of Personal Firewalls
Comparative Analysis of Personal FirewallsAndrej Šimko
 
Tutorial in DEBS 2008 - Event Processing Patterns
Tutorial in DEBS 2008 - Event Processing PatternsTutorial in DEBS 2008 - Event Processing Patterns
Tutorial in DEBS 2008 - Event Processing PatternsOpher Etzion
 
Chapter 12
Chapter 12Chapter 12
Chapter 12cclay3
 
CyberLab CCEH Session - 3 Scanning Networks
CyberLab CCEH Session - 3 Scanning NetworksCyberLab CCEH Session - 3 Scanning Networks
CyberLab CCEH Session - 3 Scanning NetworksCyberLab
 
Complex Event Processing with Esper and WSO2 ESB
Complex Event Processing with Esper and WSO2 ESBComplex Event Processing with Esper and WSO2 ESB
Complex Event Processing with Esper and WSO2 ESBPrabath Siriwardena
 
Ceh v8 labs module 03 scanning networks
Ceh v8 labs module 03 scanning networksCeh v8 labs module 03 scanning networks
Ceh v8 labs module 03 scanning networksAsep Sopyan
 
Debs2009 Event Processing Languages Tutorial
Debs2009 Event Processing Languages TutorialDebs2009 Event Processing Languages Tutorial
Debs2009 Event Processing Languages TutorialOpher Etzion
 
Analizadores de Protocolos
Analizadores de ProtocolosAnalizadores de Protocolos
Analizadores de ProtocolosMilton Muñoz
 
Why Data Virtualization Is Good For Big Data Analytics?
Why Data Virtualization Is Good For Big Data Analytics?Why Data Virtualization Is Good For Big Data Analytics?
Why Data Virtualization Is Good For Big Data Analytics?Tyrone Systems
 
Scanning with nmap
Scanning with nmapScanning with nmap
Scanning with nmapcommiebstrd
 
Module 3 Scanning
Module 3   ScanningModule 3   Scanning
Module 3 Scanningleminhvuong
 

En vedette (20)

Complex Event Processing with Esper
Complex Event Processing with EsperComplex Event Processing with Esper
Complex Event Processing with Esper
 
Complex Event Processing in Practice at jDays 2012
Complex Event Processing in Practice at jDays 2012Complex Event Processing in Practice at jDays 2012
Complex Event Processing in Practice at jDays 2012
 
CEP: from Esper back to Akka
CEP: from Esper back to AkkaCEP: from Esper back to Akka
CEP: from Esper back to Akka
 
Debs 2011 tutorial on non functional properties of event processing
Debs 2011 tutorial  on non functional properties of event processingDebs 2011 tutorial  on non functional properties of event processing
Debs 2011 tutorial on non functional properties of event processing
 
Reactconf 2014 - Event Stream Processing
Reactconf 2014 - Event Stream ProcessingReactconf 2014 - Event Stream Processing
Reactconf 2014 - Event Stream Processing
 
Installing Complex Event Processing On Linux
Installing Complex Event Processing On LinuxInstalling Complex Event Processing On Linux
Installing Complex Event Processing On Linux
 
Access control attacks by nor liyana binti azman
Access control attacks by nor liyana binti azmanAccess control attacks by nor liyana binti azman
Access control attacks by nor liyana binti azman
 
Session hijacking
Session hijackingSession hijacking
Session hijacking
 
Comparative Analysis of Personal Firewalls
Comparative Analysis of Personal FirewallsComparative Analysis of Personal Firewalls
Comparative Analysis of Personal Firewalls
 
Tutorial in DEBS 2008 - Event Processing Patterns
Tutorial in DEBS 2008 - Event Processing PatternsTutorial in DEBS 2008 - Event Processing Patterns
Tutorial in DEBS 2008 - Event Processing Patterns
 
Chapter 12
Chapter 12Chapter 12
Chapter 12
 
CyberLab CCEH Session - 3 Scanning Networks
CyberLab CCEH Session - 3 Scanning NetworksCyberLab CCEH Session - 3 Scanning Networks
CyberLab CCEH Session - 3 Scanning Networks
 
Complex Event Processing with Esper and WSO2 ESB
Complex Event Processing with Esper and WSO2 ESBComplex Event Processing with Esper and WSO2 ESB
Complex Event Processing with Esper and WSO2 ESB
 
Ceh v8 labs module 03 scanning networks
Ceh v8 labs module 03 scanning networksCeh v8 labs module 03 scanning networks
Ceh v8 labs module 03 scanning networks
 
Debs2009 Event Processing Languages Tutorial
Debs2009 Event Processing Languages TutorialDebs2009 Event Processing Languages Tutorial
Debs2009 Event Processing Languages Tutorial
 
Nmap scripting engine
Nmap scripting engineNmap scripting engine
Nmap scripting engine
 
Analizadores de Protocolos
Analizadores de ProtocolosAnalizadores de Protocolos
Analizadores de Protocolos
 
Why Data Virtualization Is Good For Big Data Analytics?
Why Data Virtualization Is Good For Big Data Analytics?Why Data Virtualization Is Good For Big Data Analytics?
Why Data Virtualization Is Good For Big Data Analytics?
 
Scanning with nmap
Scanning with nmapScanning with nmap
Scanning with nmap
 
Module 3 Scanning
Module 3   ScanningModule 3   Scanning
Module 3 Scanning
 

Similaire à Tutoriel esper

Programmation evénementielle
Programmation evénementielleProgrammation evénementielle
Programmation evénementielleKokou Gaglo
 
Simulation CFD urbaine avec des logiciels libres (french)
Simulation CFD urbaine avec des logiciels libres (french)Simulation CFD urbaine avec des logiciels libres (french)
Simulation CFD urbaine avec des logiciels libres (french)FLUIDIAN
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement AndroidSteve Tremblay
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Farouk Mezghich
 
Génération automatique de texte
Génération automatique de texteGénération automatique de texte
Génération automatique de texteEstelle Delpech
 
Utilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérienceUtilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expériencelouschwartz
 
Bluetooth Low Energy dans les applications Windows
Bluetooth Low Energy dans les applications WindowsBluetooth Low Energy dans les applications Windows
Bluetooth Low Energy dans les applications WindowsMicrosoft
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsDenis Voituron
 
Journées SQL Server 2011 Extended Events
Journées SQL Server 2011  Extended Events Journées SQL Server 2011  Extended Events
Journées SQL Server 2011 Extended Events David BAFFALEUF
 
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...Idean France
 
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWan
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWanIoT (l'Internet des Objets) et le protocole de telecommunication LoRaWan
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWanCorneliu Gaina
 

Similaire à Tutoriel esper (20)

Programmation evénementielle
Programmation evénementielleProgrammation evénementielle
Programmation evénementielle
 
Reveelium Technical Overview - Datasheet FR
Reveelium Technical Overview - Datasheet FRReveelium Technical Overview - Datasheet FR
Reveelium Technical Overview - Datasheet FR
 
Presentation hourdin
Presentation hourdinPresentation hourdin
Presentation hourdin
 
Développement informatique : Programmation graphique
Développement informatique : Programmation graphiqueDéveloppement informatique : Programmation graphique
Développement informatique : Programmation graphique
 
Simulation CFD urbaine avec des logiciels libres (french)
Simulation CFD urbaine avec des logiciels libres (french)Simulation CFD urbaine avec des logiciels libres (french)
Simulation CFD urbaine avec des logiciels libres (french)
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement Android
 
Et3 5 diagsequence
Et3 5 diagsequenceEt3 5 diagsequence
Et3 5 diagsequence
 
AJAX JSON with jQuery
AJAX JSON with jQueryAJAX JSON with jQuery
AJAX JSON with jQuery
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)
 
Génération automatique de texte
Génération automatique de texteGénération automatique de texte
Génération automatique de texte
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Utilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérienceUtilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérience
 
Bluetooth Low Energy dans les applications Windows
Bluetooth Low Energy dans les applications WindowsBluetooth Low Energy dans les applications Windows
Bluetooth Low Energy dans les applications Windows
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénients
 
Journées SQL Server 2011 Extended Events
Journées SQL Server 2011  Extended Events Journées SQL Server 2011  Extended Events
Journées SQL Server 2011 Extended Events
 
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...
Cocoaheads Montpellier Meetup : La programmation réactive sur iOS avec Réacti...
 
Manualjquery
ManualjqueryManualjquery
Manualjquery
 
8-socket.pdf
8-socket.pdf8-socket.pdf
8-socket.pdf
 
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWan
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWanIoT (l'Internet des Objets) et le protocole de telecommunication LoRaWan
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWan
 
Apple : iOS
Apple : iOSApple : iOS
Apple : iOS
 

Tutoriel esper

  • 1. ANALYSE DES FLOTS D’ÉVÉNEMENTS: TUTORIEL ESPER Par Epal Njamen Orléant, epaln@imag.fr Master 2 Informatique
  • 2. Plan  Contexte et motivations  scénario  Implantation  Installationdes outils  Présentation de l’implantation du scénario  Application
  • 3. La notion d’événement  Quelque chose qui s’est produit à un certain instant  Achat d’un article  Fermeture d’une porte  Accident de la circulation  Changement climatique  Notification d’un capteur  etc...
  • 4. Communication à base d’événements  Style de communication basé sur la production et la réception d’événements (publish/subscribe)  Producteurs  composants applicatifs produisant des événements (publish)  Consommateurs  composants applicatifs intéressés en la réception de certains événements (subscribe)
  • 5. Scénario: ville intelligente  On désire permettre aux habitants d’une ville de se déplacer en restant informés sur la façon dont la ville évolue.  Plus précisément, donner la possibilité aux habitants d’être notifiés de certaines situations intéressantes et utiles à leur existence:  offres d’article en solde  état du trafic routier  zones à faible degré de violence  etc…
  • 6. Scénario: ville intelligente (2)  Le type d’information que chacun veut recevoir dépend de ses préférences et ses besoins pendant des périodes spécifiques… Je souhaite recevoir des informations sur le trafic chaque soir entre 17h et 19h, en semaine Pour le weekend, les offres de cinéma et des rassemblements artistiques. Quand je me déplace, j’aimerai savoir le degré de violence des quartiers que je traverse.
  • 7. La notion de type d’événement  Représente une classe d’événements de même caractéristiques  Ex: TraficEvent (long timestamp, String roadName, String state )  Un événement est donc une instance d’un type d’événement  t(52344945, "Av. J O", "fluide" )
  • 8. Type d’Evénement simple, complexe,  Evénement simple  représente une situation atomique directement signalée par un producteur.  Evénement complexe ou composite  Événement qui est une abstraction d’autres événements, appelés membres  Tsunami: abstraction de plusieurs événements naturels…  Crash d’un avion: abstraction de plusieurs pannes du système de contrôle  Bug de l’an 2000: abstraction du crash de plusieurs systèmes informatiques, dus au passage à l’année 2000  Il est crée en combinant des événements de base, en utilisant des opérateurs de composition spécifiques tel que l’agrégation, conjonction, disjonction, séquence, etc…
  • 9. Composition d’événements dans la ville  Une infrastructure à base d’événements, devant interconnecter dans un style producteurs/consommateurs (publish/subscribe) les habitants et les sources de données:  Sources de données (producteurs): génèrent les flux d’événements  Service Météo => données météorologiques  Service Routier => info trafic, incidents, etc…  Service Sécurité => infos sur les actes de vandalisme dans les rues  Service Calendrier => jours fériés, dates importantes, etc…  Service Annonces => mises en vente, publicités, artistique, cinéma, etc…  Les habitants (consommateurs): spécifient la nature des informations qu’ils désirent recevoir.
  • 10. Solutions existantes  Esper [1], Stream [2], StreamBase [3], StreamInSight [4]  Principales fonctionnalités offertes  Agrégation: avg, count, sum  Corrélation : followed by, and, or, not A => (B or C)  A and (not B)  Filtrage: Type et attributs  ActionEvent (user="toto", action="exit")
  • 11. Tutoriel Esper  Un système centralisé d’analyse de flux d’événements  Langages cibles  Java: Esper  .NET: NEsper  Open source, téléchargeable gratuitement  JDK 1.5 ou version supérieure  Langage proche du sql, l’EPL  Permet de spécifier des requêtes complexes  Modèle d’analyse en continue des requêtes  Site principal: http://esper.codehaus.org/
  • 12. Types d’événements sous Esper  3 représentations:  java.lang.Object: POJO avec getters et setters…  java.util.Map: paires clé-valeur  org.w3c.dom.Node: xml DOM  Des adaptateurs permettant la prise en compte des flux CSV, JMS, HTTP
  • 13. Exemple: classe Java public class SellEvent { private String item; private String description; private double price; public SellEvent() { } /* * ainsi que les getteurs et setteurs… */ }
  • 14. Production des événements  Avertissement au préalable du type d’événement: EPServiceProvider cep=EPServiceProviderManager.getProvider(); cep.getEPAdministrator(). getConfiguration().addEventType("SellEvent", SellEvent.class.getName());  Production proprement dite: SellEvent event=new SellEvent(); event.setItem("iPhone 4 S"); event.setDescription("version 16 Go"); event.setPrice(400); event.setTimestamp(System.currentTimeMillis()); cep.getEPRuntime().send(event);
  • 15. Formulation d’une requête  Détection des articles en solde: le prix a chuté de 50% par rapport au prix initial au cours du même mois… select a.item as item, a.price as oldprice, b.price as price, a.description as description from pattern [ every-distinct(a.item) a=SellEvent -> every b=SellEvent(item=a.item, price< (a.price*0.5)) ].win:time(1 month)
  • 16. Définition d’un consommateur  Association requête-consommateur cepStatement = CEPManager.getInstance().getCepAdm().createEPL(query); cepStatement.addListener(new SoldeListener());  Code du consommateur public class SoldeListener implements UpdateListener { public void update(EventBean[] ebs, EventBean[] ebs1) { EventBean o = ebs[0]; double price = (Double) o.get("price"); double oldprice = (Double) o.get("oldprice"); String item = (String) o.get("item"); String descr = (String) o.get("description"); // traitement… } }
  • 17. Implantation et exécution du scénario  Le projet démo:  Un exécutable java  Producteurs d’événements simples  Création automatique d’un consommateur pour chaque requête fournie dans le fichier custom_query.txt
  • 18. Dans le fichier custom_query.txt  Requête 1: soldes…  requête 2: détection de l’absence de vandalisme dans la ville de Grenoble lors de la dernière minute @Name('custom2') select * from pattern [every ( timer:interval(1 min) and not PoliceEvent(city='grenoble'))]  requête 3: détection des offres de loisir (artistique, cinéma) dans la ville de Grenoble les weekends et les jours fériés @Name ('custom3') select e.type, e.city, e.title, e.description from pattern [ every ( ( CalendarEvent(state='férié chomé') or timer:at (*,*,*,*,*/6,*) ) -> e=PubEvent (type in ('Cinema', 'Artistique') ) ) ].win:time(1 day)|e.type, e.city, e.title, e.description
  • 19. Exécution  Visualisation du projet sous eclipse  $> java –jar scenarioTest.jar
  • 20. Conclusion  Nous avons présenté la notion d’analyse des flux d’événements, et à travers un scénario, nous avons pu expérimenter ces notions en utilisant Esper [1].  Dans la prochaine présentation, nous nous attaquerons à la problématique qui consiste à distribuer le processus d’analyse sur plusieurs machines.  Nous illustrerons les principaux défis, et nous présenterons une approche pour la distribution  TAF  Spécifier un service composition distribuée des flux d’événements  Implémentation et validation ?
  • 21. References  [1] Esper, http://esper.codehaus.org/  [2] Stream, http://infolab.stanford.edu/stream/code/user.pdf  [3] StreamInsight, http://msdn.microsoft.com/en- us/library/ee362541.aspx  [4] StreamBase, http://www.streambase.com/
  • 22. Merci pour votre aimable attention !