SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Paris Apache Kafka
Meetup
Hervé RIVIERE
Zenika
@_rv_
hriviere
Source : confluent.io
Ingestion … alimentation !
Script / application java “home made” avec
des producers et/ou consumers
Avantage : flexibilité
Inconvénients : Pas toujours trivial, load
balancing ?, fail over ?, standard de
développement ?
Source : xkcd
Utiliser un connecteur spécifique déjà
existant (connecteur Elastic, Camus….)
ou un ETL (Talend…)
Avantage : plug & play !
Inconvénients : Pas de standard,
chaque connecteur doit être installé /
configuré / monitoré spécifiquement
Source : xkcd
Utiliser Spark (streaming), Storm,
Samza…
Avantages : Fail over, load balancing
Inconvénients : Un nouveau cluster à
installer, connaissance du framework,
luxueux pour de l’ingestion de données
?
Source : made-in-bed-productions.tumblr.com
Utiliser Kafka Connect !
Avantages :
• Déjà inclus dans Kafka
• Connecteurs déjà implémentés ou
possibilité d’écrire les siens
• Mutualisation configuration / runtime
des connecteurs
• Introduit des standard de
développements / utilisation
• Profite de l’ensembles des
fonctionnalités de Kafka (fail-over / load
balancing…)
Depuis Kafka 0.9+ (déjà inclus dans la distribution)
Comprend :
• Des API (interfaces Java)
• Moteurs d’exécution (standalone ou cluster)
• Service REST de monitoring
2x2 interfaces Java : SourceConnector, SourceTask / SinkConnector, SinkTask
Créer un connecteur : implémenter le couple interface Source et /
ou Sink
Load balancing, failover, offset déjà partiellement implémentés (on
indique le comportement)
Pas envie de coder ? : utiliser une implémentation « officielle »
http://www.confluent.io/developers/connectors
Standalone : une instance du connecteur (java –cp …)
Usage : test, lecture / et ou écriture d’un fichier sur un nœud spécifique
Cluster : N instances du connecteur sur N nœuds
Usage : Fail-over / load balancing
Exemple : Ecriture d’un topic vers HDFS en HA
Prérequis : Démarrer des workers Kafka Connect pour constituer le cluster
En mode cluster :
Pas de maitre-esclave
Déploiement des connecteurs sur les workers via service REST
• Indication nom de la classe
• Nombre d’instance voulue
• Configuration
Utilisation en arrière-plan des consumer groups (cf. présentation
précédente  )
DEMO !
https://github.com/hriviere/demo-kafka-connect-streams
Transformer !
Kafka Streams Spark streaming, Flink , Storm ...
Outils nécessaires Kafla uniquement Kafka + cluster Spark ou Flink ou Storm ou
….
Connaissances requise Kafka + API Kafka Streams Kafka + API framework + comportement
framework (config., HA….)
Gestionnaire de ressource NON OUI
Déploiement Une ou plusieurs application java (java -jar….)
Uniquement Java est requis
Via le cluster du framework
Usage de Kafka • Source / cible / données intermédiaires /
metadata
• Topics « classiques », topics compactés et topic
avec une unique partition
• Source et cible uniquement
• Généralement des topics « classiques »
partitionnés
Et Samza ? : Kafka Streams ≈ Samza sans gestionnaire de ressource (même philosophie)
• Même projet que Kafka
• A partir de Kafka 0.10 (release prévue pour dans quelques
semaines). Directement dans distribution Kafka
• Tech preview disponible sur http://www.confluent.io/developer#streamspreview
Kafka 0.10 actuellement en release candidate
A utiliser à vos risques et périls 
Clé Valeur
Lundi 1
Jeudi 4
Lundi 2
Vendredi 3
Lundi 2
• Kstreams : Transformation map ou filter sur un flux
de données
• Pas d’agrégation
• Pas d’état conservé
KStream<String, Long> stream = builder.stream(new StringDeserializer(), new LongDeserializer(), "semaine"):
KStream<String, Long> lundiStream = stream.filter((k, v) -> k.equals("lundi"));
lundiStream.to("lundi-stream");
Topic lundi-stream : (lundi,1), (lundi,2), (lundi,2)
Clé Valeur
Lundi 1
Jeudi 4
Lundi 2
Vendredi 3
Lundi 2
• KTables :
• Transformation d’agrégation sur un KStream
• Conservation d’un état
• Possibilité de réaliser des fenêtre glissante
KTable<String, Long> tableJour = stream.countByKey(new DeSererializer(), "table-jours");
tableJour.to("comptage-jours");
Topic comptage-jour : (Lundi, 1))
Clé Value
Lundi
Jeudi
Vendredi
(Jeudi, 1) (Lundi, 2) (Vendredi, 1) (Lundi, 3)
1
1
3
• Pour permettre parallélisme : autant de KTables que de partitions du topic
source !
• Persistance des KTables via des Stores
• In-Memory
• RocksDB (runtime) + topic compacté  Par défaut
• Sa propre implémentation
• Au démarrage de l’application, les stores retrouvent leurs états via le topic de
sauvegarde
• Si fenêtre glissante : uniquement les données nécessaires conservées
Topic source
Partition 1
Partition 2
Nœud 1
Nœud 2
Topic Cible
Partition 1
Partition 2
Partition 3
Partition 1
Partition 2
Topic de sauvegarde des KTables
Topic source
Partition 1
Partition 2
Nœud 1
Nœud 2
Topic Cible
Partition 1
Partition 2
Partition 3
Partition 1
Partition 2
Topic de sauvegarde des KTables
Topic source
Partition 1
Partition 2
Nœud 1
Topic Cible
Partition 1
Partition 2
Partition 3
Partition 1
Partition 2
Topic de sauvegarde des KTables
Instanciation du KTable du
nœud 2 sur le nœud 1
Topic source
Partition 1
Partition 2
Nœud 1
Topic Cible
Partition 1
Partition 2
Partition 3
Partition 1
Partition 2
Topic de sauvegarde des KTables
Le KTable recharge son
état grâce à la partition du
topic de sauvegarde
Topic source
Partition 1
Partition 2
Nœud 1
Topic Cible
Partition 1
Partition 2
Partition 3
Partition 1
Partition 2
Topic de sauvegarde des KTables
Une fois la Ktable
synchronisée,
consommation des
messages de la partition 2
Topic source
Partition 1
Partition 2
Nœud 1
Nœud 2
Topic Cible
Partition 1
Partition 2
Partition 3
Partition 1
Partition 2
Topic de sauvegarde des KTables
DEMO !
https://github.com/hriviere/demo-kafka-connect-streams
Source : confluent.io

Contenu connexe

Tendances

Stream processing avec Apache Pulsar
Stream processing avec Apache PulsarStream processing avec Apache Pulsar
Stream processing avec Apache PulsarBruno Bonnin
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013vberetti
 
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...GUSS
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
 
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraDataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraVictor Coustenoble
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à CassandraVMware Tanzu
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingVictor Coustenoble
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Saïd Bouras
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocutionParis_Storm_UG
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapideBilal Baltagi
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Victor Coustenoble
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudVictor Coustenoble
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs javaJérémy Sevellec
 
Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...Mathias Kluba
 
Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Louis Jacomet
 

Tendances (20)

Stream processing avec Apache Pulsar
Stream processing avec Apache PulsarStream processing avec Apache Pulsar
Stream processing avec Apache Pulsar
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013
 
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalités
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
 
Webinar Degetel DataStax
Webinar Degetel DataStaxWebinar Degetel DataStax
Webinar Degetel DataStax
 
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraDataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
 
Riak introduction
Riak introductionRiak introduction
Riak introduction
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à Cassandra
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark Streaming
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocution
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapide
 
Windows server2016 presentation
Windows server2016 presentation Windows server2016 presentation
Windows server2016 presentation
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le Cloud
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs java
 
Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...
 
Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?
 
Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3Caching reboot: javax.cache & Ehcache 3
Caching reboot: javax.cache & Ehcache 3
 

Similaire à Kafka Connect & Kafka Streams - Paris Kafka User Group

Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellgdigugli
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesChristophe Furmaniak
 
Presentation des outils traitements distribues
Presentation des outils traitements distribuesPresentation des outils traitements distribues
Presentation des outils traitements distribuesLê Anh
 
Apache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormApache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormParis_Storm_UG
 
Java-Introduction (1).pdf
Java-Introduction (1).pdfJava-Introduction (1).pdf
Java-Introduction (1).pdfKuateTanguy2
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfJean-Michel Doudoux
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetesJulien Maitrehenry
 
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptxAbdellahELMAMOUN
 
Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas Ludovic A
 
Play Framework
Play FrameworkPlay Framework
Play FrameworkArmaklan
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Migration de Tomcat vers Vert.x
Migration de Tomcat vers Vert.xMigration de Tomcat vers Vert.x
Migration de Tomcat vers Vert.xFlorianBoulay
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Olivier Gutknecht
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Jérôme Petazzoni
 

Similaire à Kafka Connect & Kafka Streams - Paris Kafka User Group (20)

Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshell
 
Apache kafka big data track
Apache kafka   big data trackApache kafka   big data track
Apache kafka big data track
 
Rex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantesRex docker en production meeutp-docker-nantes
Rex docker en production meeutp-docker-nantes
 
Presentation des outils traitements distribues
Presentation des outils traitements distribuesPresentation des outils traitements distribues
Presentation des outils traitements distribues
 
Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
 
Nouveautés Java 9-10-11
Nouveautés Java 9-10-11Nouveautés Java 9-10-11
Nouveautés Java 9-10-11
 
Apache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormApache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec Storm
 
Java-Introduction (1).pdf
Java-Introduction (1).pdfJava-Introduction (1).pdf
Java-Introduction (1).pdf
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
 
Systematic, toolchain JS
Systematic, toolchain JSSystematic, toolchain JS
Systematic, toolchain JS
 
A la découverte de kubernetes
A la découverte de kubernetesA la découverte de kubernetes
A la découverte de kubernetes
 
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
709469716-Docker-Intro.pptx709469716-Docker-Intro.pptx
 
Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas Esupdays 19 : Packaging Esup Cas
Esupdays 19 : Packaging Esup Cas
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
Migration de Tomcat vers Vert.x
Migration de Tomcat vers Vert.xMigration de Tomcat vers Vert.x
Migration de Tomcat vers Vert.x
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 

Kafka Connect & Kafka Streams - Paris Kafka User Group

  • 1. Paris Apache Kafka Meetup Hervé RIVIERE Zenika @_rv_ hriviere
  • 4.
  • 5. Script / application java “home made” avec des producers et/ou consumers Avantage : flexibilité Inconvénients : Pas toujours trivial, load balancing ?, fail over ?, standard de développement ? Source : xkcd
  • 6. Utiliser un connecteur spécifique déjà existant (connecteur Elastic, Camus….) ou un ETL (Talend…) Avantage : plug & play ! Inconvénients : Pas de standard, chaque connecteur doit être installé / configuré / monitoré spécifiquement Source : xkcd
  • 7. Utiliser Spark (streaming), Storm, Samza… Avantages : Fail over, load balancing Inconvénients : Un nouveau cluster à installer, connaissance du framework, luxueux pour de l’ingestion de données ? Source : made-in-bed-productions.tumblr.com
  • 8. Utiliser Kafka Connect ! Avantages : • Déjà inclus dans Kafka • Connecteurs déjà implémentés ou possibilité d’écrire les siens • Mutualisation configuration / runtime des connecteurs • Introduit des standard de développements / utilisation • Profite de l’ensembles des fonctionnalités de Kafka (fail-over / load balancing…)
  • 9. Depuis Kafka 0.9+ (déjà inclus dans la distribution) Comprend : • Des API (interfaces Java) • Moteurs d’exécution (standalone ou cluster) • Service REST de monitoring
  • 10. 2x2 interfaces Java : SourceConnector, SourceTask / SinkConnector, SinkTask Créer un connecteur : implémenter le couple interface Source et / ou Sink Load balancing, failover, offset déjà partiellement implémentés (on indique le comportement) Pas envie de coder ? : utiliser une implémentation « officielle » http://www.confluent.io/developers/connectors
  • 11. Standalone : une instance du connecteur (java –cp …) Usage : test, lecture / et ou écriture d’un fichier sur un nœud spécifique Cluster : N instances du connecteur sur N nœuds Usage : Fail-over / load balancing Exemple : Ecriture d’un topic vers HDFS en HA Prérequis : Démarrer des workers Kafka Connect pour constituer le cluster
  • 12. En mode cluster : Pas de maitre-esclave Déploiement des connecteurs sur les workers via service REST • Indication nom de la classe • Nombre d’instance voulue • Configuration Utilisation en arrière-plan des consumer groups (cf. présentation précédente  )
  • 15.
  • 16. Kafka Streams Spark streaming, Flink , Storm ... Outils nécessaires Kafla uniquement Kafka + cluster Spark ou Flink ou Storm ou …. Connaissances requise Kafka + API Kafka Streams Kafka + API framework + comportement framework (config., HA….) Gestionnaire de ressource NON OUI Déploiement Une ou plusieurs application java (java -jar….) Uniquement Java est requis Via le cluster du framework Usage de Kafka • Source / cible / données intermédiaires / metadata • Topics « classiques », topics compactés et topic avec une unique partition • Source et cible uniquement • Généralement des topics « classiques » partitionnés Et Samza ? : Kafka Streams ≈ Samza sans gestionnaire de ressource (même philosophie)
  • 17. • Même projet que Kafka • A partir de Kafka 0.10 (release prévue pour dans quelques semaines). Directement dans distribution Kafka • Tech preview disponible sur http://www.confluent.io/developer#streamspreview Kafka 0.10 actuellement en release candidate A utiliser à vos risques et périls 
  • 18. Clé Valeur Lundi 1 Jeudi 4 Lundi 2 Vendredi 3 Lundi 2 • Kstreams : Transformation map ou filter sur un flux de données • Pas d’agrégation • Pas d’état conservé KStream<String, Long> stream = builder.stream(new StringDeserializer(), new LongDeserializer(), "semaine"): KStream<String, Long> lundiStream = stream.filter((k, v) -> k.equals("lundi")); lundiStream.to("lundi-stream"); Topic lundi-stream : (lundi,1), (lundi,2), (lundi,2)
  • 19. Clé Valeur Lundi 1 Jeudi 4 Lundi 2 Vendredi 3 Lundi 2 • KTables : • Transformation d’agrégation sur un KStream • Conservation d’un état • Possibilité de réaliser des fenêtre glissante KTable<String, Long> tableJour = stream.countByKey(new DeSererializer(), "table-jours"); tableJour.to("comptage-jours"); Topic comptage-jour : (Lundi, 1)) Clé Value Lundi Jeudi Vendredi (Jeudi, 1) (Lundi, 2) (Vendredi, 1) (Lundi, 3) 1 1 3
  • 20. • Pour permettre parallélisme : autant de KTables que de partitions du topic source ! • Persistance des KTables via des Stores • In-Memory • RocksDB (runtime) + topic compacté  Par défaut • Sa propre implémentation • Au démarrage de l’application, les stores retrouvent leurs états via le topic de sauvegarde • Si fenêtre glissante : uniquement les données nécessaires conservées
  • 21. Topic source Partition 1 Partition 2 Nœud 1 Nœud 2 Topic Cible Partition 1 Partition 2 Partition 3 Partition 1 Partition 2 Topic de sauvegarde des KTables
  • 22. Topic source Partition 1 Partition 2 Nœud 1 Nœud 2 Topic Cible Partition 1 Partition 2 Partition 3 Partition 1 Partition 2 Topic de sauvegarde des KTables
  • 23. Topic source Partition 1 Partition 2 Nœud 1 Topic Cible Partition 1 Partition 2 Partition 3 Partition 1 Partition 2 Topic de sauvegarde des KTables Instanciation du KTable du nœud 2 sur le nœud 1
  • 24. Topic source Partition 1 Partition 2 Nœud 1 Topic Cible Partition 1 Partition 2 Partition 3 Partition 1 Partition 2 Topic de sauvegarde des KTables Le KTable recharge son état grâce à la partition du topic de sauvegarde
  • 25. Topic source Partition 1 Partition 2 Nœud 1 Topic Cible Partition 1 Partition 2 Partition 3 Partition 1 Partition 2 Topic de sauvegarde des KTables Une fois la Ktable synchronisée, consommation des messages de la partition 2
  • 26. Topic source Partition 1 Partition 2 Nœud 1 Nœud 2 Topic Cible Partition 1 Partition 2 Partition 3 Partition 1 Partition 2 Topic de sauvegarde des KTables