Je travaille sur le projet poc en java en utilisant kafka -> flink -> recherche élastique.Comment compter le nombre de "clients" dans un état avec flink de manière distribuée en fonction des événements de changement d'état? J'aurais besoin d'objets avec état
Sur kafka sera produit un nombre imprévisible d'événements de 0 jusqu'à des milliers d'événements/sec comme sur un sujet spécifique.
{"gid":"abcd-8910-2ca4227527f9", "state":"stateA", "timestamp:1465566255, "other unusefull info":"..."}
Flink consommera cette événement et devrait couler chaque seconde dans élastique recherche le nombre d'événements dans chaque ex Etat:
{"stateA":54, "stateB":100, ... "stateJ":34}
J'ai 10 états: [Created, ... , Deleted]
avec un cycle de vie moyenne de 15 minutes . L'état peut changer deux fois par seconde. Théoriquement, de nouveaux états pourraient être ajoutés.
Pour couler cours d'eau chaque seconde je pense à utiliser les fenêtres de temps de Flink https://flink.apache.org/news/2015/12/04/Introducing-windows.html
Le problème est que j'ai besoin des objets stateful avec des informations sur guid->previous-state
et stateX->count
afin de pouvoir augmenter/diminuer le nombre lorsqu'un nouvel événement se produit
Je trouve un projet de document sur le traitement à la vapeur stateful https://cwiki.apache.org/confluence/display/FLINK/Stateful+Stream+Processing
Je suis nouveau Flink et le traitement des flux, je n'ai pas creuser dans le traitement des flux de Flink stateful encore. Pour la première phase, je pense utiliser des objets statiques pour cela, mais cette approche ne fonctionnera pas lorsque plusieurs instances de flink seront lancées.
Je veux vous demander:
- Que pensez-vous de cette approche?
- Le flink est-il adapté à ce type de traitement de flux?
- Quelle sera votre approche pour résoudre ce problème?
De même, j'apprécierais certains extraits de code pour la solution de flux avec état fenêtré (ou d'autres solutions).
Merci,