Zviri Mukati[Viga][Ratidza]
Instagram Feed ipuratifomu yekugovana uye kubatana nevanhu uye zvinhu zvine basa kwauri. Paunovhura Instagram kana kuzorodza chikafu chako, mafoto nemavhidhiyo atinofunga kuti uchafarira acharatidza kumusoro.
Iyo nhau feed muunganidzwa wezvinhu zvine mavara, mifananidzo, kana mavhidhiyo akagadzirwa nemamwe masangano ari musystem anonangwa iwe kuti uverenge. Inogara ichichinja, nepo mamwe masangano ari kugadzira zvinyorwa zvitsva.
Mune ino positi, isu tinonyatso tarisisa sisitimu dhizaini ye Instagram feed. Saka, ngatitange.
1. Zvinoda
Kushanda kudikanwa
- Nhau dzemushandisi dzinogadzirwa kubva kune mamwe masangano ari muhurongwa hwakatevedzwa nemushandisi kana kufarira.
- Mameseji, mapikicha, uye mavhidhiyo ese anogona kuwanikwa mumapositi.
- Nhau dzemushandisi dzinofanirwa kuvandudzwa nezvinotumirwa zvinogadzirwa nevamwe.
Chiratidzo chisina kushanda
- Kugadzirwa kwemafeed enhau kunofanirwa kuitika munguva chaiyo. Wekupedzisira-mushandisi anofanirwa kusangana negumi nemaviri masekonzi ekunonoka.
- Kuisa chinyorwa chitsva: Hazvifanirwe kutora anopfuura 5 masekonzi kuti chinyorwa chitsva chioneke muchikumbiro chenhau mushure mekunge chaendeswa kuhurongwa.
2. Kufungidzira Kwesimba
- Kubva munaKurume 2021, huwandu hwepasi rose hungori 7.8 bhiriyoni. Zvinoratidza kuti 21% yehuwandu hwepasi rose iFacebook DAU (Daily Active User) uye 32% iFacebook MAU (Mwedzi Anoshanda Mushandisi) (Mwedzi Anoshanda Mushandisi). Izvozvo zvinoshamisa.
- Toita kunge system yatiri kugadzira ine 1 billion DAU kuti zvinhu zvireruke.
- Fungidzira kuti munhu anotevera vanhu mazana mashanu kana mabhizinesi paFacebook. Boka kana peji rinogona kutorwa sechinhu.
Estimated Traffic
Fungidzira kuti mushandisi mumwechete anodhawunirodha nhau dzekudya kagumi pazuva rega rega paavhareji. Saka ingangoita 10K QPS uye 116e1 zvikumbiro zuva rega rega.
Zvinofungidzirwa Kuchengeta
Fungidzira kuti isu tinochengetedza 500 zvinyorwa kubva kune yega yega mushandisi nhau feed mundangariro paavhareji kuti itore nekukurumidza, uye imwe neimwe posvo i1KB muhukuru. Saka 500 KB pamushandisi, mazana mashanu TB kune ese maDAU, uye mazana mashanu makomputa ane 500 GB RAM imwe neimwe.
3. MaAPI emaSystem
userId (GUID): mushandisi ane nhau dzekudya dziri kutorwa.
Aya anotevera minda anowanikwa mune yesarudzo sarudzo parameter:
- afterPostId (GUID): tora nhau dzekudya kubva kune ino post inotevera iyi. Kana zvisina kutaurwa, wana zvinotumirwa zvazvino.
- kuverenga (nhamba): iyo yakawanda nhamba yezvinyorwa izvo chikumbiro chega chega chinogona kudzoka. Iyo backend inoisa yakasarudzika nhamba yepamusoro kana pasina inopihwa.
- ExcludeReplies (boolean): inodzivirira mhinduro kubva pakubatanidzwa munhau feed.
- Iyo JSON yakadzoka ine runyorwa rwezvinyorwa zvenhau.
4. Kugadzira Database
Masangano
- mushandisi
- entityId, zita, tsananguro, uye chitambi chenguva zvese zvinodiwa.
- Nzvimbo dzinotevera dzinodiwa: PostId, zita, zvinyorwa, authorId, uye chitambi chenguva.
- timestamp, url, uye mediaId
Relationships
- Vamwe Vashandisi kana Masangano anogona kuteverwa nemushandisi. (m:n)
- Munyori-Post: Vese vashandisi uye masangano anogona kugadzira zvinyorwa. Fungidzira kuti Vashandisi chete vanogona kugadzira maPosts nekuda kwekureruka. (1:n; authorId inobatika).
- Imwe neimwe post inoperekedzwa neimwe nzira yemedia. (1:n)
5. High-Level Design
akitekicha
Workflows
Kugadzira chikafu
Kana Jay akumbira nhepfenyuro yake yenhau, sisitimu ichaita zvinotevera:
- Tora zvitupa zvevanhu vese nezvinhu zvinoteverwa naJay.
- Aggregate posts: wakapihwa iwo maID, tora achangoburwa, ane mukurumbira, uye akakodzera mameseji.
- Rongedza izvo zvakatumirwa zvinoenderana nekwazvo uye nenguva.
- Cache: chengetedza mafeed akagadzirwa uye utumire Jay iwo epamusoro makumi maviri.
- Kana Jay apedza kuverenga zvinyorwa makumi maviri ekutanga, chimwe chikumbiro chinotumirwa kuti uwane zvinyorwa makumi maviri zvinotevera.
Feed distribution
Fungidzira Jay ari kutevera Aayush uye kuti Aayush anotumira chero chinhu chitsva. Jay's feed feed inoda kuvandudzwa nesystem:
- Tora zvitupa zvevateveri vaAayush.
- Wedzera zvinyorwa zvitsva: Wedzera Aayush's post kune yenhau dziva revateveri veIDs.
- Rongedza izvo zvakatumirwa zvinoenderana nekwazvo uye nenguva.
- Gadzirisa cache yenzvimbo yepositi.
- Vateveri vanofanirwa kuziviswa kana zvinyorwa zvitsva zvaburitswa.
zvinoriumba
Kubatana kwevashandisi kunochengetedzwa nemaseva ewebhu.
Maitiro anoratidzwa pamusoro anoitwa neapuro server.
Cache uye database:
- Relational database mushandisi / sangano
- Database rehukama (post)
- Mufananidzo / vhidhiyo hunhu: Aayush storge
- Relational database metadata
Masevhisi akasarudzika:
- Kugadzira chikafu
- Notification of feeds
6. Detailed Design
Chizvarwa chekudya
Fan-out verenga naive kushandiswa:
Matambudziko nekuita zvisina tsarukano uku anosanganisira:
- Vashandisi vane nhamba huru yeshamwari/vateveri vanozoona kudzikira kwakakosha sezvo isu tichifanira kusefa, kusanganisa, uye kuisa nhamba huru yezvinotumirwa.
- Kana mushandisi akatakura peji yavo, isu tinovaka mutsara wenguva. Izvi zvinogona kuve nehusimbe uye kuve neakawanda latency.
- Yega yega mamiriro ekugadzirisa anozokonzeresa zvigadziriso zvevateveri vezvese zvigadziriso. Izvi zvinogona kukonzera kunonoka kukuru muNewsfeed Generation Service yedu.
Isu tinokwanisa kufanogadzira iyo chronology uye kuichengeta mundangariro kuti tiwedzere kushanda zvakanaka.
Kugadzira Kusina Pamhepo (Fan-out nyora)
Tinogona kuva nemaseva akazvitsaurira anogara achigadzira uye kuchengetedza nhau dzevashandisi mundangariro. Isu tinokwanisa kungoendesa iyo feed yenhau kubva kune yakafanogadzirwa, yakachengetwa nzvimbo pese painoda mushandisi.
Zvingani zvekudya zvemushandisi zvinofanirwa kuchengetwa mundangariro?
Chinja zvinoenderana nemaitiro ako ekushandisa.
Tinofanira kugadzira nhau kune vese vashandisi (uye kuichengeta mundangariro)?
- Kune vanhu vasingapindire kazhinji.
- LRU-based caching inzira iri nyore.
- Mhinduro iri nani ndeyekuona kuti vashandisi vanopinda sei mukati. Ndeipi? Ndeapi masvondo auri kutaura nezvawo?
Kuburitswa kwechikafu
Fanout ndiyo maitiro ekutumira chinyorwa kune vese vateveri vako.
Fanout verenga (dhonza)
Paunokumbira chikafu chenhau, sisitimu inogamuchira chikumbiro chekuverenga. Fanout kuverenga inotumira chikumbiro chekuverenga kune vese vateveri vako, uchivakumbira kuti vaverenge zvirimo.
zvayakanakira:
- Maitiro ekunyora haadhure.
- Paunenge uchiverenga data, zviri nyore kushandisa akasiyana aggregation algorithms.
nezvayakaipira:
- Kune munhu ane vateveri vazhinji, basa rekuverenga rinodhura.
- Vashandisi havazooni data nyowani kudzamara vadhonza.
- Kana isu tichidhonza kuti titore zvichangobva kutumirwa nguva nenguva, zvinonetsa kuwana chaiyo yekudhonza cadence, uye zvikumbiro zvizhinji zvekudhonza zvinodzosa mhinduro isina chinhu, kutambisa zviwanikwa.
Fanout kunyora (push)
Chikumbiro chekunyora chinoitwa kune sisitimu paunotumira positi nyowani. Chikumbiro chekunyora chinotumirwa kune vese vateveri vako kuti vagadzirise nhau yavo vachishandisa fanout kunyora.
Pro
- Nzira yekuverenga haina mari.
Con
- Kune mushandisi ane mamirioni evateveri, iyo nyora maitiro anodhura zvakanyanya.
Chiyero cheFeed
Panzvimbo pekungoodha mafeed zvichitevedzana, maalgorithms emazuva ano anoedzawo kuvimbisa kuti zvinhu zvine basa rakakura zvinoiswa pamberi.
- Sarudza zvinhu zvinogona kukubatsira kuti usarudze kukosha kwechinhu chekudya, senge nhamba yezvinofarirwa, makomendi, uye migove, nguva iyo chinhu chakapedzisira kuvandudzwa kana chinyorwa chine mafoto kana mavhidhiyo, zvichingodaro.
- Verenga zvibodzwa zvichienderana nehunhu.
- Shandisa zvibodzwa kuronga zvibodzwa.
Gadzirisa maKPI sekuchengetedza mushandisi, mari yekushambadzira, uye zvichingodaro kuti uone kuti inoshanda sei sisitimu yedu.
mhedziso
Kunyangwe chokwadi chekuti Instagram kana bhizinesi remubereki Facebook ikambani hombe, ine kunzwisisa kuri nani kwe dhizaini yehurongwa.
Ndakaedza nepandinogona napo kukupa pfupiso yepamusoro ye Instagram feed.
Ndinovimba yakabatsira uye kuti uchaishandisa zvakanaka.
Leave a Reply