Skip to content

💶 Pipeline en temps réel pour un dashboard de cryptomonnaies

Notifications You must be signed in to change notification settings

ycncy/CryptoViz

Repository files navigation

Crypto Viz

Introduction

Le but du projet est de concevoir une pipeline en temps réel permettant de scraper des données sur les cryptomonnaies et les afficher dans un dashboard interactif.

Architecture

Diagramme d'Architecture

Diagramme

Description de la pipeline

  • Scheduler

    • APScheduler (librarie Python) pour gĂ©rer les tâches.
    • Gère les tâches de scraping et de traitement Ă  postĂ©riori.
    • Scraping (Producers)
      • RĂ©cupĂ©rer les donnĂ©es brutes sur les crypto-monnaies depuis une source (scraping brut ou API).
      • Scraping des donnĂ©es quasiement en temps rĂ©el (granularitĂ© d'environ 1 minutes) pour rĂ©cupĂ©rer le plus de donnĂ©es possibles.
      • Les donnĂ©es sont ensuite envoyĂ©es dans le topic Kafka spĂ©cifique Ă  la source.
      • La rĂ©cupĂ©ration de donnĂ©es est lancĂ©e via le Scheduler avec une granularitĂ© spĂ©cifique Ă  chaque source.
    • Traitement Ă  postĂ©riori
      • Une fois dans la journĂ©e Ă  00:05 UTC rĂ©cupère toutes les donnĂ©es stockĂ©es dans la journĂ©e dans la table raw_crypto_data pour les agrĂ©ger Ă  l'heure.
      • Insère les donnĂ©es historiques dans la table crypto_data_hourly.
      • Supprime les donnĂ©es de la journĂ©e de la table raw_crypto_data.
  • Traitement (Consumers)

    • RĂ©cupĂ©rer les donnĂ©es brutes depuis le topic Kafka.
    • Traiter les donnĂ©es brutes et les mettre au format de la base de donnĂ©es.
    • Stocker les donnĂ©es dans la table raw_crypto_data.
    • Un Worker par source.
    • Les Workers Ă©coutent en continue un topic et traite les donnĂ©es Ă  chaque message reçu.
  • Environnement Kafka

    • Gère les messages entre les Scrapers et les systèmes de traitement.
    • On utilise un topic par source de donnĂ©es pour traiter chaque source indĂ©pendamment.
  • Base de DonnĂ©es

    • PostgreSQL/TimescaleDB est utilisĂ© pour stocker les donnĂ©es.
    • Une table raw_crypto_data pour stocker les donnĂ©es de la journĂ©e en cours avec une granularitĂ© fine (environ 1 minute).
    • Une table crypto_data_hourly pour stocker les donnĂ©es historiques avec une granularitĂ© d'une heure.
  • Grafana : Permet la visualisation des donnĂ©es collectĂ©es et traitĂ©es.


Structure des Fichiers

├── config/ # Fichiers de configuration

├── init-scripts/ # Scripts d'initialisation pour la base de données

├── src/

│ ├── database/ # Gestion de la connexion et modèles de la base de données

│ ├── kafka/ # Gestion de la connexion et des interactions avec l'environnement Kafka

│ ├── models/ # Modèles de données

│ ├── tasks/ # Tâches spécifiques (scraping, mise à jour des bases de données)

│ └── workers/ # Tâches indépendantes (workers)

├── .env.example # Répertoire des variables d'environnements du projet

├── .pre-commit-config.yaml # Fichier de configuration pour les linters/formatters Python
 
├── Dockerfile

├── docker-compose.yml

└── requirements.txt # Dépendances Python

Libraries utilisées

  • kafka-python : Pour gĂ©rer les intĂ©ractions avec Kafka.
  • SQLAlchemy : ORM SQL pour python.
  • APScheduler : Pour gĂ©rer l'orchestration des tâches.
  • pre-commit : Pour le formatage du code.

About

💶 Pipeline en temps réel pour un dashboard de cryptomonnaies

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published