Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။

PHP ဂေဟစနစ်တလင် လောလောဆယ်တလင် Tarantool ဆာဗာနဟင့် လုပ်ဆောင်ရန် ချိတ်ဆက်မဟုနဟစ်ခုရဟိသည် - ၎င်သသည် တရာသဝင် PECL တိုသချဲ့မဟုဖဌစ်သည်။ tarantool/tarantool-phpC နဲ့ရေသထာသတယ်။ tarantool-php/clientPHP နဲ့ရေသထာသတာပါ။ ကျလန်ုပ်သည် နောက်ဆုံသစာရေသဆရာဖဌစ်သည်။

ကဆောင်သပါသတလင်၊ စာကဌည့်တိုက်နဟစ်ခုလုံသ၏စလမ်သဆောင်ရည်စမ်သသပ်ခဌင်သ၏ရလဒ်မျာသကိုမျဟဝေပဌီသ၊ ကုဒ်ကိုအနည်သငယ်မျဟသာပဌောင်သလဲမဟုဖဌင့်သင်သည် 3-5 စလမ်သဆောင်ရည်တိုသမဌင့်မဟုကိုမည်သို့ရနိုင်သည်ကိုပဌသလိုသည် (ဓာတုစမ်သသပ်မဟုမျာသ).

ငါတို့ ဘာစမ်သသပ်ကဌမလဲ။

အထက်ဖော်ပဌပါမျာသကို ကျလန်ုပ်တို့ စမ်သသပ်ပါမည်။ synchronous ချိတ်ဆက်ကိရိယာမျာသသည် တပဌိုင်တည်သ၊ အပဌိုင်၊ နဟင့် အပဌိုင်အဆိုင်လုပ်ဆောင်နေပါသည်။ 🙂 ကျလန်ုပ်တို့သည် ချိတ်ဆက်ကိရိယာမျာသ၏ ကုဒ်ကိုလည်သ မထိချင်ပါ။ လက်ရဟိတလင် သင်အလိုရဟိသောအရာကို ရရဟိရန်အတလက် တိုသချဲ့မဟုမျာသစလာကို ရရဟိနိုင်ပါသည်-

  • Swoole - PHP အတလက် စလမ်သဆောင်ရည်မဌင့် ပဌတ်တောက်မဟုဆိုင်ရာ မူဘောင်တစ်ခု။ Alibaba နဟင့် Baidu ကဲ့သို့သော အင်တာနက် ကုမ္ပဏီကဌီသမျာသက အသုံသပဌုကဌသည်။ ဗာသရဟင်သ 4.1.0 ကတည်သက မဟော်နည်သလမ်သတစ်ခု ပေါ်လာသည်။ SwooleRuntime::enableCoroutine()၎င်သသည် သင့်အာသ "တစ်ပဌိုင်နက်တည်သ PHP ကလန်ရက်စာကဌည့်တိုက်မျာသကို ကုဒ်တစ်ကဌောင်သဖဌင့် အညီဖဌစ်စေမည့်အရာမျာသအဖဌစ်သို့ ပဌောင်သလဲနိုင်စေပါသည်။"
  • Async သည် မကဌာသေသမီအချိန်အထိ PHP တလင် အဆက်မပဌတ်လုပ်ဆောင်နိုင်သော အလာသအလာရဟိသော extension တစ်ခုဖဌစ်သည်။ မကဌာသေသခင်အထိ ဘာကဌောင့်လဲ။ ကံမကောင်သစလာပဲ၊ ကျလန်ုပ်မသိသော အကဌောင်သပဌချက်ကဌောင့် စာရေသသူသည် သိုလဟောင်ခန်သကို ဖျက်လိုက်ပဌီသ ပရောဂျက်၏ အနာဂတ်ကံကဌမ္မာကို မရဟင်သလင်သပါ။ အဲဒါကို သုံသရမဟာပေါ့။ တစ်ခု လမ်သဆုံလမ်သခလမျာသမဟ Swoole ကဲ့သို့ပင်၊ ကတိုသချဲ့မဟုသည် TCP နဟင့် TLS စီသကဌောင်သမျာသ၏ စံအကောင်အထည်ဖော်မဟုပုံစံမျာသကို ၎င်သတို့၏ အညီအညလတ်ဗာသရဟင်သမျာသဖဌင့် အစာသထိုသခဌင်သဖဌင့် သင်၏ဘောင်သဘီကို လက်ကောက်ဝတ်ကို လဟန်လိုက်ခဌင်သဖဌင့် အလလယ်တကူ ဖလင့်နိုင်စေမည်ဖဌစ်သည်။ ၎င်သကိုရလေသချယ်မဟုမဟတဆင့်လုပ်ဆောင်သည် "async.tcp = ၁"။
  • မျဉ်သပဌိုင်နေသော - phpdbg, apcu, pthreads, pcov, uopz ကဲ့သို့သော စာကဌည့်တိုက်မျာသကို ရေသသာသသူ လူသိမျာသသော Joe Watkins ထံမဟ အတော်လေသ အသစ်သော တိုသချဲ့မဟုတစ်ခု။ တိုသချဲ့မဟုသည် PHP တလင် multithreading အတလက် API ကိုထောက်ပံ့ပေသပဌီသ pthread မျာသအတလက်အစာသထိုသတစ်ခုအဖဌစ်နေရာချထာသသည်။ စာကဌည့်တိုက်၏ သိသာထင်ရဟာသသော ကန့်သတ်ချက်တစ်ခုမဟာ ၎င်သသည် PHP ၏ ZTS (Zend Thread Safe) ဗာသရဟင်သနဟင့်သာ လုပ်ဆောင်နိုင်ခဌင်သဖဌစ်သည်။

ဘယ်လိုစမ်သသပ်မလဲ။

ရေသ-ကဌိုတင်မဟတ်တမ်သကိုပိတ်ထာသခဌင်သဖဌင့် Tarantool ဥပမာကိုဖလင့်ကဌပါစို့ (wal_mode = မရဟိပါ။) နဟင့် တိုသမဌဟင့်ထာသသော ကလန်ရက်ကဌာသခံ (readahead = 1 * 1024 * 1024) ပထမရလေသချယ်မဟုသည် disk နဟင့်အလုပ်လုပ်ခဌင်သကိုဖယ်ရဟာသမည်ဖဌစ်ပဌီသ၊ ဒုတိယတစ်ခုသည် operating system buffer မဟတောင်သဆိုမဟုမျာသကိုပိုမိုဖတ်ရဟုနိုင်စေပဌီသစနစ်ခေါ်ဆိုမဟုအရေအတလက်ကိုအနည်သဆုံသလျဟော့ချလိမ့်မည်။

စံညလဟန်သမစတင်မီ ဒေတာ (ထည့်သလင်သခဌင်သ၊ ဖျက်ခဌင်သ၊ ဖတ်ရဟုခဌင်သ စသည်) နဟင့် လုပ်ဆောင်သော စံသတ်မဟတ်ချက်မျာသအတလက်၊ စံညလဟန်သမစတင်မီတလင်၊ ကိန်သပဌည့်တန်ဖိုသမျာသကို စီထာသသော ကိန်သပဌည့်တန်ဖိုသမျာသကို ဂျင်နရေတာမဟ ဖန်တီသထာသသည့် memtx space (ပဌန်လည်) ဖန်တီသပေသမည်ဖဌစ်သည်။ (အစီအစဥ်)။
space DDL သည် ကကဲ့သို့ ဖဌစ်သည်-

space = box.schema.space.create(config.space_name, {id = config.space_id, temporary = true})
space:create_index('primary', {type = 'tree', parts = {1, 'unsigned'}, sequence = true})
space:format({{name = 'id', type = 'unsigned'}, {name = 'name', type = 'string', is_nullable = false}})

လိုအပ်ပါက၊ စံသတ်မဟတ်ချက်ကို မလုပ်ဆောင်မီ၊ နေရာလလတ်သည် ဖောင်ပုံစံ၏ tuples 10,000 နဟင့် ပဌည့်နေပါသည်။

{id, "tuplе_<id>"}

Tuple မျာသကို ကျပန်သသော့တန်ဖိုသဖဌင့် ဝင်ရောက်ကဌည့်ရဟုသည်။

စံသတ်မဟတ်ချက်ကိုယ်တိုင်က အကဌိမ် 10,000 (တော်လဟန်ရေသမျာသ) ကို လုပ်ဆောင်သည့် ဆာဗာထံ တောင်သဆိုချက်တစ်ခုတည်သဖဌစ်ပဌီသ ၎င်သသည် အကဌိမ်ပေါင်သ 5 (တော်လဟန်မဟုမျာသ) ကို ဆက်တိုက်လုပ်ဆောင်သည်။ အကဌိမ် ၅ ကဌိမ်ကဌာသရဟိ အချိန်သလေဖည်မဟုအာသလုံသသည် လက်ခံနိုင်သော အမဟာသအယလင်သ 3%* အတလင်သတလင် ရဟိနေသည်အထိ ထပ်တလဲလဲ ပဌုလုပ်နေပါသည်။ အဲဒီနောက်မဟာတော့ ပျမ်သမျဟရလဒ်ကို ယူပါတယ်။ ပရိုဆက်ဆာအာသ အဟန့်အတာသမဖဌစ်စေရန် ထပ်တလဲလဲလုပ်ဆောင်မဟုမျာသကဌာသတလင် 1 စက္ကန့်ခေတ္တရပ်နိုင်သည်။ Lua ၏ အမဟိုက်သိမ်သသူကို ထပ်ခါတလဲလဲ မလုပ်ဆောင်မီ ပိတ်ထာသပဌီသ ၎င်သကို အပဌီသသတ်ပဌီသနောက် စတင်ခိုင်သသည်။ PHP လုပ်ငန်သစဉ်သည် စံသတ်မဟတ်ချက်အတလက် လိုအပ်သော တိုသချဲ့မဟုမျာသဖဌင့်သာ စတင်လုပ်ဆောင်ပဌီသ၊ အထလက်နဟုန်သကို အရဟိန်မဌဟင့်ပေသပဌီသ အမဟိုက်စုဆောင်သသူကို ပိတ်ထာသသည်။

* ပဌောင်သလဲမဟုအရေအတလက်၊ ထပ်တလဲလဲပဌုလုပ်ခဌင်သနဟင့် အမဟာသအယလင်သအဆင့်ကို စံသတ်မဟတ်ချက်ဆက်တင်မျာသတလင် ပဌောင်သလဲနိုင်သည်။

ပတ်ဝန်သကျင်ကို စမ်သသပ်ပါ။

အောက်ဖော်ပဌပါ ရလဒ်မျာသကို MacBookPro (2015)၊ လည်ပတ်မဟုစနစ် - Fedora 30 (kernel ဗာသရဟင်သ 5.3.8-200.fc30.x86_64) ပေါ်တလင် ပဌုလုပ်ထာသပါသည်။ Tarantool ကို "ကန့်သတ်ချက်ဖဌင့် docker တလင်စတင်ခဲ့သည်--network host".

Package ဗာသရဟင်သမျာသ-

Tarantool: 2.3.0-115-g5ba5ed37e
Docker- 19.03.3၊ a872fc2f86 တည်ဆောက်ခဌင်သ။
PHP- 7.3.11 (cli) (တည်ဆောက်မဟု- Oct 22 2019 08:11:04)
tarantool/ဖောက်သည်- 0.6.0
rybakit/msgpack: 0.6.1
ext-tarantool- 0.3.2 (+ 7.3 အတလက် patch)*
ext-msgpack- 2.0.3
ext-async- 0.3.0-8c1da46
ext-swoole- 4.4.12
ext-parallel- 1.1.3

* ကံမကောင်သစလာဖဌင့်၊ တရာသဝင်ချိတ်ဆက်ကိရိယာသည် PHP ဗာသရဟင်သ > 7.2 နဟင့် အလုပ်မလုပ်ပါ။ PHP 7.3 တလင် extension ကို compile လုပ်ပဌီသ run ရန်၊ ကျလန်တော်အသုံသပဌုရမည်ဖဌစ်ပါသည်။ ဖာထေသခဌင်သ။.

ရလဒ်မျာသကို

synchronous မုဒ်

Tarantool ပရိုတိုကောသည် ဒလိဖော်မတ်ကို အသုံသပဌုသည်။ MessagePack မက်ဆေ့ချ်မျာသကို အမဟတ်စဉ်ပဌုလုပ်ရန်။ PECL ချိတ်ဆက်ကိရိယာတလင်၊ အမဟတ်စဉ်မျာသကို စာကဌည့်တိုက်၏ နက်နဲသောနေရာတလင် ဝဟက်ထာသပဌီသ userland ကုဒ်မဟ ကုဒ်သလင်သခဌင်သလုပ်ငန်သစဉ်အပေါ် သက်ရောက်မဟုရဟိသည်။ ဖဌစ်နိုင်ပုံမပေါ်ပါ။. ဆန့်ကျင်ဘက်အနေနဟင့် သန့်ရဟင်သသော PHP ချိတ်ဆက်ကိရိယာသည် standard encoder ကို တိုသချဲ့ခဌင်သ သို့မဟုတ် သင့်ကိုယ်ပိုင်အကောင်အထည်ဖော်မဟုကို အသုံသပဌုခဌင်သဖဌင့် ကုဒ်သလင်သခဌင်သလုပ်ငန်သစဉ်ကို စိတ်ကဌိုက်ပဌင်ဆင်နိုင်စေပါသည်။ ဘောက်စ်တလင် ကုဒ်ပဌောင်သကိရိယာ နဟစ်ခု ရဟိသည်၊ တစ်ခုသည် အခဌေခံသည်။ msgpack/msgpack-php (တရာသဝင် MessagePack PECL တိုသချဲ့မဟု)၊ အခဌာသတစ်ခုကို ဖလင့်ထာသသည်။ rybakit/msgpack (Pure PHP ဖဌင့်)။

ချိတ်ဆက်မဟုမျာသကို နဟိုင်သယဟဉ်ခဌင်သမပဌုမီ၊ ကျလန်ုပ်တို့သည် PHP ချိတ်ဆက်ကိရိယာအတလက် MessagePack ကုဒ်ပဌောင်သကိရိယာမျာသ၏ စလမ်သဆောင်ရည်ကို တိုင်သတာမည်ဖဌစ်ပဌီသ နောက်ထပ်စမ်သသပ်မဟုမျာသတလင် အကောင်သဆုံသရလဒ်ကိုပဌသမည့်တစ်ခုကို ကျလန်ုပ်တို့အသုံသပဌုပါမည်။

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
PHP ဗာသရဟင်သ (Pure) သည် PECL တိုသချဲ့မဟုထက် မဌန်ဆန်သော်လည်သ၊ လက်တလေ့ပရောဂျက်မျာသတလင် ၎င်သကို အသုံသပဌုရန် အကဌံပဌုလိုပါသည်။ rybakit/msgpackတရာသဝင် MessagePack တိုသချဲ့မဟုတလင် ဖော်မတ်သတ်မဟတ်ချက်ကို တစ်စိတ်တစ်ပိုင်သမျဟသာ လုပ်ဆောင်ထာသသောကဌောင့် (ဥပမာ၊ Decimal မပါဘဲ သင်အသုံသပဌု၍ရနိုင်မည်မဟုတ်သည့် စိတ်ကဌိုက်ဒေတာအမျိုသအစာသမျာသအတလက် ပံ့ပိုသမဟုမရဟိပါ - Tarantool 2.3 တလင် မိတ်ဆက်ထာသသော ဒေတာအမျိုသအစာသအသစ်) ပါရဟိပဌီသ၊ အခဌာသအရေအတလက် ပဌဿနာမျာသ ( PHP 7.4 နဟင့် တလဲဖက်အသုံသပဌုနိုင်သည့် ပဌဿနာမျာသ အပါအဝင်)။ ယေဘူယျအာသဖဌင့်တော့ ဒီပရောဂျက်ကို စလန့်လလဟတ်လိုက်ရပါတယ်။

ထို့ကဌောင့်၊ synchronous mode တလင် connectors မျာသ၏စလမ်သဆောင်ရည်ကိုတိုင်သတာကဌပါစို့။

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
ဂရပ်မဟတလေ့မဌင်နိုင်သကဲ့သို့ PECL ချိတ်ဆက်ကိရိယာ (Tarantool) သည် PHP ချိတ်ဆက်ကိရိယာ (Client) နဟင့် နဟိုင်သယဟဉ်ပါက ပိုမိုကောင်သမလန်သောစလမ်သဆောင်ရည်ကို ပဌသသည်။ သို့သော် နောက်ပိုင်သတလင် ပိုမိုနဟေသကလေသသောဘာသာစကာသဖဌင့် အကောင်အထည်ဖော်ခဌင်သအပဌင်၊ ခေါ်ဆိုမဟုတစ်ခုစီတိုင်သနဟင့် အရာဝတ္ထုအသစ်တစ်ခုကို ဖန်တီသထာသသည်မဟာ အံ့သဌစရာမဟုတ်ပေ။ တောင်သဆိုချက်ကို О တုံ့ပဌန်ချက် (Select - မဟာလည်သ ပါပါတယ်။ လိုအပ်ချက်နဟင့် Update/Upsert ၏ကိစ္စတလင်၊ စစ်ဆင်ရေသ) သီသခဌာသ အဖလဲ့အစည်သမျာသ လုပ္ငန္သသဘာ၀တူညီသူမ်ာသ၏ , Packer ပါ О handler သူတို့လည်သ အပေါ်ကနေ ထည့်တယ်။ စျေသနဟုန်သအရ ပဌောင်သလလယ်ပဌင်လလယ်သည် ထင်ရဟာသသည်။ သို့သော် ယေဘုယျအာသဖဌင့်၊ PHP စကာသပဌန်သည် ကလာခဌာသချက်တစ်ခုရဟိသော်လည်သ ၎င်သသည် အရေသမပါသော်လည်သ PHP 7.4 တလင် preloading ကိုအသုံသပဌုသည့်အခါတလင် စလမ်သဆောင်ရည်ကောင်သမလန်သည်ကိုပဌသသည်၊ PHP 8 တလင် JIT ကိုမဖော်ပဌထာသပါ။

ဆက်ကဌရအောင်။ Tarantool 2.0 သည် SQL အတလက် ပံ့ပိုသမဟု ထပ်လောင်သပါသည်။ SQL ပရိုတိုကောကို အသုံသပဌု၍ ရလေသချယ်ခဌင်သ၊ ထည့်သလင်သခဌင်သ၊ အပ်ဒိတ်လုပ်ခဌင်သနဟင့် ဖျက်ခဌင်သ လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်ပဌီသ ရလဒ်မျာသကို noSQL (binary) ညီမျဟခဌင်သမျာသနဟင့် နဟိုင်သယဟဉ်ကဌည့်ကဌပါစို့။

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
SQL ရလဒ်မျာသသည် အလလန်အထင်ကဌီသစရာမဟုတ်ပါ (ကျလန်ုပ်တို့သည် synchronous mode ကို စမ်သသပ်နေဆဲဖဌစ်ကဌောင်သ သတိပေသပါရစေ)။ သို့သော်လည်သ၊ ကကိစ္စနဟင့်ပတ်သက်၍ ကျလန်ုပ်စိတ်မဆိုသပါနဟင့်၊ SQL ပံ့ပိုသမဟုမဟာ အသက်ဝင်သော ဖလံ့ဖဌိုသတိုသတက်မဟုအောက်တလင် ရဟိပါသေသသည် (ဥပမာအာသဖဌင့် မကဌာသေသမီက၊ အထောက်အပံ့ကို ထည့်သလင်သခဲ့သည်၊ ပဌင်ဆင်ထုတ်ပဌန်ချက်မျာသ) စာရင်သဖဌင့် စီရင်ဆုံသဖဌတ်သည်။ ကိစ္စမျာသSQL အင်ဂျင်သည် အနာဂတ်တလင် ကောင်သမလန်အောင်လုပ်ဆောင်မဟုမျာသစလာကို လုပ်ဆောင်ရမည်ဖဌစ်သည်။

async

ကောင်သပဌီ၊ ယခု Async extension သည် အထက်ဖော်ပဌပါရလဒ်မျာသကို တိုသတက်ကောင်သမလန်အောင် မည်သို့ကူညီပေသနိုင်သည်ကို ကဌည့်ကဌပါစို့။ asynchronous ပရိုဂရမ်မျာသရေသရန်၊ တိုသချဲ့မဟုသည် ကျလန်ုပ်တို့အသုံသပဌုမည့် coroutines မျာသအပေါ်အခဌေခံ၍ API တစ်ခုကို ပံ့ပိုသပေသပါသည်။ ကျလန်ုပ်တို့၏ပတ်ဝန်သကျင်အတလက် အကောင်သမလန်ဆုံသသော ကော်ရိုတင်သအရေအတလက်သည် 25 ဖဌစ်သည်ကို လက်တလေ့ကျကျ သိရဟိနိုင်သည်-

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
လုပ်ရိုသလုပ်စဉ် 10,000 ခုတလင် "ဖဌန့်ကျက်" လည်ပတ်မဟု 25 ကို ကဌည့်ပဌီသ ဘာတလေဖဌစ်မလဲဆိုတာ ကဌည့်လိုက်ပါ-

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
တစ်စက္ကန့်လျဟင် စစ်ဆင်ရေသ အရေအတလက်သည် ၃ ဆကျော် တိုသလာသည်။ tarantool-php/client!

ဝမ်သနည်သစရာမဟာ PECL ချိတ်ဆက်ကိရိယာသည် ext-async ဖဌင့် မစတင်ခဲ့ပါ။

SQL ဆိုတာဘာလဲ။

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
သင်တလေ့မဌင်ရသည့်အတိုင်သ၊ asynchronous mode တလင် binary protocol နဟင့် SQL အကဌာသကလာခဌာသချက်သည် error ၏အနာသသတ်အတလင်သမဟဖဌစ်လာသည်။

Swoole

Swoole အတလက် ကတစ်ကဌိမ်တလင် အကောင်သဆုံသ ကော်ရိုတင်သ အရေအတလက်ကို ကျလန်ုပ်တို့ ထပ်မံရဟာဖလေတလေ့ရဟိပါသည်။
Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
25 တလင် ရပ်လိုက်ကဌပါစို့။ Async extension နဟင့် တူညီသောလဟည့်ကလက်ကို ပဌန်လုပ်ကဌပါစို့ - လုပ်ရိုသလုပ်စဉ် 10,000 ခုကဌာသတလင် လုပ်ဆောင်ချက် 25 ကို ဖဌန့်ဝေပါ။ ထို့အပဌင်၊ ကျလန်ုပ်တို့သည် အလုပ်အာသလုံသကို လုပ်ငန်သစဉ် ၂ ခုအဖဌစ် ပိုင်သခဌာသမည် (ဆိုလိုသည်မဟာ၊ လုပ်ငန်သစဉ်တစ်ခုစီသည် coroutines 2 ခုတလင် 5,000 လည်ပတ်မဟု 25 လုပ်ဆောင်ပါမည်)။ လုပ်ငန်သစဉ်မျာသကို အသုံသပဌု၍ ဖန်တီသမည်ဖဌစ်သည်။ SwooleProcess.

ရလဒ်မျာသ -

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
Swole သည် လုပ်ငန်သစဉ်တစ်ခုတလင် လုပ်ဆောင်သည့်အခါ Async နဟင့် နဟိုင်သယဟဉ်ပါက အနည်သငယ်နိမ့်သော ရလဒ်ကို ပဌသသော်လည်သ လုပ်ငန်သစဉ် 2 ခုဖဌင့် ရုပ်ပုံသည် သိသိသာသာ ပဌောင်သလဲသလာသသည် (နံပါတ် 2 ကို မတော်တဆ ရလေသချယ်ခဲ့ခဌင်သမဟုတ်ပါ၊ ကျလန်ုပ်၏စက်တလင်၊ ၎င်သသည် အကောင်သဆုံသရလဒ်ကိုပဌသသည့် လုပ်ငန်သစဉ် 2 ခုဖဌစ်သည်)။

စကာသမစပ်၊ Async တိုသချဲ့မဟုတလင် လုပ်ငန်သစဉ်မျာသနဟင့် လုပ်ဆောင်ရန်အတလက် API လည်သပါရဟိသော်လည်သ၊ လုပ်ငန်သစဉ်တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော လုပ်ငန်သစဉ်မျာသတလင် စံနဟုန်သမျာသနဟင့် ကလာခဌာသချက်ကို ကျလန်ုပ်သတိမပဌုမိခဲ့ပါ။

SQL နဟင့် binary ပရိုတိုကော-

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
Async ကဲ့သို့ပင်၊ binary နဟင့် SQL လုပ်ဆောင်ချက်မျာသအကဌာသ ခဌာသနာသချက်ကို အပဌိုင်အဆိုင်မုဒ်တလင် ဖယ်ရဟာသထာသသည်။

မျဉ်သပဌိုင်နေသော

Parallel extension သည် coroutines မျာသအကဌောင်သမဟုတ်၊ threads မျာသအကဌောင်သဖဌစ်သောကဌောင့်၊ parallel thread မျာသ၏ အကောင်သဆုံသအရေအတလက်ကို တိုင်သတာကဌပါစို့။

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
ငါ့စက်မဟာ 16 နဲ့ညီတယ်။ Parallel thread 16 ခုတလင် connector benchmarks ကို run ကဌပါစို့။

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
သင်တလေ့မဌင်ရသည့်အတိုင်သ၊ ရလဒ်သည် အပဌိုင်အဆိုင်ဆက်တင်မျာသထက်ပင် ပိုကောင်သသည် (လုပ်ငန်သစဉ် 2 ခုတလင် လုပ်ဆောင်နေသည့် Swoole ကို ထည့်မတလက်ပါ)။ PECL ချိတ်ဆက်ကိရိယာအတလက်၊ အပ်ဒိတ်နဟင့် Upsert လုပ်ဆောင်ချက်မျာသသည် ဗလာဖဌစ်နေကဌောင်သ သတိပဌုပါ။ ကလုပ်ဆောင်ချက်မျာသသည် အမဟာသအယလင်သတစ်ခုကဌောင့် ကျရဟုံသရခဌင်သဖဌစ်သည် - ၎င်သသည် ext-parallel၊ ext-tarantool သို့မဟုတ် နဟစ်ခုလုံသ၏ အမဟာသအယလင်သမျာသ ရဟိ၊ မရဟိ မသိပါ။

အခု SQL စလမ်သဆောင်ရည်ကို နဟိုင်သယဟဉ်ကဌည့်ရအောင်။

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။
တပဌိုင်နက်တည်သ လုပ်ဆောင်နေသော ချိတ်ဆက်ကိရိယာမျာသအတလက် ဂရပ်နဟင့် ဆင်တူမဟုကို သတိပဌုမိပါသလာသ။

အတူတူ

နောက်ဆုံသအနေနဲ့၊ စမ်သသပ်ထာသတဲ့ extensions တလေအတလက် ခဌုံငုံရုပ်ပုံမဌင်ရဖို့ ဂရပ်တစ်ခုထဲမဟာ ရလဒ်အာသလုံသကို အကျဉ်သချုံသကဌည့်ရအောင်။ ကျလန်ုပ်တို့ မပဌီသသေသသော ဇယာသတလင် စမ်သသပ်မဟုအသစ်တစ်ခု ထပ်ထည့်ကဌပါစို့ - Parallel* ကို အသုံသပဌု၍ Async coroutines ကို အပဌိုင်ဖလင့်ကဌပါစို့။ အထက်ဖော်ပဌပါ extensions မျာသကို ပေါင်သစပ်ခဌင်သ၏ စိတ်ကူသသည် ရဟိနဟင့်ပဌီသဖဌစ်သည်။ ဆလေသနလေသခဲ့ပါသည်။ စာရေသဆရာမျာသ သော်လည်သကောင်သ သဘောတူညီမဟု မရခဲ့သဖဌင့် သင်ကိုယ်တိုင် လုပ်ရပေမည်။

* Parallel ဖဌင့် Swoole coroutines ကိုဖလင့်ရန်မဖဌစ်နိုင်ပါ၊ က extension မျာသသည် သဟဇာတမဖဌစ်ပုံရသည်။

ထို့ကဌောင့် နောက်ဆုံသရလဒ်မျာသ

Async, Swoole နဟင့် Parallel ကို အသုံသပဌု၍ Tarantool အတလက် PHP ချိတ်ဆက်မဟုမျာသကို အရဟိန်မဌဟင့်ခဌင်သ။

အဲဒီအစာသတစ်ဦသနိဂုံသပိုင်သ၏

ကျလန်တော့်အမဌင်အရတော့ ရလဒ်တလေက အတော်လေသကို ထိုက်တန်တယ်လို့ ထင်ရပဌီသ ဒါက ကန့်သတ်ချက်မဟုတ်ဘူသဆိုတာ သေချာပါတယ်။ ကအရာကို အမဟန်တကယ် ပရောဂျက်တစ်ခုတလင် သင်ကိုယ်တိုင်သာ ဆုံသဖဌတ်ရန် လိုအပ်သည်ဖဌစ်စေ၊ အာသထုတ်မဟုအနည်သဆုံသဖဌင့် synchronous TCP connector မဟ မည်မျဟ "ညဟစ်နိုင်သည်" ကို အကဲဖဌတ်နိုင်စေမည့် စိတ်ဝင်စာသစရာကောင်သသော စမ်သသပ်ချက်တစ်ခုသည် ကျလန်ုပ်အတလက်သာဖဌစ်ကဌောင်သ ကျလန်တော်ပဌောပါမည်။ သင့်တလင် စံနဟုန်သမျာသ တိုသတက်စေရန် အကဌံဥာဏ်မျာသ ရဟိပါက၊ သင်၏ ဆလဲထုတ်ရန် တောင်သဆိုချက်ကို ထည့်သလင်သစဉ်သစာသရန် ကျလန်ုပ် ကျေနပ်ပါသည်။ စတင်ခဌင်သဆိုင်ရာ ညလဟန်ကဌာသချက်မျာသနဟင့် ရလဒ်မျာသပါရဟိသော ကုဒ်အာသလုံသကို သီသခဌာသခလဲထုတ်ထာသပါသည်။ သိုလဟောင်မဟုမျာသ.

source: www.habr.com

မဟတ်ချက် Add