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<br/>TLS + Sticky"]

 subgraph App["Stream Fusion ×4"]
 SF["FastAPI<br/>Port 8080"]
 end

 subgraph Data["Services de données"]
 PG[(" PostgreSQL 17<br/>+ PgBouncer")]
 Redis[(" Redis 7<br/>Cache + Broker")]
 Meili[(" Meilisearch<br/>Full-text")]
 end

 subgraph BG["Tâches de fond"]
 TQW["Workers ×2"]
 TQS["Scheduler ×1"]
 end

 WARP["WARP<br/>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<br/>~1ms"}
 B -->|Hit| Z["Réponse"]
 B -->|Miss| C{" L2: PostgreSQL<br/>~5ms"}
 C -->|Suffisant| Z
 C -->|Insuffisant| D["L3: Meilisearch<br/>~10ms"]
 D --> E["L4: Indexeurs privés<br/>~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