System Architecture (Kiến trúc Hệ thống)
🏗️ Tổng Quan Hạ Tầng & Nguyên Lý#
Kiến trúc của One Push hướng tới mục tiêu duy nhất: Đẩy tin không giới hạn (Unlimited Push Delivery). Chúng tôi chia tách hệ thống thành các khối độc lập để đảm bảo nếu Web Server gặp sự cố, luồng bắn tin vẫn diễn ra bình thường.
MỤC LỤC CHI TIẾT#
I. Tổng quan Kiến trúc (High Level Architecture)#
Hệ thống sử dụng mô hình Fan-out Queue Architecture:Web Server: PHP-FPM tiếp nhận tin nhắn từ Admin, đẩy Payload vào hàng đợi Redis.
Queue Workers: Phân tán trên hàng chục Container chạy song song, bốc tin từ Redis và gọi API Firebase/Telegram.
Database Cluster: MySQL nhận dữ liệu đã được xử lý xong để lưu trữ lịch sử.
II. Luồng Dữ liệu Heartbeat (Real-time Pipeline)#
Bộ nhúng Widget trên trình duyệt sẽ ping về Server định kỳ 5 phút.Tại sao dùng Redis Buffer?
Để tránh trường hợp 10.000 users cùng ghi vào MySQL một lúc gây nghẽn (IO Wait). Redis In-memory giúp xử lý cực nhanh, sau đó MySQL mới bốc dữ liệu theo lô (Bulk Insert) để lưu trữ.
III. Hệ thống Giám sát & Logs (Observability)#
Sử dụng Laravel Horizon làm Dashboard chính để giám sát trạng thái hàng đợi:Thống kê Real-time: Tổng lượng Job đang chờ, Job thành công, Job thất bại.
Retry Strategy: Tự động bắn lại thông báo tối đa 3 lần nếu gặp lỗi API FCM timeout.
Log Retention: Nhật ký file được xoay vòng (Rotate) hàng ngày để tối ưu dung lượng ổ cứng.
IV. Ma trận Cảnh báo (Alerting System)#
Hệ thống cảnh báo đa tầng thông qua Telegram Webhook:| Mức độ | Màu sắc | Kênh (Channel) | Mô tả |
|---|
| CRITICAL | 🔴 Đỏ | Channel-Error | Báo động khi DB bị Deadlock hoặc Redis đầy |
| WARNING | 🟡 Vàng | Channel-System | Cảnh báo khi CPU Load vượt quá 85% |
| INFO | 🟢 Xanh | Channel-Report | Báo cáo hiệu suất hàng giờ: Send/Seen/Read |
Modified at 2026-03-30 16:43:15