Zvikumbiro zvakakura zvepamhepo zvakauya kure mumakumi maviri emakore apfuura. Izvi zvitsva zvakashandura maonero edu ekugadzirwa kwesoftware. Facebook, Instagram, uye Twitter, semuenzaniso, ese ari scalable mapuratifomu.
Aya masisitimu anofanirwa kuvakwa kuti akwanise kubata hukuru hwetraffic uye data sezvo mabhiriyoni evanhu achiashandisa panguva imwe chete pasirese. Iyi ndiyo nguva dhizaini yehurongwa inopinda mumufananidzo.
Maitiro ekumisikidza zvivakwa, mainterfaces, uye data kune sisitimu inosangana nemamwe maitiro anozivikanwa sedhizaini yehurongwa. Kuburikidza nehurongwa hwakabatana uye hunoshanda, dhizaini yehurongwa inogutsa zvinodiwa nebhizinesi rako kana sangano.
Kana kambani yako kana sangano raona maitiro ayo, unogona kutanga kuvabatanidza mune yemuviri sisitimu dhizaini inosangana nezvinodiwa nevatengi vako.
Kunyangwe iwe ukasarudza kuenda nebespoke budiriro, zvigadziriso zvekutengesa, kana musanganiswa wezviviri, magadzirirwo aunoita sisitimu yako ndiwo anozoona kuti unoivaka sei.
Isu tichatarisa zvakadzama dhizaini yehurongwa hwe Twitter nguva mune ino positi, yakazara nedzidziso. Ngatitangei.
Danho 1: Rondedzera nyaya yekushandisa & zvipingaidzo
Use kesi
- Mushandisi anoisa tweet.
- Iyo sevhisi inotumira push notices uye maemail kune vateveri ve tweets.
- Nguva yemushandisi inoonekwa (chiitiko kubva kumushandisi)
- Mushandisi anotarisa nguva yekumba (zviitwa kubva kuvanhu vari kutevera mushandisi)
- Mazwi akakosha anotsvagwa nemushandisi.
- Basa racho rinosvikika zvechokwadi.
Kunze kwenzvimbo
- Tweets inotumirwa ku Twitter Firehose nedzimwe hova dzinoshandisa sevhisi iyi.
- Iyo sevhisi inobvisa ma tweets zvichienderana nekuonekwa kwemushandisi.
- Kana mushandisi asiri kuteverawo munhu ari kupindurwa, viga mhinduro.
- Tarisa iyo 'viga retweets' sarudzo.
- Analytics
Zvisungo & fungidziro
State Assumptions
- Iyo traffic haina kuparadzirwa zvakaenzana.
- Zvinofanira kunge zviri nyore kutumira tweet.
- Kunze kwekunge uine mamirioni evateveri, kutumira tweet kune vese vateveri vako kunofanirwa kukurumidza.
- Kune 100 miriyoni vanoshanda vanoshandisa.
- 15 bhiriyoni tweets mwedzi wega wega kana 500 miriyoni tweets zuva rega rega
- Yega yega tweet ine fanout yegumi kuendesa paavhareji.
- Mazuva ese, fanout anounza 5 bhiriyoni tweets.
- Fanout inopa 150 bhiriyoni tweets mwedzi wega wega.
- 250 bhiriyoni zvikumbiro zvinoverengwa pamwedzi
- mabhiriyoni gumi ekutsvaga pamwedzi
Nemakore
- Nguva yakatarwa inofanira kuva nyore kufamba.
- Twitter inonyanya kuverenga pane kunyora.
- Gadzirisa yekukurumidza kuverenga tweet
- Kushandiswa kweTweet kunotora nguva.
kutsvaka
- Nzira yekutsvaga inofanira kukurumidza.
- Zvinotora nguva kutsvaga.
Verenga kushandiswa
Saizi yega yega tweet:
- 8 bytes tweet id
- 32 bytes mushandisi-id
- 140 bytes zvemavara
- media - avhareji ye10 KB
- Zvose: ~10 KB
Mwedzi wega wega, 150 TB yezvinyorwa zvitsva zvetitter inogadzirwa.
- * 500 miriyoni tweets zuva rega rega * mazuva makumi matatu pamwedzi * 30 KB per tweet
- Mumakore matatu, kwave ne5.4 PB yezvinyorwa zvitsva zvetitter.
Pane 100,000 kuverenga zvikumbiro sekondi yega yega.
- * (400 zvikumbiro pasekondi / bhiriyoni zvikumbiro pamwedzi) 1 bhiriyoni inoverenga zvikumbiro mwedzi wega wega
Pane 6,000 tweets sekondi yega yega.
- * (400 zvikumbiro pasekondi / bhiriyoni zvikumbiro pamwedzi) 1 bhiriyoni tweets mwedzi wega wega
Pa fanout, zviuru makumi matanhatu zvematweets zvinotumirwa sekondi yega yega.
- Fanout inopa 150 bhiriyoni matweets mwedzi wega wega* (400 zvikumbiro pasekondi / bhiriyoni zvikumbiro pamwedzi).
4,000 zvikumbiro zveruzivo sekondi yega yega
- * (400 zvikumbiro pasekondi / bhiriyoni zvikumbiro pamwedzi) mabhiriyoni gumi ekutsvaga mwedzi wega wega
Imwe shanduko inobatsira
- Mwedzi woga woga, masekonzi mamiriyoni 2.5 anopfuura.
- 2.5 mamiriyoni ekukumbira pamwedzi pane 1 chikumbiro pasekondi
- 100 miriyoni zvikumbiro pamwedzi x 40 zvikumbiro pasekondi
- 1 bhiriyoni zvikumbiro pamwedzi = 400 zvikumbiro pasekondi
Danho 2: Dhiagiramu yepamusoro-soro
Danho rechitatu: Kutsanangura zvakakosha zvikamu
Isu tinogona kuchengetedza iwo mushandisi ega maTweets kuti aburitse mushandisi wenguva (chiitiko kubva kumushandisi) mudura rehukama kana vakaendesa tweet. Zvakanyanya kuoma kuendesa maTweets uye kugadzira mutsara wenguva (zviitwa kubva kune vanhu vanotevera mushandisi).
Iyo yakajairwa hukama dhatabhesi yaizoremerwa nekufambisa matweets kune vese vateveri (60 zviuru matweets anounzwa sekondi yega yega). Isu tichada kuenda nekukurumidza-kunyora dhata yekuchengetedza senge NoSQL dhatabhesi kana Memory Cache.
Kuverenga 1 MB sequentially kubva mundangariro kunotora angangoita mazana maviri nemakumi mashanu mamicroseconds, asi kuverenga kubva kuSSD kunotora 250 nguva yakareba, uye kuverenga kubva kudhisiki kunotora makumi masere kureba.
Chitoro cheChinhu chinogona kushandiswa kuchengetedza data semifananidzo nemavhidhiyo.
- Iyo Web Server, iyo iri kuita senge reverse proxy, inogamuchira tweet kubva kuMutengi.
- Chikumbiro chinotumirwa kune Nyora API server neWeb Server.
- Iyo Nyora API inochengetedza iyo tweet kuSQL dhatabhesi mune yenguva yemushandisi.
Iyo Fan-Out Sevhisi inobatwa neiyo Nyora API, uye inoita mabasa anotevera.
- Inowana vateveri vemushandisi muMemory Cache nekubvunza iyo User Graph Service.
- PaMemory Cache, iyo tweet inochengetwa mumutsara wepamba wevateveri vemushandisi.
- 1,000 vateveri = 1,000 lookups uye kuisa = O(n) kushanda.
- Iyo tweet inochengetwa muKutsvaga Index Service yekutsvaga nekukurumidza.
- The Object Store inoshandiswa kuchengeta midhiya.
- Inotumira chenjedzo yekusundidzira kuvateveri kuburikidza neiyo Notification Service.
- Kutumira zviziviso asynchronously, inoshandisa Queue.
Isu tinogona kushandisa rondedzero yekuzvarwa Redis neiyo inotevera chimiro kana yedu Memory Cache iri Redis:
Nguva yekumba yemushandisi yaizogadziridzwa neiyo tweet nyowani, yaizochengetwa muMemory Cache. Tichashandisa inotevera yeruzhinji REST API:
Nguva yemushandisi inoonekwa nemushandisi.
- Iyo Webhu Server inogamuchira mushandisi wenguva yekukumbira kubva kuMutengi.
- Chikumbiro chinotumirwa kuRead API server neWeb Server.
- Iyo Read API inobvunza SQL Database yenguva yemushandisi.
Iyo REST API yaizoshanda zvakafanana neyenguva yekumba, kunze kwekunge matweets ese aibva kumushandisi kwete vanhu vavanotevera.
Mushandisi anotsvaga mazwi akakosha:
- Iyo Web Server inogamuchira chikumbiro chekutsvaga kubva kuMutengi.
- Chikumbiro chinotumirwa kuSearch API server neWeb Server.
Nhanho 4: Twitter nguva yakatarwa
Kugadzira nguva ibasa rakaoma. Iyo nguva yekugadzira sevha inobatanidza kuwebhu kana maseva ekushandisa inodiwa.
Pese paunosaina mushandisi, sevhisi yenguva inochengetedza matweets matsva kubva kuvashandisi ari patafura yevateveri uye anovandudza kana kuzorodza nguva yemushandisi.
Isu hatiite chero rudzi rwemarongerwo system pano; pachinzvimbo, isu tinofungidzira kuti epamusoro mashanu matweets kubva kuvateveri emushandisi anounzwa mumutsara wenguva mukurongeka kwenguva yekusika. Tinogona kuchengetedza 5-tweet refresh cutoff. Tichiri kumira kuzorodza kana kugadzira mutsara wenguva mushure mekunge chikumbaridzo chasvika kudzamara mushandisi azorodza peji.
Yakakwira latency uye kunetsa kwekuita kuchauya kubva mukurarama mushandisi kusikwa kwekudya. Pane kudaro, kugadzira rwizi rwusina Indaneti runogona kuratidzwa ipapo ndiyo nzira yakanakisa yekuvandudza mashandiro. Mhanya maseva akatsaurirwa enguva anobaya sevha yekushandisa nguva nenguva kuti uvandudze chikafu zvichienderana nenguva yayakagadzirwa.
Iyo algorithm yezviyero inofanirwa kutarisisa masaini akakosha uye nekupa huremu hwekuvimbisa kuti nguva yemushandisi haisi kutongwa nezvinhu kubva kune imwe kana anopfuura emaakaundi avanotevedzera.
Kunyanya, isu tinogona kusarudza maficha ane chekuita nekukoshera kwechero chinhu chekudya, senge nhamba yezvido, makomendi, migove, uye nguva yekuvandudza. Imwe neimwe yeiyi maitiro inofanirwa kushandiswa kuyera iyo tweet, uye ipapo iyo chinzvimbo inofanira kushandiswa kuratidza maTweets pane yenguva.
Tinofanira kugara tichinyevera vashandisi kana zvinyorwa zvitsva zvenhau yavo zvave kuwanikwa? Vashandisi vanogona kuwana zvichibatsira kuziviswa kana data idzva ravapo. Pane nharembozha, zvisinei, kana kushandiswa kwedata kuchidhura zvakanyanya, kunogona kutambisa bandwidth.
Nekuda kweizvozvo, isu tinokwanisa kusarudza kusasundira data kune nharembozha uye panzvimbo pacho bvumidza vashandisi ku "Dhonza kuti Uzorodze" kune zvitsva zvinotumirwa.
Nhanho 5: Kuyera dhizaini
Iyo inogona kukanganisa ibasa reFanout. Vashandisi veTwitter vane mamirioni evateveri vanozofanira kumirira maminetsi akati wandei kuti matweets avo abudiswe. Izvi zvinogona kukonzera nhangemutange nemhinduro kune tweet, iyo yataigona kudzivirira nekurairazve matweets panguva yekushandira.
Isu tinogona zvakare kudzivirira kuparadzira maTweets kubva kuvanhu vane nhamba huru yevateveri. Pane kudaro, tinogona kutsvaga matweets kubva kuvanhu vanotevedzwa zvakanyanya, tobatanidza mibairo yekutsvaga nemhinduro yenguva yekumba yemushandisi, tozorongedza matweets panguva yekushandira.
Zvimwe zvekuwedzera zvinosanganisira:
- Chengetedza mazana mashoma etiweti muMemory Cache kune yega yega nguva yekumba.
- MuMemory Cache, chete ruzivo rwevashandisi venguva yekumba runochengetwa.
- Tinogona kuvakazve nguva kubva kuSQL Database kana mushandisi anga asina kushanda mumazuva makumi matatu apfuura.
- Kuti uzive kuti mushandisi ndiani, shandisa iyo User Graph Service.
- Wedzera iwo matweets kuMemory Cache nekuatora kubva kuSQL Database.
- Iyo Tweet Info Service inogona chete kuchengetedza inokwana mwedzi yematweets.
- MuMushandisi Info Service, vashandisi vanoshanda chete ndivo vanochengetwa.
- Kuti uchengetedze latency yakaderera, iyo Kutsvaga Cluster ingangoda kuchengetedza iwo matweets mundangariro.
mhedziso
Kunyangwe Twitter isangano rakakura, rine zvirinani kunzwisisa kwekugadzirwa kwehurongwa. Ndakaita nepese pandinogona kuti ndikupe iwe mhedziso yepamusoro-soro yenguva ye Twitter.
Ndinovimba wawana ruzivo runobatsira kubva kwairi uye unogona kuishandisa zvakanaka.
Leave a Reply