Serlêdanên serhêl ên mezin di du deh salên berê de rêyek dirêj derbas bûne. Van nûjenan têgihiştina me ya pêşkeftina nermalavê guhezandiye. Mînakî Facebook, Instagram, û Twitter, hemî platformên berbelav in.
Pêdivî ye ku ev pergal werin çêkirin da ku jimarên girseyî yên seyrûsefer û daneyan birêve bibin ji ber ku bi mîlyaran mirov wan di heman demê de li seranserê cîhanê bikar tînin. Ev dema ku sêwirana pergalê dikeve wêneyê.
Pêvajoya damezrandina mîmarî, navbeynkar û daneyan ji bo pergalek ku hin pîvanan pêk tîne wekî sêwirana pergalê tê zanîn. Bi pergalên hevgirtî û bikêrhatî, sêwirana pergalê daxwazên karsazî an rêxistina we têr dike.
Gava ku pargîdanî an rêxistina we pîvanên xwe diyar kir, hûn dikarin dest bi tevlêkirina wan di sêwirana pergala laşî de bikin ku daxwazên xerîdarên we bicîh tîne.
Ma hûn hilbijêrin ku hûn bi pêşkeftina bextewar, çareseriyên bazirganî, an jî bi hev re her duyan biçin, hûn pergala xwe çawa sêwiran dikin dê diyar bike ka hûn wê çawa ava dikin.
Em ê di vê postê de, bi tutorial re, bi hûrgulî li sêwirana pergalê ya dema Twitterê binihêrin. Werin em dest pê bikin.
Gav 1: Doza û astengên bikaranînê diyar bikin
Doza bikar bînin
- Bikarhênerek tweetek bar dike.
- Karûbar ji şopînerên tweet-an re agahdariya push û e-nameyê dişîne.
- Demjimêra bikarhêner tê dîtin (çalakiya ji bikarhêner)
- Bikarhêner li demjimêra malê dinêre (çalakiya kesên ku bikarhêner dişopîne)
- Peyvên sereke ji hêla bikarhêner ve têne lêgerîn.
- Xizmet bi rastî gihîştî ye.
Derveyî çarçovê
- Tweet bi karanîna vê karûbarê ji Twitter Firehose û herikên din re têne şandin.
- Karûbar li ser bingeha mîhengên dîtina bikarhêner tweetan radike.
- Ger bikarhêner jî kesê ku jê re tê bersivandin neşopîne, bersivê veşêre.
- Vebijarka 'retweetên veşêre' bişopînin.
- Analytics
Asteng û texmîn
Texmînên Dewletê
- Trafîk bi awayekî wekhev belav nabe.
- Divê şandina tweetek hêsan be.
- Heya ku hûn bi mîlyonan şopînerên we nebin, şandina tweetek ji hemî şopînerên xwe re divê bilez be.
- 100 mîlyon bikarhênerên çalak hene.
- Her meh 15 milyar tweet an jî her roj 500 mîlyon tweet
- Her tweet bi navînî 10 radestkirina fanout heye.
- Her roj, fanout 5 mîlyar tweet radigihîne.
- Fanout her meh 150 mîlyar tweet dişîne.
- 250 mîlyar daxwazên xwendinê yên mehane
- 10 mîlyar lêgerînên mehane
Timeline
- Rêzeya demê divê hêsan be ku rêve bibe.
- Twitter ji nivîsandinê bêtir li ser xwendinê ye.
- Ji bo xwendina bilez a tweetê xweşbîn bikin
- Vexwarina tweet-ê dem dixwe.
Gerr
- Pêvajoya lêgerînê divê bilez be.
- Ji bo lêgerînê dem dixwe.
Bikaranînê hesab bike
Mezinahiya her tweetê:
- 8 bytes tweet id
- 32 bytes bikarhêner-id
- 140 byte nivîs
- medya - navînî 10 KB
- Bi tevahî: ~10 KB
Her meh, 150 TB naveroka tweet-a nû tê hilberandin.
- * Her roj 500 mîlyon tweet * 30 rojên mehê * 10 KB her tweet
- Di sê salan de, 5.4 PB naveroka tweet-a nû heye.
Her çirkeyek 100,000 daxwazên xwendinê hene.
- * (400 daxwaz di çirkeyê de / 1 mîlyar daxwaz her meh) 250 mîlyar daxwazên xwendinê her meh
Her saniye 6,000 tweet hene.
- * (400 daxwaz di çirkeyê de / 1 mîlyar daxwaz her meh) 15 mîlyar tweet her meh
Li ser fanout, her saniyeyê 60 hezar tweet têne şandin.
- Fanout her meh 150 mîlyar tweet peyda dike * (400 daxwaz di çirkeyê de / 1 mîlyar daxwaz her meh).
Her saniye 4,000 daxwazên agahiyê
- * (400 daxwaz di çirkeyê de / 1 mîlyar daxwaz her meh) 10 mîlyar lêgerîn her meh
Hin veguherînek kêrhatî
- Her meh 2.5 mîlyon saniye derbas dibe.
- 2.5 mîlyon daxwaz her mehê bi 1 daxwazek serê saniyeyê
- 100 mîlyon daxwaz di mehê de x 40 daxwaz di çirkeyê de
- Mehê 1 mîlyar daxwaz = 400 daxwaz di çirkeyê de
Gav 2: Diagrama asta bilind
Gav 3: Ravekirina pêkhateyên bingehîn
Ger ew tweetek bişînin em dikarin tweetên xwe yên bikarhêner hilînin da ku dema bikarhêner (çalakiya ji bikarhêner) di databasek pêwendiyê de dagirin. Radestkirina tweetan û pêşdebirina demjimêra malê (çalakiya kesên ku bikarhêner dişopîne) dijwartir e.
Dê databasek pêwendiyek tîpîk bi belavkirina tweetan ji hemî şopîneran re were xeniqandin (her saniyeyê 60 hezar tweet têne şandin). Em ê belkî bixwazin ku bi hilanîna daneya bilez-nivîsandina mîna databasek NoSQL an Cache Memory biçin.
Xwendina 1 MB li pey hev ji bîrê bi qasî 250 mîkrosaniyeyan digire, lê xwendina ji SSD 4 carî dirêj dike, û xwendina ji dîskê 80 carî dirêj dike.
Dikanek Objekt dikare were bikar anîn da ku daneyên wekî wêne û vîdyoyan hilîne.
- Pêşkêşkara Webê, ku wekî proxyek berevajî tevdigere, tweetek ji Xerîdar distîne.
- Daxwaz ji hêla Pêşkêşkara Webê ve ji servera Write API re tê şandin.
- Write API tweetê li databasa SQL-ê di rêzika dema bikarhêner de hilîne.
Karûbarê Fan-Out ji hêla Write API ve tê têkilî kirin, û ew karên jêrîn pêk tîne.
- Bi pirskirina Karûbarên Grafika Bikarhêner di Cacheya Bîrê de şopînerên bikarhêner dibîne.
- Li ser Cache Memory, tweet di rêzika malê ya şopînerên bikarhêner de tê tomar kirin.
- 1,000 şagirt = 1,000 lêger û têxistin = Operasyona O(n).
- Tweet ji bo lêgerîna bilez di Karûbarê Indeksa Lêgerînê de tê tomar kirin.
- Object Store ji bo hilanîna medyayê tê bikar anîn.
- Bi navgîniya Karûbarê Agahdariyê ji şagirtan re hişyariyên pêvekê dişîne.
- Ji bo şandina alertan bi asynkronî, ew Queue bikar tîne.
Ger Cache-ya Bîra me Redis be, em dikarin navnîşek Redis-a xwecî ya bi strukturek jêrîn bikar bînin:
Demjimêra malê ya bikarhêner dê bi tweeta nû, ya ku dê di Cacheya Bîrê de were hilanîn, were nûve kirin. Em ê REST API-ya gelemperî ya jêrîn bikar bînin:
Dema bikarhêner ji hêla bikarhêner ve tê dîtin.
- Pêşkêşkara Webê ji Xerîdar daxwazek dema bikarhênerê distîne.
- Daxwaz ji hêla Pêşkêşkara Webê ve ji servera Read API re tê şandin.
- API-a Read Database SQL ji bo dema bikarhênerê dipirse.
REST API dê bi heman rengî li ser demjimêra malê bixebite, bi îstîsna ku hemî tweet dê ji bikarhênerê ne ji mirovên ku ew dişopînin çêbibin.
Bikarhêner li peyvên sereke digere:
- Pêşkêşkara Webê daxwazek lêgerînê ji Xerîdar distîne.
- Daxwaz ji hêla Pêşkêşkara Webê ve ji servera API-ya Lêgerînê re tê şandin.
Gav 4: Demjimêra Twitter
Afirandina Demjimêr karekî dijwar e. Pêşkêşkerek hilberîna demjimêrek ku bi tevn an serverên serîlêdanê ve girêdide hewce ye.
Her gava ku bikarhênerek têkevinê, karûbarê demjimêrê tweetên herî nû yên bikarhêneran di tabloya şopînerê de dişopîne û rêzika dema bikarhêner nûve dike an nû dike.
Em li vir tu sîstemeke rêzgirtinê pêk naynin; di şûna wê de, em texmîn dikin ku 5 tweetên jorîn ên ji şopînerên bikarhêner di rêza dema afirandinê de têne pêşkêş kirin. Em dikarin qutkirina nûvekirina 50-tweet biparêzin. Em hîn jî nûvekirin an avakirina xêzek demkî rawestînin piştî ku ew sînor bigihîje heya ku bikarhêner rûpelê nûve bike.
Pirsgirêkên derengmayîn û performansê yên bilind dê ji afirandina xwarina bikarhênerê zindî werin. Di şûna wê de, afirandina pêvekek negirêdayî ya ku tavilê were pêşkêş kirin awayê çêtirîn e ku meriv performansê baştir bike. Pêşkêşkerên xêzkirî yên demkî bimeşînin ku servera serîlêdanê bi rêkûpêk ping dikin da ku li gorî dema ku hatî afirandin fêkiyê nûve bikin.
Pêdivî ye ku algorîtmaya rêzgirtinê nîşanên girîng li ber çavan bigire û giraniyek peyda bike da ku garantî bike ku rêzika dema bikarhênerek ji hêla materyalê ji yek an çend hesabên ku ew dişopînin ne serdest e.
Zêdetir, em dikarin taybetmendiyên ku bi pêwendiya her tiştê xwarinê ve girêdayî ne, wekî hejmara ecibandin, şîrove, parvekirin û dema nûvekirinê hilbijêrin. Pêdivî ye ku her yek ji van pîvanan were bikar anîn da ku tweetê binirxîne, û dûv re divê ew rêz were bikar anîn da ku tweetan li ser demjimêrê nîşan bide.
Dema ku naveroka nû ji bo nûçeyên wan peyda dibe divê em bi berdewamî bikarhêneran hişyar bikin? Bikarhêner dikarin dema ku daneyên nû peyda dibin hişyar bibin sûdmend bibînin. Lêbelê, li ser cîhazên mobîl, dema ku karanîna daneyê pir biha ye, ew dikare firehiya bandê winda bike.
Wekî encamek, em dikarin hilbijêrin ku daneyan li ser cîhazên desta nehêlin û li şûna wê destûrê bidin bikarhêner ku ji bo şandinên nû "Dakêşin Nûvekin".
Gava 5: Scaling design
Xizmetek potansiyel Karûbarê Fanout e. Bikarhênerên Twitterê yên ku bi mîlyonan şopînerên wan hene dê çend deqeyan li bendê bin ku tweetên xwe belav bikin. Dibe ku ev yek bibe sedema pêşbaziyek bi bersivên tweetê, ku em dikarin di dema servekirinê de ji nû ve rêzkirina tweetan jê dûr bixin.
Di heman demê de em dikarin pêşî li belavbûna tweetên ji kesên ku hejmareke mezin a şopînerê wan hene bigirin. Di şûna wê de, dibe ku em li tweetên kesên ku pir têne şopandin lêgerînek bikin, encamên lêgerînê bi encamên demjimêra malê ya bikarhêner re yek bikin, û dûv re tweetan di dema servekirinê de ji nû ve rêz bikin.
Pêşveçûnên din jî hene:
- Ji bo her rêzika malê tenê çend sed tweetan di Cache Memory de bihêlin.
- Di Memory Cache de, tenê agahdariya dema malê ya bikarhênerên çalak têne tomar kirin.
- Ger bikarhênerek di van 30 rojên paşîn de çalak nebûya em dikarin kronolojiyê ji Databasa SQL ji nû ve ava bikin.
- Ji bo ku hûn bizanin ka bikarhêner kî ye, Karûbarê Grafika Bikarhêner bikar bînin.
- Tweetan bi derxistina wan ji Databasa SQL li Cacheya Bîrê zêde bikin.
- Karûbarê Agahdariya Tweet tenê dikare tweetên mehekê xilas bike.
- Di Karûbarê Agahdariya Bikarhêner de, tenê bikarhênerên çalak têne tomar kirin.
- Ji bo ku dereng kêm bimîne, Koma Lêgerînê bi îhtîmalek mezin hewce dike ku tweetan di bîranînê de biparêze.
Xelasî
Her çend Twitter rêxistinek mezin e, lê çêtir e têgihîştina sêwirana pergalê. Min her tiştê xwe kir ku ji we re serpêhatiyek asta bilind a dema Twitterê peyda bikim.
Ez hêvî dikim ku we agahdariya kêrhatî jê wergirtiye û hûn dikarin wê baş bikar bînin.
Leave a Reply