1. Bussiness Logic
One Push
  • Tổng quan hệ thống
  • Bussiness Logic
    • Business Logic
    • HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)
    • HỆ THỐNG ĐỒNG BỘ HEARTBEAT (REAL-TIME SYNC)
    • HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)
  • Project
    • API
      • Tổng quan 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)
      • 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
      • Architecture
        • System Architecture (Kiến trúc Hệ thống)
        • Code Structure
        • Database Schema (Mô hình Dữ liệu)
      • Deployment
        • Local
        • Production
        • Development
    • TOOL
      • Tổng quan 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
      • 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)
      • Deployment
        • Deployment
  • Schemas
    • NotificationWidget
    • TrackingStats
    • NotificationSchedule
  1. Bussiness Logic

HỆ THỐNG ĐỒNG BỘ HEARTBEAT (REAL-TIME SYNC)

Tài liệu mô tả quy trình theo dõi trạng thái hoạt động thực thời (Real-time Sync) của người dùng trên các nền tảng khách hàng.
💡 Thông tin Kỹ thuật (Meta Data):
📍 Route: POST /subc | /api/tracking/choice
💻 Source Frontend: public/js/widget.js (Được nhúng trực tiếp trên Client Site)
⚙️ Source Backend: app/Http/Controllers/SubcController.php
🗄️ Database: Redis (Cache hàng đợi) | MySQL (Bảng subcribers, statistics)

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

Hệ thống Heartbeat nhận nhiệm vụ theo dõi trạng thái "Đang Online" (Alive/Sống) của hàng chục ngàn người truy cập (Anonymous Users) trên các Website vệ tinh dùng chung hệ sinh thái.
Cụ thể, thẻ Widget JS được gắn trên trang sẽ gửi một tín hiệu thu nhỏ (Ping) về máy chủ định kỳ 5 phút/lần để làm bằng chứng người dùng vẫn đang cắm máy/truy cập trang trang.

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

Để dễ hình dung, vòng đời của một luồng xử lý Heartbeat diễn ra như sau:

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

Đây là khâu quan trọng nhất giúp hệ thống không bị "ngập lụt" khi có Traffic lớn làm tắc nghẽn Database:

III.1. Redis Buffering: Giải pháp chống Deadlock#

Nếu 10.000 users cùng thực hiện lệnh Ping ghi vào MySQL tại cùng 1 thời điểm, đĩa cứng cơ sở dữ liệu sẽ sụp đổ hoặc xảy ra hiện tượng thắt cổ chai (IO Wait/Deadlock).
=> Giải pháp: Bắn dữ liệu vào Redis (Môi trường Bộ nhớ RAM). Việc ghi log trên RAM diễn ra với tốc độ tíc tắc (Sub-millisecond), giúp Server ôm trọn lượng truy cập đồng thời (Concurrency) khổng lồ mà không tốn lấy 1% tài nguyên Disk.

III.2. Cronjob Batch Insert: Hợp nhất dữ liệu#

Cứ mỗi 5 phút, Cronjob sẽ âm thầm chạy ở Background. Thay vì đẩy 10.000 lệnh UPDATE đơn lẻ lên MySQL, Worker sẽ "Gom Nhóm" toàn bộ chúng lại thành một câu truy vấn khổng lồ: INSERT ... ON DUPLICATE KEY UPDATE. Nhờ đó, MySQL chỉ phải tốn công gánh đúng 1 tác vụ duy nhất.

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

Làm thế nào để hệ thống nhận diện hàng chục vạn người dùng khi họ chẳng cần tài khoản đăng nhập?

IV.1. Cơ chế PAM ID & Cookie Session#

Hệ thống sử dụng một thuật toán Băm (Hash) tổ hợp từ IP + UserAgent + Fingerprint Trình duyệt. Khối mã này tạo ra một định danh duy nhất (PAM ID) giúp dán nhãn cố định 1 thiết bị khách hàng ngay từ lần đầu họ truy cập.

IV.2. Phân tách Source Client: Token Verification#

Bởi vì hệ thống phục vụ nhiều Website đối tác, nên mỗi Client sẽ được phát 1 Token Khóa Bảo Mật. Trước khi cho phép ghi nhận Heartbeat, Midddleware sẽ tra cứu DB xem Token này có quyền hay không. Điều này đóng sập cửa với nỗ lực giả mạo request rác làm bẩn dữ liệu (Data Pollution).

V. Middleware: CSRF Exclusion & Auth Bypass#

Theo cơ chế bảo vệ tiêu chuẩn của Laravel, các truy vấn khác Domain đều sẽ bị chặn ngay lập tức.
Do API /subc trực tiếp nhận dữ liệu đổ về từ hàng trăm vệ tinh bên ngoài (Cross-domain), luồng dữ liệu này KHÔNG THỂ VÀ KHÔNG ĐƯỢC PHÉP vướng vào màng lọc CSRF (Cross-Site Request Forgery).
Chúng tôi đã thiết lập ngoại lệ trong file VerifyCsrfToken.php để chừa riêng endpoint /subc ra ngoài ranh giới CSRF, nhưng bù lại ép nó vào quy trình rà soát Client Token cực gắt gao nêu trên.

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

Hệ thống được thiết lập bộ lọc theo Khung trượt thời gian 5 Phút (Sliding Window). Trong chu kỳ đếm, nếu 1 người dùng "rảnh tay" F5 trang liên tục và Ping 2-3 lệnh Heartbeat gần nhau, khe chứa Redis sẽ chủ động ghi đè (Overwrite) thông số mới đè lên cái cũ, dập tắt tận gốc việc đếm trùng thiết bị (Double Counting) trước khi vòng Cronjob kịp mang số liệu đẩy vào MySQL.
Modified at 2026-03-31 02:57:13
Previous
HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)
Next
HỆ THỐNG ĐIỀU PHỐI TIN NHẮN (PUSH ENGINE)
Built with