Kiến trúc tổng quan
FoxScore được thiết kế theo microservices, mỗi thành phần đảm nhận một vai trò rõ ràng và giao tiếp qua các cơ chế bất đồng bộ (message queue) và thời gian thực (WebSocket).
flowchart TB U["Người dùng<br/>Web · App di động"] FE["Frontend & Admin<br/>(SSR web + trang quản trị)"] API["API / Business<br/>(REST services)"] RT["Realtime<br/>(WebSocket)"] IM["Nền tảng IM<br/>(nhắn tin)"] WK["Workers<br/>(xử lý dữ liệu nền)"] INF[("Hạ tầng dùng chung<br/>Database · Cache · Message Queue")] U --> FE --> API U --> RT API --> RT API --> IM API --> WK RT --> WK WK --> INF API --> INF RT --> INF IM --> INF
Các tầng
| Tầng | Vai trò |
|---|---|
| Frontend & Admin | Giao diện web livescore (render phía server) và bảng điều khiển quản trị. |
| API / Business | Xử lý nghiệp vụ, xác thực, tài khoản, thanh toán, nội dung. |
| Realtime | Đẩy dữ liệu trận đấu và tin nhắn phòng tới client qua WebSocket. |
| IM / Chat | Nhắn tin cá nhân và nhóm. |
| Workers | Thu thập dữ liệu thể thao, xử lý hàng đợi, gửi thông báo. |
| Hạ tầng | Cơ sở dữ liệu, cache, message queue, lưu trữ đối tượng — dùng chung toàn hệ thống. |
Nguyên tắc thiết kế
- Tách rời: mỗi service triển khai độc lập, mở rộng theo nhu cầu riêng.
- Bất đồng bộ: dữ liệu thời gian thực chảy qua message queue để chịu tải cao.
- Đa ngôn ngữ: chọn công nghệ phù hợp cho từng bài toán (xem Công nghệ).