Handle 1 triệu request/s
Đầu tiên phải hỏi, request đó là request gì? size bao nhiêu? Tạm hiểu 1 s là thời gian từ client gửi request tới khi nhận response.
Tôi nói ví dụ 1 hệ thống cho photo storage, nó sẽ khác với 1 hệ thống payment. Có thể cùng 1 triệu request nhưng cách thiết kế sẽ khác nhau hoàn toàn. Nên thường khi hỏi câu này, ng ta sẽ đưa yêu cầu specific hơn, là "thiết kế 1 hệ thống payment, hay 1 hệ thống thanh toán vé online, hay 1 hệ thống xyz". Phải có cái này là cái yêu cầu đầu tiên cần làm rõ.
Hỏi tiếp phục vụ cho user như nào? User trong nước hay user quốc tế? Cái này sẽ phải có phương án khác nhau. Budget dc cho bao nhiêu hay không giới hạn?
Giả sử như backend database chưa có gì hết, hay có những yêu cầu bắt buộc nào?
Tính toán traffic network, storage các kiểu. 1 triệu request/s thì cần traffic là bao nhiêu?
Rồi mới bắt đầu chọn database sql hay nosql, thiết kế schema, table, index các kiểu.
data partition nữa. Xử lý các vấn đề redundancy và replication.
Có database rồi thì bắt đầu thiết kế hệ thống, từ client đi tới webserver như nào, rồi đi tới load balancer, cache, đi tới database như nào, vẽ ra hết các luồng đi.
bài này nếu mà đặt nặng về vấn đề performance, cụ thể là 1 triệu request/s thì cần tính toán các số liệu cụ thể tí. Ví dụ database có thể xử lý dc bao nhiêu query/s. Giả sử 100k query tương ứng với 100k request, giả sử cache server có thể cover dc với hit rate 70-80%...
Cứ thế mà tính tiếp thôi.
Mình chém thế thôi chứ mình chưa xây dc cái nào 1 triệu request/s cả
Các bác bổ sung thêm.