မာတိကာ[ဖျောက်][ရှိုး]
- 1. စနစ်ဒီဇိုင်းက ဘာကိုဆိုလိုတာလဲ။
- 2. စနစ်ဒီဇိုင်နာတစ်ယောက်ရဲ့ အရေးကြီးဆုံးလက္ခဏာတွေက ဘာတွေလဲ။
- 3. CAP သီအိုရီအတိအကျကဘာလဲ။
- 4. Load Balancing ဖြင့် သင်မည်သို့နားလည်သနည်း။
- 5. asynchronous programming နှင့် parallel programming အကြား ကွာခြားချက်ကား အဘယ်နည်း။
- 6. အလျားလိုက် နှင့် ဒေါင်လိုက် အတိုင်းအတာ ကွာခြားချက် မှာ အဘယ်နည်း။
- 7. ကြာမြင့်ချိန်၊ ဖြတ်သန်းမှုနှင့် စနစ်ရရှိနိုင်မှုတို့ကို အတိအကျဆိုလိုသည်။
- 8. ACID ဂုဏ်သတ္တိများကား အဘယ်နည်း။
- ၉။ အတိအကျ ခွဲထုတ်ခြင်းဆိုသည်မှာ အဘယ်နည်း။
- 10. CDN ဆိုတာဘာလဲ။
- 11. အဘယ်ကြောင့် CDN ကို အသုံးပြုသနည်း။
- 12. Sharding နှင့် partitioning အကြားကွာခြားချက်ကဘာလဲ။
- 13. အတိအကျ သိမ်းဆည်းခြင်းဆိုသည်မှာ အဘယ်နည်း။
- 14. CDN edge servers များသည် အဘယ်နည်း။
- 15. စနစ်ဒီဇိုင်းအတွက် မတူညီသော ကိုက်ညီမှုပုံစံများကား အဘယ်နည်း။
- 16. အကောင်းမြင်သော့ခတ်ခြင်းဖြင့် သင်ဘာကိုဆိုလိုသနည်း။
- 17. "ခေါင်းဆောင်ရွေးကောက်ပွဲ" က ဘာကိုဆိုလိုတာလဲ။
- 18. TinyURL နှင့်တူသော URL အတိုချုံ့ခြင်းဝန်ဆောင်မှုကို ဒီဇိုင်းရေးဆွဲခြင်းအတွက် သင့်ချဉ်းကပ်ပုံမှာ အဘယ်နည်း။
- 19. twitter ကို ဒီဇိုင်းဆွဲဖို့ သင်ဘယ်လို ချဉ်းကပ်လဲ။
- 20. Facebook အတွက် Newsfeed စနစ်ကို ဖန်တီးပါ။
- 21. စနစ်တစ်ခု၏ အခြေခံပိုင်ဆိုင်မှုဆိုသည်မှာ အဘယ်နည်း။
- 22. IP Address Affinity Technique ဖြင့် Load Balancing ဆိုသည်မှာ အဘယ်နည်း။
- 23. Cache Replacement (သို့မဟုတ် Eviction Policy) algorithms များသည် အဘယ်နည်း။
- 24. ဖြန့်ဝေပေးငွေကို အတိအကျဆိုလိုသည်။
- 25။ အတိအကျ ငတ်မွတ်ခြင်းဆိုသည်မှာ အဘယ်နည်း။
- ကောက်ချက်
သင်မစတင်မီကျွန်ုပ်တို့၏စာဖတ်ရန်အကြံပြုပါသည်။ စနစ်ဒီဇိုင်းဆိုင်ရာ မိတ်ဆက်လမ်းညွှန် သင်၏အခြေခံအသိပညာပြန်လည်ဆန်းသစ်ရန်။
စနစ်ဒီဇိုင်းအသိပညာလိုအပ်သော ရာထူးတစ်ခုအတွက် အင်တာဗျူးဖြေသည့်အခါတွင် သင့်နောက်ခံအကြောင်းပြောရန်နှင့် ရှုပ်ထွေးသောစနစ်များကို ဖော်ထုတ်ရန် သင့်စွမ်းရည်ကို ပြသရန် အခွင့်အရေးရှိသည်။
ဖြစ်နိုင်ချေရှိသော အလုပ်ရှင်နှင့် စကားပြောဆိုသောအခါတွင် သင်၏ကျွမ်းကျင်မှုကို ဖော်ပြသည့်နည်းလမ်းက သင်သည် ရာထူးအတွက် အရည်အချင်းပြည့်မီသော ကိုယ်စားလှယ်လောင်းတစ်ဦးဖြစ်ကြောင်း သက်သေပြရန် ကူညီပေးနိုင်ပါသည်။
အခြေခံ ဒီဇိုင်းသဘောတရားများကို လေ့လာပြီး ၎င်းတို့နှင့်ပတ်သက်သော စုံစမ်းမေးမြန်းမှုများကို သင်မည်ကဲ့သို့တုံ့ပြန်မည်ကို စဉ်းစားခြင်းဖြင့် သင့်အလုပ်အင်တာဗျူးအတွက် ပြင်ဆင်နိုင်သည်။ သင်၏နောက်လာမည့်အင်တာဗျူးအတွက် ပြင်ဆင်ရာတွင်ကူညီရန် ဤပို့စ်တွင် ပုံမှန်စနစ်ဒီဇိုင်းဆိုင်ရာ အင်တာဗျူးမေးခွန်းများနှင့် အဖြေအချို့ကို ကျွန်ုပ်တို့ ကျော်ဖြတ်ပါမည်။
1. စနစ်ဒီဇိုင်းက ဘာကိုဆိုလိုတာလဲ။
မော်ဂျူးများ၊ ဗိသုကာပညာ၊ အစိတ်အပိုင်းများနှင့် ၎င်းတို့၏ အင်တာဖေ့စ်များ အပါအဝင် စနစ်သွင်ပြင်လက္ခဏာများ ထူထောင်ခြင်းလုပ်ငန်းစဉ်ကို ကြိုတင်သတ်မှတ်ထားသော စံနှုန်းများအပေါ် အခြေခံ၍ ဒေတာကို စနစ်ဒီဇိုင်းဟု ခေါ်သည်။
ကုမ္ပဏီတစ်ခု သို့မဟုတ် အဖွဲ့အစည်းတစ်ခု၏ သီးခြားရည်မှန်းချက်များနှင့် ရည်မှန်းချက်များ ပြည့်မီရန် စနစ်များကို သတ်မှတ်ခြင်း၊ ဖန်တီးခြင်းနှင့် ဒီဇိုင်းဆွဲခြင်းလုပ်ငန်းစဉ်ဖြစ်သည်။ စနစ်ဒီဇိုင်းသည် စနစ်ခွဲခြမ်းစိတ်ဖြာမှု၊ ဗိသုကာပုံစံများ၊ API များ၊ ဒီဇိုင်းပုံစံများနှင့် ကုဒ်ရေးခြင်းထက် ၎င်းကို ပေါင်းစပ်ထားသည်။
2. စနစ်ဒီဇိုင်နာတစ်ယောက်ရဲ့ အရေးကြီးဆုံးလက္ခဏာတွေက ဘာတွေလဲ။
- အသုံးပြုသူအပြန်အလှန်ဆက်သွယ်မှု
- ပြင်ပ API ခေါ်ဆိုမှု
- အော့ဖ်လိုင်း လုပ်ငန်းစဉ်များ
3. CAP သီအိုရီအတိအကျကဘာလဲ။
CAP (Consistency-Availability-Partition Tolerance) သီအိုရီအရ၊ ဖြန့်ဝေမှုစနစ်သည် C၊ A နှင့် P အားလုံးကို တစ်ချိန်တည်းတွင် အာမခံမပေးနိုင်ပါ။ အာမခံချက် သုံးခုအနက်မှ အများဆုံး နှစ်ခုသာ ပေးနိုင်သည် ။ ဒါကို နားလည်နိုင်ဖို့ ဖြန့်ဝေထားတဲ့ ဒေတာဘေ့စ်စနစ်ကို အသုံးပြုကြပါစို့။
- တစ်သမတ်တည်း- ဒေတာဘေ့စ်အရောင်းအ၀ယ်တစ်ခုပြီးသည်နှင့် တစ်သမတ်တည်းရှိနေရမည်ဟု ၎င်းက သတ်မှတ်သည်။ ဥပမာအားဖြင့်၊ ဒေတာဘေ့စ်မွမ်းမံမှုအပြီးတွင် မေးမြန်းမှုအားလုံးသည် တူညီသောတုံ့ပြန်မှုကို ပြန်ပေးသင့်သည်။
- ရရှိနိုင်မှု- ဒေတာဘေ့စ်များသည် အချိန်တိုင်းရရှိနိုင်ပြီး တုံ့ပြန်မှုရှိရပါမည်။
- Partition Tolerance- ဆက်သွယ်ရေးပြဿနာဖြစ်လာလျှင်ပင် ဒေတာဘေ့စ်စနစ်သည် ဆက်လက်အလုပ်လုပ်နေသင့်သည်။
4. Load Balancing ဖြင့် သင်မည်သို့နားလည်သနည်း။
ဝန်ချိန်ခွင် နောက်ခံဆာဗာအစုအဝေးများကြားတွင် အဝင်အသွားအလာများကို ထိရောက်စွာ ခွဲထုတ်သည့် လုပ်ငန်းစဉ်ဖြစ်သည်။ ၎င်းတို့ကို server pool များဟု ခေါ်သည်။ ခေတ်မီဝဘ်ဆိုဒ်များသည် သုံးစွဲသူများထံမှ သန်းပေါင်းများစွာသော မေးမြန်းမှုများကို ကိုင်တွယ်ဖြေရှင်းရန်နှင့် ၎င်းတို့အား လျင်မြန်စွာ ယုံကြည်စိတ်ချစွာ တုံ့ပြန်နိုင်ရန် တည်ဆောက်ထားသည်။ ဤတောင်းဆိုချက်များကို ကိုင်တွယ်ရန် ဆာဗာများ ပိုမိုလိုအပ်ပါမည်။
ဤကိစ္စတွင်၊ တောင်းဆိုမှုအသွားအလာကို ဆာဗာတစ်ခုစီကြားတွင် ထိရောက်စွာ ပိုင်းခြားရန် အရေးကြီးပါသည်။ load balancer သည် ယာဉ်ထိန်းရဲတစ်ဦးအဖြစ် လုပ်ဆောင်ကာ တောင်းဆိုမှုများကို ကြားဖြတ်ကာ ၎င်းတို့ကို ရရှိနိုင်သော ဆာဗာများကြားတွင် လမ်းကြောင်းပေးခြင်းဖြင့် ဆာဗာတစ်ခုမှ ဝန်ပိုမခံဘဲ၊ အပလီကေးရှင်း၏ စွမ်းဆောင်ရည်ကို ကျဆင်းစေနိုင်သည်။
5. asynchronous programming နှင့် parallel programming အကြား ကွာခြားချက်ကား အဘယ်နည်း။
သင်သည် မည်သည့်အရာကိုမဆို တစ်ပြိုင်နက်တည်း လုပ်ဆောင်သည့်အခါတွင် သင်သည် အခြားအရာတစ်ခုသို့ ဆက်လက်မသွားနိုင်မီ ၎င်းကို အပြီးသတ်ရန် စောင့်စရာမလိုဟု ဆိုလိုသည်။ Parallelism သည် အလုပ်များစွာကို တပြိုင်နက်တည်း လုပ်ဆောင်ခြင်းကို ရည်ညွှန်းသည်။
အလုပ်များကို မတူညီသော လုပ်အားအပိုင်းများအဖြစ် ခွဲထုတ်နိုင်သောအခါ ပြိုင်တူဝါဒသည် ထိရောက်စွာ အလုပ်လုပ်ပါသည်။ Async နှင့် Callbacks များသည် အရင်းအမြစ်များကို ဆက်သွယ်ပြီး မျှဝေနိုင်သည့် အဖွဲ့အစည်းအုပ်စုများ ဟုဆိုလိုသည်မှာ တစ်ဆက်တည်းဖြစ်သော (ကိရိယာ သို့မဟုတ် ယန္တရား) ကို ကိုယ်စားပြုရန် နည်းလမ်းတစ်ခုဖြစ်သည်။
6. အလျားလိုက် နှင့် ဒေါင်လိုက် အတိုင်းအတာ ကွာခြားချက် မှာ အဘယ်နည်း။
ပြန့်ကျဲနေသော ကွန်ရက်တစ်ခုရှိ စက်ပစ္စည်းများ၏ ဖြန့်ကျက်ထားသော ကွန်ရက်တစ်လျှောက် လုပ်ဆောင်ခြင်းနှင့် မှတ်ဉာဏ်ဝယ်လိုအားကို ဖြန့်ကျက်ပေးသည့် ကွန်ရက်တစ်ခုသို့ ကွန်ပျူတာကိရိယာအသစ်များ ပေါင်းထည့်ခြင်းကို အလျားလိုက် အတိုင်းအတာအဖြစ် ရည်ညွှန်းသည်။ ရိုးရိုးရှင်းရှင်းပြောရလျှင်၊ ဆာဗာအသစ်များကို လက်ရှိရေကူးကန်သို့ ပေါင်းထည့်ထားပြီး ယာဉ်အသွားအလာဝန်သည် ဤစက်ပစ္စည်းများကြားတွင် ထိရောက်စွာ ပျံ့နှံ့သွားပါသည်။
ဒေါင်လိုက် အတိုင်းအတာ ဆိုသည်မှာ RAM ပေါင်းထည့်ခြင်းဖြင့်၊ ထိရောက်သော CPU များ သို့မဟုတ် ပိုမိုမြင့်မားသော စွမ်းရည်ရှိသော စက်အသစ်သို့ ပြောင်းရွှေ့ခြင်းဖြင့် ကွန်ပျူတာတစ်လုံး၏ အရင်းအမြစ်စွမ်းရည်ကို ချဲ့ထွင်ခြင်း၏ အယူအဆကို ရည်ညွှန်းသည်။ ပရိုဂရမ်းမင်းပြောင်းလဲမှုများ မလိုအပ်ဘဲ ဆာဗာ၏ လုပ်ဆောင်နိုင်စွမ်းကို တိုးမြှင့်နိုင်သည်။
7. ကြာမြင့်ချိန်၊ ဖြတ်သန်းမှုနှင့် စနစ်ရရှိနိုင်မှုတို့ကို အတိအကျဆိုလိုသည်။
ကျွန်ုပ်တို့၏ဝန်ဆောင်မှုများ၏ မြန်နှုန်းနှင့် ယုံကြည်စိတ်ချရမှုကို ပံ့ပိုးပေးသောကြောင့် စွမ်းဆောင်ရည်သည် စနစ်ဒီဇိုင်း၏ မရှိမဖြစ်လိုအပ်သော ကဏ္ဍတစ်ခုဖြစ်သည်။ အရေးအကြီးဆုံး စွမ်းဆောင်ရည် တိုင်းတာမှု သုံးခုမှာ အောက်ပါအတိုင်း ဖြစ်သည်။
- မီလီစက္ကန့်အတွင်း မက်ဆေ့ချ်တစ်ခုပေးပို့ရန် ကြာမြင့်ချိန်ကို latency ဟုခေါ်သည်။
- အချိန်ကာလတစ်ခုအတွင်း စနစ်တစ်ခုမှ အောင်မြင်စွာ လွှဲပြောင်းပေးသည့် ဒေတာပမာဏကို ဖြတ်သန်းမှုဟု ခေါ်ဆိုပါသည်။ ၎င်းကိုတိုင်းတာရန် တစ်စက္ကန့်ကို ဘစ်များအသုံးပြုသည်။
- မေးခွန်းများကို တုံ့ပြန်ရန် စနစ်တစ်ခုရရှိနိုင်သည့် အချိန်ပမာဏကို ၎င်း၏ရရှိနိုင်မှုဖြင့် သတ်မှတ်သည်။ System Uptime / (System Uptime+Downtime) သည် ၎င်းကို တွက်ချက်ရန်အတွက် ပုံသေနည်းဖြစ်သည်။
8. ACID ဂုဏ်သတ္တိများကား အဘယ်နည်း။
- Atomicity- ဒေတာဘေ့စ်ပြောင်းလဲမှုများသည် အလုံးစုံ သို့မဟုတ် တစ်ခုမဟုတ်ကြောင်း အာမခံပါသည်။
- ညီညွတ်မှု- ဒေတာဘေ့စ်ရှိ ဒေတာတန်ဖိုးများသည် တသမတ်တည်းဖြစ်သည်။
- သီးခြားခွဲထုတ်ခြင်း- ၎င်းသည် အရောင်းအ၀ယ်နှစ်ခုကို ခွဲခြားခြင်းကို ရည်ညွှန်းသည်။
- ကြာရှည်ခံမှု- ဆာဗာပျက်သွားသော်လည်း ဒေတာကို သိမ်းဆည်းထားသည်။
၉။ အတိအကျ ခွဲထုတ်ခြင်းဆိုသည်မှာ အဘယ်နည်း။
Sharding သည် ကြီးမားသော ယုတ္တိတန်သောဒေတာအတွဲကို ဒေတာဘေ့စ်များစွာသို့ ပိုင်းခြားသည့်နည်းပညာဖြစ်သည်။ ၎င်းသည် ဒေတာများကို ကွန်ပျူတာများစွာတွင် သိမ်းဆည်းထားသောကြောင့် အလျားလိုက်ဒေတာခွဲခြမ်းခြင်းကိုလည်း ရည်ညွှန်းသည်။ ရလဒ်အနေဖြင့်၊ မျှဝေထားသောဒေတာဘေ့စ်သည် ကြီးမားသောကွန်ပျူတာတစ်လုံးထက် ပိုမိုသောမေးခွန်းများကို ကိုင်တွယ်နိုင်သည်။
10. CDN ဆိုတာဘာလဲ။
အကြောင်းအရာ ပေးပို့ခြင်း ကွန်ရက်သည် အင်တာနက် သတင်းအချက်အလက်များကို လျင်မြန်စွာ ပေးဆောင်ရန် ပူးပေါင်းဆောင်ရွက်သော ကမ္ဘာတစ်ဝှမ်းရှိ ကွန်ပျူတာကွန်ရက်တစ်ခု ဖြစ်သည်။ ၎င်းသည် HTML စာမျက်နှာများ၊ JavaScript ဖိုင်များ၊ စတိုင်စာရွက်များ၊ ရုပ်ပုံများနှင့် အင်တာနက်အကြောင်းအရာများကို တင်ရန် လိုအပ်သော အစိတ်အပိုင်းများကို အမြန်ပေးပို့နိုင်စေပါသည်။
11. အဘယ်ကြောင့် CDN ကို အသုံးပြုသနည်း။
- တည်ငြိမ်သောရင်းမြစ်များသည် ဝဘ်ဆိုက်တစ်ခု၏ 80% ဝန်းကျင်တွင် ပါဝင်သည်ဟု ယူဆပါက CDN ကိုအသုံးပြုခြင်းသည် မူရင်းဆာဗာရှိ တင်းမာမှုကို သိသိသာသာ လျော့နည်းစေသည်။
- ခရီးသွားရန် အကွာအဝေးနည်းသောကြောင့်၊ ပထဝီဝင်နယ်မြေအများအပြားမှ လာရောက်လည်ပတ်သူများရှိသည့် ဝဘ်ဆိုဒ်ပိုင်ရှင်များကို သတင်းအချက်အလက် ပိုမိုမြန်ဆန်စွာ ပေးဆောင်မည်ဖြစ်သည်။
- CDN များအသုံးပြုသူများသည် ယာဉ်ကြောပိတ်ဆို့မှုများကို တုံ့ပြန်ရာတွင် လျင်မြန်စွာ အတက်အဆင်းပြုလုပ်နိုင်သည့် စွမ်းရည်မှလည်း အကျိုးခံစားခွင့်ရှိသည်။
12. Sharding နှင့် partitioning အကြားကွာခြားချက်ကဘာလဲ။
Database Sharding - ဒေတာဘေ့စ် ခွဲဝေခြင်း သည် ဒေတာအတွဲ အများအပြားကို ဒေတာဘေ့စ်များ အတွင်းသို့ ပိုင်းခြားခြင်း နည်းလမ်းတစ်ခု ဖြစ်ပြီး ၎င်းကို မတူညီသော အလုပ်ရုံများတွင် သိမ်းဆည်းထားနိုင်စေရန် ဖြစ်သည်။ ပိုကြီးသော ဒေတာအတွဲများကို သေးငယ်သောအပိုင်းများအဖြစ် ခွဲပြီး ဒေတာ node အများအပြားတွင် သိမ်းဆည်းနိုင်ပြီး စနစ်၏ စုစုပေါင်းသိုလှောင်မှုပမာဏကို တိုးစေသည်။
ဒေတာများကို စက်များစွာတွင် ဖြန့်ကျက်ခြင်းဖြင့်၊ မျှဝေထားသော ဒေတာဘေ့စ်သည် စနစ်တစ်ခုတည်းထက် မေးခွန်းများကို ပိုမိုကိုင်တွယ်နိုင်သည်။
Database Partitioning သည် သိမ်းဆည်းထားသော ဒေတာဘေ့စ်အရာဝတ္တုများ (ဇယားများ၊ အညွှန်းများနှင့် အမြင်များ) ကို သီးခြားအပိုင်းများအဖြစ် ပိုင်းခြားသည့် လုပ်ငန်းစဉ်ဖြစ်သည်။ ထိန်းချုပ်နိုင်မှု၊ စွမ်းဆောင်ရည်နှင့် ရရှိနိုင်မှုတို့ကို တိုးမြှင့်ရန်အတွက် ကြီးမားသောဒေတာဘေ့စ်အရာဝတ္ထုများကို အပိုင်းပိုင်းခွဲထားသည်။
အချို့သောကိစ္စများတွင်၊ အပိုင်းလိုက်ခွဲခြင်းသည် ပိုင်းခြားထားသောဒေတာကိုရယူသည့်အခါ အရှိန်မြှင့်နိုင်သည်။ အပိုင်းပိုင်းခွဲခြင်းသည် အညွှန်းအရွယ်အစားကို လျှော့ချနိုင်ပြီး အညွှန်းကိန်းများတွင် ဦးဆောင်ကော်လံအဖြစ် လုပ်ဆောင်ခြင်းဖြင့် မှတ်ဉာဏ်တွင် အလိုအပ်ဆုံး အညွှန်းကိန်းများကို ရှာဖွေရန် အခွင့်အလမ်းကို တိုးစေသည်။
13. အတိအကျ သိမ်းဆည်းခြင်းဆိုသည်မှာ အဘယ်နည်း။
ကက်ရှ်သည် ဒေတာဝင်ရောက်မှုကို မြန်ဆန်စေပြီး ဆိုက်နေချိန်ကို လျှော့ချပေးသည့် ယာယီသိမ်းဆည်းဧရိယာတွင် ဖိုင်ကော်ပီများကို သိမ်းဆည်းခြင်းနည်းပညာဖြစ်သည်။ ဒေတာပမာဏအချို့ကိုသာ ကက်ရှ်တွင် သိမ်းဆည်းနိုင်သည်။
ရလဒ်အနေနှင့်၊ လုပ်ငန်းရည်မှန်းချက်များအတွက် အသင့်တော်ဆုံးဖြစ်သော cache update နည်းပညာများကို ဆုံးဖြတ်ခြင်းသည် အရေးကြီးပါသည်။
14 ။ CDN edge servers တွေက ဘာတွေလဲ။
သင့်မူရင်းဆာဗာ သို့မဟုတ် သိုလှောင်မှုအစုအဝေးမှ သိမ်းဆည်းရရှိထားသော ပစ္စည်းများကို အနားသတ်ဆာဗာများအဖြစ် လူသိများသော CDN ဆာဗာများ။ တည်ရှိနေသောနေရာသည် edge servers (POP) ကိုဖော်ပြရန် မကြာခဏအသုံးပြုလေ့ရှိသည့်အသုံးအနှုန်းဖြစ်သည်။
edge ဆာဗာများကို POP တွင် ရုပ်ပိုင်းဆိုင်ရာအရ နေရာချထားပါသည်။ ထို POP တွင် အချက်အလက်များကို edge server အများအပြားက သိမ်းဆည်းထားနိုင်သည်။
နေရာများစွာမှ ဝဘ်ဆိုဒ်တစ်ခု၏ အပိုင်းများကို ပံ့ပိုးပေးနိုင်စွမ်းသည် ဧည့်သည်နှင့် ဝဘ်ဆာဗာကြားရှိ အကွာအဝေးကို လျော့နည်းစေပြီး latency နည်းပါးစေသည်။ CDN edge ဆာဗာများသည် ဤတိကျသောပန်းတိုင်ကို ပြီးမြောက်စေသည်။
15. စနစ်ဒီဇိုင်းအတွက် မတူညီသော ကိုက်ညီမှုပုံစံများကား အဘယ်နည်း။
ဖတ်ရန်တောင်းဆိုမှုတိုင်းသည် CAP သီအိုရီအရ လတ်တလောရေးသားထားသော အချက်အလက်များကို ပြန်လည်ရယူသင့်သည်။ ဒေတာမိတ္တူများစွာကို သုံးစွဲနိုင်သည့်အခါ သုံးစွဲသူများသည် ဒေတာအသစ်များကို စဉ်ဆက်မပြတ်ရရှိစေရန် ၎င်းတို့ကို ထပ်တူပြုခြင်းသည် အခက်အခဲတစ်ခုဖြစ်လာသည်။ အောက်ပါတို့သည် ဖြစ်နိုင်ခြေရှိသော ညီညွတ်မှုပုံစံများဖြစ်သည်-
- ညီညွတ်မှုအားနည်းခြင်း- ဒေတာရေးပြီးနောက်၊ ဖတ်ရန်တောင်းဆိုမှုသည် မွမ်းမံထားသောဒေတာကို ရယူနိုင် သို့မဟုတ် မရနိုင်ပါ။ ဤတည်ငြိမ်မှုအဆင့်သည် VoIP၊ ဗီဒီယိုချတ်နှင့် လူအများအပြားဂိမ်းကစားခြင်းကဲ့သို့သော အချိန်နှင့်တစ်ပြေးညီ အပလီကေးရှင်းများအတွက် စံပြဖြစ်သည်။
- နောက်ဆုံး ကိုက်ညီမှု- ဖတ်ရှုမှုများသည် ဒေတာရေးပြီးနောက် မီလီစက္ကန့်အတွင်း နောက်ဆုံးဒေတာကို နောက်ဆုံးတွင် ကြည့်ရှုမည်ဖြစ်သည်။ ဤကိစ္စတွင် ဒေတာကို တပြိုင်နက်တည်း ပွားနေသည်။ DNS နှင့် အီးမေးလ်စနစ်များသည် ဤဥပမာများဖြစ်သည်။ ၎င်းသည် မြင့်မားသောရရှိနိုင်မှုစနစ်များတွင် ထိရောက်စွာအလုပ်လုပ်သည်။
- ခိုင်မာသောကိုက်ညီမှု- ဒေတာရေးပြီးနောက်၊ နောင်လာမည့်စာဖတ်သူများသည် လတ်တလောဒေတာကို ကြည့်ရှုမည်ဖြစ်သည်။ ဤကိစ္စတွင် ဒေတာကို တပြိုင်တည်း ကူးယူပါသည်။ ဒေတာလွှဲပြောင်းမှုအတွက် သင့်လျော်သော RDBMS နှင့် ဖိုင်စနစ်များတွင် ၎င်းကို ကြည့်ရှုနိုင်သည်။
16. အကောင်းမြင်သော့ခတ်ခြင်းဖြင့် သင်ဘာကိုဆိုလိုသနည်း။
အကောင်းမြင်သောသော့ခတ်ခြင်းသည် မှတ်တမ်းတစ်ခုအား သင်ဖတ်ရှုပြီး ဗားရှင်းနံပါတ်တစ်ခုအား မှတ်သားထားသည့် ယန္တရားတစ်ခု (အခြားနည်းလမ်းမှာ ရက်စွဲများ၊ အချိန်တံဆိပ်ခေါင်းများ သို့မဟုတ် checksums/hashes များပါရှိသည်)၊ ထို့နောက် ၎င်းကို ပြန်မရေးမီ ဗားရှင်းမပြောင်းလဲကြောင်းကို နှစ်ခါစစ်ဆေးပါ။
မှတ်တမ်းကို ပြန်ရေးသောအခါ၊ ၎င်းသည် အက်တမ်ဖြစ်ကြောင်း သေချာစေရန် အပ်ဒိတ်ကို စစ်ထုတ်ရန် ဗားရှင်းကို အသုံးပြုသည်။ (ဆိုလိုသည်မှာ သင်သည် ဗားရှင်းကို စစ်ဆေးသည့်အခါနှင့် မှတ်တမ်းကို disk သို့ ရေးသည့်အခါတွင် မပြောင်းလဲပါ) နှင့် ၎င်းကို တစ်ကြိမ်တည်း အပ်ဒိတ်လုပ်ပါ။
17. "ခေါင်းဆောင်ရွေးကောက်ပွဲ" က ဘာကိုဆိုလိုတာလဲ။
အပလီကေးရှင်း၏ရရှိနိုင်မှုကို ပံ့ပိုးပေးသည့် ဆာဗာအများအပြားရှိသော ဖြန့်ဝေသည့်စနစ်တွင်၊ ဆာဗာတစ်ခုသာ ပြင်ပမှ API များကို အပ်ဒိတ်လုပ်ရန် တာဝန်ရှိသည့်အခါများတွင်၊ ဆာဗာများစွာသည် APIs ကိုအသုံးပြုသည့်အခါ ပြဿနာများဖြစ်ပေါ်စေနိုင်သောကြောင့်၊
ဤဆာဗာကို ပင်မဆာဗာအဖြစ် လူသိများပြီး ၎င်းကို ရွေးချယ်ရန်အတွက် လုပ်ထုံးလုပ်နည်းကို ခေါင်းဆောင်ရွေးကောက်ပွဲဟု လူသိများသည်။ ခေါင်းဆောင်ဆာဗာသည် ဖြန့်ဝေမှုစနစ်တွင် ပျက်ကွက်သောအခါ၊ ဆာဗာများသည် ကျရှုံးမှုကို သတိပြုမိပြီး ခေါင်းဆောင်အသစ်ကို ရွေးချယ်ရမည်ဖြစ်သည်။ အများသဘောတူနည်းစနစ်ကို အသုံးပြု၍ ဤချဉ်းကပ်မှုသည် မြင့်မားသောရရှိနိုင်မှုနှင့် ခိုင်မာသောကိုက်ညီမှုရှိသောအသုံးချပရိုဂရမ်များအတွက် အသင့်တော်ဆုံးဖြစ်သည်။
18. TinyURL နှင့်တူသော URL အတိုချုံ့ခြင်းဝန်ဆောင်မှုကို ဒီဇိုင်းရေးဆွဲခြင်းအတွက် သင့်ချဉ်းကပ်ပုံမှာ အဘယ်နည်း။
TinyURL သည် ရှည်လျားသော URL ကို တစ်ခုတည်း၊ ထူးခြားသော အတိုချုံး URL တစ်ခုအဖြစ် ပြောင်းလဲသည်။ ဤနည်းပညာများသည် URL အတိုတစ်ခုကိုလည်း လက်ခံနိုင်ပြီး URL အပြည့်အစုံကို ပြန်ပေးနိုင်သည်။
အရေးကြီးတဲ့ အရည်အသွေးတွေက ဘာတွေလဲ။
- မူရင်းထက်တိုသော URL တစ်ခုကို ပြုလုပ်ပါ။
- ပိုရှည်သော URL ကို သိမ်းဆည်းပြီး ပိုတိုသော URL ဖြင့် အစားထိုးပါ။
- တိုတောင်းသော URLs များတွင် ပြန်ညွှန်းရန် ခွင့်ပြုပါ။
- စိတ်ကြိုက်အမည်များဖြင့် အတိုကောက် URL များကို ပံ့ပိုးထားသည်။
- စုံစမ်းမေးမြန်းမှုများစွာကို တစ်ပြိုင်နက်တည်း ကိုင်တွယ်ပါ။
အဖြစ်အများဆုံး ပြဿနာတွေက ဘာတွေလဲ။
- ဒေတာဘေ့စ်သိုလှောင်မှုအား သင်မည်ကဲ့သို့ ခြေရာခံမည်နည်း။
- အသုံးပြုသူ ဝန်သည် မျှော်လင့်ထားသည်ထက် ကျော်လွန်ပါက မည်သို့ဖြစ်မည်နည်း။
- လူနှစ်ဦးသည် တူညီသော စိတ်ကြိုက် URL ကို အသုံးပြုပါက မည်သို့နည်း။
အောက်ပါအကြံပြုချက်များကို ဆင်ခြင်သုံးသပ်ပါ။
- Hashing သည် URL အဟောင်းနှင့် အသစ်များကို ချိတ်ဆက်ရန် အသုံးပြုနိုင်သည့် အယူအဆတစ်ခုဖြစ်သည်။
- REST API ကို ရှေ့ဆုံးဆက်သွယ်ရေးကို ကိုင်တွယ်ရန်နှင့် လေးလံသောဝန်ကို ဟန်ချက်ညီစေရန် အသုံးပြုနိုင်သည်။
- Multithreading သည် တောင်းဆိုချက်များစွာကို တစ်ပြိုင်နက်တည်း ကိုင်တွယ်နိုင်စေမည့် သဘောတရားတစ်ခုဖြစ်သည်။
- မူရင်း URL များကို NoSQL ဒေတာဘေ့စ်များတွင် သိမ်းဆည်းထားသည်။
19. twitter ကို ဒီဇိုင်းဆွဲဖို့ သင်ဘယ်လို ချဉ်းကပ်လဲ။
ပေးသောလိုအပ်ချက်များ-
- တွစ်တာများ ပို့ခြင်း။
- အခြားအသုံးပြုသူများနောက်လိုက်
- Tweet feed/newsfeed
- စနစ်သည် အတိုင်းအတာတစ်ခုဖြစ်သည်။
- မြန်မြန်တင်သည်။
- စနစ်က စိတ်ချရတယ်။
စံနှုန်းများကို သတ်မှတ်ပြီးသောအခါတွင် သင်၏ Twitter API ဒီဇိုင်းကို စတင်စဉ်းစားနိုင်သည်။ ဒါက ဘယ်လိုပေါ်လာပါလိမ့်-
စတင်ရန်၊ ကျွန်ုပ်တို့သည် API ၏ အဓိက အဆုံးမှတ်များကို ပုံကြမ်းဆွဲပါမည်။ ဤသည်မှာ ဥပမာအချို့ဖြစ်သည်။
- Tweet (မက်ဆေ့ခ်ျ) ပေးပို့ပါ
- followUser(အသုံးပြုသူ ID)
- unfollowUser(အသုံးပြုသူ ID)
- getFeed(စာမျက်နှာ)
ထို့နောက် အဆိုပါလက္ခဏာများကို အသုံးပြုနိုင်စေမည့် ဗိသုကာလက်ရာကို ပုံကြမ်းရေးဆွဲနိုင်သည်။ ကျွန်ုပ်တို့သည် ဆာဗာတောင်းဆိုချက်ကို တင်သွင်းသည့် အသုံးပြုသူနှင့် စတင်နိုင်သည်။ ချဲ့ထွင်နိုင်မှုလိုအပ်ချက်ကိုဖြည့်ဆည်းရန် လမ်းကြောင်းပိုကြီးသောလမ်းကြောင်းအဆင့်များကိုကူညီရန် load balancer ၏နောက်ထပ် API ဆာဗာများကို တပ်ဆင်နိုင်သည်။ ကျွန်ုပ်တို့၏ tweets များကို ယခုသိမ်းဆည်းရန် ဒေတာဘေ့စ်တစ်ခုထည့်ရန် လိုအပ်ပါမည်။
ကျွန်ုပ်တို့ ပေးဆောင်သော API သည် အရွယ်အစား အတိုင်းအတာ ဖြစ်သင့်သည် ကို မှတ်သားထားရန် အရေးကြီးပါသည်။ ဤဝန်ဆောင်မှုကို အတိုင်းအတာတစ်ခုအထိ ချဲ့ထွင်နိုင်ရန် ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ သတင်းဖိဒ်အတွက် သီးခြား ကက်ရှ်တစ်ခုမှ ကျွန်ုပ်တို့၏ API ဆာဗာများထဲမှ တစ်ခုကို ဖတ်နိုင်ပါသည်။ ထိုသို့လုပ်ဆောင်နေစဉ်တွင်၊ ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ feed cache ကို ခေတ်မီနေစေရန် feed provider ကိုလည်း အသုံးပြုသင့်ပါသည်။
20. Facebook အတွက် Newsfeed စနစ်ကို ဖန်တီးပါ။
Facebook ရှိ Newsfeed သည် အသုံးပြုသူများအား ၎င်းတို့၏ သူငယ်ချင်းအသိုင်းအဝိုင်းများ၊ အကြိုက်ဆုံး စာမျက်နှာများနှင့် ၎င်းတို့နောက်လိုက်ထားသော အဖွဲ့အစည်းများတွင် ဖြစ်ပျက်နေသည်များကို မြင်နိုင်စေပါသည်။
မရှိမဖြစ်လိုအပ်သော လက္ခဏာအချို့ကား အဘယ်နည်း။
- အသုံးပြုသူအောက်ပါအတိုင်း အခြားစနစ်အဖွဲ့အစည်းများမှ ပို့စ်များအပေါ် အခြေခံ၍ သတင်းဖိဒ်တစ်ခု ဖန်တီးပါ။
- စာသား၊ ရုပ်ပုံ၊ အသံနှင့် ဗီဒီယိုအားလုံးကို Newsfeed ပို့စ်များတွင် သုံးနိုင်သည်။
- အချိန်နှင့်တစ်ပြေးညီ၊ အသုံးပြုသူ၏သတင်းဖိဒ်တွင် လတ်ဆတ်သောအကြောင်းအရာကို ထည့်ပါ။
အဖြစ်များဆုံး ပြဿနာအချို့က ဘာတွေလဲ။
- ပို့စ်အသစ်သည် သတင်းဖိဒ်တွင် ပေါ်လာရန် အချိန်အတော်ကြာလျှင် မည်သို့လုပ်ဆောင်မည်နည်း။
- algorithm သည် အသုံးပြုသူ၏ လှုပ်ရှားမှုတွင် တိုးမြင့်လာမှုကို စီမံခန့်ခွဲနိုင်ပါသလား။
- သတင်းဖိဒ်တွင် မည်သည့်ပို့စ်များကို ဦးစွာပြသသင့်သနည်း။
အောက်ပါအကြံပြုချက်များကို ဆင်ခြင်သုံးသပ်ပါ။
- ပို့စ်များကို Followers များသို့ ဖြန့်ဝေခြင်းအတွက် fanout ယန္တရားကို ဆန်းစစ်ပါ။
- မြင့်မားသောအသုံးပြုသူ loads များကိုထိရောက်စွာကိုင်တွယ်ရန် sharding ကိုမည်ကဲ့သို့အသုံးပြုနိုင်သည်ကိုစစ်ဆေးပါ။
- သုံးစွဲသူတစ်ဦး၏ ဖိဒ်ဒေတာကို ဆာဗာများစွာတွင် ပွားမသင့်ပါ။ အသုံးပြုသူ IDs များအပေါ်အခြေခံ၍ မျှဝေခြင်းအစား လုပ်ဆောင်နိုင်သည်။
21. စနစ်တစ်ခု၏ အခြေခံပိုင်ဆိုင်မှုဆိုသည်မှာ အဘယ်နည်း။
BASE အင်္ဂါရပ်များသည် မကြာသေးမီကထွက်ပေါ်လာခဲ့သော NoSQL ဒေတာဘေ့စ်များတွင် နေရာအနှံ့တွင်ရှိသည်။ CAP သီအိုရီအရ BASE စနစ်သည် ညီညွတ်မှုကို မပေးနိုင်ပါ။ ၎င်းသည် စနစ်တစ်ခု၏ CAP သီအိုရီ၏ အောက်ဖော်ပြပါ ပိုင်ဆိုင်မှုများနှင့် ကိုက်ညီသော ပေါင်းစပ်အတိုကောက်တစ်ခုဖြစ်သည်။
- "အခြေခံအားဖြင့်ရရှိနိုင်သည်" ဟူသောအသုံးအနှုန်းသည်စနစ်သည်အချိန်တိုင်းရရှိနိုင်လိမ့်မည်ဟုဆိုလိုသည်။
- ပျော့ပျောင်းသောအခြေအနေဆိုသည်မှာ ထည့်သွင်းခြင်းမပြုသော်လည်း စနစ်၏အခြေအနေသည် အချိန်နှင့်အမျှ ပြောင်းလဲသွားနိုင်သည်ဟု ဆိုလိုသည်။ အများစုမှာ မော်ဒယ်၏ နောက်ဆုံး ညီညွတ်မှုကြောင့် ဖြစ်သည်။
- ထိုကာလအတောအတွင်း စနစ်သည် ထည့်သွင်းမှုမရရှိသောကြောင့်၊ နောက်ဆုံးတွင် ညီညွတ်မှုဆိုသည်မှာ အချိန်နှင့်အမျှ စနစ်တသမတ်တည်းဖြစ်လာမည်ကို ဆိုလိုသည်။
22. IP Address Affinity Technique ဖြင့် Load Balancing ဆိုသည်မှာ အဘယ်နည်း။
load balancing ၏နောက်ထပ်ထင်ရှားသောနည်းလမ်းမှာ IP address affinity ဖြစ်သည်။ client IP လိပ်စာကို ဤနည်းလမ်းတွင် ဆာဗာ node တစ်ခုနှင့် ချိတ်ဆက်ထားသည်။ server node တစ်ခုသည် client IP address မှ တောင်းဆိုချက်အားလုံးကို ကိုင်တွယ်သည်။
HTTP တောင်းဆိုချက်ခေါင်းစီးတွင် IP လိပ်စာကို အမြဲတမ်းအသုံးပြုနိုင်ပြီး နောက်ထပ်ဆက်တင်များမလိုအပ်သောကြောင့် ဤနည်းလမ်းကို အကောင်အထည်ဖော်ရန် ရိုးရှင်းပါသည်။ အကယ်၍ သင့်ဖောက်သည်များသည် ကွတ်ကီးများကို ပိတ်လိုက်နိုင်ဖွယ်ရှိလျှင် ဤ load balancing ပုံစံသည် အကျိုးကျေးဇူးရှိနိုင်ပါသည်။
23. Cache Replacement (သို့မဟုတ် Eviction Policy) algorithms များသည် အဘယ်နည်း။
ကက်ရှ် အယ်လဂိုရီသမ်များ (ကက်ရှ်အစားထိုး အယ်လဂိုရီသမ်၊ ကက်ရှ်အစားထိုး မူဝါဒများ သို့မဟုတ် ကက်ရှ်ဖယ်ရှားခြင်းဆိုင်ရာ မူဝါဒများ) သည် ကွန်ပျူတာပရိုဂရမ် သို့မဟုတ် ဟာ့ဒ်ဝဲထိန်းသိမ်းထားသည့် ဖွဲ့စည်းပုံတစ်ခုသည် ကွန်ပျူတာပေါ်တွင် သိမ်းဆည်းထားသည့် ဒေတာ cache ကို စီမံခန့်ခွဲရန် အသုံးပြုနိုင်သည့် ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်မှု ညွှန်ကြားချက်များ သို့မဟုတ် အယ်လဂိုရီသမ်များဖြစ်သည်။
Caching သည် မကြာသေးမီကအသုံးပြုထားသော သို့မဟုတ် မကြာခဏဝင်ရောက်အသုံးပြုထားသော ဒေတာများကို ရိုးရာမမ်မိုရီသိုလှောင်မှုထက် ပိုမိုမြန်ဆန်စွာ သို့မဟုတ် စျေးပိုသက်သာသော မမ်မိုရီဧရိယာများတွင် သိမ်းဆည်းခြင်းဖြင့် အရှိန်မြှင့်ပေးပါသည်။ ကက်ရှ် ပြည့်သွားသည့်အခါ အသစ်များအတွက် နေရာတစ်ခုပြုလုပ်ရန်အတွက် မည်သည့်အရာများကို ဖယ်ရှားရမည်ကို အယ်လဂိုရီသမ်က ဆုံးဖြတ်ရပါမည်။
24. ဖြန့်ဝေပေးငွေကို အတိအကျဆိုလိုသည်။
ဖြန့်ဝေထားသော ငွေပေးငွေယူဆိုသည်မှာ ဖြစ်ရပ်တစ်ခုသည် အက်တမ်တွင် ကျူးလွန်၍မရသော ဒေတာအရင်းအမြစ်နှစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော ကွဲပြားသော အရင်းအမြစ်များကို အပြောင်းအလဲဖြစ်စေသည့် မည်သည့်အခြေအနေမျိုးမဆိုဖြစ်သည်။
ဝန်ဆောင်မှုတစ်ခုစီသည် အလုပ်ယူနစ်တစ်ခုဖြစ်ပြီး လုပ်ငန်းတစ်ခုအောင်မြင်ရန် အချိန်အများစုတွင် ဝန်ဆောင်မှုများစွာဖြင့် ပူးပေါင်းလုပ်ဆောင်ရမည်ဖြစ်သောကြောင့် မိုက်ခရိုဝန်ဆောင်မှုလောကတွင် ၎င်းသည် ပိုမိုရှုပ်ထွေးလာပါသည်။
25။ အတိအကျ ငတ်မွတ်ခြင်းဆိုသည်မှာ အဘယ်နည်း။
အမျှင်တန်းတစ်ခုသည် မျှဝေထားသောရင်းမြစ်များသို့ ပုံမှန်ဝင်ရောက်ခွင့်မရသောအခါ၊ ငတ်ပြတ်သွားသည်ဟုဆိုသည်။ "လောဘကြီးသော" လိုင်းများ သို့မဟုတ် "ဦးစားပေး" မြင့်မားသော အပိုင်းများ သည် မျှဝေထားသောအရင်းအမြစ်များကို အချိန်ကြာမြင့်စွာ လက်လှမ်းမမီနိုင်သောအခါတွင် ၎င်းသည် ဖြစ်ပေါ်ပါသည်။
မကြာခဏ နောက်ကျပြန်လာသည့် ထပ်တူကျသည့်နည်းလမ်းကို ပံ့ပိုးပေးသည့် အရာတစ်ခုကို သုံးသပ်ကြည့်ပါ။ စာတွဲတစ်ခုသည် ဤနည်းလမ်းကို ထပ်ခါတလဲလဲခေါ်ဆိုပါက၊ တူညီသောအရာဝတ္တုသို့ မကြာခဏ ထပ်တူပြု၍ ဝင်ရောက်အသုံးပြုရန် လိုအပ်သော အခြားအကြောင်းအရာများကို မကြာခဏ ပိတ်ဆို့သွားပါမည်။
ကောက်ချက်
ဦးနှောက်ဖောက်ထုတ်သည့် အပိုင်းသည် စနစ်ဒီဇိုင်း အင်တာဗျူးတွင် ပါဝင်သည့် အရာအားလုံးဖြစ်သည်။ ဤပို့စ်တွင် အသုံးအများဆုံး System Design အင်တာဗျူးမေးခွန်းများကို ကျွန်ုပ်တို့ ဖြေရှင်းထားပါသည်။
တိကျသောစနစ်တစ်ခုဖန်တီးရာတွင် သင်လုပ်ဆောင်နေသည့်နည်းလမ်းကို ကျယ်ကျယ်ပြန့်ပြန့်နားလည်သဘောပေါက်ခြင်းသည် System Design အင်တာဗျူးတစ်ခုအောင်မြင်ရန် အရေးကြီးပါသည်။.
တစ်ဦးစာပြန်ရန် Leave