Orodha ya Yaliyomo[Ficha][Onyesha]
Milisho ya Instagram ni jukwaa la kushiriki na kuunganishwa na watu na mambo ambayo ni muhimu kwako. Unapofungua Instagram au kuonyesha upya mpasho wako, picha na video tunazofikiri kuwa utavutiwa nazo zitaonekana juu.
Mlisho wa habari ni mkusanyiko wa vipengee vilivyo na maandishi, picha au video zilizoundwa na vyombo vingine kwenye mfumo ambavyo vinalengwa wewe kusoma. Inabadilika kila wakati, huku mashirika mengine yanatengeneza machapisho mapya.
Katika chapisho hili, tutaangalia kwa karibu muundo wa mfumo wa malisho ya Instagram. Kwa hiyo, hebu tuanze.
1. Mahitaji
Umuhimu wa kiutendaji
- Mlisho wa habari wa mtumiaji huundwa kutoka kwa machapisho kutoka kwa vyombo vingine kwenye mfumo ambao mtumiaji amefuata au anavutiwa nao.
- Maandishi, picha na video zote zinaweza kupatikana kwenye machapisho.
- Mipasho ya habari ya mtumiaji inapaswa kusasishwa na machapisho mapya yaliyoundwa na wengine.
Kigezo kisichofanya kazi
- Uundaji wa milisho ya habari unapaswa kufanyika katika muda halisi. Mtumiaji wa mwisho anapaswa kutumia sekunde 12 tu za kuchelewa.
- Kutuma chapisho jipya: Haipaswi kuchukua zaidi ya sekunde 5 kwa chapisho jipya kuonekana katika ombi la mipasho ya habari baada ya kuwasilishwa kwa mfumo.
2. Makadirio ya Uwezo
- Kufikia Machi 2021, idadi ya watu ulimwenguni ni watu bilioni 7.8 tu. Inaonyesha kuwa 21% ya watu duniani ni Facebook DAU (Daily Active User) na 32% ni Facebook MAU (Mtumiaji Anayefanya Kazi Kila Mwezi) (Mtumiaji Anayetumika Kila Mwezi). Hiyo ni ajabu.
- Tujifanye mfumo tunaoujenga una DAU bilioni 1 ili kurahisisha mambo.
- Chukulia mtu anafuata watu 500 au biashara kwenye Facebook. Kikundi au ukurasa unaweza kuchukuliwa kuwa huluki.
Trafiki Iliyokadiriwa
Chukulia kuwa mtumiaji mmoja hupakua mpasho wa habari mara 10 kila siku kwa wastani. Kwa hivyo ni takriban 116K QPS na maombi 1e10 kila siku.
Makadirio ya Hifadhi
Chukulia kuwa tunadumisha machapisho 500 kutoka kwa mipasho ya habari ya kila mtumiaji katika kumbukumbu kwa wastani kwa ajili ya kurejeshwa haraka, na kila chapisho lina ukubwa wa 1KB. Kwa hivyo KB 500 kwa kila mtumiaji, TB 500 kwa DAU zote, na kompyuta 5000 zenye RAM ya GB 100 kila moja.
3. API za Mifumo
userId (GUID): mtumiaji ambaye mpasho wake wa habari unaletwa.
Sehemu zifuatazo zinapatikana katika kigezo cha chaguo za hiari:
- afterPostId (GUID): pata habari kutoka kwa chapisho linalofuata hili. Ikiwa haijabainishwa, pata machapisho ya hivi karibuni.
- hesabu (nambari): idadi ya juu zaidi ya machapisho ambayo kila ombi linaweza kurejesha. Mazingira ya nyuma huweka nambari ya juu chaguo-msingi ikiwa hakuna iliyotolewa.
- excludeReplies (boolean): huzuia majibu kujumuishwa kwenye mipasho ya habari.
- JSON iliyorejeshwa ina orodha ya vipengee vya mipasho ya habari.
4. Kutengeneza Hifadhidata
Vipengele
- Mtumiaji
- Kitambulisho cha chombo, jina, maelezo na muhuri wa wakati zote ni sehemu zinazohitajika.
- Sehemu zifuatazo zinahitajika: Kitambulisho cha Posta, kichwa, maandishi, kitambulisho cha mwandishi na muhuri wa muda.
- muhuri wa wakati, url, na mediaId
Mahusiano ya
- Watumiaji au Mashirika mengine yanaweza kufuatwa na mtumiaji. (m:n)
- Mwandishi-Chapisho: Watumiaji na huluki zote zinaweza kuunda machapisho. Chukulia kuwa Watumiaji pekee wanaweza kuunda Machapisho kwa ajili ya kurahisisha. (1:n; kitambulisho cha mwandishi kinaweza kupachikwa).
- Kila chapisho linaambatana na aina fulani ya media. (1:n)
5. Ubunifu wa hali ya juu
usanifu
Kazi ya kazi
Uzalishaji wa malisho
Wakati Jay anaomba utiririshaji wake wa habari, mfumo utafanya yafuatayo:
- Rejesha vitambulisho vya watu wote na vitu ambavyo Jay anafuata.
- Jumlisha machapisho: ukizingatia vitambulisho hivyo, pata machapisho ya hivi punde zaidi, maarufu na yanayofaa.
- Weka machapisho kulingana na umuhimu wao na wakati.
- Akiba: hifadhi milisho iliyoundwa na umtumie Jay machapisho 20 bora.
- Jay anapomaliza kusoma machapisho 20 ya kwanza, ombi lingine linatumwa ili kupata machapisho 20 yanayofuata.
Usambazaji wa mipasho
Fikiria Jay anamfuata Aayush na kwamba Aayush anachapisha chochote kipya. Mlisho wa habari wa Jay utahitaji kusasishwa na mfumo:
- Rejesha vitambulisho vya wafuasi wa Aayush.
- Ongeza makala mapya: Ongeza chapisho la Aayush kwenye hifadhi ya habari ya wafuasi wa vitambulisho hivyo.
- Weka machapisho kulingana na umuhimu wao na wakati.
- Sasisha akiba ya chapisho la nafasi.
- Wafuasi wanapaswa kuarifiwa machapisho mapya yanapochapishwa.
Vipengele
Miunganisho ya watumiaji inadumishwa na seva za wavuti.
Taratibu zilizoonyeshwa hapo juu zinatekelezwa na seva ya programu.
Cache na hifadhidata:
- Mtumiaji/huluki ya hifadhidata ya uhusiano
- Hifadhidata ya uhusiano (chapisho)
- Sifa ya picha/video: Aayush storge
- Metadata ya hifadhidata ya uhusiano
Huduma zilizobinafsishwa:
- Uzalishaji wa malisho
- Arifa ya mipasho
6. Muundo wa Kina
Kizazi cha kulisha
Utekelezaji wa ujinga uliosomwa na mashabiki:
Shida za utekelezaji huu duni ni pamoja na:
- Watumiaji walio na idadi kubwa ya marafiki/wafuasi wataona kushuka kwa kiasi kikubwa kwa kuwa ni lazima tupepete, tuunganishe, na kuorodhesha idadi kubwa ya machapisho.
- Mtumiaji anapopakia ukurasa wake, tunaunda kalenda ya matukio. Hii inaweza kuwa ya uvivu na kuwa na utulivu mwingi.
- Kila sasisho la hali litasababisha masasisho ya mipasho kwa wafuasi wote kwa sasisho za moja kwa moja. Hili linaweza kusababisha ucheleweshaji mkubwa katika Huduma yetu ya Uzalishaji wa Mipasho.
Tunaweza kutengeneza kronolojia mapema na kuihifadhi kwenye kumbukumbu ili kuongeza ufanisi.
Uzalishaji wa Nje ya Mtandao (Andika kwa mashabiki)
Tunaweza kuwa na seva zilizojitolea ambazo zinaunda na kuhifadhi mipasho ya habari ya watumiaji kila mara kwenye kumbukumbu. Tunaweza tu kuwasilisha mlisho wa habari kutoka eneo lililotayarishwa awali, lililohifadhiwa wakati wowote mtumiaji anapotaka.
Je, mipasho ya mtumiaji inapaswa kuhifadhiwa kwa kumbukumbu ngapi?
Badilisha kulingana na tabia yako ya utumiaji.
Je, tunapaswa kutengeneza habari kwa watumiaji wote (na kuihifadhi kwenye kumbukumbu)?
- Kwa watu ambao hawaingii mara nyingi.
- Uhifadhi wa msingi wa LRU ni njia rahisi.
- Suluhisho bora ni kubaini jinsi watumiaji huingia. Je, ni lini? Je, unazungumzia siku gani za wiki?
Uchapishaji wa malisho
Fanout ni mchakato wa kutuma chapisho kwa wafuasi wako wote.
Fanout kusoma (vuta)
Unapoomba kulisha habari, mfumo hupokea ombi la kusoma. Fanout read hutuma ombi la kusoma kwa wafuasi wako wote, ikiwauliza wasome maudhui yao.
Faida:
- Utaratibu wa kuandika ni wa gharama nafuu.
- Unaposoma data, ni rahisi kutumia algoriti mbalimbali za ujumlisho.
Africa:
- Kwa mtu aliye na wafuasi wengi, operesheni ya kusoma ni ghali.
- Watumiaji hawataona data mpya hadi waivute.
- Tunapovuta ili kuleta machapisho ya hivi majuzi mara kwa mara, ni vigumu kupata mwanya unaofaa wa kuvuta, na maombi mengi ya kuvuta yataleta jibu tupu, kupoteza rasilimali.
Fanout kuandika (sukuma)
Ombi la kuandika linafanywa kwa mfumo unapotuma chapisho jipya. Ombi la kuandika linatumwa kwa wafuasi wako wote ili kusasisha mipasho yao ya habari kwa kutumia fanout kuandika.
kwa
- Mchakato wa kusoma ni wa bei nafuu.
na
- Kwa mtumiaji aliye na mamilioni ya wafuasi, the kuandika utaratibu ni ghali sana.
Cheo cha Mlisho
Badala ya kuagiza milisho kwa kufuatana tu, kanuni za viwango vya leo pia hujaribu kuhakikisha kuwa bidhaa zenye umuhimu zaidi zinapewa kipaumbele.
- Chagua vipengele vinavyoweza kukusaidia kuamua umuhimu wa kipengee cha mlisho, kama vile idadi ya kupendwa, maoni, na kushirikiwa, muda ambao kipengee kilisasishwa mara ya mwisho ikiwa makala ina picha au video, na kadhalika.
- Kuhesabu alama kulingana na sifa.
- Tumia alama ili kupanga machapisho.
Sanidi KPI kama vile kuhifadhi watumiaji, mapato ya matangazo, na kadhalika ili kuona jinsi mfumo wetu wa kuorodhesha unavyofaa.
Hitimisho
Licha ya ukweli kwamba Instagram au biashara yake kuu ya Facebook ni shirika kubwa, ina ufahamu bora zaidi muundo wa mfumo.
Nilijaribu niwezavyo kukupa muhtasari wa hali ya juu wa mlisho wa Instagram.
Natumai ilikuwa ya msaada na utaitumia vizuri.
Acha Reply