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¶
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¶
~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¶
-
Flux de recherche détaillé, filtrage, préchargement
-
Workers Taskiq, scheduler, tâches cron, planification dynamique
-
Configuration 2-couches : variables d’environnement + surcharges PostgreSQL
-
Async I/O obligatoire, logging Loguru, Redis DBs, conventions de nommage
-
Double pipeline de parsing RTN (Meilisearch + PostgreSQL) avec règles DB-backed
-
Matchers PostgreSQL avec historique, batch processing et retry