
System Design Trainer ni Nini?
System Design Trainer ni ubao mweupe shirikishi wa kufanya mazoezi ya mahojiano ya usanifu wa mifumo. Unachagua tukio, unaburuta vipengele vya AWS au Azure kwenye turubai, unaviunganisha kuwa usanifu, kisha unaendesha uigaji wa uwezo wa mfumo wenye matokeo thabiti.
Kiigaji kinakadiria kiasi cha trafiki ambacho kila kipengele kinaweza kuhudumia, kinabainisha kizuizi cha mfumo, na kuangazia hatari za usanifu. Usanifu unapokuwa tayari, Jev inaweza kutathmini maamuzi ambayo hayawezi kuhukumiwa kwa hesabu za uwezo pekee, ikiwa ni pamoja na upanuzi, kutegemeka, usanifu wa data, na maelezo yako yaliyoandikwa.
Vipengele Muhimu
- Turubai shirikishi ya usanifu: Ubao mweupe umejengwa kwa kutumia React Flow kupitia
@xyflow/react. - Mazoezi yenye muundo: Mradi una viwango 15 katika sura nne.
- Uundaji wa uwezo wa mfumo moja kwa moja: Kila nodi huonyesha matumizi na makadirio ya idadi ya watumiaji inayoweza kuhudumia.
- Uchunguzi wa usanifu: Kiigaji huashiria sehemu moja za kushindwa, ukosefu wa visawazisha mzigo, na wateja waliounganishwa moja kwa moja kwenye hifadhidata.
- Makadirio ya gharama na upatikanaji: Mfumo hutoa viashiria vya ziada pamoja na hesabu za upitishaji.
- Tathmini kama ya mhoji: Jev hupima upanuzi, kutegemeka, usanifu wa data, na maelezo yaliyoandikwa, kisha hupendekeza cha kuboresha baadaye.
- Teknolojia maalum: Unaweza kuingiza teknolojia kama Kafka, MongoDB, au NGINX. Jev huainisha jukumu lao la usanifu ili programu iweze kuzipa wasifu wa uwezo.
- Maendeleo ya ndani: Usanifu na maendeleo ya matukio huhifadhiwa kwenye kivinjari.
- Uchezaji huru: Ubao mweupe wazi unapatikana nje ya viwango vyenye muundo.
Sakinisha na Endesha Mradi
1. Sakinisha vitegemezi
Clone au pakua hazina, fungua saraka yake kwenye terminali, kisha usakinishe vitegemezi vya npm:
npm install
2. Unda faili la mazingira ya ndani
Nakili kiolezo cha mazingira kilichojumuishwa kuwa .env.local:
cp .env.example .env.local
3. Sanidi Jev
Ili upokee majibu halisi ya Jev, ongeza thamani ya TYPESAFE_API_KEY kwenye .env.local. Jev imetekelezwa katika lib/server/jev.ts kwa kutumia @typesafe-ai/sdk.
Programu bado inaweza kuendeshwa bila ufunguo wa API. Katika hali hiyo, majibu ya Jev hubadilishwa na jibu la kuiga lililoandikwa wazi, hivyo kukuwezesha kuchunguza mtiririko mwingine wa kazi bila tathmini ya nje.
4. Anzisha seva ya uendelezaji
npm run dev
Fungua anwani ya ndani iliyoripotiwa na seva ya uendelezaji ili kuanza kutumia mkufunzi.
Kamilisha Zoezi Lako la Kwanza la Usanifu wa Mfumo
- Chagua swali. Chagua tukio kama vile kubuni miundombinu ya watumiaji milioni moja. Kila tukio hutoa idadi maalum ya watumiaji na mahitaji.
- Soma malengo. Viwango vina malengo yanayohitajika na malengo ya ziada ya bonasi ambayo hukaguliwa unapoendesha usanifu.
- Ongeza vipengele vya wingu. Buruta vipengele vinavyofaa vya AWS au Azure kwenye ubao mweupe.
- Unganisha usanifu. Unda njia za maombi na data kati ya wateja, vipengele vya mtandao, huduma za programu, akiba, foleni, na hifadhidata kulingana na tukio.
- Endesha usanifu. Kagua matumizi, makadirio ya watumiaji wanaoweza kuhudumiwa, upatikanaji, gharama, na maonyo ya usanifu.
- Rekebisha kizuizi. Sasisha usanifu kulingana na vipengele vilivyozidi uwezo au maonyo ya muundo, kisha uendeshe tena.
- Omba maoni ya Jev. Tuma usanifu na maelezo yaliyoandikwa ili kutathminiwa unapokuwa tayari.
Upimaji wa viwango hufanyaje kazi
Kukamilisha kila lengo linalohitajika hupata nyota moja. Kila lengo la bonasi hupata nyota moja ya ziada. Nyota hutoa XP na huchangia kwenye cheo chako, huku maendeleo yakihifadhiwa kwenye kivinjari.
Sura ya 4 inakuomba ujenge upya usanifu wa marejeleo kutoka kwenye Azure Architecture Center. Baada ya kukamilisha mojawapo ya viwango hivi, mkufunzi huweka kiungo cha usanifu asilia.
Elewa Muundo wa Uwezo
Injini ya uwezo iko katika lib/simulate.ts. Ina matokeo thabiti na haitumii AI. Mzigo wa kilele unatokana na tukio kwa kutumia uhusiano ufuatao:
DAU × maombi kwa siku ÷ 86,400 × kipengele cha kilele
Muundo huo hutenganisha mzigo huu kuwa usomaji na uandishi, kisha huusambaza kutoka kwenye nodi ya Users kupitia grafu iliyounganishwa.
Jinsi vipengele vya kawaida vinavyoathiri trafiki
- CDN: Hufyonza sehemu ya trafiki ambayo tukio limebainisha kuwa inaweza kuwekwa akiba ukingoni.
- Akiba: Hufyonza usomaji kulingana na kiwango cha mafanikio ya akiba. Muundo huu unaunga mkono uwekaji wa akiba-aside kama ndugu na uwekaji wa ndani ya mtiririko.
- Foleni: Huondoa maandishi kutoka kwenye njia ya ulandanishi na kuyasawazisha kuelekea kiwango cha wastani cha maombi.
- Vipengele ndugu: Vipengele vya aina moja hugawanya mzigo kwa usawa. Kwa mfano, kisawazisha mzigo kilichounganishwa na vikundi viwili vya programu husambaza trafiki kati yao.
- Hifadhidata za SQL: Uwezo wa kuandika unawekewa kikomo na primary moja.
- Hifadhidata za NoSQL: Uwezo wa kuandika huongezeka kulingana na partitions.
Kila nodi huripoti matumizi na makadirio ya inasaidia takriban watumiaji N, yaliyokokotolewa kwa kugawanya idadi ya watumiaji wa hali kwa matumizi. Uwezo wa jumla wa mfumo huamuliwa na kizuizi chenye makadirio ya chini zaidi ya watumiaji kinachoweza kusaidiwa.
Iterationi ya Mfano wa Muundo
Tuseme muundo unatuma trafiki yote ya mteja moja kwa moja kwenye kipengele kimoja cha programu, kisha kwenye hifadhidata. Kuendesha uigaji kunaweza kuonyesha programu au hifadhidata kama kizuizi, pamoja na maonyo ya kutegemewa.
Kisha unaweza kurekebisha usanifu kwa kuongeza usambazaji, uhifadhi wa muda, uchakataji wa kusubiri, au vipengele vya data vinavyofaa. Kwa mfano, vikundi shirikishi vya programu vilivyo nyuma ya kisawazisha mzigo vinaweza kugawanya trafiki ya programu, akiba inaweza kupunguza usomaji wa hifadhidata kulingana na kiwango chake cha kupata data, na foleni inaweza kuhamisha uandishi kutoka kwenye njia ya ulandanishi. Endesha modeli tena baada ya kila badiliko ili kuona kama kizuizi kimehamia sehemu nyingine.
Makadirio ya juu zaidi ya uwezo hayafanyi muundo kuwa sahihi moja kwa moja. Tumia Jev kutathmini mabadilishano katika kutegemewa, muundo wa data, uwezo wa kupanuka, na mantiki iliyo nyuma ya chaguo zako.
Tumia Jev kwa Ufanisi
Kiigaji cha kiamuzi huipa Jev nambari zake zilizokokotolewa kama ukweli. Kisha Jev hushughulikia hukumu ambazo haziwezi kupunguzwa kuwa fomula za utendaji.
- Alama za tathmini: Hukagua uwezo wa kupanuka, kutegemewa, muundo wa data, na maelezo yaliyoandikwa.
- Chaguo la uboreshaji: Huchagua kinachopaswa kuboreshwa baadaye.
- Hukumu za orodha hakiki: Hutoa Noul moja kwa kila kipengee cha orodha hakiki ya hali.
- Uainishaji wa kipengele maalum: Hupa teknolojia unayoingiza jukumu la usanifu, na hivyo kumwezesha mkufunzi kutumia wasifu unaolingana wa uwezo.
Kwa mrejesho bora zaidi, fanya maelezo yaliyoandikwa yawe wazi. Eleza mtiririko wa trafiki, mawazo ya upanuzi, ushughulikiaji wa hitilafu, mifumo ya kusoma na kuandika, na kwa nini kila kipengele kikuu kipo.
Vidokezo vya Juu
Boresha kizuizi, si kila kipengele
Mfumo unaweza kusaidia idadi ya watumiaji iliyo sawa tu na kipengele chake kinachowekea kikomo. Anza na nodi inayoonyesha makadirio ya chini zaidi ya watumiaji wanaoweza kusaidiwa. Baada ya kubadilisha muundo, endesha uigaji tena kwa sababu kuondoa kizuizi kimoja kunaweza kufichua kingine.
Linganisha njia za ulandanishi na zisizo za ulandanishi
Foleni huondoa uandishi kwenye njia ya maombi ya ulandanishi na kuusawazisha kulingana na mzigo wa wastani. Tumia modeli kulinganisha njia ya moja kwa moja ya kuandika na usanifu wenye foleni wakati hali inaruhusu uchakataji usio wa ulandanishi.
Jaribu uwekaji wa akiba
Kiigaji hutambua akiba zinazotumiwa kama vipengele shirikishi katika muundo wa cache-aside na akiba zilizowekwa ndani ya njia. Angalia jinsi uwekaji na kiwango cha kupata data vinavyoathiri trafiki ya usomaji inayokwenda kwenye vipengele vya chini.
Chunguza maonyo ya muundo
Usizingatie matumizi pekee. Kagua maeneo ya pekee ya hitilafu, visawazisha mizigo vilivyokosekana, na miunganisho ya moja kwa moja kutoka kwa mteja hadi hifadhidata. Maonyo haya yanaweza kufichua udhaifu wa muundo unaohusiana na kutegemewa au usalama hata wakati uwezo ghafi unatosha.
Kagua chanzo kilicho nyuma ya nambari za katalogi
Data ya uwezo, upatikanaji, na gharama imefafanuliwa katika lib/catalog.ts. Kila nambari ina chanzo kinachoonyeshwa kwenye kadi ya sifa za kipengele. Thamani zimeainishwa kama vikomo rasmi, SLA rasmi, viwango vya muuzaji, mawazo, au huduma zisizo na kikomo kilichochapishwa.
- Kikomo rasmi: Kiwango kilichochapishwa cha AWS au Azure, kama vile kikomo cha maombi cha kiwango cha akaunti.
- SLA rasmi: Ahadi ya muuzaji kuhusu muda wa kila mwezi ambao huduma itapatikana.
- Kiwango cha muuzaji: Kielelezo cha utendaji kilichochapishwa ambacho hakijahakikishwa.
- Dhana: Thamani iliyowekwa kwenye modeli wakati hakuna takwimu ya muuzaji inayopatikana. Mradi pia huchukulia gharama zote kuwa dhana.
- Hakuna kikomo kilichochapishwa: Huduma iliyowekwa kwenye modeli kuwa inapanda kwa kujitegemea, hivyo haiwi kizuizi.
README inasema kuwa vyanzo hivi vilikaguliwa mara ya mwisho mnamo Septemba 2026. Vikomo vya wingu hubadilika, na vingi vinaweza kuongezwa, kwa hiyo matokeo ya uigaji yanapaswa kuchukuliwa kuwa makadirio badala ya dhamana.
Chunguza au panua hali
Ufafanuzi wa hali umehifadhiwa katika lib/scenarios.ts, huku viwango 15 vilivyoundwa vikiwa vimefafanuliwa katika lib/levels.ts. Ongeza hali katika lib/scenarios.ts unapopanua vidokezo vya mazoezi vinavyopatikana.
Elewa uhifadhi wa kivinjari
Miundo ya Canvas huhifadhiwa kwa kila hali katika localStorage, na maendeleo pia huhifadhiwa kwenye kivinjari. Kumbuka kuwa hifadhi ya kivinjari ni ya wasifu na mazingira ya sasa ya kivinjari pekee.
Hitimisho
System Design Trainer huunganisha Canvas shirikishi ya usanifu wa wingu, uundaji wa modeli ya uwezo unaoweza kuamuliwa, malengo yaliyoundwa, na ukaguzi wa muundo unaotegemea Jev. Tumia kiigaji kujaribu tabia zinazoweza kupimwa, tumia maonyo kugundua matatizo ya muundo, na tumia Jev kuboresha mantiki na uchanganuzi wa mabadilishano unaotarajiwa katika mahojiano ya usanifu wa mfumo.
