Maombi makubwa ya mtandaoni yamekuja kwa muda mrefu katika miongo miwili iliyopita. Ubunifu huu umebadilisha mitazamo yetu ya ukuzaji wa programu. Facebook, Instagram, na Twitter, kwa mfano, zote ni majukwaa yanayoweza kupanuka.
Mifumo hii lazima iundwe ili kudhibiti idadi kubwa ya trafiki na data kwa kuwa mabilioni ya watu wanaitumia kwa wakati mmoja ulimwenguni kote. Huu ndio wakati muundo wa mfumo inaingia kwenye picha.
Mchakato wa kuanzisha usanifu, violesura na data ya mfumo unaokidhi vigezo fulani hujulikana kama muundo wa mfumo. Kupitia mifumo shirikishi na yenye ufanisi, muundo wa mfumo unakidhi matakwa ya biashara au shirika lako.
Baada ya kampuni au shirika lako kuamua vigezo vyake, unaweza kuanza kuvijumuisha katika muundo wa mfumo halisi unaokidhi matakwa ya watumiaji wako.
Iwapo utachagua kwenda na maendeleo ya kawaida, suluhu za kibiashara, au mchanganyiko wa hizo mbili, jinsi unavyosanifu mfumo wako ndio utakaoamua jinsi unavyouunda.
Tutaangalia kwa kina muundo wa mfumo wa kalenda ya matukio ya Twitter katika chapisho hili, kamili na mafunzo. Tuanze.
Hatua ya 1: Orodhesha kesi ya matumizi na vikwazo
Tumia kesi
- Mtumiaji anapakia tweet.
- Huduma hutuma arifa na barua pepe kwa wafuasi wa tweets.
- Rekodi ya matukio ya mtumiaji hutazamwa (shughuli kutoka kwa mtumiaji)
- Mtumiaji anaangalia kalenda ya matukio ya nyumbani (shughuli kutoka kwa watu ambao mtumiaji anafuata)
- Maneno muhimu hutafutwa na mtumiaji.
- Huduma ni kweli kupatikana.
Nje ya upeo
- Tweets hutumwa kwa Twitter Firehose na mitiririko mingine inayotumia huduma hii.
- Huduma huondoa tweets kulingana na mipangilio ya mwonekano wa mtumiaji.
- Ikiwa mtumiaji pia hafuati mtu anayejibiwa, ficha jibu.
- Angalia chaguo la 'ficha retweets'.
- Analytics
Vikwazo & mawazo
Mawazo ya Jimbo
- Trafiki haijatawanywa kwa usawa.
- Inapaswa kuwa rahisi kutuma tweet.
- Isipokuwa una mamilioni ya wafuasi, kutuma tweet kwa wafuasi wako wote kunapaswa kuwa haraka.
- Kuna watumiaji milioni 100 wanaofanya kazi.
- Twiti bilioni 15 kila mwezi au tweets milioni 500 kila siku
- Kila tweet ina fanout ya uwasilishaji 10 kwa wastani.
- Kila siku, fanout hutoa tweets bilioni 5.
- Fanout hutoa tweets bilioni 150 kila mwezi.
- bilioni 250 maombi ya kusoma kila mwezi
- Bilioni 10 za utafutaji wa kila mwezi
Timeline
- Ratiba ya matukio inapaswa kuwa rahisi kuelekeza.
- Twitter inahusu kusoma zaidi kuliko kuandika.
- Boresha kwa usomaji wa haraka wa tweet
- Matumizi ya Tweet ni ya muda mwingi.
tafuta
- Mchakato wa utafutaji unapaswa kuwa wa haraka.
- Inachukua muda kutafuta.
Kuhesabu matumizi
Ukubwa wa kila tweet:
- Kitambulisho cha tweet cha baiti 8
- kitambulisho cha mtumiaji cha baiti 32
- Biti 140 za maandishi
- media - wastani wa 10 KB
- Jumla: ~10 KB
Kila mwezi, TB 150 ya maudhui mapya ya tweet huzalishwa.
- * Twiti milioni 500 kila siku * siku 30 kwa mwezi * KB 10 kwa kila tweet
- Katika miaka mitatu, kumekuwa na 5.4 PB ya maudhui mapya ya tweet.
Kuna maombi 100,000 ya kusoma kila sekunde.
- * (maombi 400 kwa sekunde / maombi bilioni 1 kwa mwezi) bilioni 250 husoma maombi kila mwezi
Kuna tweets 6,000 kila sekunde.
- * (Maombi 400 kwa sekunde / maombi bilioni 1 kwa mwezi) tweets bilioni 15 kila mwezi
Kwenye fanout, tweets elfu 60 hutumwa kila sekunde.
- Fanout hutoa tweets bilioni 150 kila mwezi* (maombi 400 kwa sekunde / maombi bilioni 1 kwa mwezi).
Maombi 4,000 ya habari kila sekunde
- * (maombi 400 kwa sekunde / maombi bilioni 1 kwa mwezi) utafutaji bilioni 10 kila mwezi
Uongofu fulani muhimu
- Kila mwezi, sekunde milioni 2.5 hupita.
- Maombi milioni 2.5 kwa mwezi kwa ombi 1 kwa sekunde
- Maombi milioni 100 kwa mwezi x maombi 40 kwa sekunde
- Maombi bilioni 1 kwa mwezi = maombi 400 kwa sekunde
Hatua ya 2: Mchoro wa kiwango cha juu
Hatua ya 3: Kuelezea vipengele vya msingi
Tunaweza kuhifadhi tweets za mtumiaji mwenyewe ili kujaza kalenda ya matukio ya mtumiaji (shughuli kutoka kwa mtumiaji) katika hifadhidata ya uhusiano ikiwa watawasilisha tweet. Ni vigumu zaidi kuwasilisha tweets na kuendeleza kalenda ya matukio ya nyumbani (shughuli kutoka kwa watu binafsi ambao mtumiaji hufuata).
Hifadhidata ya kawaida ya uhusiano italemewa na kupeperusha tweets kwa wafuasi wote (tweets elfu 60 huwasilishwa kila sekunde). Pengine tutataka kwenda na hifadhi ya data ya kuandika kwa haraka kama hifadhidata ya NoSQL au Akiba ya Kumbukumbu.
Kusoma MB 1 kwa mfuatano kutoka kwa kumbukumbu huchukua takribani sekunde 250, lakini kusoma kutoka SSD huchukua muda mrefu mara 4, na kusoma kutoka kwa diski huchukua mara 80.
Hifadhi ya Vifaa inaweza kutumika kuhifadhi data kama vile picha na video.
- Seva ya Wavuti, ambayo inafanya kazi kama wakala wa nyuma, inapokea tweet kutoka kwa Mteja.
- Ombi linatumwa kwa seva ya Andika API na Seva ya Wavuti.
- API ya Kuandika huhifadhi tweet kwenye hifadhidata ya SQL katika kalenda ya matukio ya mtumiaji.
Huduma ya Fan-Out inawasiliana na API ya Andika, na hufanya kazi zifuatazo.
- Hupata wafuasi wa mtumiaji kwenye Akiba ya Kumbukumbu kwa kuuliza Huduma ya Grafu ya Mtumiaji.
- Kwenye Akiba ya Kumbukumbu, tweet huhifadhiwa katika kalenda ya matukio ya nyumbani ya wafuasi wa mtumiaji.
- Wafuasi 1,000 = 1,000 lookups na kuingiza = O(n) operesheni.
- Tweet imehifadhiwa katika Huduma ya Kielezo cha Utafutaji kwa utafutaji wa haraka.
- Duka la Kipengee linatumika kuhifadhi midia.
- Hutuma arifa za kushinikiza kwa wafuasi kupitia Huduma ya Arifa.
- Ili kutuma arifa bila mpangilio, hutumia Foleni.
Tunaweza kutumia orodha ya asili ya Redis na muundo ufuatao ikiwa Cache yetu ya Kumbukumbu ni Redis:
Rekodi ya matukio ya nyumbani ya mtumiaji itasasishwa kwa tweet mpya, ambayo ingehifadhiwa kwenye Akiba ya Kumbukumbu. Tutatumia API ya REST ifuatayo ya umma:
Rekodi ya matukio ya mtumiaji hutazamwa na mtumiaji.
- Seva ya Wavuti hupokea ombi la kalenda ya matukio kutoka kwa Mteja.
- Ombi linatumwa kwa seva ya Soma API na Seva ya Wavuti.
- API ya Kusoma inaulizia Hifadhidata ya SQL kwa muda wa saa wa mtumiaji.
API ya REST ingefanya kazi sawa na ratiba ya nyumbani, isipokuwa kwamba tweets zote zingetoka kwa mtumiaji badala ya watu wanaofuata.
Mtumiaji hutafuta maneno muhimu:
- Seva ya Wavuti hupokea ombi la utafutaji kutoka kwa Mteja.
- Ombi linatumwa kwa seva ya API ya Utafutaji na Seva ya Wavuti.
Hatua ya 4: Ratiba ya matukio ya Twitter
Uundaji wa kalenda ya matukio ni kazi ngumu. Seva ya kutengeneza kalenda ya matukio inayounganisha kwenye wavuti au seva za programu inahitajika.
Kila mtumiaji anapoingia, huduma ya rekodi ya matukio hudumisha wimbo wa twiti mpya zaidi kutoka kwa watumiaji kwenye jedwali la mfuasi na kusasisha au kuonyesha upya rekodi ya matukio ya mtumiaji.
Hatutekelezi aina yoyote ya mfumo wa cheo hapa; badala yake, tunadhania kuwa tweets 5 bora kutoka kwa wafuasi wa mtumiaji zinawasilishwa katika rekodi ya matukio kwa mpangilio wa wakati wa uundaji. Tunaweza kudumisha mkato wa kuonyesha upya wa tweet 50. Bado tunaacha kuonyesha upya au kuunda rekodi ya matukio baada ya kiwango hicho kufikiwa hadi mtumiaji atakapoonyesha ukurasa upya.
Ucheleweshaji wa hali ya juu na wasiwasi wa utendakazi utatokana na uundaji wa mipasho ya moja kwa moja ya watumiaji. Badala yake, kuunda mtiririko wa nje ya mtandao ambao unaweza kuwasilishwa papo hapo ndiyo njia bora ya kuboresha utendakazi. Endesha seva maalum za rekodi ya matukio ambazo hubandika seva ya programu mara kwa mara ili kuonyesha upya mpasho kulingana na wakati ulipoundwa.
Kanuni ya mpangilio inapaswa kuzingatia ishara muhimu na kutoa uzito ili kuhakikisha kwamba rekodi ya matukio ya mtumiaji haidhibitiwi na nyenzo kutoka kwa akaunti moja au zaidi anazofuata.
Kwa usahihi zaidi, tunaweza kuchagua vipengele vinavyohusiana na umuhimu wa kipengee chochote cha mlisho, kama vile idadi ya zinazopendwa, maoni, zilizoshirikiwa na wakati wa kusasisha. Kila moja ya vigezo hivi inapaswa kutumika kukadiria tweet, na kisha cheo hicho kitumike kuonyesha tweets kwenye kalenda ya matukio.
Je, tunapaswa kuwatahadharisha watumiaji kila wakati maudhui mapya ya mipasho yao ya habari yanapopatikana? Watumiaji wanaweza kupata manufaa kuarifiwa data mpya inapopatikana. Kwenye vifaa vya rununu, hata hivyo, wakati matumizi ya data ni ya gharama kubwa, inaweza kupoteza kipimo data.
Kwa hivyo, tunaweza kuchagua kutosukuma data kwenye vifaa vya mkononi na badala yake kuruhusu watumiaji "Vuta ili Uonyeshe upya" kwa machapisho mapya.
Hatua ya 5: Muundo wa kuongeza
Kikwazo kinachowezekana ni Huduma ya Fanout. Watumiaji wa Twitter walio na mamilioni ya wafuasi watalazimika kusubiri dakika kadhaa ili tweets zao zisambazwe. Hii inaweza kusababisha mashindano na majibu kwa tweet, ambayo tunaweza kuepuka kwa kuagiza upya tweets wakati wa kutumikia.
Tunaweza pia kuzuia kueneza tweets kutoka kwa watu wenye idadi kubwa ya wafuasi. Badala yake, tunaweza kutafuta tweets kutoka kwa watu wanaofuatiliwa sana, kuunganisha matokeo ya utafutaji na matokeo ya kalenda ya nyumbani ya mtumiaji, na kisha kupanga upya tweets wakati wa kutumika.
Maboresho ya ziada ni pamoja na:
- Weka twiti mia chache pekee kwenye Akiba ya Kumbukumbu kwa kila kalenda ya matukio ya nyumbani.
- Katika Akiba ya Kumbukumbu, ni taarifa za kalenda ya matukio ya nyumbani ya watumiaji wanaofanya kazi pekee ndiyo huhifadhiwa.
- Tunaweza kuunda upya mpangilio wa matukio kutoka kwa Hifadhidata ya SQL ikiwa mtumiaji hangekuwa amilifu katika siku 30 zilizopita.
- Ili kujua mtumiaji ni nani, tumia Huduma ya Grafu ya Mtumiaji.
- Ongeza tweets kwenye Cache ya Kumbukumbu kwa kuzipata kutoka kwa Hifadhidata ya SQL.
- Huduma ya Taarifa ya Tweet inaweza tu kuhifadhi tweets za thamani ya mwezi mmoja.
- Katika Huduma ya Maelezo ya Mtumiaji, watumiaji wanaofanya kazi pekee ndio wanaohifadhiwa.
- Ili kupunguza muda wa kusubiri, Kundi la Utafutaji kuna uwezekano mkubwa likahitaji kudumisha tweets kwenye kumbukumbu.
Hitimisho
Ingawa Twitter ni shirika kubwa, ina bora zaidi uelewa wa muundo wa mfumo. Nilijitahidi kukupa muhtasari wa hali ya juu wa kalenda ya matukio ya Twitter.
Natumai umepata habari muhimu kutoka kwayo na unaweza kuitumia vizuri.
Acha Reply