Yêu cầu: user thấy feed các bài đăng từ người họ theo dõi, mới nhất/liên quan trước, đọc rất nhiều và cần nhanh.
Câu hỏi trung tâm: dựng feed lúc đọc hay lúc ghi?
- Fan-out on write (push): khi A đăng bài, đẩy ngay vào feed cache của tất cả follower (một list/timeline dựng sẵn trong Redis). Đọc feed rất nhanh (chỉ lấy list sẵn). Nhược: người có hàng triệu follower ("celebrity problem") gây bùng nổ ghi.
- Fan-out on read (pull): khi user mở feed mới truy vấn + trộn bài của những người họ follow. Ghi rẻ, nhưng đọc nặng và chậm.
- Hybrid: push cho user thường, pull cho tài khoản đông follower → cân bằng.
Thành phần: post service + DB, feed cache (Redis) cho timeline, ranking service, CDN cho media. Bổ sung: phân trang bằng cursor, dedupe, giới hạn độ dài feed, cập nhật gần thời gian thực qua queue.