GoDasturchi
Designing a Social Media News Feed

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)?

YondashuvQanday ishlaydiKim uchun mos
Pull (o'qishda hisoblash)A ilovani ochganda, 500 kishining SO'NGGI postlari REAL VAQTDA yig'ilib, tartiblanadiKam kuzatuvchisi bo'lgan oddiy foydalanuvchilar
Push (yozishda tarqatish, "fan-out on write")Kimdir POST qo'yganda, u DARHOL barcha KUZATUVCHILARNING shaxsiy lentasiga NUSXALANADIKo'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

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)?

YondashuvQanday ishlaydiKim uchun mos
Pull (o'qishda hisoblash)A ilovani ochganda, 500 kishining SO'NGGI postlari REAL VAQTDA yig'ilib, tartiblanadiKam kuzatuvchisi bo'lgan oddiy foydalanuvchilar
Push (yozishda tarqatish, "fan-out on write")Kimdir POST qo'yganda, u DARHOL barcha KUZATUVCHILARNING shaxsiy lentasiga NUSXALANADIKo'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