CodeReady
Quay lại danh sách case study

Xây dựng hệ thống Real-time Notification

Thiết kế hệ thống thông báo thời gian thực phục vụ hàng triệu kết nối đồng thời.

Bối cảnh

Ứng dụng mạng xã hội cần gửi thông báo tức thì đến người dùng khi có tương tác mới.

Vấn đề cần xử lý

Sử dụng HTTP polling gây lãng phí băng thông và quá tải server, kết nối WebSocket truyền thống bị rớt khi scale ngang.

Hướng xử lý đề xuất

Xây dựng hệ thống WebSocket kết hợp Redis Adapter (Socket.io Redis) để đồng bộ sự kiện giữa các instance khác nhau.

Câu trả lời mẫu khi phỏng vấn

Để giải quyết bài toán scale WebSocket, tôi dùng Redis Pub/Sub làm trung chuyển thông điệp. Khi một server nhận được sự kiện, nó phát lên Redis channel, các server khác sẽ nhận và chuyển tiếp đến đúng client đang kết nối qua Socket.io.

Trade-off

Hạ tầng phức tạp hơn khi phải duy trì trạng thái kết nối persistent và quản lý cụm Redis cluster.

Kết quả kỳ vọng

Hệ thống duy trì ổn định hơn 500,000 kết nối đồng thời mà mức sử dụng CPU và RAM ở ngưỡng an toàn.

Bài học khi trả lời phỏng vấn

Hệ thống real-time đòi hỏi thiết kế kiến trúc phân tán từ đầu để dễ dàng scale ngang khi lượng người dùng tăng trưởng.