1. Logic
DATA SPORT
  • DATABASE-SPORT
    • Tổng quan
    • Logic
      • Logic tổng thể
    • Projects
      • Yêu cầu hệ thống
      • Architecture
        • Database
    • Public APi
      • Tổng quan
    • Cron Make File
      • Tổng quan
  • GOLANG-THESPORT
    • Tổng quan
    • Architecture
      • System
      • Database
      • Source Code
    • Development
      • Local
      • Production
  • GOLANG-KSPORT
    • Tổng quan
    • Architecture
      • System
      • Database
      • Source Code
    • Development
      • Production
  • CRONJOB-LARAVEL
    • Tổng quan
    • Logic
      • Logic tổng thể
    • Projects
      • Yêu cầu hệ thống
      • Architecture
        • System
        • Source code
        • Database
      • Development
        • Dev
        • Production
      • Public API
        • Common API
          • League & Cup Profile (Basic)
          • Schedule & Results (Basic)
          • Match Modify Record
          • List of Countries
          • List of Bookmakers
          • Configuration instructions
        • Live animation
          • Configuration instructions
          • Schedule & Results
        • Live Data
          • Livescores for Today
          • Livescores Changes
          • Schedule & Results
          • Schedule Changes
          • Events
          • Stats
          • Corner
          • Lineups
          • Injury
          • Match List of Live Text
          • Live Text
          • Transfer
        • Profile
          • League & Cup Profile
          • Subleague Profile
          • Cup Stage Profile
          • Team Profile
          • Team Profile Copy
          • Team Profile for Search
          • Player Profile
          • Player Profile for Search
          • Referee Profile
          • Teamlist with Player Profile
        • Stats
          • Matches Analysis
          • List of Player Stats (Match)
          • Player Stats (Match)
          • List of Player Stats (League & Cup)
          • Player Stats (League & Cup)
          • League Standing (Get Subleague)
          • League Standing
          • Cup Standing
          • Top Scorer
          • FIFA Ranking
        • Odds (18 bookmakers)
          • Pre-match and In-play Odds (Main)
          • Live Odds Changes (Main)
          • Historical Odds (Main)
          • Future Odds (Main)
          • Pre-match and In-play Odds (All)
          • Live Odds Changes (All)
          • Historical Odds (All)
          • Future Odds (All)
          • European Odds (Halftime)
          • In-play Odds
          • In-play Odds (Halftime)
          • Odd Modify Record
        • European Odds (200+ Bookmakers)
          • European Odds (200+ Bookmakers)
        • Other Odds
          • Outrights
          • First/Last Team To Score (pre-match)
          • Goals Odd/Even (pre-match)
          • Goals Odd/Even (In-play)
          • Number of Goals in Match (pre-match)
          • Number of Goals in Match (In-play)
          • Half Time/Full Time (pre-match)
          • Half Time/Full Time (In-play)
          • Correct Score (pre-match)
          • Correct Score (In-play)
          • Half Time Correct Score (pre-match)
          • Half Time Correct Score (In-play)
          • Handicap Corners (pre-match)
          • Handicap Corners (In-play)
          • Total Corners (pre-match) - Tổng phạt góc trước trận đấu: First Odds
          • Total Corners (In-play) - Tổng số quả phạt góc (Trong trận) - Run Odds
          • Double Chance(pre-match)
          • EuroHandicap(pre-match)
  • GOLANG-WEBSOCKET
    • Tổng Quan
    • Logic
      • Logic tổng thể
    • Projects
      • Yêu cầu hệ thống
      • Architecture
        • System
        • Source code
      • Development
        • Dev
        • Production
      • Public API
        • API
  • ADMIN-BANNER
    • Tổng quan
    • Logic
      • Logic tổng thể
    • Projects
      • Architecture
        • System
        • Source Code
      • Development
        • Develop
        • Production
      • Public API
        • API
      • Database
        • Cấu trúc Database
      • Admin FE
        • HƯỚNG DẪN CÀI ĐẶT MÔI TRƯỜNG DỰ ÁN SPORT ADMIN
        • Hướng dẫn Đăng nhập
        • QUẢN LÝ SITE (SITE MANAGEMENT)
        • QUẢN LÝ GIẢI ĐẤU (LEAGUE MANAGEMENT)
        • QUẢN LÝ NHÀ CUNG CẤP (SUPPLIER MANAGEMENT)
        • TIP & CHUYÊN GIA - TAB QUẢN LÝ TIPS (TIPS MANAGEMENT)
        • WHITELIST
        • QUẢN LÝ MINIGAME (MINIGAME MANAGEMENT)
        • TRAFFIC REPORT
        • TOOLS - RAPID DATA
        • TOOLS - LIVE SITES
        • TOOLS - SUPPLIERS
        • THEME / PLUGIN
        • NGƯỜI DÙNG - PHÂN QUYỀN VÀ HIỂN THỊ (PERMISSION & DISPLAY MANAGEMENT)
        • QUẢN LÝ NGƯỜI DÙNG (USER MANAGEMENT)
        • NGƯỜI DÙNG - QUẢN LÝ NHÓM QUYỀN (ROLE GROUP MANAGEMENT)
  1. Logic

Logic tổng thể

1.
Thành Phần Điều Phối
Thay vì chạy các Script độc lập, hệ thống nên sử dụng một bộ điều phối tập trung (như Asynq trong LARAVEL và Redis QueueJob):
Scheduler: Định nghĩa tần suất quét (ví dụ: mỗi 1s).
Queue Manager: Đẩy các "Task" vào hàng đợi. Điều này giúp tách biệt việc "gọi API" và "ghi vào DB", tránh việc một worker bị treo làm hỏng cả chu kỳ quét.
2.
Quy Trình Xử Lý 3 Bước (ETL Strategy)
Hệ thống Cronjob sẽ vận hành theo mô hình Extract - Transform - Load:
Extract (Trích xuất): Cronjob gọi đến API. Tại đây, cần xử lý tốt cơ chế Rate Limit của nhà cung cấp để tránh bị block IP.
Transform (Chuyển đổi): Đây là bước quan trọng nhất. Dữ liệu thô từ Provider sẽ được mapping về Schema chuẩn của hệ thống.
Load (Nạp dữ liệu): Thực hiện ghi vào Database. Để tối ưu, nên sử dụng Bulk Insert/Update (xử lý theo lô) thay vì ghi từng dòng một, giúp giảm thiểu số lượng kết nối (I/O) đến DB.
3. Cơ Chế Kiểm Soát Trạng Thái (State Management)
Để tránh việc các Cronjob chạy chồng chéo (Overlap) hoặc xử lý trùng lặp dữ liệu:
Atomic Locking: Sử dụng Redis Lock để đảm bảo tại một thời điểm chỉ có một Worker xử lý một trận đấu cụ thể.
Checksum/Hashing: Trước khi Update vào DB, hệ thống so sánh Hash của dữ liệu mới với dữ liệu cũ. Nếu không có thay đổi (ví dụ: tỉ số vẫn là 0-0), Worker sẽ bỏ qua bước ghi để tiết kiệm tài nguyên.
Các kỹ thuật xử lý sự cố (Error Handling):
Retry Strategy: Nếu gọi API thất bại, hệ thống tự động thử lại với cơ chế Exponential Backoff (thời gian chờ tăng dần).
Dead Letter Queue (DLQ): Những Task thất bại quá nhiều lần sẽ được đẩy vào một hàng đợi riêng để lập trình viên kiểm tra thủ công, thay vì làm dừng toàn bộ hệ thống.
Logging & Monitor: Theo dõi thời gian thực hiện (Execution Time) của mỗi Job để phát hiện sớm các truy vấn DB đang bị chậm.

2. Kiến trúc xử lý dữ liệu#

Hệ thống Cronjob sẽ vận hành theo mô hình Extract - Transform - Load

3. Luồng dữ liệu chính#

Phân tích luồng dữ liệu hệ thống Laravel (Cronjob + Queue + Redis)
1.
Tổng quan hệ thống
Hệ thống được thiết kế theo mô hình xử lý bất đồng bộ nhằm tối ưu hiệu năng khi làm việc với dữ liệu lớn từ API bên thứ ba.
2.
Kiến trúc tổng thể
mermaid-diagram.png
3.
Luồng dữ liệu chi tiết
Screenshot 2026-03-23 at 17.19.59.png
4.
Ưu điểm của hệ thống
✅ Xử lý bất đồng bộ (Async)
✅ Scale dễ dàng bằng worker
✅ Giảm tải database nhờ Redis
✅ Phù hợp dữ liệu realtime
✅ Tăng hiệu năng API response
5.
Vấn đề thường gặp & giải pháp
5.1 Deadlock database
Nguyên nhân:
Nhiều job update cùng dữ liệu
Giải pháp:
Chunk nhỏ dữ liệu
Sắp xếp trước khi insert
Retry khi fail
5.2 Dữ liệu trùng lặp
Giải pháp:
Unique key
upsert
Generate OddsID
5.3 Quá tải Redis
Giải pháp:
Batch job
Delay job
Queue priority
5.4 API rate limit
Giải pháp:
Thêm sleep
Retry + exponential backoff
Modified at 2026-03-27 08:18:14
Previous
Tổng quan
Next
Yêu cầu hệ thống
Built with