Dev chat bàn luận về scalability
Hello mọi người,
Không biết ở DNH có ai làm fullstack mà quan tâm tới scalability không? Bài toán bán vé của VFF có đề bài đưa ra bạn có thể đọc từ:
Vì lượng truy cập mạng quá lớn, có thời điểm lên đến 130.000 người cùng vào một lúc để mua vé.
Theo thống kê từ VFF, có tổng số hơn 250.000 địa chỉ IP truy cập vào các tranng bán vé online với 1.7 triệu lượt truy cập.
Bỏ qua các yếu tố chính trị ngoài lề, nếu là dev chân chính thì stack (backend languages, architechture, …) bạn chọn là gì? làm sao overcome được những vấn đề kể trên?
Update 1:
Một vài ý kiến chưa suy nghĩ kỹ của m:
Đặc điểm việc mua bán vé của VFF là:
- Highload trong 1 thời gian ngắn nên không cần phải xây dựng 1 infrastructure riêng cho nó.
- Việc thanh toán qua third-party nên payment processing không phải lo lắng.
- Trang vebongdaonline.vn đang không truy cập được nên mình không rõ ngôn ngữ họ sử dụng là gì. Nhưng từ trang chủ VFF, có thể đoán họ dùng PHP (5.4 khá outdated) cùng Apache Web Service.
Vì vậy mình nghĩ có thể giảm tải bằng 1 trong những phương pháp sau:
- Sử dụng CDN để giảm tải về cả băng thông lẫn tài nguyên máy tính.
- Static caching những trang không thay đổi thường xuyên. Điều này giảm tối đa SQL connections đến DB Service. Hoặc thậm chí routing những trang đã cached đến 1 instance khác.
- Thực tế thì trong 1.7M requests chỉ có ~250k request có liên quan tới thanh toán, do đó, có thể thiết kế riêng 1 service để phục vụ những request này.
- Nếu xây dựng từ đầu thì tránh chọn những ngôn ngữ có blocking IO (PHP/Python, Ruby,…) cho những application có highload nếu muốn giảm thiểu tối đa server costs. Hoặc ngược lại, nếu đã chọn những ngôn ngữ trên thì buộc phải tăng thêm số lượng server.
- Your comments?