Difference between revisions of "Apache Edgent"

From air
Jump to navigation Jump to search
Line 25: Line 25:
 
 
 
Il est possible de parallèliser les traitements comme l'indique l'instruction suivante :
 
Il est possible de parallèliser les traitements comme l'indique l'instruction suivante :
|-> A2-channel0 ->|
+
<code class="language-" data-lang=""> |-&gt; A2-channel0 -&gt;|
 
sensorReadings&lt;T&gt; -&gt; A1 -&gt; |-&gt; A2-channel1 -&gt;| -&gt; A3 -&gt; results&lt;R&gt;
 
sensorReadings&lt;T&gt; -&gt; A1 -&gt; |-&gt; A2-channel1 -&gt;| -&gt; A3 -&gt; results&lt;R&gt;
 
|-&gt; A2-channel2 -&gt;|
 
|-&gt; A2-channel2 -&gt;|
 
|-&gt; A2-channel3 -&gt;|
 
|-&gt; A2-channel3 -&gt;|
 
|-&gt; A2-channel4 -&gt;|
 
|-&gt; A2-channel4 -&gt;|
  +
...
  +
</code>
   
 
== Environnements de déploiement ==
 
== Environnements de déploiement ==

Revision as of 11:37, 26 March 2017

Principe de fonctionnement

Apache Edgent désigne un environnement d'exécution embarqué léger et une API Java permettant d'effectuer des traitements analytiques et des opérations de transformation sur des flux de données au plus près des objets distants (directement sur l'objet connecté ou sur leur passerelle de connexion).

Son principal intérêt est de donner la possibilité programmatique d'extraire très en amont l'information pertinente de la masse de données collectées, ce qui présente l'avantage de réduire considérablement la quantité d'informations échangées au travers du réseau et à destination de systèmes de stockage persistant.

Apache Edgent transforme ainsi un mode récurrent de collecte d'informations de type "heart beat polling" en un véritable système événementiel orienté autour des seules informations présentant une utilité informationnelle pour des traitements ultérieurs.

Les flux de données résultats des transformations Edgent sont ensuite transmises via des connecteurs à des applications en sortie qui peuvent être un serveur MQTT, une connexion JDBC, un fichier, un cluster Kafka ou un message hub de type IBM Watson IoT Platform (1).

Opérations sur les flux de données

Les flux de données sont instantiés avec la classe org.apache.edgent.topology.TStream<T> où T désigne le type générique du tuple de données collectées (T=Float par exemple).

Un pipeline de traitements en chaîne est ensuite appliqués à ces flux de données pour produire de nouveaux flux de données. Les traitements possibles comprennent :

des règles de filtre. L'instruction suivante permet par exemple de réduire un flux de données à un flux filtré aux seules valeurs 'exeptionnelles' (<50 ou >80)

  TStream<Double> ts2 = ts1.filter(reading -> reading < 50 || reading > 80);

des règle de transmutation du type de donnée avec l'instruction nmap().

Il est possible de parallèliser les traitements comme l'indique l'instruction suivante : |-> A2-channel0 ->| sensorReadings<T> -> A1 -> |-> A2-channel1 ->| -> A3 -> results<R>

                          |-> A2-channel2 ->|
                          |-> A2-channel3 ->|
                          |-> A2-channel4 ->|
                                 ...

Environnements de déploiement

Java 8 (incluant Raspberry Pi B et Pi2 B) / Java 7 / Android

Origine du projet

Apache Edgent est désormais un projet open source de type Apache Incubator (http://incubator.apache.org/). Il est l'héritier de Quarks développé par IBM jusqu'en juillet 2016 (https://developer.ibm.com/open/openprojects/apache-edgent/).

Liens

https://developer.ibm.com/open/openprojects/apache-edgent/

https://edgent.apache.org/docs/home

https://developer.ibm.com/streamsdev/2016/02/16/streaming-analytics-center-edge/

https://github.com/apache/incubator-edgent/blob/master/DEVELOPMENT.md