Преглед садржаја[Сакрити][Прикажи]
Инстаграм Феед је платформа за дељење и повезивање са људима и стварима које су вам важне. Када отворите Инстаграм или освежите свој феед, фотографије и видео снимци за које мислимо да ћете бити заинтересовани ће се приказати при врху.
Фид вести је колекција ставки које садрже текст, слике или видео записе које су креирали други ентитети у систему који су циљани да их читате. Увек се мења, док друге организације објављују нове постове.
У овом посту ћемо помно погледати дизајн система Инстаграмовог фееда. Дакле, почнимо.
КСНУМКС. Захтеви
Функционална неопходност
- Кориснички феед вести се креира од објава других ентитета у систему које је корисник пратио или за које је заинтересован.
- Текст, слике и видео записи се могу наћи у објавама.
- Кориснички феед вести треба да се ажурира новим објавама које су креирали други.
Нефункционални критеријум
- Креирање вести треба да се одвија у реалном времену. Крајњи корисник би требало да доживи само 12 секунди кашњења.
- Додавање нове објаве: Не би требало да прође више од 5 секунди да се нова објава појави у захтеву за феед вести након што се пошаље систему.
2. Процена капацитета
- Од марта 2021. године светска популација износи само 7.8 милијарди људи. То указује да је 21% светске популације Фацебоок ДАУ (Дневни активни корисник), а 32% Фацебоок МАУ (Месечно активан корисник) (Месечно активан корисник). То је невероватно.
- Хајде да се претварамо да систем који градимо има 1 милијарду ДАУ-а да бисмо ствари олакшали.
- Претпоставимо да особа прати 500 људи или предузећа на Фејсбуку. Група или страница се могу сматрати ентитетом.
Процењени саобраћај
Претпоставимо да један корисник у просеку преузима вести 10 пута дневно. Дакле, то је отприлике 116 КПС-а и 1е10 захтева сваки дан.
Процене складиштења
Претпоставимо да држимо 500 постова из фееда вести сваког корисника у просеку у меморији ради брзог преузимања, а сваки пост је величине 1 КБ. Дакле, 500 КБ по кориснику, 500 ТБ за све ДАУ-ове и 5000 рачунара са по 100 ГБ РАМ-а.
3. АПИ-ји за системе
усерИд (ГУИД): корисник чији се фид вести преузима.
Следећа поља су доступна у опционом параметру опција:
- афтерПостИд (ГУИД): преузмите фид вести из поста после овог. Ако није наведено, преузмите најновије постове.
- цоунт (број): максималан број постова које сваки захтев може да врати. Позадина поставља подразумевани максимални број ако ниједан није наведен.
- екцлудеРеплиес (боолеан): спречава да одговори буду укључени у феед вести.
- Враћени ЈСОН садржи листу ставки фида вести.
4. Дизајнирање базе података
Ентитети
- Корисник
- ентитиИд, име, опис и временска ознака су сва обавезна поља.
- Обавезна су следећа поља: ПостИд, наслов, текст, ауторски ИД и временска ознака.
- временска ознака, урл и медиаИд
Односи
- Други корисници или ентитети могу бити праћени од стране корисника. (м:н)
- Аутор-пост: И корисници и ентитети могу креирати постове. Претпоставимо да само Корисници могу да креирају постове ради једноставности. (1:н; ауторски ИД се може уградити).
- Сваки пост је пропраћен неким обликом медија. (1:н)
5. Дизајн високог нивоа
Архитектура
Воркфловс
Производња сточне хране
Када Џеј затражи њен ток вести, систем ће урадити следеће:
- Преузмите ИД-ове свих људи и ствари које Џеј прати.
- Збирни постови: с обзиром на те ИД-ове, набавите најновије, популарне и релевантне постове.
- Рангирајте постове према њиховој релевантности и времену.
- Кеш: сачувајте креиране фидове и пошаљите Џеју првих 20 постова.
- Када Џеј заврши са читањем првих 20 постова, шаље се још један захтев за добијање следећих 20 постова.
Дистрибуција хране
Претпоставимо да Јаи прати Ааиусха и да Ааиусх објављује било шта ново. Систем ће морати да ажурира Џејов фид вести:
- Преузми ИД-ове Ајушових следбеника.
- Додајте нове чланке: Додајте Ааиусх-ову објаву у фонд вести следбеника тих ИД-ова.
- Рангирајте постове према њиховој релевантности и времену.
- Ажурирајте кеш места за рангирање.
- Пратиоци треба да буду обавештени када се објаве нови постови.
komponente
Везе корисника одржавају веб сервери.
Горе наведене процедуре извршава сервер апликација.
Кеш и база података:
- Корисник/ентитет релационе базе података
- Релациона база података (пост)
- Атрибут слике/видеа: Ааиусх сторге
- Метаподаци релационе базе података
Персонализоване услуге:
- Производња сточне хране
- Обавештење о фидовима
6. Главни пројекат
Генерисање хране
Фан-оут читање наивна имплементација:
Проблеми са овом траљавом имплементацијом укључују:
- Корисници са великим бројем пријатеља/пратилаца ће приметити значајно успоравање пошто морамо да пресејемо, спојимо и рангирамо велики број објава.
- Када корисник учита своју страницу, ми конструишемо временску линију. Ово може бити споро и имати много кашњења.
- Свако ажурирање статуса ће резултирати ажурирањем фида за све пратиоце за ажурирања уживо. Ово може проузроковати значајна кашњења у нашој услузи генерисања вести.
Можемо унапред да генеришемо хронологију и сачувамо је у меморији да бисмо повећали ефикасност.
Офлајн продукција (фан-оут писање)
Можемо имати наменске сервере који стално креирају и чувају корисничке вести у меморији. Можемо само да испоручимо фид вести са унапред генерисане, сачуване локације кад год то корисник жели.
Колико ставки фида треба да буде ускладиштен у меморији корисника?
Прилагодите се на основу понашања приликом коришћења.
Да ли треба да направимо невсфеед за све кориснике (и да га сачувамо у меморији)?
- За људе који се не пријављују често.
- Кеширање засновано на ЛРУ је једноставан приступ.
- Боље решење је да откријете како се корисници пријављују. Када је то? О којим радним данима говорите?
Објављивање фида
Фаноут је процес слања објаве свим вашим пратиоцима.
Фаноут читање (повлачење)
Када затражите фид вести, систем прима захтев за читање. Фаноут реад шаље захтев за читање свим вашим пратиоцима, тражећи од њих да прочитају њихов садржај.
Предности:
- Процедура писања је јефтина.
- Када читате податке, лакше је користити различите алгоритме агрегације.
Против:
- За особу са много пратилаца, операција читања је прилично скупа.
- Корисници неће видети свеже податке док их не повуку.
- Када редовно преузимамо најновије објаве, тешко је пронаћи одговарајући ритам повлачења, а већина захтева за повлачењем враћа празан одговор, трошећи ресурсе.
Фаноут писање (пусх)
Захтев за писање се шаље систему када пошаљете нову објаву. Захтев за писање се шаље свим вашим пратиоцима да ажурирају своје вести користећи фаноут врите.
професионалац
- Процес читања је јефтин.
са
- За корисника са милионима пратилаца, write (писати) процедура је прескупа.
Ранг Фееда
Уместо да само хронолошки поређају фидове, данашњи алгоритми за рангирање додатно покушавају да гарантују да су ставке са већом релевантношћу приоритет.
- Одаберите факторе који вам могу помоћи да одлучите о релевантности ставке фида, као што су број свиђања, коментара и дељења, време када је ставка последњи пут ажурирана ако чланак садржи фотографије или видео записе, итд.
- Израчунајте резултат на основу карактеристика.
- Користите резултат за рангирање постова.
Подесите КПИ као што су задржавање корисника, приход од огласа и тако даље да бисте видели колико је ефикасан наш систем рангирања.
Zakljucak
Упркос чињеници да је Инстаграм или његова матична компанија Фацебоок огромна корпорација, он има боље разумевање дизајн система.
Дао сам све од себе да вам пружим сажетак Инстаграм фееда на високом нивоу.
Надам се да је било од помоћи и да ћете га добро искористити.
Ostavite komentar