[Open Source] #112 - Kyoo: Nền tảng Media Server thế hệ mới với kiến trúc Microservices, Bun, Go và khả năng nhận diện phim tự động đỉnh cao
Trong thế giới của các máy chủ truyền thông tự lưu trữ (Self-hosted Media Server), Plex và Jellyfin từ lâu đã thống trị. Tuy nhiên, Kyoo xuất hiện như một "luồng gió mới" được xây dựng từ đầu với tư duy hiện đại: tập trung vào hiệu suất cực cao, kiến trúc vi dịch vụ (Microservices) linh hoạt và khả năng tự động hóa việc nhận diện phim (đặc biệt là Anime) mà không yêu cầu người dùng phải sắp xếp thư mục thủ công.
Dưới góc độ kỹ thuật, Kyoo là một bài học mẫu mực về việc phối hợp đa ngôn ngữ (Bun/TypeScript, Go, Python) để tối ưu hóa từng tác vụ cụ thể trong một hệ thống phân tán.
Github: https://github.com/zoriya/kyoo
🛠️ 1. Nền tảng công nghệ: Sự kết hợp của những "quái kiệt" hiệu năng
Kyoo không chọn một ngôn ngữ duy nhất mà sử dụng "đúng người đúng việc" cho từng module:
- API Core (Bun & ElysiaJS): Thay vì Node.js, Kyoo sử dụng Bun làm runtime để tận dụng tốc độ thực thi và khởi động nhanh kỷ lục. Kết hợp với ElysiaJS và Drizzle ORM, backend của Kyoo đảm bảo tính Type-safe tuyệt đối và độ trễ cực thấp.
- Auth Service (Go): Module xác thực được tách riêng và viết bằng Go, xử lý các luồng JWT và OIDC (Google, Discord) một cách nhẹ nhàng và bảo mật.
- Transcoder Engine (Go & FFmpeg): Viết bằng Go để tối ưu hóa việc điều phối các luồng video, hỗ trợ đầy đủ các công nghệ tăng tốc phần cứng hiện nay như Nvidia NVENC, Intel VA-API và QSV.
- Intelligent Scanner (Python & FastAPI): Tận dụng hệ sinh thái xử lý văn bản mạnh mẽ của Python để phân tích tên file (Regex) và tương tác với các Metadata Provider (TMDB, TVDB).
- Frontend (React Native & Expo): Một cơ sở mã duy nhất (Single Codebase) phục vụ cho cả nền tảng Web và ứng dụng Android/iOS, mang lại trải nghiệm đồng nhất.
🏗️ 2. Trụ cột kiến trúc: Microservices và API Gateway Offloading
Khác với kiến trúc Monolith của các đối thủ, Kyoo được thiết kế để có thể mở rộng quy mô (Scale-out):
- Microservices Architecture: Mỗi thành phần (Auth, API, Scanner, Transcoder) chạy trong một container riêng biệt. Điều này cho phép người dùng chạy nhiều cụm Transcoder trên các máy tính khác nhau trong mạng nội bộ để chia sẻ tải xử lý video 4K.
- Traefik Gateway: Sử dụng Traefik làm Reverse Proxy và API Gateway. Điểm đặc biệt là cơ chế Forward Auth: Traefik sẽ hỏi dịch vụ Auth trước khi cho phép bất kỳ request nào chạm tới API hay Transcoder, giúp bảo vệ hệ thống ngay từ tầng cổng vào.
- Stateless Design: Sử dụng PostgreSQL và Meilisearch thay vì SQLite cục bộ, giúp dữ liệu luôn nhất quán, dễ dàng backup và không bị khóa (locking) khi có nhiều tác vụ ghi đồng thời.
🔄 3. Workflow: Từ tệp tin thô đến luồng Streaming mượt mà (Sequence Diagram)
Sơ đồ dưới đây mô tả cách Kyoo tự động hóa quy trình nạp và phát một bộ phim:

⚡ 4. Các kỹ thuật "Pro-level" trong mã nguồn
- Complex Anime Parsing: Bộ lọc tên file của Kyoo cực kỳ mạnh mẽ, có thể nhận diện chính xác tập phim, nhóm sub, và độ phân giải từ những tên file "hỗn loạn" của các nhóm Fansub mà không cần người dùng đổi tên theo chuẩn Plex.
- Dynamic HLS Transcoding: Kyoo băm nhỏ video thành các phân đoạn HLS (HTTP Live Streaming) theo thời gian thực. Kỹ thuật này cho phép người dùng tua (seek) đến bất kỳ vị trí nào của phim gần như ngay lập tức mà không cần chờ buffer toàn bộ.
- Blurhash UI Optimization: Trước khi ảnh bìa (Poster) được tải xong, Kyoo hiển thị một dải màu mờ (Blurhash) được tạo từ backend, giúp giao diện trông cực kỳ mượt mà và không bị hiện tượng "nhảy" khung hình.
- OIDC & SIMKL Integration: Tích hợp sâu với các dịch vụ Identity Provider (SSO) và tự động đồng bộ trạng thái xem (Watchlist) với các nền tảng bên thứ ba như SIMKL.
⚖️ 5. So sánh chiến lược
| Tiêu chí | Kyoo | Plex | Jellyfin |
|---|---|---|---|
| Kiến trúc | Microservices (Bun/Go) | Monolith (C++) | Monolith (.NET) |
| Cơ sở dữ liệu | PostgreSQL (Scalable) | SQLite | SQLite |
| Nhận diện file | Rất mạnh (Regex tự động) | Khắt khe (Yêu cầu đặt tên) | Trung bình |
| Hiệu năng UI | Cực nhanh (Bun/React) | Khá nặng | Trung bình |
| Khả năng mở rộng | Cao (Chạy đa Server) | Hạn chế | Trung bình |
✅ Kết luận: Tại sao Kyoo là bài học giá trị cho Backend Engineer?
Kyoo không chỉ là một công cụ giải trí; nó là một bài thực hành đỉnh cao về hệ thống phân tán. Việc sử dụng Bun cho API để đạt tốc độ cao, Go cho Transcoder để đạt sự bền bỉ, và Python cho Scanner để đạt sự linh hoạt cho thấy tư duy thiết kế hệ thống cực kỳ chín chắn.
Đối với các kỹ sư, nghiên cứu Kyoo sẽ giúp bạn hiểu sâu về:
- Cách vận hành Kiến trúc vi dịch vụ trong môi trường Docker.
- Kỹ thuật xử lý Video Streaming và Hardware Acceleration.
- Cách tối ưu hóa xác thực tại tầng API Gateway.
All rights reserved