Bỏ qua để đến nội dung
Knowledge Hub

Thiết kế: dựng shortener chịu 38.600 req/s Trung cấp

Thời gian đọc ước tính: 1 phút

Bạn có một danh sách thành phần và một ngân sách. Kéo từng thành phần vào đúng tầng. Mỗi lần thêm hay bỏ, p99, tỉ lệ lỗi, tải database và chi phí đều tính lại ngay.

  • Mục tiêu: đạt mọi yêu cầu với chi phí thấp nhất có thể.
  • Thử thêm: tìm một thiết kế đạt yêu cầu không dùng CDN, và một thiết kế không dùng Redis. Cái nào đắt hơn, vì sao?
Thiết kế

Dựng hệ thống rút gọn link chịu 38.600 req/s

Shortener của bạn sắp chạy chiến dịch lớn. Theo ước lượng ở case study, đỉnh đọc là ~38.600 req/s, ghi chỉ ~39 req/s.

Giả định đơn giản hoá để chơi: 1 app instance chịu ~8.000 req/s, 1 node PostgreSQL chịu ~10.000 lookup/s theo khoá chính, CDN chặn ~50% redirect, Redis hit ~95%. Số liệu minh hoạ, không phải benchmark.

Yêu cầu

  • Không lỗi ở đỉnh tải, p99 ≤ 50 ms
  • Chặn được bot spam API tạo link
  • Chi phí ≤ 20 đơn vị/tháng

Bấm + Thêm ở từng tầng để chọn thành phần. Trên máy tính có thể kéo thành phần thả vào tầng. Chỉ số cập nhật ngay.

Chạm một thành phần để xem nó làm gì.

Người dùng Client
EdgeCDN, load balancer, rate limit
AppService xử lý request
CacheLớp đệm trước database
DataNơi lưu link
p99 latency3.000 ms
Tỉ lệ lỗi100 %
Tải database150 %
Chi phí0 đv
  • Chưa có PostgreSQL: link tạo ra không có chỗ lưu.
  • Chưa có App service xử lý redirect.
  • Chưa có rate limiter: một bot có thể spam API tạo link và lấp đầy database.

Con số trong game là giả định tròn để dễ tính, không phải benchmark. Cách ước lượng tải đỉnh nằm trong case study URL shortener.