Aller au contenu

Architecture

Stream Fusion est une application FastAPI avec un système de cache multi-couches, des workers distribués et un mécanisme de peering crypté.


Vue d’ensemble

graph TB Internet["Internet"] Traefik["Traefik
TLS + Sticky"] subgraph App["Stream Fusion ×4"] SF["FastAPI
Port 8080"] end subgraph Data["Services de données"] PG[(" PostgreSQL 17
+ PgBouncer")] Redis[(" Redis 7
Cache + Broker")] Meili[(" Meilisearch
Full-text")] end subgraph BG["Tâches de fond"] TQW["Workers ×2"] TQS["Scheduler ×1"] end WARP["WARP
SOCKS5"] Internet --> Traefik Traefik -->|Sticky| App App --- PG App --- Redis App --- Meili BG --- PG BG --- Redis BG --- Meili App -.->|optionnel| WARP style App fill:#311b92,color:#fff style Data fill:#1b5e20,color:#fff style BG fill:#bf360c,color:#fff style WARP fill:#e65100,color:#fff

Flux d’une requête Stremio

graph TD A["Requête Stremio"] --> B{" L1: Redis
~1ms"} B -->|Hit| Z["Réponse"] B -->|Miss| C{" L2: PostgreSQL
~5ms"} C -->|Suffisant| Z C -->|Insuffisant| D["L3: Meilisearch
~10ms"] D --> E["L4: Indexeurs privés
~1-10s"] E --> F["Fusion + Filtrage"] F --> G["Vérif. Debrid"] G --> H["Mise en cache"] H --> Z style A fill:#311b92,color:#fff style Z fill:#1b5e20,color:#fff

Couches de données

  • L1 : Redis

    Cache hot, latence ~1ms, TTL 7 jours

    Résultats de recherche, streams, métadonnées

  • L2 : PostgreSQL

    Persistance, requêtes structurées

    Torrents avec métadonnées, clés, config

  • L3 : Meilisearch

    Recherche full-text, latence ~10ms

    Torrents publics indexés (DMM, Zilean, peers)

  • L4 : DuckDB

    Base locale analytique, matching IMDB

    Voir Cache et bases de données pour les détails


Workers et scheduler

Composant Réplicas Rôle
Stream Fusion 4 Application FastAPI
Taskiq Worker 2+ Exécution des tâches de fond
Taskiq Scheduler 1 Planification cron

Scheduler unique

Le scheduler doit toujours être en exactement 1 replica. Scaler cause des tâches en double.


Sections détaillées