View
5
Download
0
Category
Preview:
Citation preview
06/03/18 D. Donsez, V. Quema, IoT Mashup 1
IoT ETL Mashup
Didier Donsez, Vivien Quéma
(c) Didier Donsez & Vivien Quéma, 2016-2018
06/03/18 D. Donsez, V. Quema, IoT Mashup 2
Sommaire
● Rappel : Architecture de Référence● APIs Stream des sources IoT● Formats● Place à la pratique
06/03/18 D. Donsez, V. Quema, IoT Mashup 3
Reference Architecture
Fixed EndpointsMobile Endpoints
Base Stations/ Gateways
Core Network* high available* high performance* transient storage
ApplicationsLong Term Storage
NetworkServer
NetworkServer
GW
GW
GW
A C A B A C A
AppCustomer C
AppCustomer B
AppCustomer A
geo-replication
failover
API Client
06/03/18 D. Donsez, V. Quema, IoT Mashup 4
APIs de Collecte
● HTTP Callback● MQTT● WebSocket● Journaux persistants : Kafka, Flume, ...● Autres : AMQP, gRPC, PubNub, Confluent …● Bases temporelles
06/03/18 D. Donsez, V. Quema, IoT Mashup 5
HTTP Callback
● Protocole client-serveur (de facto)● Mode opératoire
– Le client publie un point d’entrée public HTTP– Le NS requête (POST ou GET) le point d’entrée pour
chaque message LoRaWAN reçu (ou pour une lot de message LoRaWAN reçus dans un interval de temps T).
– En cas d’indisponibilité du point d’entrée public, le NS stocke provisoirement les messages non livrés (avec une retention de X jours).
06/03/18 D. Donsez, V. Quema, IoT Mashup 6
HTTP Callback
● Mode opératoire– Schéma
NetworkServer
ApplicationCliente
NetworkServer
POST /message
GET /message?undelivered=true
06/03/18 D. Donsez, V. Quema, IoT Mashup 7
HTTP Callback
● Avantages– HTTP
● Inconvénients– Le point d’entrée doit avoir une adresse IP publique.– Le point d’entrée doit être gérer en mode Haute Disponibilité
(Load Balancer, Sécurité (SSL, Filtrage d’adresse d’origine)– L’application cliente doit récupérer sur le NS (via une API HTTP
REST) les messages non livrés.– En général, un point d’entrée par AppEUI
06/03/18 D. Donsez, V. Quema, IoT Mashup 8
Modèle de CommunicationPublish-Subscribe
PubSubBroker
PubSubBroker
Publishertopic="s11/hum"
Publishertopic="s11/hum"
Subscriberevent.topics=
{"#/location"}
Subscriberevent.topics=
{"#/location"}
Publishertopic="s12/temp"
Publishertopic="s12/temp"
Publishertopic=
"s13/wind"
Publishertopic=
"s13/wind"
Subscriberevent.topics={"#/temp","#/hum"}
Subscriberevent.topics={"#/temp","#/hum"}
Subscriberevent.topics=
{"s11/#","s13/#"}
Subscriberevent.topics=
{"s11/#","s13/#"}
Subscriberevent.topics=
{"s14/#"}
Subscriberevent.topics=
{"s14/#"}
E2
E2
E3
E3
E1E1
E1
E4
E4
E4
Publishertopic=
"s10/geiger/pps"
Publishertopic=
"s10/geiger/pps"
E6
ProducteursConsommateurs
MQTTKafkaAMQP
06/03/18 D. Donsez, V. Quema, IoT Mashup 9
MQTT
● Protocole PubSub dédié à l’IoT– Découplage entre publishers et subscribers
● Mode opératoire– L’application client souscrit à un sujet (en général
l’AppEUI) et recoit les messages quand ils sont produits
NetworkServer
ApplicationCliente
NetworkServer
PUBLISH xnet/3/1234{"water":10}
SUBSCRIBE xnet/3/#
PUBLISH xnet/3/5678{"water":100}
06/03/18 D. Donsez, V. Quema, IoT Mashup 10
MQTT
● Avantages– Plusieurs applications souscrivent aux mêmes sujets – Nombreuses implémentations (clients et brokers)– Supporté par la plupart des PaaS IoT (IBM, Cayenne, …)– Gestion des reconnections et de la vivacité de la connexion TCP
● Inconvénients– Failover « Adhoc »– « Pas » de rétention en cas d’arrêt d’une application
consommatrice → API REST du NS pour récupérer les frames non reçues.
06/03/18 D. Donsez, V. Quema, IoT Mashup 11
WebSockets
● « PubSub » sur HTTP● Mode opératoire
– Comme MQTT
● Remarque– Les brokers MQTT offrent un point d’entrée
WebSocket.
06/03/18 D. Donsez, V. Quema, IoT Mashup 12
Kafka
● Journal distribué persistant– Haute performance– Haute disponibilité– Modèle de communication PubSub
● Groupe de publishers● Groupe de subscribers
– Rétension des données de plusieurs heures à plusieurs jours.
–
06/03/18 D. Donsez, V. Quema, IoT Mashup 13
Kafka
● Mode opératoire (TBC)
A1
NetworkServer
A2
R1
B2
Kafka +ZK
PUB /iot PUB /iot
PUB /iotPUB /iot
Groupe A
06/03/18 D. Donsez, V. Quema, IoT Mashup 14
Kafka
● Avantages– Haute performance– Haute disponibilité– Pas de nécessité de gérer de manière adhoc les messages non
distribués à/aux applications– « Big Data ready »
● Canal d’alimentation de la plupart des stacks Big Data (Hadoop, Storm, Spark, Flink).
● Inconvénients– 2f+1 machines + 2f+1 Zookeeper
● (f étant le nombre de fautes tolérées)
Data Models & Database SystemsOne does not fit all !
SQL● Oracle, MySQL/MariaDB,
Postgres, HSQL ...
NoSQL (Not 1 NF)● File Systems
– HDFS
● Table– Hbase (Big Table)
● Directories (LDAP)● Key-Value Stores
– Cassandra, Redis, Memcached, ...
● Document-oriented DB– MongoDB, CouchDB, ...
● ….
● Graph-oriented DB– Neo4J, ...
● Time-Series DB– OpenTSDB, InfluxDB, …
● Text Oriented– Lucene, OpenNLP, ElasticSearch– Geolocation
● GIS, Geo extensopns in MongoDB, Postgres, MySQL, ...
– Streams● Kafka, Flume
Performance● In-memory DB– MySQL Cluster, Redis, ...
Database SystemsMultiple Data Models
CAP Theorem (Brewer)
• Un SD ne peut garantr qu’au max. 2 propriétés
06/03/18 D. Donsez, V. Quema, IoT Mashup 18
Time-Serie Databases
● Stockage et requêtage des données indexées par le temps.– Haute performance– Expressivité des requêtes par rapport aux temps– Retention paramêtrable des données
● InfluxDB, OpenTSDB● TSDBaaS : OVH Metrics, Azure, Bluemix, AWS,
InfluxData, ElasticSearch ...
06/03/18 D. Donsez, V. Quema, IoT Mashup 19
Formats de DonnéesSérialisateur/Désérialisateur
– JSON – CSV– Les autres : XML, BSON, Thrift, Avro, Protobuf,
Parquet, ...
06/03/18 D. Donsez, V. Quema, IoT Mashup 20
NodeRED
06/03/18 D. Donsez, V. Quema, IoT Mashup 21
Exemple de Décodage de Payload
● Adeunis Pulse
06/03/18 D. Donsez, V. Quema, IoT Mashup 22
Decodage Payload Adeunis Pulse02 F0 06 00502D8A 00 00000000
06/03/18 D. Donsez, V. Quema, IoT Mashup 23
Decodage Payload Adeunis Pulse02 F0 06 00502D8A 00 00000000
06/03/18 D. Donsez, V. Quema, IoT Mashup 24
Decodage Payload Adeunis Pulse
06/03/18 D. Donsez, V. Quema, IoT Mashup 25
Chronograf sur InfluxDB
06/03/18 D. Donsez, V. Quema, IoT Mashup 26
MongoDB - Compass
06/03/18 D. Donsez, V. Quema, IoT Mashup 27
Dashboard-as-a-ServiceExemple : Cayenne
06/03/18 D. Donsez, V. Quema, IoT Mashup 28
Dashboard-as-a-ServiceExemple : Jyse.io
06/03/18 D. Donsez, V. Quema, IoT Mashup 29
Alerting
● Déclenchement d’une action sur franchissement de seuil (Mail, SMS, Trello …)– Huginn, Kapacitor, Grafana– Alert-as-a-Service : Cayenne, IFTTT, Azure,
Bluemix BI, ...
06/03/18 D. Donsez, V. Quema, IoT Mashup 30
The TICK stack
06/03/18 D. Donsez, V. Quema, IoT Mashup 31
Getting started
● Avec Docker● NodeRED● Mosquitto● InfluxDB● Chronograf● Grafana● MongoDB● Huginn
Recommended