-
Notifications
You must be signed in to change notification settings - Fork 14
Kafka : documentation technique
Lors du passage à udata 4, nous nous sommes approchés d'une architecture temps-réel avec un gestionnaire de message : Kafka.
Le premier service à utiliser cette architecture est le service de recherche qui est un service indépendant pour l'indexation et la recherche. Voici un schéma de l'architecture :
L'architecture sera plus complète avec l'ajout d'autres services additionnels dans cette architecture.
Différents services peuvent utiliser différents topics
.
Les topics
utilisés par le producteur udata lors de la mise à jour d'un document suivent les schémas suivants:
{UDATA_INSTANCE_NAME}.{SUBJECT}.{ACTION}
- ex:
udata.reuse.index
- ex:
demo.dataset.unindex
- ex:
demo.organization.reindex
La structure des messages Kafka envoyés est la suivante :
{
'service': 'udata',
'value': document,
'meta': {
'message_type': 'index',
...
}
}
Le document doit être un object sérialisable en json. Le champ meta
doit contenir au moins un message_type
et peut contenir d'autres informations. Par exemple, dans le cadre d'un message d'indexation, nous avons en meta
: 'index': 'dataset-2022-02-22'
.
De nombreux exemples de messages utilisés dans notre infra des données sont disponibles dans ce fichier d'exemple, utilisé pour les tests.
- Le `message_type défini pour l'indexation peut prendre l'une des valeurs suivantes :
index
reindex
unindex
Ce champ sert à discriminer entre une indexation, une suppression d'index ou une réindexation dans un nouvel index (précisé dans meta
).
Si le consommateur Kafka est cassé, Kafka stocke les nouveaux messages produits dans une queue, en l'attente qu'ils soient consommés de nouveau.
Si pour une raison ou une autre il y a une perte de messages (le producteur, le zookeeper
, le broker
, etc. est down), il faut s'assurer qu'on soit résilient, par exemple en pouvant renvoyer les messages lorsque le système est restauré.
Dans la cas du service de recherche, une commande existe dans udata pour la réindexation de documents depuis une certaine date. Voir la documentation correspondante.
Un Control Center est déployé sur les différents environnements. Il permet une vision sur les messages en temps réels sur les différents topics ainsi que des métriques sur la production et consommation de messages.