1. Bussiness Logic
One Push
  • Tổng Quan
  • Bussiness Logic
    • ĐẶC TẢ KỸ THUẬT: HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)
    • ĐẶC TẢ KỸ THUẬT: HỆ THỐNG ĐỒNG BỘ HEARTBEAT (REAL-TIME SYNC)
    • ĐẶC TẢ KỸ THUẬT: HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)
    • Business Logic (Luồng Logic Nghiệp Vụ)
  • Project
    • API
      • Hướng dẫn sử dụng
        • 1.1 Khởi tạo Website Tham gia
        • 1.2 Cấu hình Bots Telegram
        • 1.3 Quản lý Chiến dịch (Campaigns)
        • 1.4 Lên Lịch Gửi Tự Động
        • 1.5 Tương tác & Thống kê
        • 1.6 Quản lý Tài khoản (RBAC)
        • 1.7 Báo cáo Chi tiết Tin nhắn (Web & Telegram)
      • Architecture
        • System Architecture (Kiến trúc Hệ thống)
        • Code Structure
        • Database Schema (Mô hình Dữ liệu)
      • Deployment
        • Local
        • Production
        • Development
      • API
        • Widget nhúng Website
          • Đăng ký Subscriber mới / Nhật ký Heartbeat
          • Cập nhật trạng thái Seen/Read
          • Ghi nhận hiển thị Alert Popup
          • Lấy dữ liệu Alert cho website
        • Tracking & Tương tác
          • Ghi nhận lựa chọn Yes/No
        • Báo cáo & Thống kê
          • Thống kê người dùng Real-time
          • Phân tích tăng trưởng Subscriber
          • Dữ liệu bản đồ nhiệt Vị trí
          • Xuất báo cáo thông báo Excel
        • Lịch gửi Thông báo
          • Danh sách lịch gửi thông báo
          • Tạo lịch gửi mới
          • Bật/Tắt lịch gửi
        • Betting Tips
          • Lấy Tip bóng đá HOT nhất
          • Lấy dữ liệu Mock Tip (Test)
        • Telegram Integration
          • Danh sách Telegram Bot
          • Telegram Webhook Endpoint
        • Email Marketing
          • Tạo và gửi chiến dịch Email
        • Hệ thống & RBAC
          • Danh sách tài khoản Admin/Nhân viên
          • Danh sách vai trò (Roles)
        • Tiện ích & Files
          • Truy xuất nhật ký hệ thống (System Logs)
        • Chiến dịch (Campaigns)
          • Danh sách chiến dịch
        • Website Khách hàng (Clients)
          • Danh sách website khách hàng
        • Quản lý Thành viên (Subscribers)
          • Danh sách người đăng ký (Subscribers)
          • Xóa người nhận tin
    • TOOL
      • Hướng dẫn sử dụng
        • Hướng dẫn sử dụng — Novu Notification Infrastructure
      • Architecture
        • System Architecture
        • Code Structure
        • Database Schema
      • Deployment
        • Deployment
      • API
        • 👥 Subscribers
          • Tạo/Cập nhật Subscriber
          • Cập nhật Profile
        • 🗺️ Workflows
          • Lấy danh sách Workflow Templates
          • Chi tiết Workflow
        • 📂 Notification History
          • Lịch sử biến động Notification
        • 🎯 Topics
          • Tạo Topic mới
        • 📐 Layouts
          • Lấy danh sách Layout (Email/Web)
        • 💬 Messages
          • Tra cứu vết tin nhắn chi tiết (Low-level)
        • 🔌 Integrations
          • Danh sách nhà cung cấp (Providers)
        • 🚀 Events & Triggers
          • Kích hoạt thông báo (Workflows)
          • Kích hoạt hàng loạt (Bulk Trigger)
  • Schemas
    • GenericResponse
  1. Bussiness Logic

ĐẶC TẢ KỸ THUẬT: HỆ THỐNG ĐỒNG BỘ HEARTBEAT (REAL-TIME SYNC)

ĐẶC TẢ KỸ THUẬT: HỆ THỐNG ĐỒNG BỘ HEARTBEAT (REAL-TIME SYNC)#

Route: `/subc` / `/api/tracking/choice`
Source Frontend: `public/js/widget.js` (Nhúng trên Client Site)
Source Backend: `app/Http/Controllers/SubcController.php`
Database: Redis (Cache hàng đợi), MySQL (Bảng `subcribers`, `statistics`)

MỤC LỤC#

1.
I. Tổng quan chức năng Heartbeat
2.
II. Sơ đồ luồng Dữ liệu (Data Flow)
3.
III. Cơ chế Ghi đè & Tối ưu hóa Hiệu năng
III.1. Redis Buffering: Giải pháp chống Deadlock
III.2. Cronjob Batch Insert: Hợp nhất dữ liệu
4.
IV. Logic Định danh (Subscriber Identification)
IV.1. Cơ chế PAM ID & Cookie Session
IV.2. Phân tách Source Client: Token Verification
5.
V. Middleware: CSRF Exclusion & Auth Bypass
6.
VI. Kiểm soát Sai số & Duplicate Data

I. Tổng quan chức năng Heartbeat#

Hệ thống Heartbeat nhiệm vụ theo dõi trạng thái "Sống" của hàng chục ngàn người truy cập (Anonymous Users) trên các Website vệ tinh. Widget JS sẽ ping (gửi tín hiệu) về server định kỳ 5 phút/lần để báo cáo người dùng vẫn đang Online.

II. Sơ đồ luồng Dữ liệu (Data Flow)#

1.
Trình duyệt: Widget JS nhặt thông tin Nền tảng (Platform), Device, Ngôn ngữ.
2.
Request: Gửi POST `/subc` kèm Client Token.
3.
Backend: Validate Token -> Ghi dữ liệu vào Redis List `heartbeat_queue`.
4.
Schedule: Cứ mỗi 5 phút, Command `sync:subscribers` của Laravel sẽ bốc cục data trong Redis rồi đẩy Bulk Insert vào MySQL.

III. Cơ chế Ghi đè & Tối ưu hóa Hiệu năng#

III.1. Redis Buffering:
Nếu 10.000 users cùng ping vào MySQL 1 lúc, MySQL sẽ bị nghẽn (IO Wait).
Việc ghi vào Redis (Memory) diễn ra cực nhanh (Sub-millisecond), giúp Server xử lý được lượng Concurrency cực lớn mà không tốn tài nguyên Disk.
III.2. Cronjob Batch Insert:
Thay vì 10.000 lệnh `UPDATE` đơn lẻ, Cronjob sẽ nhóm (Group) chúng lại thành 1 lệnh `INSERT ... ON DUPLICATE KEY UPDATE` duy nhất.

IV. Logic Định danh (Subscriber Identification)#

IV.1. PAM ID:
Dựa trên một thuật toán Hash tổ hợp từ IP + UserAgent + Fingerprint của trình duyệt để định danh duy nhất một thiết bị mà không cần đăng nhập.
IV.2. Token Verification:
Mỗi Website khách hàng (Client) có 1 Token riêng. Middleware sẽ kiểm tra Token này trong DB trước khi cho phép ghi nhận Heartbeat để tránh phá hoại dữ liệu (Data Pollution).

V. Middleware: CSRF Exclusion#

Do API `/subc` được gọi từ Domain khác (Cross-domain), nó KHÔNG được phép qua lớp CSRF. Chúng tôi đã cấu hình `VerifyCsrfToken.php` để ngoại lệ các đầu Endpoint này nhưng bù lại phải kiểm soát chặt chẽ Client Token.

VI. Kiểm soát Sai số#

Hệ thống chỉ đếm Unique User trong vòng 5 phút (Sliding Window). Nếu 1 User ping 2 lần trong 1 chu kỳ, Redis sẽ tự động ghi đè (Overwrite) để tránh đếm trùng (Double Counting).
Modified at 2026-03-27 03:49:16
Previous
ĐẶC TẢ KỸ THUẬT: HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)
Next
ĐẶC TẢ KỸ THUẬT: HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)
Built with