CodeReady
Quay lại danh sách case study

Tối ưu hiệu năng hệ thống E-commerce Flash Sale

Giải quyết bài toán sập hệ thống do lượng truy cập đột biến trong chiến dịch Flash Sale.

Bối cảnh

Hệ thống thương mại điện tử lớn tại Việt Nam chuẩn bị chạy sự kiện giảm giá lớn với hàng trăm nghìn request mỗi giây.

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

Server Node.js hiện tại bị nghẽn cổ chai ở database MongoDB, gây lỗi timeout và sập ứng dụng.

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

Đưa Redis vào làm lớp đệm cache, áp dụng hàng đợi RabbitMQ để xử lý đơn hàng bất đồng bộ và scale out các worker node bằng PM2.

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

Khi đối mặt với bài toán Flash Sale, tôi đề xuất tách luồng nhận request và luồng xử lý đơn hàng. Sử dụng Redis để kiểm tra tồn kho và giữ chỗ nhanh chóng, sau đó đẩy sự kiện tạo đơn vào RabbitMQ để worker xử lý dần, tránh làm quá tải database.

Trade-off

Chấp nhận rủi ro dữ liệu tồn kho trên cache có thể lệch nhẹ so với database thực tế trong tích tắc nhưng đổi lại hiệu năng và độ ổn định cực cao.

Kết quả kỳ vọng

Hệ thống chịu được tải gấp 10 lần bình thường, không có lỗi 504 Gateway Timeout, tỷ lệ đơn hàng thành công đạt 99.8%.

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

Caching phân tán và xử lý bất đồng bộ qua message queue là chìa khóa sống còn cho các hệ thống high-traffic.