GuidanceSubmissions
30:00
Guidance

Thiết kế hệ thống rút gọn liên kết (URL Shortener)

cho phép người dùng cá nhân tạo và theo dõi lượt click.

Thiết kế hệ thống rút gọn liên kết (URL Shortener)

NOT SAVED
0 words·0 / 8,000 chars
Thiết kế hệ thống

Hệ thống User-Facing

Thiết kế nền tảng cho người dùng cuối không chỉ là vẽ các khối backend; đó là sự đồng nhất giữa kiến trúc và trải nghiệm người dùng. Hãy tập trung vào việc giảm thiểu độ trễ, đảm bảo tính sẵn sàng cao và bảo vệ hệ thống trước các đợt bùng nổ lưu lượng.

Step 1

Làm rõ Mẫu Lưu lượng & Tải hệ thống

Bắt đầu bằng việc xác định bản chất hệ thống. Nó nặng về Đọc (như News Feed: 100 Đọc/1 Ghi) hay nặng về Ghi (như App Chat)? Xác định phân bổ địa lý của người dùng và cam kết về độ trễ (VD: "Độ trễ toàn trình phải dưới 200ms"). Điều này sẽ quyết định toàn bộ chiến lược caching và định tuyến.

Step 2

Tối ưu hóa Luồng Đọc (CDN & Caching)

Step 3

Bảo mật & Điều hướng Đầu vào (API Gateway)

Step 4

Xử lý Tải đỉnh & Flash Sale (Luồng Ghi)

Step 5

Chọn Database & Chiến lược Mở rộng

Additional Tips

  • Suy thoái có kiểm soát (Graceful Degradation): Tư duy kiến trúc Senior luôn dự phòng sự cố. Nếu service "Gợi ý sản phẩm" bị sập, app không được hiển thị màn hình trắng hay báo lỗi; nó phải suy thoái một cách mượt mà bằng cách hiển thị một danh sách "Thịnh hành" mặc định.
  • Cẩn thận hiệu ứng "Đàn bò" (Thundering Herd): Gây ấn tượng bằng cách nhắc đến rủi ro này. Khi một cache phổ biến hết hạn đúng lúc cao điểm, hàng ngàn luồng truy cập sẽ đồng loạt đâm thẳng vào Database gây sập hệ thống. Đề xuất giải pháp như thêm độ trễ ngẫu nhiên (cache jitter) vào thời gian hết hạn cache.
  • Tư duy Toàn cầu (Geo-Routing): Nếu bài toán hướng tới người dùng toàn cầu, hãy nhắc đến định tuyến Geo-DNS. Việc điều hướng người dùng đến Data Center vật lý gần nhất là cách tối thượng để chiến thắng định luật vật lý và giảm độ trễ mạng.