မင်္ဂလာပါဗျ
ဒီနေ့ queue system အကြောင်း ကို features
လေးတစ်ခုကိုပြောပြရင်းနဲ့ရှင်းပြပေးပါမယ်။
programming stack တွေကို ဖယ်ထားပီး
concept ကိုသာ ဆွေးနွေးသွားမှာဖြစ်ပါတယ်။
ဒီထဲမှာ queue,event,task,event,socket တွေအကြောင်းကိုနားလည်သွားမယ်
လို့လည်းယူဆပါတယ်။
အရင်ဆုံး ကျွန်တော် ဖန်တီးချင်တဲ့ features လေးတစ်ခုအကြောင်း
ကိုအရင်ပြောပြပေးပါမယ်။
- 5GB လောက်ရှိတဲ့ file တစ်ခုကို webserver ကို upload လုပ် ပါမယ်။
- ဒီအချိန်မှာ 5GB ကို upload လုပ်ဖို့ နာရီဝက်နဲ့အထက်ကြာချိန်ရှိမှာဖြစ်ပါတယ်။
- အဲ့တစ်နေရာမှာပဲ နာရီဝက်လောက် ကြာနေတာက အသုံးပြုသူအတွက်အဆင်မပြေပါဘူး
- အဲ့တော့ upload လုပ်နေတုန်းမှာ app က အခြား features များကိုလည်း အသုံးပြုနေစေချင်ပါတယ်။
အထက်ကလို heavy task တွေ နဲ့ system resources သုံးတဲ့ task တွေကိုဖန်တီးရတဲ့
အခါမှာ queue system တွေအသုံးပြုရမှာဖြစ်ပါတယ်။
🟩 step 1
user က upload လုပ်ပီဆိုတာနဲ့ upload လုပ်ဖို့ function တစ်ခု စဖန်တီးပါမယ်။
(php post_max_size မှာသွားပြင်လိုက်တဲ့ နည်းလမ်းက အလုပ်လုပ်ပေမဲ့ server down သွားနိုင်ပါတယ်။)
🟩 step 2
upload function လေးထဲမှာ user ရွေးချယ်ထားတဲ့ file ကိုယူပီး
job တစ်ခုကိုခိုင်းပီး upload အရင်လုပ်ခိုင်းပါမယ်။ဒီ process လေးကို
jobs or task လို့ခေါ်ပါတယ်။
jobs or task တွေက background service တွေအနေနဲ့ အလုပ်လုပ်နေတာဖြစ်ပါတယ်။
ဒါကြောင့် app မှာ user က တခြားသူအသုံးပြုချင်တဲ့ features တွေ သုံးနိုင်သွားမှာဖြစ်ပါတယ်။
app မှာ တစ်ခုထက်ပိုတဲ့ jobs တွေရှိနေနိုင်ပါတယ်။
ဒါကို queue system က jobs တွေကို ထိမ်းသိမ်းတာတွေ လုပ်ပေးပါတယ်။
ဒါဆို queue နဲ့ jobs(background jobs or tasks) တွေကိုနားလည်သွားလောက်ပီ
လို့ထင်ပါတယ်။
🟩 step 3
ဒuser ဘက်မှာ upload ဘယ်လောက်လုပ်ပီးပီးဆိုတဲ့ progress ကို
ပြသချင်တယ်ဆိုပါစို့
ဒါဆိုရင် upload လုပ်နေတဲ့ jobs လေးထဲမှာ upload လုပ်ပီးတဲ့ percentage လေး
တွေတွက်ထုတ်ပီး realtime web socket သုံးပီး emit လုပ်လုပ် ပေးနေပါမယ်။
web socket emit လုပ်တဲ့အချိန်မှာ event(eg: laravel event) ကိုအသုံးပြုပေးရမှာဖြစ်ပါတယ်။
client(user) ဘက်မှာတော့ socket ကလာတာလေးတွေကို ဖမ်းယူပီးပြသထားခြင်းဖြင့်
upload progress ကိုမြင်နေရမှာဖြစ်ပါတယ်။
upload လုပ်တဲ့ task လေးပီးသွားပီဆိုရင်လည်း event တစ်ခုပို့ပီး
user ကို upload လုပ်ပိးသွားကြောင်း အကြောင်းကြားနိုင်မှာဖြစ်ပါတယ်။
ဒီသဘောတရားမှာဆိုရင် realtime data ပို့ဖို့ websocket ကိုအသုံးပြုပီးတော့
socket fire လုပ်ဖို့အတွက် event ကိုအသုံးချသွားတာဖြစ်ပါတယ်။
🟩 step 4
socket အသုံးမပြုချင်ရင်လည်းရပါတယ်။
log လိုဟာမျိုးအသုံးပြုနိုင်ပါတယ်။
upload task ထဲမှာ ဘယ်လောက်ပီးသွားကြောင်း log ထဲကို
သွားသိမ်းထားပါမယ်
client(user) ဘက်မှာတော့ 2s တစ်ခါ
upload task ကမှတ်တဲ့ log ကိုဖတ်နေခြင်းဖြင့်
upload progress ကိုပြသထားနိုင်မှာဖြစ်ပါတယ်။
ဒါဆိုရင်
background jobs or tasks
queue
websocket
event
log
ဒါတွေအကြောင်းနဲ့ ဘယ်အချိန်မှာ သုံးသင့်တာလည်းဆိုတာ အကြမ်းဖျဉ်း
နားလည်သွားမယ်ထင်ပါတယ်ဗျ။