Bài toán: khi user mở app, lấy nhanh các post mới nhất từ những người họ follow.
Fan-out on write (push): ngay khi A đăng post, ghi sẵn post id vào feed cache của tất cả follower (Redis list). Đọc feed cực nhanh (chỉ đọc list dựng sẵn).
- Tốt cho user thường.
- Vấn đề celebrity: A có 50M follower → một post sinh 50M lần ghi → "fan-out storm", trễ và tốn.
Fan-out on read (pull): không dựng sẵn; khi user mở feed thì truy vấn post mới của từng người họ follow rồi merge tại thời điểm đọc. Ghi rẻ, nhưng đọc nặng (đọc khuếch đại) và chậm nếu follow nhiều.
Hybrid (giải pháp thực tế):
- Đa số user → push (fan-out on write).
- Celebrity → không push; post của họ được pull lúc đọc rồi merge vào feed đã dựng sẵn.
- Ngưỡng theo số follower để phân loại.
Hình dung: báo giao tận nhà (push) cho người thường; còn "tin nóng từ ngôi sao" thì độc giả tự ghé sạp lấy lúc đọc (pull) để khỏi in 50M bản.
Lưu ý: feed list cache có giới hạn (vài trăm id gần nhất); ranking/ML re-rank đặt sau bước merge; cần xử lý unfollow/block khi merge.