စီးပွားရေးအချက်အလက်ပမာဏအလျင်အမြန်တိုးမြှင့်မှုများကြောင့်ရိုးရာတစ်ခုတည်း application ဗိသုကာများသည်အကြီးစားနှင့်အထင်အရှားနှင့်မြင့်မားသောတစ်ပြိုင်နက်တည်း data processing ၏လိုအပ်ချက်များကိုဖြည့်ဆည်းနိုင်ခြင်းမရှိခဲ့ပါ။ စီးပွားရေးဆုံးဖြတ်ချက်များအားပံ့ပိုးရန်အတွက်ပိုမိုထိရောက်စွာပိုမိုထိရောက်စွာပိုမိုထိရောက်စွာဖြန့်ဖြူးထားသောခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ဆုံးဖြတ်ချက်ချခြင်းယန္တရားများကို PHP Microssvice ဗိသုကာလက်ရာသို့မိတ်ဆက်ပေးနေသည်။ ဤဆောင်းပါးသည် PHP ဖြင့်မည်သို့အောင်မြင်ရန်နှင့်အမှန်တကယ်ရရှိနိုင်သောဥပမာကုဒ်ကိုလေ့လာပါမည်။
Microssvice System အောက်တွင်ဖြန့်ဝေထားသောခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ဆုံးဖြတ်ချက်ချခြင်းနှင့်ဆုံးဖြတ်ချက်ချခြင်းအတွက်ပထမခြေလှမ်းမှာ System Architecture ကိုကျိုးကြောင်းဆီလျော်စွာဒီဇိုင်းဆွဲရန်ဖြစ်သည်။ အောက်ဖော်ပြပါသည်ပုံမှန်အားဖြင့်ဖြန့်ဝေထားသောစနစ်အခန်းကဏ် system ဖြစ်သည်။
PHP Microsvicine တွင် message queues (ဥပမာ Rabbitmq သို့မဟုတ် Kafka ကဲ့သို့သော) ကို Master နှင့် Slave Node များအကြား decoupled ဆက်သွယ်ရေးကိုရရှိရန်အတွက် transit cymers များအဖြစ်အသုံးပြုနိုင်သည်။ Task Scheduling လုပ်ငန်းစဉ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
ဤနေရာတွင်လုပ်ငန်းတာဝန်များနှင့်ကွပ်မျက်ခြင်းအတွက် PHP Code Negion ဥပမာ -
<?php
// Master Service Node ကုဒ်
// အလုပ်တစ်ခုကိုမက်ဆေ့ခ်ျကိုတန်းစီရန်ထုတ်ဝုံး
function sendTaskToQueue($task) {
$queue = new RabbitMQ();
$queue->push($task);
}
// အလုပ်သမား node များမှအလုပ်ရလဒ်များကိုလက်ခံရရှိသည်
function receiveTaskResult() {
$queue = new RabbitMQ();
$result = $queue->pop();
// အပြောင်းအလဲများရလဒ်များ...
}
// အလုပ်လုပ် node ကုဒ်
// မက်ဆေ့ခ်ျကိုတန်းမှအလုပ်များကိုရယူပါ
function getTaskFromQueue() {
$queue = new RabbitMQ();
$task = $queue->pop();
return $task;
}
// တာဝန်များကိုလုပ်ဆောင်
function executeTask($task) {
// သတ်သတ်မှတ်မှတ်ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ဆုံးဖြတ်ချက်ချအလုပ်များလုပ်ဆောင်ပါ...
$result = analysisAndDecision($task);
return $result;
}
// လုပ်ငန်းကိုမာစတာ node ကိုပြန်ပို့ပါ
function sendTaskResult($result) {
$queue = new RabbitMQ();
$queue->push($result);
}
ကြီးမားသောအချက်အလက်များကိုပြုပြင်သည့်အခါ၎င်းသည်ပြုပြင်ခြင်းအတွက် node များနှင့် ပတ်သတ်. ဒေတာများကိုဖြန့်ဝေရန်သော့ချက်ဖြစ်သည်။ PHP တွင်ဆိုင်းငံ့ထားသောဒေတာများကိုအပိုင်းအစများ ခွဲ. ခွဲထုတ်နိုင်ပြီးမက်ဆေ့ခ်ျကိုလူတန်းစားသို့သီးခြားစီပို့ပြီးအပြိုင် throughput ကိုတိုးတက်စေရန်အပြိုင် node များကပြုလုပ်ခဲ့သည်။
<?php
// Master Service Node ကုဒ်
// ဒေတာကိုမက်ဆေ့ခ်ျကိုတန်းစီရန်ခြစ်ရာ
function sendShardedDataToQueue($data) {
$queue = new RabbitMQ();
foreach ($data as $shard) {
$queue->push($shard);
}
// ပေးပို့ပြီးနောက်ပြည့်စုံပြီးနောက်,အဆုံး tag ကိုပို့ပါ
$queue->push('end');
}
// အလုပ်လုပ် node ကုဒ်
// မက်ဆေ့ခ်ျကိုတန်းစီမှရှာဖွေတွေ့ရှိဒေတာများကိုရယူပါ
function processDataFromQueue() {
$queue = new RabbitMQ();
while (true) {
$shard = $queue->pop();
if ($shard == 'end') {
break;
}
// PARKED ဒေတာကို sharded...
analysisAndDecision($shard);
}
}
ကြံ့ခိုင်ဖြန့်ဖြူးထားသောခွဲခြမ်းစိတ်ဖြာမှုနှင့်ဆုံးဖြတ်ချက်ချစနစ်တည်ဆောက်ရန်အောက်ပါအချက်များကိုဂရုပြုရန်လိုအပ်သည် -
ဤဆောင်းပါးသည် Php Microssvice ဗိသုကာပုံစံဖြင့်ဖြန့်ဖြူးထားသောခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ဆုံးဖြတ်ချက်ချခြင်းစနစ်တည်ဆောက်ရန်အပြည့်အဝစိတ်ကူးများနှင့်အကောင်အထည်ဖော်မှုနည်းလမ်းများကိုမိတ်ဆက်ပေးသည်။ Master Control Node နှင့်အလုပ်လုပ်သည့် Node အကြား RabbitMQ, decouple ထိတွေ့ခြင်းကဲ့သို့သော middateware ကို အသုံးပြု. စနစ်၏တစ်ပြိုင်နက်တည်းလုပ်ဆောင်နိုင်စွမ်းနှင့်ပမာဏကိုများစွာတိုးတက်စေနိုင်သည်။ အနာဂတ်တွင်စနစ်၏ပြောင်းလွယ်ပြင်လွယ်မှုနှင့်ကြံ့ခိုင်မှုကိုပိုမိုတိုးတက်စေရန်အချိန်နှင့်တပြေးညီစောင့်ကြည့်လေ့လာခြင်း,