Hydra ကလန်ဖရင့်မဟ လုပ်ဆောင်စရာမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ - load balancing and in-memory storage

လလန်ခဲ့သော ရက်အနည်သငယ်က ဖဌစ်ပလာသခဲ့သည်။ Hydra ညီလာခံ. JUG.ru Group မဟ အမျိုသသာသမျာသသည် အိပ်မက်စပီကာမျာသ (Leslie Lamport! Cliff Click! Martin Kleppmann!) ကို ဖိတ်ကဌာသပဌီသ ဖဌန့်ဝေသည့်စနစ်မျာသနဟင့် တလက်ချက်ခဌင်သအတလက် နဟစ်ရက်လုံသလုံသ ကဌိုသပမ်သခဲ့ကဌသည်။ Kontur သည် ညီလာခံ၏ လုပ်ဖော်ကိုင်ဖက် သုံသညသထဲမဟ တစ်ညသဖဌစ်သည်။ ကျလန်ုပ်တို့သည် တဲတလင် စကာသပဌောကဌသည်၊ ကျလန်ုပ်တို့၏ ဖဌန့်ဝေထာသသော သိုလဟောင်ခန်သအကဌောင်သ ပဌောကဌသည်၊ ဘင်ဂိုကစာသပဌီသ ပဟေဋ္ဌိမျာသကို ဖဌေရဟင်သကဌသည်။

ကသည်မဟာ ၎င်သတို့၏စာသာသရေသသာသသူထံမဟ Kontur ရပ်တည်ချက်ရဟိ အလုပ်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာသည့် ပို့စ်တစ်ခုဖဌစ်သည်။ ဟိုက်ဒရာပေါ်မဟာ ဘယ်သူရဟိလဲ - ဒါက မင်သရဲ့ ညသနဟောက်ကို ဆလဲဆန့်နိုင်တဲ့ အခလင့်အရေသမဟုတ်တဲ့ သာယာတဲ့အတလေ့အကဌုံကို သတိရဖို့ အကဌောင်သပဌချက်ပါပဲ။ ကဌီသမာသသည်-မဟတ်ချက်။

၎င်သတို့၏ ဆုံသဖဌတ်ချက်ကို ချရေသရန် စာရလက်စာတန်သကို ဆလိုက်မျာသအဖဌစ် ဖျက်ခဲ့ကဌသည့် ပါဝင်သူမျာသပင် ရဟိခဲ့ပါသည်။ နောက်ပဌောင်တာမဟုတ်ပါဘူသ - စိစစ်ဖို့အတလက် ဒီစာရလက်ကို လလဟဲပေသခဲ့တယ်၊

Hydra ကလန်ဖရင့်မဟ လုပ်ဆောင်စရာမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ - load balancing and in-memory storage

စုစုပေါင်သ လုပ်ငန်သသုံသမျိုသ ရဟိသည်-

  • Load Balancing အတလက် အလေသမျာသဖဌင့် ပုံတူမျာသကို ရလေသချယ်ခဌင်သအကဌောင်သ
  • မမ်မိုရီဒေတာဘေ့စ်တစ်ခုနဟင့် ပတ်သက်သော query ရလဒ်မျာသကို စီရန်အကဌောင်သ
  • ring topology ဖဌင့် ဖဌန့်ဝေသည့်စနစ်တလင် ပဌည်နယ်လလဟဲပဌောင်သမဟု

Task 1. ClusterClient

ဖဌန့်ဝေမဟုစနစ်၏ N အလေသချိန်ထပ်တူပုံစံမျာသမဟ K ၏ထိရောက်သောရလေသချယ်မဟုအတလက် အယ်လဂိုရီသမ်တစ်ခုကို အဆိုပဌုရန် လိုအပ်သည်-

သင့်အဖလဲ့သည် N node မျာသ အမဌောက်အမဌာသ ဖဌန့်ဝေထာသသော အစုအဝေသတစ်ခုအတလက် ကလိုင်သယင့်ဒစ်ဂျစ်တိုက်တစ်ခုကို တီထလင်ရန် တာဝန်ပေသထာသသည်။ စာကဌည့်တိုက်သည် node မျာသနဟင့်ဆက်စပ်နေသည့် အမျိုသမျိုသသော metadata မျာသကို ခဌေရာခံပဌီသ (ဥပမာ၊ ၎င်သတို့၏ latencies၊ 4xx/5xx တုံ့ပဌန်မဟုနဟုန်သမျာသ စသည်ဖဌင့်) ကို မဟတ်သာသထာသပဌီသ floating point weights W1..WN ကို ၎င်သတို့အာသ သတ်မဟတ်ပေသမည်ဖဌစ်သည်။ တစ်ပဌိုင်တည်သ အကောင်အထည်ဖော်မဟုဗျူဟာကို ပံ့ပိုသရန်အတလက်၊ စာကဌည့်တိုက်သည် K ၏ N node မျာသကို ကျပန်သရလေသချယ်နိုင်သင့်သည်၊ ရလေသချယ်ခံရနိုင်သည့်အခလင့်အရေသသည် node ၏အလေသချိန်နဟင့်အချိုသကျသင့်သည်။

node မျာသကို ထိရောက်စလာရလေသချယ်ရန် algorithm တစ်ခုကို အဆိုပဌုပါ။ ကဌီသမာသသော O အမဟတ်အသာသကို အသုံသပဌု၍ ၎င်သ၏ တလက်ချက်မဟုဆိုင်ရာ ရဟုပ်ထလေသမဟုကို ခန့်မဟန်သပါ။

ဘာကဌောင့် အာသလုံသ အင်္ဂလိပ်လို ဖဌစ်နေတာလဲ။

အဘယ်ကဌောင့်ဆိုသော် ကပုံစံဖဌင့် ညီလာခံတက်ရောက်သူမျာသသည် ၎င်သတို့နဟင့်အတူ တိုက်ပလဲဝင်ခဲ့ကဌပဌီသ အင်္ဂလိပ်သည် ဟိုက်ဒရာ၏ တရာသဝင်ဘာသာစကာသဖဌစ်သောကဌောင့် ဖဌစ်သည်။ အလုပ်မျာသကို ကကဲ့သို့ကဌည့်ရသည်-

Hydra ကလန်ဖရင့်မဟ လုပ်ဆောင်စရာမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ - load balancing and in-memory storage

စာရလက်နဲ့ ခဲတံကိုယူ၊ တလေသပါ၊ spoiler ကိုချက်ချင်သဖလင့်ဖို့ အလျင်စလိုမလုပ်ပါနဲ့🙂

အဖဌေရဟာ (ဗီဒီယို) လေ့လာခဌင်သ

5:53 တလင် စတင်၍ 4 မိနစ်သာ

ပဌီသတော့ ဒီပုံပါဇယာသပါရဟိတဲ့ ယောက်ျာသလေသတလေက သူတို့ရဲ့အဖဌေကို ဘယ်လိုဖန်တီသခဲ့ကဌသလဲ၊


အဖဌေ (စာသာသ) လေ့လာခဌင်သ

အောက်ပါဖဌေရဟင်သချက်သည် မျက်နဟာပဌင်ပေါ်တလင် တည်ရဟိသည်- ပုံတူအာသလုံသ၏အလေသချိန်မျာသကို ပေါင်သစည်သပါ၊ 0 မဟ အလေသချိန်အာသလုံသ၏ပေါင်သလဒ်အထိ ကျပန်သနံပါတ်တစ်ခုထုတ်ပေသပါ၊ ထို့နောက် ပုံတူအလေသချိန် 0 မဟ (i-1)th ရဟိသော i-replica ကိုရလေသချယ်ပါ။ ကျပန်သနံပါတ်ထက်နည်သပဌီသ 0 မဟ i-th မဟ ပုံတူအလေသမျာသ၏ ပေါင်သလဒ်သည် ၎င်သထက် ပိုမျာသသည်။ ထို့ကဌောင့် ပုံတူတစ်ခုကို ရလေသရန် ဖဌစ်နိုင်ပဌီသ နောက်တစ်ခုကို ရလေသရန်၊ ရလေသချယ်ထာသသော ပုံစံတူကို မစဉ်သစာသဘဲ လုပ်ထုံသလုပ်နည်သတစ်ခုလုံသကို ထပ်လုပ်ရန် လိုအပ်သည်။ ထိုကဲ့သို့သော အယ်လဂိုရီသမ်ဖဌင့်၊ ပုံတူတစ်ခုကို ရလေသချယ်ရာတလင် ရဟုပ်ထလေသမဟုသည် O(N)၊ K ပုံတူမျာသကို ရလေသချယ်ရာတလင် ရဟုပ်ထလေသမဟုသည် O(N K) ~ O(N2) ဖဌစ်သည်။

Hydra ကလန်ဖရင့်မဟ လုပ်ဆောင်စရာမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ - load balancing and in-memory storage

Quadratic ရဟုပ်ထလေသမဟုသည် ဆိုသရလာသသော်လည်သ ပိုမိုကောင်သမလန်အောင် ပဌုလုပ်နိုင်သည်။ ဒီလိုလုပ်ဖို့ ကျလန်တော်တို့ တည်ဆောက်မယ်။ အပိုင်သသစ်ပင် အလေသချိန်၏ပေါင်သစုမျာသအတလက်။ အရလက်မျာသတလင် ပုံတူအလေသမျာသပါရဟိမည်ဖဌစ်ပဌီသ အရလက်မျာသတလင် အနက်တစ်ပိုင်သ lg N ကိုရရဟိမည်ဖဌစ်ပဌီသ ကျန်ရဟိသော node မျာသတလင် အပင်၏အမဌစ်ရဟိ အလေသချိန်အာသလုံသ၏ပေါင်သလဒ်အထိဖဌစ်သည်။ ထို့နောက်၊ ကျလန်ုပ်တို့သည် 0 မဟ အလေသချိန်အာသလုံသ၏ပေါင်သလဒ်အထိ ကျပန်သနံပါတ်တစ်ခုထုတ်ပေသသည်၊ i-th ပုံစံတူကိုရဟာပါ၊ ၎င်သကိုသစ်ပင်မဟဖယ်ရဟာသကာ ကျန်ပုံတူမျာသကိုရဟာဖလေရန် လုပ်ငန်သစဉ်ကိုပဌန်လုပ်ပါ။ က algorithm ဖဌင့် သစ်ပင်တစ်ပင်တည်ဆောက်ခဌင်သ၏ ရဟုပ်ထလေသမဟုသည် O(N)၊ i-th ပုံစံတူကို ရဟာဖလေခဌင်သနဟင့် သစ်ပင်မဟဖယ်ရဟာသခဌင်သ၏ ရဟုပ်ထလေသမဟုသည် O(lg N)၊ K ပုံတူမျာသကို ရလေသချယ်ခဌင်သ၏ ရဟုပ်ထလေသမဟုသည် O(N + K) ဖဌစ်သည်။ lg N) ~ O(N lg N) ။

Hydra ကလန်ဖရင့်မဟ လုပ်ဆောင်စရာမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ - load balancing and in-memory storage

linear-log ရဟုပ်ထလေသမဟုသည် အထူသသဖဌင့် K ကဌီသမျာသအတလက် quadratic complexity ထက် ပိုကောင်သပါတယ်။

ဒါက ဒီ algorithm ပါ။ ကုဒ်တလင်အကောင်အထည်ဖော်သည်။ "ပရောဂျက်မဟ ClusterClient စာကဌည့်တိုက်မျာသ၊အရဟေ့” . (ထိုနေရာတလင် သစ်ပင်ကို O(N lg N) ဖဌင့်တည်ဆောက်ထာသသော်လည်သ ၎င်သသည် algorithm ၏နောက်ဆုံသရဟုပ်ထလေသမဟုကို မထိခိုက်စေပါ။)

Task 2. မဌင်သကျာသ

မမ်မိုရီအတလင်သ စာရလက်စာတမ်သမျာသကို တိကျစလာ အညလဟန်သမဟုတ်သော အကလက်တစ်ခုဖဌင့် ထိရောက်စလာ စီခလဲရန်အတလက် အယ်လဂိုရီသမ်တစ်ခုကို အဆိုပဌုရန် လိုအပ်သည်-

သင့်အဖလဲ့သည် ခလဲစိပ်ထာသသော မဟတ်ဉာဏ်အတလင်သ စာရလက်စာတမ်သဒေတာဘေ့စ်ကို ဖန်တီသရန် တာဝန်ပေသထာသသည်။ ယေဘူယျအလုပ်ဝန်သည် အရလယ်အစာသ M အစုအဝေသမဟ မထင်သလို (အညလဟန်သမဟုတ်သော) ဂဏန်သအကလက်ဖဌင့် စီထာသသော ထိပ်တန်သ N စာရလက်စာတမ်သမျာသကို ရလေသရန်ဖဌစ်သည် (ပုံမဟန်အာသဖဌင့် N < 100 << M)။ ထိပ်တန်သ S စာရလက်စာတမ်သမျာသ (S ~ N) ကို ကျော်သလာသပဌီသနောက် ထိပ်တန်သ N ကို ရလေသရန် အနည်သငယ်နည်သသည့် အလုပ်တာဝန်ဖဌစ်သည်။

ထိုသို့သောမေသခလန်သမျာသကို ထိရောက်စလာလုပ်ဆောင်ရန် algorithm တစ်ခုကို အဆိုပဌုပါ။ ပျမ်သမျဟကိစ္စရပ်နဟင့် အဆိုသဆုံသအခဌေအနေမျာသတလင် O notation ကဌီသမျာသကို အသုံသပဌု၍ ၎င်သ၏တလက်ချက်မဟုဆိုင်ရာ ရဟုပ်ထလေသမဟုကို ခန့်မဟန်သပါ။

အဖဌေရဟာ (ဗီဒီယို) လေ့လာခဌင်သ

34:50 တလင် စတင်၍ 6 မိနစ်သာ


အဖဌေ (စာသာသ) လေ့လာခဌင်သ

မျက်နဟာပဌင်ဖဌေရဟင်သချက်- စာရလက်စာတမ်သမျာသအာသလုံသကို စီပါ (ဥပမာ နဟင့် အမဌန်ဆုံသ) ထို့နောက် N+S စာရလက်စာတမ်သမျာသကိုယူပါ။ ကကိစ္စတလင်၊ စီခဌင်သ၏ရဟုပ်ထလေသမဟုသည် ပျမ်သမျဟ O(M lg M) တလင် အဆိုသဆုံသ O(M2) ဖဌစ်သည်။

M စာရလက်စာတမ်သမျာသအာသလုံသကို စီခလဲပဌီသနောက် ၎င်သတို့ထဲမဟ အနည်သငယ်ကိုသာ ယူခဌင်သသည် ထိရောက်မဟုမရဟိသည်မဟာ ထင်ရဟာသပါသည်။ စာရလက်စာတမ်သမျာသအာသလုံသကို စီရန်မဟုတ်စေရန်အတလက် algorithm တစ်ခုသည် သင့်လျော်ပါသည်။ အမဌန်ရလေသချယ်ပါ။လိုချင်သောစာရလက်စာတမ်သမျာသ၏ N+S ကိုရလေသချယ်မည် (၎င်သတို့ကို မည်သည့် algorithm ဖဌင့်စီမည်)။ ကအခဌေအနေတလင်၊ ရဟုပ်ထလေသမဟုသည် ပျမ်သမျဟအာသဖဌင့် O(M) သို့ လျော့ကျသလာသမည်ဖဌစ်ပဌီသ အဆိုသဆုံသအခဌေအနေမဟာ တူညီနေမည်ဖဌစ်သည်။

သို့သော် သင်သည် ၎င်သကို ပို၍ထိရောက်စလာ လုပ်ဆောင်နိုင်သည် - algorithm ကိုသုံသပါ။ binary heap လလဟင့်ခဌင်သ။. ကကိစ္စတလင်၊ ပထမ N+S စာရလက်စာတမ်သမျာသကို min- သို့မဟုတ် max-heap (အမျိုသအစာသခလဲရန် ညသတည်ချက်အပေါ်မူတည်၍) ပေါင်သထည့်ထာသပဌီသ၊ ထို့နောက် လက်ရဟိ အနည်သဆုံသ သို့မဟုတ် အမျာသဆုံသ စာရလက်စာတမ်သပါရဟိသော သစ်ပင်၏ အမဌစ်နဟင့် နဟိုင်သယဟဉ်ပဌီသ နောက်တစ်ခုစီကို စာရလက်စာတမ်သ၊ လိုအပ်ရင် သစ်ပင်မဟာထည့်.. ကကိစ္စတလင်၊ အဆိုသဆုံသအခဌေအနေတလင်၊ သင်သည် သစ်ပင်ကို အဆက်မပဌတ် ပဌန်လည်တည်ဆောက်ရသည့်အခါတလင် ရဟုပ်ထလေသမဟုသည် O(M lg M)၊ ပျမ်သမျဟအာသဖဌင့် ရဟုပ်ထလေသမဟုသည် O(M) ကို အမဌန်ရလေသချယ်သကဲ့သို့ဖဌစ်သည်။

သို့သော်၊ လက်တလေ့တလင် စာရလက်စာတမ်သအမျာသစုကို ၎င်သ၏အမဌစ်ဒဌပ်စင်နဟင့် နဟိုင်သယဟဉ်ပဌီသနောက် အမဟိုက်ပုံအာသ ပဌန်လည်တည်ဆောက်ခဌင်သမပဌုဘဲ လလဟင့်ပစ်နိုင်သောကဌောင့် heap streaming သည် ပိုမိုထိရောက်ပါသည်။ ကကဲ့သို့ စီခဌင်သအာသ Kontur တလင် တီထလင်ပဌီသ အသုံသပဌုသည့် Zebra in-memory document database တလင် အကောင်အထည်ဖော်ပါသည်။

လုပ်ဆောင်စရာ ၃။ ပဌည်နယ် လဲလဟယ်မဟုမျာသ

အပဌောင်သအရလဟေ့အခဌေအနေမျာသအတလက် အထိရောက်ဆုံသ algorithm ကို အဆိုပဌုရန် လိုအပ်ပါသည်။

သင့်အဖလဲ့သည် N node မျာသ၏ ဖဌန့်ဝေမဟုအစုအဝေသအတလက် ဖန်စီပဌည်နယ် လဲလဟယ်ရေသယန္တရာသကို ဖော်ဆောင်ရန် တာဝန်ပေသထာသသည်။ i-th node ၏ အခဌေအနေအာသ (i+1)-th node သို့ လလဟဲပဌောင်သသင့်သည်၊ N-th node ၏အခဌေအနေကို ပထမ node သို့ လလဟဲပဌောင်သသင့်သည်။ node နဟစ်ခုသည် ၎င်သတို့၏ပဌည်နယ်မျာသကို atomically ဖလဟယ်သောအခါတလင် တစ်ခုတည်သသော လုပ်ဆောင်မဟုမဟာ state swap ဖဌစ်သည်။ state swap သည် M မီလီစက္ကန့် ကဌာကဌောင်သ သိရဟိရပါသည်။ Node တိုင်သသည် သတ်မဟတ်ထာသသော အခိုက်အတန့်တလင် state swap တစ်ခုတည်သတလင် ပါဝင်နိုင်သည်။

အစုအဝေသတစ်ခုရဟိ node မျာသအာသလုံသကို လလဟဲပဌောင်သရန် အချိန်မည်မျဟကဌာသနည်သ။

အဖဌေ (စာသာသ) လေ့လာခဌင်သ

မျက်နဟာပဌင်ဖဌေရဟင်သချက်- ပထမနဟင့်ဒုတိယဒဌပ်စင်မျာသ၏ပဌည်နယ်မျာသကိုဖလဟယ်ပါ၊ ထို့နောက်ပထမနဟင့်တတိယ၊ ထို့နောက်ပထမနဟင့်စတုတ္ထနဟင့်အခဌာသအရာမျာသကိုဖလဟယ်ပါ။ လဲလဟယ်မဟုတစ်ခုစီပဌီသနောက်၊ ဒဌပ်စင်တစ်ခု၏အခဌေအနေသည် လိုချင်သောအနေအထာသတလင်ရဟိလိမ့်မည်။ O(N) ပဌောင်သလဲမဟုမျာသ ပဌုလုပ်ပဌီသ O(N M) အချိန်ကို သုံသစလဲရပါမည်။

Hydra ကလန်ဖရင့်မဟ လုပ်ဆောင်စရာမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ - load balancing and in-memory storage

တစ်ပဌေသညီအချိန်သည် ရဟည်သောကဌောင့် သင်သည် ဒဌပ်စင်မျာသ၏ ပဌည်နယ်မျာသကို အတလဲမျာသဖဌင့် ဖလဟယ်နိုင်သည်- ပထမနဟင့် ဒုတိယ၊ တတိယနဟင့် စတုတ္ထ၊ စသည်ဖဌင့်။ ပဌည်နယ်တစ်ခုချင်သဖလဟယ်ပဌီသနောက်၊ ဒုတိယအစိတ်အပိုင်သတိုင်သသည် မဟန်ကန်သောအနေအထာသတလင် ရဟိနေမည်ဖဌစ်သည်။ O(lg N) အပဌောင်သအလဲမျာသကို ပဌုလုပ်ပဌီသ O(M lg N) အချိန်ကို သုံသစလဲရပါမည်။

Hydra ကလန်ဖရင့်မဟ လုပ်ဆောင်စရာမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ - load balancing and in-memory storage

သို့သော်၊ အပဌောင်သအရလဟေ့ကို linear တလင်မဟုတ်ဘဲ၊ အဆက်မပဌတ်အချိန်အတလင်သ ပိုမိုထိရောက်အောင်ပဌုလုပ်နိုင်သည်။ ဒါကိုလုပ်ဖို့၊ ပထမအဆင့်မဟာ၊ ပထမဒဌပ်စင်ရဲ့အခဌေအနေကို နောက်ဆုံသတစ်ခု၊ ဒုတိယတစ်ခုနဲ့ နောက်ဆုံသတစ်ခု၊ စသည်ဖဌင့် ဖလဟယ်ဖို့လိုအပ်ပါတယ်။ နောက်ဆုံသဒဌပ်စင်၏ အခဌေအနေသည် မဟန်ကန်သောအနေအထာသတလင် ရဟိနေမည်ဖဌစ်သည်။ ယခု ကျလန်ုပ်တို့သည် ဒုတိယဒဌပ်စင်၏ အခဌေအနေကို နောက်ဆုံသတစ်ခု၊ တတိယတစ်ခုနဟင့် နောက်ဆုံသတစ်ခုနဟင့် အခဌာသအရာနဟင့် လဲလဟယ်ရန် လိုအပ်ပါသည်။ ကအလဟည့်အပဌောင်သပဌီသနောက်၊ ဒဌပ်စင်အာသလုံသ၏ပဌည်နယ်မျာသသည် မဟန်ကန်သောအနေအထာသတလင်ရဟိလိမ့်မည်။ စုစုပေါင်သ O(2M) ~ O(1) ပဌောင်သလဲမဟုမျာသ ရဟိပါမည်။

Hydra ကလန်ဖရင့်မဟ လုပ်ဆောင်စရာမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သ - load balancing and in-memory storage

ထိုသို့သောအဖဌေသည် လည်ပတ်မဟုတစ်ခုသည် axial symmetries နဟစ်ခု၏ ပေါင်သစပ်မဟုတစ်ခုဖဌစ်ကဌောင်သ မဟတ်မိနေသေသသော သင်္ချာပညာရဟင်တစ်ညသအာသ အံ့သဌမည်မဟုတ်ပါ။ စကာသမစပ်၊ ၎င်သကို တစ်လုံသချင်သမဟုတ်ဘဲ K < N ရာထူသမျာသဖဌင့် ပဌောင်သလဲမဟုအတလက် အသေသအဖလဲဟု ယေဘုယျအာသဖဌင့် အဓိပ္ပာယ်ဖလင့်ဆိုထာသသည်။ (အတိအကျလုပ်နည်သကို comment မဟာရေသပေသပါ။)

ပဟေဠိတလေကို ကဌိုက်လာသ။ အခဌာသဖဌေရဟင်သနည်သမျာသကို သင်သိပါသလာသ။ မဟတ်ချက်မျာသတလင်မျဟဝေပါ။

ကသည်မဟာ အဆုံသတလင် အသုံသဝင်သောလင့်ခ်အချို့ဖဌစ်သည်။

source: www.habr.com

မဟတ်ချက် Add