Designing a Social Media News Feed
Ijtimoiy tarmoq yangiliklar lentasini loyihalash
Gazeta muharririyatini tasavvur qiling: ular HAR bir o'quvchi uchun ALOHIDA gazeta CHOP etmaydi — bitta UMUMIY gazeta chop etiladi, va HAR bir o'quvchi UNI o'qiydi. Endi shaxsiy YANGILIKLAR xizmatini tasavvur qiling: HAR bir o'quvchiga, FAQAT UNING obuna bo'lgan mavzulariga OID, SHAXSIY tartiblangan to'plam TAYYORLANADI. Ijtimoiy tarmoq yangiliklar lentasi — aynan SHU ikkinchi turga o'xshaydi, va bu uni JUDA qiyinlashtiradi.
Talab va miqyos: foydalanuvchi A, 500 kishini KUZATADI (follow). A ilovani ochganda, u O'SHA 500 kishining ENG SO'NGGI postlarini, VAQT tartibida (yoki algoritm bo'yicha) ko'rishi kerak. Muammo shu yerda BOSHLANADI: buni QACHON HISOBLAYMIZ — A ilovani OCHGANDA (o'qishda), yoki HAR bir kuzatilayotgan kishi POST qo'yganda (yozishda)?
| Yondashuv | Qanday ishlaydi | Kim uchun mos |
|---|---|---|
| Pull (o'qishda hisoblash) | A ilovani ochganda, 500 kishining SO'NGGI postlari REAL VAQTDA yig'ilib, tartiblanadi | Kam kuzatuvchisi bo'lgan oddiy foydalanuvchilar |
| Push (yozishda tarqatish, "fan-out on write") | Kimdir POST qo'yganda, u DARHOL barcha KUZATUVCHILARNING shaxsiy lentasiga NUSXALANADI | Ko'pchilik oddiy holat — o'qish TEZ, chunki lenta OLDINDAN tayyor |
Chuqur kirish — "mashhur odam" muammosi: agar millionlab kuzatuvchisi bo'lgan mashhur inson BITTA post qo'ysa, "push" yondashuvi O'SHA postni MILLIONLAB shaxsiy lentaga NUSXALASHNI talab qiladi — bu, Message Queues darsida ko'rgan asinxron ishlov berish orqali ORQA FONDA amalga oshiriladi, lekin baribir OGʻIR yuk. Ko'p real tizim ARALASH yondashuv ishlatadi: ODDIY foydalanuvchilar uchun push (tez o'qish), MASHHUR foydalanuvchilar uchun esa pull (yozishda OG'IR ishni oldini olish) — bu, Engineering Judgment kursidagi "har vaziyatga MOS strategiya" tamoyilining ANIQ namunasi.
Kesh va saqlash: har bir foydalanuvchining shaxsiy lentasi (push yondashuvida) — tez-tez O'QILADIGAN, lekin nisbatan KICHIK ma'lumot, shuning uchun Caching Strategies darsidagi kabi keshda saqlash JUDA mos keladi. Postlarning O'ZI (matn, rasm) esa alohida, kattaroq SAQLASH tizimida (va rasm/video uchun CDN orqali) TUTILADI — lenta faqat post ID'larini SAQLAB, HAQIQIY kontentni KERAK bo'lganda YIG'ADI.
Murosa: push yondashuvida, lenta OLDINDAN tayyorlangani uchun, agar A endigina B ni kuzata BOSHLASA, B ning ESKI postlari A ning lentasida DARHOL ko'rinmasligi mumkin (faqat YANGI postlar KEYINGI push orqali qo'shiladi) — bu, Consistency Models darsidagi eventual consistency'ning yana bir amaliy namunasi: bir oz KECHIKISH, ammo tezlik va soddalik evaziga QABUL qilinadigan murosa.
Key Takeaway
Key Takeaway:
Yangiliklar lentasi asosiy tanlovi — postni yozilganda barcha kuzatuvchiga OLDINDAN tarqatish (push, tez o'qish) yoki o'qishda REAL VAQTDA yig'ish (pull, og'ir yozuvlardan qochadi). Millionlab kuzatuvchisi bo'lgan hisoblar uchun ikkalasini aralashtirish — har vaziyatga mos strategiya tanlashning aniq namunasi.
NEXT UP
Designing a Distributed Rate Limiter Service