မာတိကာ[ဖျောက်][ရှိုး]
Instagram Feed သည် လူများနှင့် သင့်အတွက် အရေးကြီးသောအရာများနှင့် မျှဝေခြင်းနှင့် ချိတ်ဆက်ခြင်းအတွက် ပလပ်ဖောင်းတစ်ခုဖြစ်သည်။ Instagram ကိုဖွင့်ပါ သို့မဟုတ် သင့်ဖိဒ်ကို ပြန်လည်ဆန်းသစ်သောအခါ၊ သင်စိတ်ဝင်စားလိမ့်မည်ဟု ကျွန်ုပ်တို့ထင်မြင်သော ဓာတ်ပုံများနှင့် ဗီဒီယိုများသည် ထိပ်တန်းသို့ ပြသမည်ဖြစ်သည်။
သတင်းဖိဒ်သည် သင့်ဖတ်ရှုရန် ပစ်မှတ်ထားသည့် စနစ်ရှိ အခြားအရာများမှ ဖန်တီးထားသည့် စာသား၊ ပုံများ သို့မဟုတ် ဗီဒီယိုများပါရှိသော အရာများ စုစည်းမှုတစ်ခုဖြစ်သည်။ အခြားအဖွဲ့အစည်းများက အသစ်အသစ်သော ပို့စ်များတင်နေချိန်တွင် ၎င်းသည် အမြဲတမ်းပြောင်းလဲနေသည်။
ဤပို့စ်တွင် Instagram ၏ feed ၏စနစ်ဒီဇိုင်းကို အနီးကပ်ကြည့်ရှုပါမည်။ ဒါဆို စလိုက်ရအောင်။
၁။ လိုအပ်ချက်များ
လုပ်ငန်းဆောင်တာ လိုအပ်ချက်
- အသုံးပြုသူ၏သတင်းဖိဒ်ကို အသုံးပြုသူနောက်လိုက် သို့မဟုတ် စိတ်ဝင်စားသည့်စနစ်ရှိ အခြားအရာများမှ ပို့စ်များမှ ဖန်တီးထားသည်။
- စာသား၊ ရုပ်ပုံများနှင့် ဗီဒီယိုအားလုံးကို ပို့စ်များတွင် တွေ့နိုင်သည်။
- အခြားသူများ ဖန်တီးထားသော ပို့စ်အသစ်များဖြင့် သုံးစွဲသူ၏ သတင်းဖိဒ်ကို အပ်ဒိတ်လုပ်သင့်သည်။
အလုပ်မလုပ်သော စံသတ်မှတ်ချက်
- သတင်းဖိဒ်များ ဖန်တီးခြင်းသည် အချိန်နှင့်တပြေးညီ လုပ်ဆောင်သင့်သည်။ အသုံးပြုသူသည် ကြန့်ကြာမှု 12 စက္ကန့်သာ ခံစားရပါမည်။
- ပို့စ်အသစ်ကို ပေါင်းထည့်ခြင်း- စနစ်သို့ တင်သွင်းပြီးနောက် သတင်းဖိဒ်တောင်းဆိုမှုတွင် ပို့စ်အသစ်တစ်ခုပေါ်လာရန် 5 စက္ကန့်ထက် မပိုသင့်ပါ။
2. စွမ်းဆောင်ရည် ခန့်မှန်းချက်
- မတ်လ 2021 စာရင်းအရ ကမ္ဘာ့လူဦးရေသည် 7.8 ဘီလီယံမျှသာရှိသည်။ ကမ္ဘာ့လူဦးရေ၏ 21% သည် Facebook DAU (Daily Active User) ဖြစ်ပြီး 32% သည် Facebook MAU (လစဉ်အသုံးပြုသူ) (လစဉ် Active User) ဖြစ်သည်ကို ညွှန်ပြပါသည်။ အဲဒါက အံ့သြစရာပါ။
- ကျွန်ုပ်တို့တည်ဆောက်နေသောစနစ်တွင် အရာများကိုပိုမိုလွယ်ကူစေရန်အတွက် 1 ဘီလီယံ DAU ရှိကြောင်းဟန်ဆောင်ကြပါစို့။
- လူတစ်ယောက်သည် Facebook တွင် လူ 500 သို့မဟုတ် လုပ်ငန်းများကို လိုက်နာသည်ဟု ယူဆပါ။ အဖွဲ့ သို့မဟုတ် စာမျက်နှာတစ်ခုအား အကြောင်းအရာတစ်ခုဟု ယူဆနိုင်သည်။
ခန့်မှန်းခြေအသွားအလာ
အသုံးပြုသူတစ်ဦးသည် ပျမ်းမျှအားဖြင့် တစ်နေ့လျှင် သတင်းဖိဒ်ကို ၁၀ ကြိမ် ဒေါင်းလုဒ်လုပ်သည်ဟု ယူဆပါ။ ထို့ကြောင့် တစ်ရက်လျှင် အကြမ်းဖျင်း 10K QPS နှင့် 116e1 တောင်းဆိုမှုများရှိသည်။
သိုလှောင်မှု ခန့်မှန်းချက်များ
အမြန်ပြန်လည်ရယူရန်အတွက် ပျမ်းမျှအားဖြင့် သုံးစွဲသူတစ်ဦးစီ၏ သတင်းဖိဒ်မှ ပို့စ် 500 ကို မှတ်ဉာဏ်တွင် ထိန်းသိမ်းထားသည်ဟု ယူဆရပြီး ပို့စ်တစ်ခုစီသည် 1KB အရွယ်အစားရှိသည်။ ထို့ကြောင့် သုံးစွဲသူတစ်ဦးလျှင် 500 KB၊ DAU များအားလုံးအတွက် 500 TB နှင့် 5000 GB RAM ပါသော ကွန်ပျူတာ 100 စီ။
3. စနစ်များအတွက် APIs
userId (GUID) - သတင်းဖိဒ်ကို ရယူနေသည့် အသုံးပြုသူ။
အောက်ပါအကွက်များကို စိတ်ကြိုက်ရွေးချယ်ခွင့် ကန့်သတ်ဘောင်များတွင် ရနိုင်သည်-
- afterPostId (GUID)- ဤပို့စ်နောက်ပါပို့စ်မှ သတင်း feed ကို ရယူပါ။ မသတ်မှတ်ထားပါက၊ နောက်ဆုံးပို့စ်များကို ရယူပါ။
- count (number)- တောင်းဆိုမှုတစ်ခုစီ ပြန်ပေးနိုင်သည့် အများဆုံး ပို့စ်အရေအတွက်။ တစ်ခုမျှမပံ့ပိုးပါက နောက်ကွယ်မှသည် မူရင်းအများဆုံးနံပါတ်ကို သတ်မှတ်ပေးသည်။
- excludeReplies (boolean)- တုံ့ပြန်မှုများကို သတင်းဖိဒ်တွင် ထည့်သွင်းခြင်းမှ တားဆီးသည်။
- ပြန်ပေးထားသော JSON တွင် သတင်းဖိဒ်အရာများစာရင်းပါရှိသည်။
4. Database တစ်ခုကို ဒီဇိုင်းဆွဲခြင်း။
အဖွဲ့အစည်းများ
- အသုံးပြုသူ
- entityId၊ အမည်၊ ဖော်ပြချက်နှင့် အချိန်တံဆိပ်အားလုံးသည် လိုအပ်သော အကွက်များဖြစ်သည်။
- အောက်ပါအကွက်များ လိုအပ်သည်- PostId၊ ခေါင်းစဉ်၊ စာသား၊ authorId နှင့် အချိန်တံဆိပ်။
- အချိန်တံဆိပ်၊ url နှင့် mediaId
ဆက်ဆံရေး
- အခြားအသုံးပြုသူများ သို့မဟုတ် အဖွဲ့အစည်းများကို အသုံးပြုသူတစ်ဦးက လိုက်နာနိုင်သည်။ (m:n)
- ရေးသားသူ-Post- အသုံးပြုသူများနှင့် အဖွဲ့အစည်းနှစ်ခုလုံးသည် ပို့စ်များကို ဖန်တီးနိုင်သည်။ ရိုးရှင်းစေရန်အတွက် အသုံးပြုသူများသာ ပို့စ်များကို ဖန်တီးနိုင်သည်ဟု ယူဆပါ။ (1:n; authorId သည် embeddable)။
- ပို့စ်တစ်ခုစီတိုင်းတွင် မီဒီယာပုံစံအချို့ဖြင့် ပါ၀င်သည်။ (1:n)
5. အဆင့်မြင့်ဒီဇိုင်း
ဗိသုကာအတတ်ပညာ
Workflows
အစာအစာထုတ်လုပ်ခြင်း။
Jay သည် သူမ၏ သတင်းထုတ်လွှင့်မှုကို တောင်းဆိုသောအခါ၊ စနစ်သည် အောက်ပါအတိုင်း လုပ်ဆောင်လိမ့်မည်-
- Jay လိုက်ကြည့်သော လူအားလုံး၏ ID များနှင့် အရာများကို ထုတ်ယူပါ။
- စုစည်းထားသော ပို့စ်များ- ထို ID များကို ပေးထားပြီး၊ လတ်တလော၊ လူကြိုက်များပြီး သက်ဆိုင်ရာ ပို့စ်များကို ရယူပါ။
- ရာထူးများကို ၎င်းတို့၏ အဆက်အစပ်နှင့် အချိန်အလိုက် အဆင့်သတ်မှတ်ပါ။
- ကက်ရှ်- ဖန်တီးထားသော ဖိဒ်များကို သိမ်းဆည်းပြီး ထိပ်တန်း ပို့စ် 20 ခုကို Jay ကို ပေးပို့ပါ။
- Jay သည် ပထမပို့စ် 20 ကိုဖတ်ပြီးသောအခါတွင် နောက်ထပ် ပို့စ် 20 ကိုရရှိရန် နောက်ထပ်တောင်းဆိုချက်တစ်ခုကို ပေးပို့ပါသည်။
အစာဖြန့်ဖြူးခြင်း။
Jay သည် Aayush ၏နောက်သို့လိုက်နေပြီး Aayush သည်အသစ်သောအရာတစ်ခုခုကိုတင်နေသည်ဟုယူဆပါ။ Jay ၏ သတင်းဖိဒ်ကို စနစ်ဖြင့် အပ်ဒိတ်လုပ်ရန် လိုအပ်သည်-
- Aayush ၏နောက်လိုက်များ၏ ID များကိုရယူပါ။
- ဆောင်းပါးအသစ်များထည့်ပါ- Aayush ၏ပို့စ်ကို IDs ၏နောက်လိုက်များ၏ သတင်းဖိဒ်အစုတွင် ထည့်ပါ။
- ရာထူးများကို ၎င်းတို့၏ အဆက်အစပ်နှင့် အချိန်အလိုက် အဆင့်သတ်မှတ်ပါ။
- အဆင့်သတ်မှတ်ချက်ပို့စ်၏ cache ကို အပ်ဒိတ်လုပ်ပါ။
- ပို့စ်အသစ်များ လွှင့်တင်သောအခါတွင် Followers များကို အကြောင်းကြားသင့်သည်။
components
သုံးစွဲသူများ၏ ချိတ်ဆက်မှုများကို ဝဘ်ဆာဗာများက ထိန်းသိမ်းထားသည်။
အထက်ဖော်ပြပါ လုပ်ထုံးလုပ်နည်းများကို အပလီကေးရှင်းဆာဗာမှ လုပ်ဆောင်ပါသည်။
ကက်ရှ်နှင့် ဒေတာဘေ့စ်-
- ဆက်စပ်ဒေတာဘေ့စ်အသုံးပြုသူ/အဖွဲ့အစည်း
- ဆက်စပ်ဒေတာဘေ့စ် (ပို့စ်)
- ပုံ/ဗီဒီယို ရည်ညွှန်းချက်- Aayush စတိုး
- ဆက်စပ်ဒေတာဘေ့စ် မက်တာဒေတာ
စိတ်ကြိုက်ဝန်ဆောင်မှုများ-
- အစာအစာထုတ်လုပ်ခြင်း။
- feeds ၏အသိပေးချက်
6. အသေးစိတ်ဒီဇိုင်း
အစာကျွေးခြင်း၏မျိုးဆက်
ပရိတ်သတ်-အဲဒါနုံအဖတ်ကိုအကောင်အထည်ဖော်:
ဤအမိုက်စားအကောင်အထည်ဖော်မှုတွင် ပြဿနာများ ပါဝင်သည်-
- သူငယ်ချင်း/နောက်လိုက် အများအပြားရှိသော အသုံးပြုသူများသည် ကျွန်ုပ်တို့သည် ပို့စ်များစွာကို ခွဲခြမ်းခြင်း၊ ပေါင်းစည်းခြင်းနှင့် အဆင့်သတ်မှတ်ခြင်းတို့ ပြုလုပ်ရမည်ဖြစ်သောကြောင့် သိသာထင်ရှားသော နှေးကွေးမှုကို သတိပြုမိပါလိမ့်မည်။
- အသုံးပြုသူတစ်ဦးသည် ၎င်းတို့၏ စာမျက်နှာကို ဖွင့်သောအခါ၊ ကျွန်ုပ်တို့သည် အချိန်ဇယားကို ဖန်တီးပါသည်။ ၎င်းသည် နှေးကွေးနိုင်ပြီး latency များစွာရှိသည်။
- အခြေအနေအပ်ဒိတ်တစ်ခုစီသည် တိုက်ရိုက်အပ်ဒိတ်များအတွက် နောက်လိုက်များအားလုံးအတွက် ဖိဒ်အပ်ဒိတ်များ ဖြစ်ပေါ်မည်ဖြစ်သည်။ ၎င်းက ကျွန်ုပ်တို့၏ Newsfeed Generation Service တွင် သိသာထင်ရှားသော နှောင့်နှေးမှုများ ဖြစ်စေနိုင်သည်။
ကျွန်ုပ်တို့သည် အချိန်ကာလကို ကြိုတင်ဖန်တီးနိုင်ပြီး စွမ်းဆောင်ရည်ကို မြှင့်တင်ရန် ၎င်းကို မှတ်ဉာဏ်တွင် သိမ်းဆည်းနိုင်သည်။
အော့ဖ်လိုင်းထုတ်လုပ်ရေး (ဝါသနာရှင်ထွက်ရေး)
ကျွန်ုပ်တို့တွင် သုံးစွဲသူများ၏ သတင်းပေးချက်များကို မန်မိုရီတွင် အဆက်မပြတ်ဖန်တီးကာ သိမ်းဆည်းနေသည့် သီးခြားဆာဗာများ ရှိနိုင်ပါသည်။ အသုံးပြုသူအလိုရှိတိုင်း ကြိုတင်ထုတ်လုပ်ထားသော၊ သိမ်းဆည်းထားသော တည်နေရာမှ သတင်း feed ကို ပေးပို့နိုင်ပါသည်။
အသုံးပြုသူ၏ feed ကို memory တွင် မည်မျှ သိမ်းဆည်းသင့်သနည်း။
သင်၏အသုံးပြုမှုအပြုအမူအပေါ်အခြေခံ၍ လိုက်လျောညီထွေဖြစ်အောင်။
အသုံးပြုသူအားလုံးအတွက် သတင်းပေးချက်တစ်ခု ပြုလုပ်သင့်သည် (၎င်းကို မှတ်ဉာဏ်တွင် ထိန်းသိမ်းထားပါ)။
- မကြာခဏ login မလုပ်တတ်သူများအတွက်။
- LRU-based caching သည်ရိုးရှင်းသောချဉ်းကပ်မှုတစ်ခုဖြစ်သည်။
- ပိုကောင်းတဲ့ဖြေရှင်းချက်တစ်ခုကတော့ အသုံးပြုသူတွေ ဘယ်လို login ဝင်မလဲဆိုတာကို အဖြေရှာဖို့ပါပဲ။ ဘယ်အချိန်လဲ။ ဘယ်နေ့တွေအကြောင်း ပြောနေတာလဲ။
အစားအသောက်ထုတ်ဝေခြင်း။
Fanout သည် သင့်နောက်လိုက်များအားလုံးထံ ပို့စ်တစ်ခုပေးပို့ခြင်းလုပ်ငန်းစဉ်ဖြစ်သည်။
Fanout read(ဆွဲ)
သတင်းဖိဒ်ကို သင်တောင်းဆိုသောအခါ၊ စနစ်သည် ဖတ်ရှုရန် တောင်းဆိုချက်ကို လက်ခံရရှိမည်ဖြစ်သည်။ Fanout read သည် သင့်နောက်လိုက်များအားလုံးကို ၎င်းတို့၏ အကြောင်းအရာကို ဖတ်ရန် တောင်းဆိုချက်တစ်ခု ပေးပို့သည်။
Pros:
- စာရေးနည်းက စျေးမကြီးဘူး။
- ဒေတာကို ဖတ်သည့်အခါ အမျိုးမျိုးသော ပေါင်းစပ်မှု အယ်ဂိုရီသမ်များကို အသုံးပြုရန် ပိုမိုလွယ်ကူသည်။
Cons:
- Follower များသောလူတစ်ယောက်အတွက် စာဖတ်ခြင်းလုပ်ငန်းသည် အလွန်စျေးကြီးသည်။
- အသုံးပြုသူများသည် ၎င်းကို ဆွဲမချမချင်း ဒေတာအသစ်များကို မြင်နိုင်မည်မဟုတ်ပေ။
- ကျွန်ုပ်တို့သည် နောက်ဆုံးပေါ်တင်ထားသော ပို့စ်များကို ပုံမှန်ရယူရန် ဆွဲယူသောအခါ၊ မှန်ကန်သော ဆွဲယူမှုပုံစံကို ရှာဖွေရန် ခက်ခဲပြီး ဆွဲတင်တောင်းဆိုမှုအများစုသည် အချည်းနှီးသောအဖြေကို ပြန်ပေးမည်ဖြစ်ပြီး အရင်းအမြစ်များကို ဖြုန်းတီးနေပါသည်။
Fanout ရေးသားခြင်း(တွန်းအားပေး)
ပို့စ်အသစ်တစ်ခု ပေးပို့သောအခါတွင် ရေးရန် တောင်းဆိုချက်တစ်ခုကို စနစ်သို့ ပြုလုပ်သည်။ fanout write ကို အသုံးပြု၍ ၎င်းတို့၏ သတင်းfeed အသစ်ကို အပ်ဒိတ်လုပ်ရန် သင့်နောက်လိုက်များအားလုံးထံ စာရေးတောင်းဆိုမှုကို ပေးပို့ပါသည်။
အတွက်
- စာဖတ်ခြင်းလုပ်ငန်းစဉ်သည် စျေးမကြီးပါ။
con
- Follower သန်းပေါင်းများစွာရှိသော သုံးစွဲသူတစ်ဦးအတွက်၊ ရေးသား လုပ်ထုံးလုပ်နည်းက အရမ်းဈေးကြီးတယ်။
Feed ၏အဆင့်
ဖိဒ်များကို အချိန်နှင့် တပြေးညီ အမိန့်ပေးမည့်အစား၊ ယနေ့ အဆင့်သတ်မှတ်သည့် အယ်လဂိုရီသမ်များသည် ပိုမိုဆက်စပ်မှုရှိသော အရာများကို ဦးစားပေးထားကြောင်း အာမခံရန် ကြိုးစားသည်။
- ကြိုက်နှစ်သက်မှုများ၊ မှတ်ချက်များနှင့် မျှဝေမှုများ၊ ဆောင်းပါးတွင် ဓာတ်ပုံ သို့မဟုတ် ဗီဒီယိုများပါရှိလျှင် ဤအရာအား နောက်ဆုံးအကြိမ် အပ်ဒိတ်လုပ်ချိန်စသည့် ဖိဒ်တစ်ခု၏ဆက်စပ်မှုကို ဆုံးဖြတ်ရန် ကူညီပေးသည့်အချက်များကို ရွေးချယ်ပါ။
- ဝိသေသလက္ခဏာများပေါ်မူတည်၍ ရမှတ်ကို တွက်ချက်ပါ။
- ရာထူးများကို အဆင့်သတ်မှတ်ရန် ရမှတ်ကို အသုံးပြုပါ။
ကျွန်ုပ်တို့၏အဆင့်သတ်မှတ်ချက်စနစ်သည် မည်မျှထိရောက်သည်ကိုကြည့်ရန် အသုံးပြုသူထိန်းသိမ်းထားမှု၊ ကြော်ငြာဝင်ငွေစသည့် KPIs များကို သတ်မှတ်ပါ။
ကောက်ချက်
Instagram သို့မဟုတ် ၎င်း၏မိခင်လုပ်ငန်း Facebook သည် ကြီးမားသောကော်ပိုရေးရှင်းတစ်ခုဖြစ်သော်လည်း ၎င်းသည် ပိုမိုကောင်းမွန်သောနားလည်မှုရှိသည်။ စနစ်ဒီဇိုင်း။
Instagram ဖိဒ်၏ အဆင့်မြင့်အကျဉ်းချုပ်ကို သင့်အား ပေးဆောင်ရန် အတတ်နိုင်ဆုံး ကြိုးစားခဲ့သည်။
အသုံးဝင်ပြီး အသုံးဝင်မယ်လို့ မျှော်လင့်ပါတယ်။
တစ်ဦးစာပြန်ရန် Leave