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¶
-
Flux de recherche détaillé, filtrage, préchargement
-
Workers Taskiq, scheduler, tâches cron