Skip to content

Kafka : documentation technique

maudetes edited this page Jul 28, 2022 · 4 revisions

Architecture Kafka

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 : image

L'architecture sera plus complète avec l'ajout d'autres services additionnels dans cette architecture.

Messages Kafka

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).

Résilience

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.

Monitoring

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.