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.