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ầngVai trò
Frontend & AdminGiao diện web livescore (render phía server) và bảng điều khiển quản trị.
API / BusinessXử 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 / ChatNhắn tin cá nhân và nhóm.
WorkersThu thập dữ liệu thể thao, xử lý hàng đợi, gửi thông báo.
Hạ tầngCơ 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ệ).