पाठ 29 / 32

एक न्यूज़ फ़ीड डिज़ाइन करें

Fan-out on write और read के साथ news feed design करें, celebrity accounts संभालें और ranking को delivery से अलग रखें।

आवश्यकताएँ

यूज़र दूसरों को फ़ॉलो करते हैं और अपडेट पोस्ट करते हैं; ऐप खोलने पर आप जिन्हें फ़ॉलो करते हैं उनके हाल के पोस्ट की रैंक की गई फ़ीड दिखती है। मानें अधिकांश यूज़र सैकड़ों को फ़ॉलो करते हैं, कुछ सेलिब्रिटी के करोड़ों फ़ॉलोअर होते हैं।

पुश (फ़ैन-आउट ऑन राइट)

जब कोई यूज़र पोस्ट करता है, तुरंत उस पोस्ट को हर फ़ॉलोअर की पहले से गणना की गई फ़ीड में लिखें (Redis में एक सूची)। फिर फ़ीड पढ़ना एक तेज़ लुकअप है। सामान्य यूज़र के लिए बढ़िया — 50M फ़ॉलोअर वाले सेलिब्रिटी के लिए भयानक (एक पोस्ट = 50M राइट)।

हाइब्रिड: अधिकांश के लिए पुश, सेलिब्रिटी के लिए पुल

जैसे एक अख़बार अधिकांश घरों तक पहुँचाता है (पुश) पर कुछ बहुत लोकप्रिय स्तंभकारों के लिए आज का फ्रंट पेज न्यूज़स्टैंड पर छोड़ देता है (पुल) — अधिकांश सिस्टम सामान्य फ़ॉलोअर की पहले से गणना की गई फ़ीड में पुश करते हैं और, पढ़ने के समय, यूज़र द्वारा फ़ॉलो किए गए किसी भी सेलिब्रिटी अकाउंट का लाइव पुल मर्ज करते हैं।

रैंकिंग एक अलग सरोकार है

फ़ैन-आउट डिलीवरी हल करता है; एक अलग रैंकिंग सेवा (हालिया, एंगेजमेंट पूर्वानुमान) पढ़ने के समय उम्मीदवार पोस्ट को फिर से क्रमबद्ध करती है। स्टोरेज/डिलीवरी पाइपलाइन को सरल और तेज़ रखें, और रैंकिंग को प्लगेबल।