Tha tagraidhean air-loidhne air sgèile mhòr air tighinn gu mòr anns an dà dheichead a dh’ fhalbh. Tha na h-innleachdan sin air ar beachdan mu leasachadh bathar-bog atharrachadh. Tha Facebook, Instagram, agus Twitter, mar eisimpleir, uile nan àrd-ùrlaran scalable.
Feumaidh na siostaman sin a bhith air an togail gus tomhas mòr de thrafaig is dàta a riaghladh leis gu bheil na billeanan de dhaoine gan cleachdadh aig an aon àm air feadh an t-saoghail. Seo an uair dealbhadh siostam a-steach don dealbh.
Canar dealbhadh siostam ris a’ phròiseas airson ailtireachd, eadar-aghaidh agus dàta a stèidheachadh airson siostam a choinnicheas ri slatan-tomhais sònraichte. Tro shiostaman co-leanailteach agus èifeachdach, bidh dealbhadh siostam a’ sàsachadh iarrtasan do ghnìomhachas no do bhuidheann.
Aon uair ‘s gu bheil do chompanaidh no do bhuidheann air na slatan-tomhais aca a dhearbhadh, faodaidh tu tòiseachadh air an toirt a-steach do dhealbhadh siostam fiosaigeach a choinnicheas ri iarrtasan do luchd-cleachdaidh.
Co-dhiù a roghnaicheas tu a dhol le leasachadh sònraichte, fuasglaidhean malairteach, no measgachadh den dhà, bidh mar a dhealbhaicheas tu an siostam agad a’ dearbhadh mar a thogas tu e.
Bheir sinn sùil mhionaideach air dealbhadh siostam loidhne-tìm Twitter san dreuchd seo, le oideachadh. Feuch an tòisich sinn.
Ceum 1: Thoir cunntas air cùis cleachdaidh & cuingeadan
Cleachd cùis
- Bidh neach-cleachdaidh a 'luchdachadh suas tweet.
- Bidh an t-seirbheis a’ cur fiosan putaidh agus puist-d gu luchd-leantainn tweets.
- Thathas a’ coimhead air loidhne-tìm an neach-cleachdaidh (gnìomh bhon neach-cleachdaidh)
- Bidh an neach-cleachdaidh a’ coimhead air loidhne-tìm na dachaigh (gnìomh bho dhaoine a tha an neach-cleachdaidh a’ leantainn)
- Bidh an cleachdaiche a' rannsachadh prìomh fhaclan.
- Tha an t-seirbheis dha-rìribh ruigsinneach.
A-mach às an raon
- Thèid tweets a chuir chun Twitter Firehose agus sruthan eile a’ cleachdadh na seirbheis seo.
- Bidh an t-seirbheis a’ toirt air falbh tweets stèidhichte air roghainnean faicsinneachd an neach-cleachdaidh.
- Mura h-eil an neach-cleachdaidh cuideachd a’ leantainn an neach ris an deach freagairt, falaich an fhreagairt.
- Thoir sùil air an roghainn 'Hide retweets'.
- Analytics
Cuingeachaidhean & barailean
Barailean Stàite
- Chan eil an trafaig air a sgapadh gu cothromach.
- Bu chòir dha a bhith sìmplidh tweet a chuir.
- Mura h-eil milleanan de luchd-leantainn agad, bu chòir tweet a chuir chun luchd-leantainn agad gu lèir a bhith sgiobalta.
- Tha 100 millean neach-cleachdaidh gnìomhach ann.
- 15 billean tweets gach mìos no 500 millean tweets gach latha
- Gu cuibheasach tha fanout de 10 lìbhrigeadh aig gach tweet.
- Gach latha, bidh fanout a’ lìbhrigeadh 5 billean tweets.
- Bidh Fanout a’ lìbhrigeadh 150 billean tweets gach mìos.
- 250 billean iarrtas leughaidh mìosail
- 10 billean sgrùdadh mìosail
Loidhne-tìm
- Bu chòir gum biodh an loidhne-tìm furasta a sheòladh.
- Tha barrachd mu dheidhinn leughadh na sgrìobhadh air Twitter.
- Optimize airson leughadh tweet sgiobalta
- Tha caitheamh tweet a’ toirt ùine.
Rannsachadh
- Bu chòir don phròiseas sgrùdaidh a bhith luath.
- Tha e a 'toirt ùine airson rannsachadh.
Obraich a-mach cleachdadh
Meud gach tweet:
- ID tweet 8 bytes
- ID cleachdaiche 32 bytes
- 140 byte teacsa
- meadhanan - cuibheasachd de 10 KB
- Iomlan: ~10 KB
Gach mìos, thèid 150 TB de shusbaint tweet ùr a chruthachadh.
- * 500 millean tweets gach latha * 30 latha gach mìos * 10 KB gach tweet
- Ann an trì bliadhna, tha 5.4 PB de shusbaint tweet ùr air a bhith ann.
Tha 100,000 iarrtas leughaidh gach diog.
- * (400 iarrtas gach diog / 1 billean iarrtas gach mìos) 250 billean iarrtas air a leughadh gach mìos
Tha 6,000 tweets gach diog.
- * (400 iarrtas gach diog / 1 billean iarrtas gach mìos) 15 billean tweets gach mìos
Air fanout, thèid 60 mìle tweets a chuir a h-uile diog.
- Bidh Fanout a’ lìbhrigeadh 150 billean tweets gach mìos * (400 iarrtas gach diog / 1 billean iarrtas gach mìos).
4,000 iarrtas airson fiosrachaidh gach diog
- * (400 iarrtas gach diog / 1 billean iarrtas gach mìos) 10 billean sgrùdadh gach mìos
Cuid de thionndadh feumail
- Gach mìos, thèid 2.5 millean diog seachad.
- 2.5 millean iarrtas gach mìos aig 1 iarrtas gach diog
- 100 millean iarrtas gach mìos x 40 iarrtas gach diog
- 1 billean iarrtas gach mìos = 400 iarrtas gach diog
Ceum 2: Diagram àrd-ìre
Ceum 3: Mìneachadh prìomh phàirtean
Dh’ fhaodadh sinn tweets an neach-cleachdaidh fhèin a shàbhaladh gus loidhne-tìm an neach-cleachdaidh (gnìomh bhon neach-cleachdaidh) a chuir ann an stòr-dàta dàimh ma chuireas iad tweet a-steach. Tha e nas duilghe tweets a lìbhrigeadh agus loidhne-tìm na dachaigh a leasachadh (gnìomh bho dhaoine fa-leth a bhios an neach-cleachdaidh a’ leantainn).
Bhiodh stòr-dàta àbhaisteach air a dhol thairis le bhith a’ cuir tweets a-mach chun a h-uile neach-leantainn (60 mìle tweets air an lìbhrigeadh gach diog). Is dòcha gum bi sinn airson a dhol le stòradh dàta a sgrìobhas gu sgiobalta mar stòr-dàta NoSQL no Memory Cache.
Bheir leughadh 1 MB ann an òrdugh bhon chuimhne timcheall air 250 microseconds, ach bheir leughadh bho SSD 4 tursan nas fhaide, agus bheir leughadh bho diosc 80 tursan nas fhaide.
Faodar Stòr Rudan a chleachdadh gus dàta leithid ìomhaighean agus bhideothan a stòradh.
- Bidh am frithealaiche lìn, a tha ag obair mar neach-ionaid cùil, a’ faighinn tweet bhon neach-dèiligidh.
- Thèid an t-iarrtas a chuir chun fhrithealaiche Write API leis an t-seirbheisiche lìn.
- Bidh an Write API a’ sàbhaladh an tweet gu stòr-dàta SQL ann an loidhne-tìm an neach-cleachdaidh.
Bidh an Write API a’ cur fios chun t-Seirbheis Fan-Out, agus bidh e a’ coileanadh nan gnìomhan a leanas.
- A’ lorg luchd-leanmhainn an neach-cleachdaidh anns an Memory Cache le bhith a’ ceasnachadh an t-Seirbheis Graf Cleachdaiche.
- Air Tasgadh Cuimhne, thèid an tweet a shàbhaladh ann an loidhne-tìm dachaigh luchd-leantainn an neach-cleachdaidh.
- 1,000 neach-leantainn = 1,000 lorg agus cuir a-steach = obrachadh O(n).
- Tha an tweet air a shàbhaladh anns an t-Seirbheis Clàr-amais Rannsachaidh airson sgrùdadh luath.
- Tha Stòr nan Rudan air a chleachdadh airson meadhanan a stòradh.
- A’ cur rabhaidhean putaidh gu luchd-leantainn tron t-Seirbheis Fiosrachaidh.
- Gus rabhaidhean a chuir a-mach gun sioncronaich, bidh e a’ cleachdadh Ciudha.
Is urrainn dhuinn liosta Redis dùthchasach a chleachdadh leis an structar a leanas mas e Redis an Cache Cuimhne againn:
Bhiodh loidhne-tìm dachaigh an neach-cleachdaidh air ùrachadh leis an tweet ùr, a bhiodh air a stòradh anns an Memory Cache. Cleachdaidh sinn an API REST poblach a leanas:
Bidh an neach-cleachdaidh a’ coimhead air loidhne-tìm an neach-cleachdaidh.
- Bidh am frithealaiche lìn a’ faighinn iarrtas loidhne-tìm bhon neach-dèiligidh.
- Thèid an t-iarrtas a chuir chun fhrithealaiche Read API leis an t-seirbheisiche lìn.
- Bidh an Read API a’ ceasnachadh Stòr-dàta SQL airson clàr-ama an neach-cleachdaidh.
Bhiodh an REST API ag obair san aon dòigh ri loidhne-tìm na dachaigh, ach a-mhàin gum biodh a h-uile tweets a’ tighinn bhon neach-cleachdaidh seach na daoine a leanas iad.
Bidh neach-cleachdaidh a’ lorg prìomh fhaclan:
- Bidh am frithealaiche lìn a’ faighinn iarrtas sgrùdaidh bhon neach-dèiligidh.
- Thèid an t-iarrtas a chuir chun fhrithealaiche Search API leis an t-seirbheisiche lìn.
Ceum 4: Loidhne-tìm Twitter
Tha cruthachadh loidhne-tìm na obair dhoirbh. Tha feum air frithealaiche gineadh loidhne-tìm a tha a’ ceangal ris an lìon no frithealaichean tagraidh.
Gach uair a chlàraicheas neach-cleachdaidh a-steach, bidh an t-seirbheis loidhne-tìm a’ cumail sùil air na tweets as ùire bhon luchd-cleachdaidh ann an clàr an neach-leantainn agus ag ùrachadh no ag ùrachadh loidhne-tìm an neach-cleachdaidh.
Chan eil sinn a 'cur an gnìomh siostam rangachadh sam bith an seo; an àite sin, tha sinn a’ gabhail ris gu bheil na 5 tweets as àirde bho luchd-leantainn an neach-cleachdaidh air an taisbeanadh anns an loidhne-tìm ann an òrdugh ùine cruthachaidh. Is urrainn dhuinn gearradh ùrachaidh 50-tweet a chumail. Sguir sinn fhathast ag ùrachadh no a’ togail loidhne-tìm às deidh an stairsneach sin a ruighinn gus an ùraich an neach-cleachdaidh an duilleag.
Thig draghan àrd latency agus coileanaidh bho bhith a’ cruthachadh biadhadh luchd-cleachdaidh beò. An àite sin, is e cruthachadh sruth far-loidhne a ghabhas a thaisbeanadh sa bhad an dòigh as fheàrr air coileanadh a leasachadh. Ruith frithealaichean loidhne-tìm sònraichte a bhios a’ ping frithealaiche an tagraidh gu cunbhalach gus am biadh ùrachadh a rèir an ùine a chaidh a chruthachadh.
Bu chòir don algorithm rangachadh aire a thoirt do chomharran deatamach agus cuideam a thoirt seachad gus dèanamh cinnteach nach bi loidhne-tìm neach-cleachdaidh fo smachd stuthan bho aon no barrachd de na cunntasan a leanas iad.
Nas mionaidiche, is urrainn dhuinn feartan a thaghadh co-cheangailte ri iomchaidheachd stuth beathachaidh sam bith, leithid an àireamh de rudan a tha dèidheil air, beachdan, earrannan agus ùine ùrachadh. Bu chòir gach aon de na slatan-tomhais sin a chleachdadh gus an tweet a mheas, agus an uairsin bu chòir an ìre sin a chleachdadh gus tweets a nochdadh air an loidhne-tìm.
Am bu chòir dhuinn an-còmhnaidh rabhadh a thoirt do luchd-cleachdaidh nuair a bhios susbaint ùr airson na naidheachdan aca ri fhaighinn? Bidh e na bhuannachd do luchd-cleachdaidh fios fhaighinn nuair a bhios dàta ùr ri fhaighinn. Air innealan gluasadach, ge-tà, nuair a tha cleachdadh dàta gu math cosgail, faodaidh e leud-bann a chaitheamh.
Mar thoradh air an sin, is urrainn dhuinn roghnachadh gun a bhith a’ putadh dàta gu innealan gluasadach agus an àite sin leigeil le luchd-cleachdaidh “Pull to Refresh” a tharraing airson puist ùra.
Ceum 5: Dealbhadh sgèile
Is e cnap-starra a dh’ fhaodadh a bhith ann an Seirbheis Fanout. Feumaidh luchd-cleachdaidh Twitter le milleanan de luchd-leantainn feitheamh grunn mhionaidean airson na tweets aca a sgaoileadh. Dh’ fhaodadh seo rèis adhbhrachadh le freagairtean don tweet, a dh’ fhaodadh sinn a sheachnadh le bhith ag ath-òrdachadh na tweets aig àm frithealaidh.
Dh’ fhaodadh sinn cuideachd casg a chuir air sgaoileadh tweets bho dhaoine le àireamh mhòr de luchd-leantainn. An àite sin, is dòcha gun dèan sinn sgrùdadh airson tweets bho dhaoine air a bheil mòran a’ leantainn, na toraidhean rannsachaidh fhilleadh a-steach le toraidhean loidhne-tìm dachaigh an neach-cleachdaidh, agus an uairsin na tweets ath-òrdachadh aig àm frithealaidh.
Am measg leasachaidhean a bharrachd tha:
- Cùm dìreach beagan cheudan tweets anns an Memory Cache airson gach loidhne-tìm dachaigh.
- Anns an Memory Cache, chan eil ach fiosrachadh loidhne-tìm dachaigh luchd-cleachdaidh gnìomhach air a shàbhaladh.
- 'S urrainn dhuinn an eachdraidh ath-chruthachadh bho Stòr-dàta SQL mura robh cleachdaiche air a bhith gnìomhach anns na 30 latha roimhe sin.
- Gus faighinn a-mach cò an neach-cleachdaidh a th’ ann, cleachd an t-Seirbheis Graf Cleachdaiche.
- Cuir na tweets ris an Memory Cache le bhith gan toirt air ais bho Stòr-dàta SQL.
- Chan urrainn don t-Seirbheis Fiosrachaidh Tweet ach luach mìos de thweets a shàbhaladh.
- Anns an t-Seirbheis Fiosrachaidh Cleachdaiche, chan eil ach luchd-cleachdaidh gnìomhach air an sàbhaladh.
- Gus latency a chumail ìosal, tha e coltach gum feumadh an Buidheann Rannsachaidh na tweets a chumail mar chuimhneachan.
Co-dhùnadh
Ged a tha Twitter na bhuidheann mòr, tha e nas fheàrr tuigse air dealbhadh siostam. Rinn mi mo dhìcheall sealladh àrd-ìre a thoirt dhut air loidhne-tìm Twitter.
Tha mi an dòchas gun d’ fhuair thu fiosrachadh feumail bhuaithe agus gun urrainn dhut a chuir gu deagh fheum.
Leave a Reply