Internet Technology ၏လျင်မြန်စွာဆင့်ကဲပြောင်းလဲခြင်းနှင့်အတူ Microssvice ဗိသုကာလက်ရာများသည်အလွန်အမင်းရရှိနိုင်သောစနစ်များကိုတည်ဆောက်ရန်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်လာသည်။ 0 န်ကြီးဌာနတည်ငြိမ်မှုကိုသေချာစေရန်အတွက် 0 န်ကြီးခံ 0 န်ဆောင်မှုများသေချာစေရန်အတွက်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းကန့်သတ်ထားသည့်ယန္တရားများကိုအကောင်အထည်ဖော်ရန်အထူးအရေးကြီးသည်။ ဤဆောင်းပါးသည်အမှန်တကယ်လိုအပ်ချက်များအပေါ် အခြေခံ. PHP Mosservices ပိုင်သ 0 ဏတွင်ဤလုပ်ဆောင်မှုနှစ်ခုကိုအကောင်အထည်ဖော်ရန်အသုံးများသောနည်းလမ်းများကိုမိတ်ဆက်ပေးလိမ့်မည်။
အစဉ်အလာ monolithic applications များအရတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုစီမံခန့်ခွဲမှုအတော်လေးရိုးရှင်းပါသည်။ Microssylice ဗိသုကာလက်အောက်တွင်လွတ်လပ်သော 0 န်ဆောင်မှုမျိုးစုံသည်တစ် ဦး နှင့်တစ် ဦး ဆက်သွယ်ပြောဆိုကြသည်။ တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများမြင့်တက်လာသောအခါ system အရင်းအမြစ်များကိုအိပ်စက်ခြင်းသို့မဟုတ်နှေးကွေးသောတုံ့ပြန်မှုများဖြစ်ပေါ်စေနိုင်သည်။ ဤအဆုံးတွင်ဆာဗာတွင်ကောင်းမွန်သောတစ်ပြိုင်နက်တည်းထိန်းချုပ်မှုမဟာဗျူဟာရှိရမည်။
Semaphore ဆိုသည်မှာတစ်ပြိုင်နက်တည်းကွပ်မျက်နိုင်သောအလုပ်အရေအတွက်ကိုကန့်သတ်ရန်သင့်လျော်သောပုံမှန်တစ်ပြိုင်နက်တည်း control method ဖြစ်သည်။ PHP တွင် Semaptore ယန္တရားကိုသက်ဆိုင်ရာ extension ကို အသုံးပြု. အကောင်အထည်ဖော်နိုင်သည်။
extension ကို install လုပ်ပါ။
$ pecl install sem
နမူနာကုဒ်:
// အဆိုပါ semaphore အစပျိုး,parameters များသည်တစ်ပြိုင်နက်တည်းကန့်သတ်ချက်ကိုဖော်ပြသည်
$sem = new Semaphore(10);
// Semapsa အရင်းအမြစ်များကိုရယူပါ
$sem->acquire();
// စီးပွားရေးယုတ္တိဗေဒအပြောင်းအလဲနဲ့ကုဒ်ကိုဒီမှာထားတယ်
// အရင်းအမြစ်များကိုအခမဲ့
$sem->release();
အရင်းအမြစ်များအရေအတွက်၏အထက်အကန့်အသတ်ကိုသတ်မှတ်ခြင်းအားဖြင့်တစ်ပြိုင်တည်းလက်လှမ်းမီမှုအရေအတွက်ကိုထိရောက်စွာကန့်သတ်ပြီးနောက်ခံ 0 န်ဆောင်မှုများကိုကာကွယ်နိုင်သည်။
Queue ယန္တရားသည်အချိန်တိုတောင်းသောကာလအတွင်းတစ်ပြိုင်နက်တည်းသက်ရောက်မှုရှိသော 0 န်ဆောင်မှုများကိုအတိုကောက်သက်ရောက်မှုရှိရန်တောင်းဆိုမှုများကိုရှောင်ရှားရန်, Redis သည်တစ်ပြိုင်နက်တည်းတန်းစီများတည်ဆောက်ရန်အသုံးပြုနိုင်သည့်စာရင်းအချက်အလက်ဖွဲ့စည်းပုံကိုထောက်ပံ့ပေးသည်။
installation မှီခို:
$ pecl install redis
$ composer require predis/predis
နမူနာကုဒ်:
// ဆက် Redis
$redis = new PredisClient();
// တန်းစီစစ်ဆင်ရေးသို့ဆက်သွယ်ပါ
$redis->rpush('request_queue', time());
// ထွက်သွားခြင်း
$request = $redis->lpop('request_queue');
// စီးပွားရေးယုတ္တိဗေဒအပြောင်းအလဲနဲ့ကုဒ်နံပါတ်
// ပြုပြင်ထားသောတောင်းဆိုမှုများကိုဖျက်ပါ(မလုပ်မနေရမဟုတ်သော)
$redis->lrem('request_queue', 0, $request);
Queue များတွင်တောင်းဆိုမှုများကိုထုတ်ယူခြင်းအားဖြင့်စနစ်သည်ချက်ချင်းဖိအားကိုလျှော့ချရန်အတွက်စနစ်ကိုစနစ်တကျလုပ်ဆောင်နိုင်စွမ်းရှိနိုင်သည်။
လက်ရှိကန့်သတ်ခြင်းသည်တက်ကြွစွာထိန်းချုပ်ထားသောနည်းဗျူဟာတစ်ခုဖြစ်သည်။
Token Bucket algorithm သည်အများဆုံးအသုံးအများဆုံး algorithms ကိုကန့်သတ်ထားသည့်လက်ရှိအခြေအနေတွင်တစ်ခုဖြစ်သည်။ တစ်စက္ကန့်တစ်စက္ကန့်တစ်စက္ကန့်ကိုတစ်ပြားလျှင်သတ်မှတ်ထားသောတိုကင်အရေအတွက်ကိုထုတ်လုပ်သည်။
နမူနာအကောင်အထည်ဖော်မှု (Redis အပေါ်အခြေခံသည်):
$redis = new PredisClient();
$rate = 10; // စက္ကန့်တိုင်းကိုထုတ်လုပ်ပါ 10 တစ် ဦး တိုကင်
$capacity = 20; // တိုကင်ပုံးစွမ်းရည်
$time = microtime(true);
$tokens = $redis->get('tokens');
if ($tokens === null) {
$tokens = $capacity;
$redis->set('tokens', $tokens);
$redis->set('last_time', $time);
} else {
$interval = $time - $redis->get('last_time');
$newTokens = $interval * $rate;
$tokens = min($tokens + $newTokens, $capacity);
$redis->set('tokens', $tokens);
$redis->set('last_time', $time);
}
$allow = $redis->get('tokens') >= 1;
if ($allow) {
$redis->decr('tokens');
// စီးပွားရေးယုတ္တိဗေဒ Execute
} else {
// တောင်းဆိုမှုကိုအပြောင်းအလဲနဲ့ငြင်းပယ်
}
ဤနည်းလမ်းသည်တစ်ယူနစ်တွင်တောင်းဆိုမှုအပြောင်းအလဲနဲ့အကြိမ်ရေကိုတိကျစွာထိန်းချုပ်နိုင်သည်။
ထိရောက်သောတစ်ပြိုင်နက်တည်းကန့်သတ်ထိန်းချုပ်မှုနှင့် PHP Mountrysvices ရှိလက်ရှိကန့်သတ်ထားသောယန္တရားများကိုစနစ်စွမ်းဆောင်ရည်နှင့်ရရှိနိုင်မှုကိုတိုးတက်စေရန်အလွန်အရေးကြီးသည်။ ဤဆောင်းပါးသည်ပဉ္စမနှင့် redis အပေါ် အခြေခံ. တစ်ပြိုင်နက်တည်းထိန်းချုပ်ရေးအစီအစဉ်အပြင် algorithm ကိုကန့်သတ်ချက်ကိုအကောင်အထည်ဖော်သည့်အနေဖြင့်အကောင်အထည်ဖော်မှုနည်းလမ်းကိုမိတ်ဆက်ပေးခဲ့သည်။ ဤနည်းဗျူဟာများပေါင်းစပ်ထားသောအသုံးချခြင်းသည် 0 န်ဆောင်မှု၏ 0 န်ဆောင်မှု၏တည်ငြိမ်မှုစွမ်းရည်ကိုသိသိသာသာမြှင့်တင်ပေးနိုင်သည်။