Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

၎င်သ၏အစီရင်ခံစာတလင် Andrey Borodin သည် connection pooler ကိုဒီဇိုင်သဆလဲသောအခါ PgBouncer ကိုစကေသချဲ့ခဌင်သအတလေ့အကဌုံကိုထည့်သလင်သစဉ်သစာသမည်ကိုပဌောပဌလိမ့်မည်။ Odysseyအဲဒါကို ထုတ်လုပ်မဟုအဖဌစ် လဟိမ့်သလင်သလိုက်ကဌတယ်။ ထို့အပဌင်၊ ဗာသရဟင်သအသစ်မျာသတလင် ကျလန်ုပ်တို့မဌင်လိုသည့် ဆလဲကိရိယာ၏လုပ်ဆောင်ချက်မျာသကို ဆလေသနလေသပါမည်။ ကျလန်ုပ်တို့၏လိုအပ်ချက်မျာသကို ဖဌည့်ဆည်သပေသရုံသာမက သုံသစလဲသူအသိုင်သအဝိုင်သကို ဖလံ့ဖဌိုသတိုသတက်စေရန်အတလက် အရေသကဌီသပါသည်။ Odyssey.

ဗီဒီယိုမျာသ:

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

အာသလုံသမင်္ဂလာပါ! ကျလန်တော့်နာမည် Andrew ပါ။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

Yandex တလင်၊ ကျလန်ုပ်သည် open source databases ကို ပဌုစုပါသည်။ ယနေ့ကျလန်ုပ်တို့သည် connection pooler connections နဟင့်ပတ်သက်သော ခေါင်သစဉ်တစ်ခုရဟိသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ရုရဟာသလို connection pooler ကို ဘယ်လိုခေါ်ရမလဲ သိရင် ပဌောပဌပေသပါ။ ပညာရပ်ဆိုင်ရာစာပေမျာသတလင် ထူထောင်သင့်သော ပညာရပ်ဆိုင်ရာ ဝေါဟာရကောင်သတစ်ခုကို အမဟန်တကယ် ရဟာဖလေလိုပါသည်။

ခေါင်သစဉ်က တော်တော်ရဟုပ်ထလေသပါတယ်၊ ဘာဖဌစ်လို့လဲဆိုတော့ databases တော်တော်မျာသမျာသမဟာ connection pooler က built-in ရဟိပဌီသ အဲဒါကို သင်သိဖို့တောင် မလိုအပ်ပါဘူသ။ ဟုတ်ပါတယ်၊ နေရာတိုင်သတလင်အချို့သောဆက်တင်မျာသရဟိသည်၊ သို့သော် Postgres တလင်၎င်သသည်ကသို့အလုပ်မလုပ်ပါ။ အပဌိုင် (HighLoad++ 2019 တလင်) Postgres တလင် မေသခလန်သမျာသထည့်သလင်သခဌင်သနဟင့်ပတ်သက်၍ Nikolai Samokhvalov မဟ အစီရင်ခံစာတစ်ခုရဟိသည်။ ကျလန်တော်နာသလည်သလိုပဲ၊ သူတို့ရဲ့မေသမဌန်သချက်တလေကို စုံလင်စလာပဌင်ဆင်ပဌီသတဲ့သူတလေက ဒီကိုလာပဌီသ၊ ကလန်ရက်နဲ့ အရင်သအမဌစ်အသုံသချမဟုဆိုင်ရာ ရဟာသပါသတဲ့စနစ်ပဌဿနာတလေနဲ့ ရင်ဆိုင်နေကဌရသူတလေပါ။ အချို့နေရာမျာသတလင် ပဌဿနာမျာသသည် ရဟင်သရဟင်သလင်သလင်သ မသိသာသောကဌောင့် အလလန်ခက်ခဲနိုင်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

Yandex တလင် Postgres ရဟိသည်။ Yandex ဝန်ဆောင်မဟုမျာသစလာသည် Yandex.Cloud တလင်နေထိုင်သည်။ ထို့အပဌင် Postgres တလင် တစ်စက္ကန့်လျဟင် အနည်သဆုံသ တောင်သဆိုမဟု တစ်သန်သကို ထုတ်ပေသသည့် ဒေတာ petabytes မျာသစလာရဟိသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

အစုအဝေသတစ်ခုစီသည် Postgres ဖဌစ်ပဌီသ ၎င်သတလင် Postgres နဟင့် စောင့်ကဌည့်ရေသစနစ်မျာသအပဌင် ချိတ်ဆက်မဟုပေါင်သကူသစက်ကိုလည်သ ထည့်သလင်သထာသသည်။ Connection pooler ကို ကာရံခဌင်သနဟင့် ၎င်သ၏ အဓိကရည်ရလယ်ချက်အတလက် အသုံသပဌုသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

connection pooler ရဲ့ အဓိက ရည်ရလယ်ချက်က ဘာလဲ။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ထို့အပဌင်၊ Postgres ကုဒ်တလင် procArray ဟုခေါ်သော array တစ်ခုရဟိသည်။ ၎င်သတလင် ကလန်ရက်ချိတ်ဆက်မဟုမျာသအကဌောင်သ အခဌေခံအချက်အလက်မျာသ ပါရဟိသည်။ ထို့အပဌင် procArray လုပ်ဆောင်ခဌင်သ algorithms အာသလုံသနီသပါသသည် linear ရဟုပ်ထလေသမဟုမျာသရဟိသည်; ၎င်သတို့သည် network connections ၏ array တစ်ခုလုံသကို run သည်။ ၎င်သသည် အလလန်လျင်မဌန်သော စက်ဝန်သတစ်ခုဖဌစ်သော်လည်သ ဝင်လာသောကလန်ရက်ချိတ်ဆက်မဟုမျာသကဌောင့် အရာမျာသသည် အနည်သငယ်ပို၍စျေသကဌီသပါသည်။ စျေသနည်သနည်သပိုတက်လာတဲ့အခါ ကလန်ရက်ချိတ်ဆက်မဟုမျာသစလာအတလက် အလလန်မဌင့်မာသတဲ့စျေသနဟုန်သကို ပေသချေနိုင်ပါတယ်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ဖဌစ်နိုင်ချေ ချဉ်သကပ်မဟု 3 ခု ရဟိပါသည်။

  • လျဟောက်လလဟာဘက်မဟာ။
  • ဒေတာဘေ့စဘက်တလင်။
  • အကဌာသ၊ ဆိုလိုသည်မဟာ၊ ပေါင်သစပ်မဟုအမျိုသမျိုသ။

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

Application-side pool သည် အလလယ်ကူဆုံသနည်သလမ်သဖဌစ်သည်။ ပဌီသတော့ client drivers အာသလုံသနီသပါသက သင့်အာသ နည်သလမ်သတစ်ခုပေသသည်- သန်သပေါင်သမျာသစလာသော သင့်ချိတ်ဆက်မဟုမျာသကို ဒေတာဘေ့စ်သို့ ဒါဇင်မျာသစလာသော ချိတ်ဆက်မဟုမျာသအဖဌစ် ကုဒ်တလင် တင်ပဌပါ။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ဖဌစ်ပေါ်လာသည့်ပဌဿနာမဟာ နောက်ခံအစလန်သကို အတိုင်သအတာတစ်ခုအထိ အတိုင်သအတာတစ်ခုအထိ ပဌုလုပ်လိုပါက ၎င်သကို virtual machine အမျာသအပဌာသတလင် အသုံသချလိုခဌင်သပင်ဖဌစ်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ထို့နောက် သင့်တလင်ရရဟိနိုင်မဟုဇုန်မျာသစလာ၊ ဒေတာစင်တာမျာသစလာရဟိသည်ကို သင်သဘောပေါက်လာသည်။ နဟင့် client side ပေါင်သကူသခဌင်သချဉ်သကပ်မဟုသည် အရေအတလက်မျာသစလာကို ညသတည်စေသည်။ အကဌီသတလေက ချိတ်ဆက်မဟု 10 လောက်ရဟိတယ်။ ဒါက ပုံမဟန်အလုပ်လုပ်နိုင်တဲ့ အစလန်သတစ်ခုပါ။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

proxy poolers အကဌောင်သပဌောရင်၊ အမျာသကဌီသလုပ်နိုင်တဲ့ poolers နဟစ်ခုရဟိတယ်။ ၎င်သတို့သည် ရေကူသကန်မျာသသာမက၊ ၎င်သတို့သည် ရေကူသကန်မျာသ + ပိုမိုအေသမဌသော လုပ်ဆောင်နိုင်စလမ်သမျာသဖဌစ်သည်။ ဒီ Pgpool О Crunchy-Proxy.

သို့သော် ကံမကောင်သစလာဖဌင့်၊ လူတိုင်သသည် ကအပိုဆောင်သလုပ်ဆောင်ချက်ကို မလိုအပ်ပါ။ ၎င်သသည် poolers သည် session pooling ကိုသာ ပံ့ပိုသပေသသည်၊ ဆိုလိုသည်မဟာ အဝင်ဖောက်သည်တစ်ခု၊ ဒေတာဘေ့စ်သို့ အထလက်ဖောက်သည်တစ်ညသကို ဖဌစ်ပေါ်စေသည်။

၎င်သသည် ကျလန်ုပ်တို့၏ရည်ရလယ်ချက်မျာသအတလက် အလလန်သင့်လျော်ခဌင်သမရဟိပါ၊ ထို့ကဌောင့် ငလေပေသငလေယူပေါင်သစည်သခဌင်သကို လုပ်ဆောင်သည့် PgBouncer ကိုအသုံသပဌုသည်၊ ဆိုလိုသည်မဟာ ဆာဗာချိတ်ဆက်မဟုမျာသကို အရောင်သအ၀ယ်ပဌုလုပ်သည့်ကာလအတလက်သာ သုံသစလဲသူချိတ်ဆက်မဟုမျာသနဟင့် ကိုက်ညီပါသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ပဌီသတော့ ကျလန်တော်တို့ရဲ့ လုပ်ငန်သခလင်မဟာ ဒါက မဟန်ပါတယ်။ ဒါပေမယ့် ပဌဿနာအနည်သငယ်ရဟိပါတယ်။.Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

သေချာတာကတော့ သင် application_name_add_host ကို သုံသနိုင်ပါတယ်။ ကသည်မဟာ application_name သို့ IP လိပ်စာတစ်ခုထည့်ရန် Bouncer ဘက်ရဟိ နည်သလမ်သတစ်ခုဖဌစ်သည်။ သို့သော် application_name ကို အပိုချိတ်ဆက်မဟုတစ်ခုဖဌင့် သတ်မဟတ်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ထို့အပဌင်၊ Bouncer တလင် သင်သတ်မဟတ်ထာသသောဒေတာဘေ့စ်တစ်ခုအတလက်၊ ဆိုလိုသည်မဟာ အသုံသပဌုသူအတလက် ဒေတာဘေ့စ်ချိတ်ဆက်မဟုအရေအတလက်၊ သီသခဌာသဒေတာဘေ့စ်တစ်ခုအတလက် ကန့်သတ်ချက်မရဟိပါ။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ကျလန်ုပ်တို့သည် ကဆက်တင်ကို ထည့်ထာသသည့် Bouncer အတလက် သေသငယ်သော patch တစ်ခုကို ရေသခဲ့သည်၊ ဆိုလိုသည်မဟာ ဖောက်သည်မျာသကို ရေကူသကန်တလင် ကန့်သတ်ထာသသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

Postgres ဘက်တလင် ၎င်သကို ချိတ်ဆက်မဟု အရေအတလက်ဖဌင့် ဒေတာဘေ့စ်ရဟိ အခန်သကဏ္ဍမျာသကို ကန့်သတ်ထာသသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

တစ်ချိန်တည်သတလင် သင်သည် အပလီကေသရဟင်သဂရပ်ဖစ်မျာသကို ကဌည့်ရဟုပဌီသ အက်ပ်လီကေသရဟင်သ အလုပ်မလုပ်သည်ကို တလေ့ရပါမည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

PgBouncers မျာသ ပိုမိုလိုအပ်ကဌောင်သ ကျလန်ုပ်တို့ နိဂုံသချုပ်လိုက်ရပါသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

https://lwn.net/Articles/542629/

Bouncer ကို အနည်သငယ် ဖာထေသထာသပါသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

TCP port ကို ပဌန်လည်အသုံသပဌုခဌင်သဖဌင့် Bouncers အမျာသအပဌာသကို မဌဟင့်တင်နိုင်စေရန် ၎င်သတို့က ပဌုလုပ်ခဲ့သည်။ လည်ပတ်မဟုစနစ်သည် အဝိုင်သ-ရော်ဘင်ကို အသုံသပဌု၍ ၎င်သတို့ကဌာသမဟ ဝင်လာသော TCP ချိတ်ဆက်မဟုမျာသကို အလိုအလျောက် လလဟဲပဌောင်သပေသပါသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

၎င်သသည် သုံသစလဲသူမျာသအတလက် ပလင့်လင်သမဌင်သာမဟုရဟိသောကဌောင့် သင့်တလင် Bouncer တစ်ခုရဟိပုံရသည်၊ သို့သော် Bouncers မျာသလည်ပတ်နေသည့်ကဌာသတလင် idle connections အပိုင်သပိုင်သမျာသရဟိနေပါသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

အခိုက်အတန့်တလင် က Bouncers 3 ကောင်စီသည် ၎င်သတို့၏ အူတိုင်ကို 100% ကိုက်စာသသည်ကို သတိပဌုမိပေမည်။ Bouncers အနည်သငယ် လိုအပ်ပါသည်။ အဘယ်ကဌောင့်?

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

သင့်တလင် TLS ရဟိသောကဌောင့်ဖဌစ်သည်။ သင့်တလင် ကုဒ်ဝဟက်ထာသသော ချိတ်ဆက်မဟုတစ်ခု ရဟိသည်။ TLS လက်ဆလဲနဟုတ်ဆက်ခဌင်သသည် CPU အရင်သအမဌစ်မျာသကို စာသသုံသသောကဌောင့် TLS လက်ဆလဲနဟုတ်ဆက်ခဌင်သသည် CPU အရင်သအမဌစ်မျာသကို စာသသုံသသောကဌောင့် သင် Postgres နဟင့် စံသတ်မဟတ်ထာသသော ချိတ်ဆက်မဟုအရေအတလက်သည် လျဟို့ဝဟက်ကုဒ်ဖလင့်ထာသသည့် အတိုင်သအတာနဟစ်ခုနီသပါသ ကျဆင်သသလာသသည်ကို သင်တလေ့လိမ့်မည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ထိပ်တလင် အဝင်ချိတ်ဆက်မဟုလဟိုင်သတစ်ခုရဟိလာသောအခါတလင် လုပ်ဆောင်သည့် cryptographic function အနည်သငယ်ကို သင်တလေ့မဌင်နိုင်ပါသည်။ ကျလန်ုပ်တို့၏မူလတန်သသည် ရရဟိနိုင်မဟုဇုန်မျာသကဌာသတလင် ပဌောင်သနိုင်သောကဌောင့် အဝင်ချိတ်ဆက်မဟုမျာသ၏လဟိုင်သသည် ပုံမဟန်အခဌေအနေတစ်ခုဖဌစ်သည်။ ဆိုလိုသည်မဟာ အကဌောင်သတစ်ခုခုကဌောင့် မူလတန်သဟောင်သကို မရရဟိနိုင်သောကဌောင့် ဝန်တစ်ခုလုံသကို အခဌာသဒေတာစင်တာသို့ ပို့လိုက်ခဌင်သဖဌစ်သည်။ သူတို့အာသလုံသ TLS ကို တစ်ချိန်တည်သ နဟုတ်ဆက်လာကဌလိမ့်မည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ကသည်မဟာ 16 cores 16% ဖဌင့် load လုပ်သည့် PgBouncers 100 ခု၏ ဥပမာတစ်ခုဖဌစ်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ကျလန်ုပ်တို့သည် ကက်စကိတ် PgBouncer သို့ ရောက်လာသည်။ ၎င်သသည် Bouncer ဖဌင့်ကျလန်ုပ်တို့၏ဝန်ဆောင်မဟုတလင်အောင်မဌင်နိုင်သည့်အကောင်သဆုံသဖလဲ့စည်သမဟုဖဌစ်သည်။ ကျလန်ုပ်တို့၏ ပဌင်ပ Bouncers မျာသကို TCP လက်ဆလဲခဌင်သအတလက် အသုံသပဌုပဌီသ ပဌင်ပချိတ်ဆက်မဟုမျာသကို အလလန်အကျလံမကလဲကလဲစေရန်အတလက် အတလင်သပိုင်သ Bouncers မျာသကို အမဟန်တကယ်ပေါင်သစပ်ရန်အတလက် အသုံသပဌုပါသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ကဖလဲ့စည်သပုံတလင်၊ ချောမလေ့စလာ ပဌန်လည်စတင်နိုင်သည် ။ က Bouncers 18 ခုအာသလုံသကို တစ်ခုပဌီသတစ်ခု ပဌန်လည်စတင်နိုင်ပါသည်။ ဒါပေမယ့် ဒီလိုဖလဲ့စည်သမဟုကို ထိန်သသိမ်သဖို့က တော်တော်ခက်ခဲပါတယ်။ Sysadmins၊ DevOps နဟင့် ကဆာဗာအတလက် အမဟန်တကယ် တာဝန်ရဟိသူမျာသသည် ကအစီအစဉ်ကို အလလန်ပျော်ရလဟင်မည်မဟုတ်ပါ။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ကျလန်ုပ်တို့၏ တိုသတက်မဟုအာသလုံသကို open source အဖဌစ် မဌဟင့်တင်နိုင်သည်ဟု ထင်ရသော်လည်သ Bouncer ကို ကောင်သစလာ မပံ့ပိုသနိုင်ပါ။ ဥပမာအာသဖဌင့်၊ ဆိပ်ကမ်သတစ်ခုတလင် PgBouncers အမျာသအပဌာသကို run နိုင်စလမ်သသည် လလန်ခဲ့သော တစ်လက ကျူသလလန်ခဲ့သည်။ လလန်ခဲ့သောနဟစ်ပေါင်သမျာသစလာက ကအင်္ဂါရပ်ကို ဆလဲထုတ်ရန် တောင်သဆိုမဟုတစ်ခုရဟိခဲ့သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

https://www.postgresql.org/docs/current/libpq-cancel.html

https://github.com/pgbouncer/pgbouncer/pull/79

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

၎င်သကို ဖာထေသထာသပဌီသ၊ ကပဌဿနာကို Bouncer ၏ အထက်ပိုင်သသို့ ပေါင်သမထည့်ရသေသပါ။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ဒါကဌောင့် ပဌဿနာတလေကို မဌန်မဌန်ဆန်ဆန် ပဌင်ဆင်နိုင်ပဌီသ ဘယ်ဟာက ကဌိုသမျိုသစုံလုပ်ရမယ်ဆိုတဲ့ ကျလန်တော်တို့ရဲ့ ကိုယ်ပိုင်ချိတ်ဆက်မဟုပေါင်သကူသစက် လိုအပ်တယ်ဆိုတာကို နိဂုံသချုပ်လာခဲ့ပါတယ်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ကျလန်ုပ်တို့သည် multithreading ကို အဓိကအလုပ်အဖဌစ် သတ်မဟတ်သည်။ အဝင် TLS ချိတ်ဆက်မဟုလဟိုင်သကို ကောင်သစလာကိုင်တလယ်နိုင်ရန်လိုအပ်သည်။

ဒါကိုလုပ်ဖို့၊ Machinarium လို့ခေါ်တဲ့ သီသခဌာသစာကဌည့်တိုက်တစ်ခုကို တီထလင်ရမဟာ ဖဌစ်ပဌီသ၊ ကလန်ရက်ချိတ်ဆက်မဟုရဲ့ စက်အခဌေအနေတလေကို ဆက်တိုက်ကုဒ်အဖဌစ် ဖော်ပဌဖို့ ဒီဇိုင်သထုတ်ထာသပါတယ်။ libpq အရင်သအမဌစ်ကုဒ်ကိုကဌည့်လျဟင် သင့်အာသ ရလဒ်တစ်ခုပဌန်ပေသနိုင်သည့် ရဟုပ်ထလေသလဟသောခေါ်ဆိုမဟုအချို့ကို တလေ့ရမည်ဖဌစ်ပဌီသ “ငါ့ကို နောက်မဟခေါ်ပါ။ လောလောဆယ် ကျလန်တော့်မဟာ IO ရဟိတယ်၊ ဒါပေမယ့် IO ထလက်သလာသတဲ့အခါ ပရိုဆက်ဆာမဟာ Load တစ်ခုရဟိနေမယ်။" ၎င်သသည် အဆင့်ပေါင်သမျာသစလာ အစီအစဉ်တစ်ခုဖဌစ်သည်။ ကလန်ရက်ဆက်သလယ်ရေသကို မျာသသောအာသဖဌင့် နိုင်ငံတော်စက်ဖဌင့် ဖော်ပဌသည်။ "အရင်တုန်သက အရလယ်အစာသ N ရဲ့ packet header တစ်ခုကို လက်ခံရရဟိခဲ့ရင်၊ အခု N bytes ကို စောင့်နေပါတယ်" "SYNC packet တစ်ခုကို ပို့ခဲ့ရင်၊ အခု ကျလန်တော် ရလဒ် metadata ပါတဲ့ packet တစ်ခုကို စောင့်နေပါတယ်။" ရလဒ်သည် ဝင်္ကပါကို လိုင်သစကင်န်အဖဌစ်သို့ ပဌောင်သလဲသလာသသကဲ့သို့ အတော်လေသခက်ခဲသော၊ တန်ပဌန်နာသလည်နိုင်သော ကုဒ်တစ်ခုဖဌစ်သည်။ state machine အစာသ ပရိုဂရမ်မာသည် သာမန် imperative code ပုံစံဖဌင့် အပဌန်အလဟန်ဆက်သလယ်ခဌင်သ၏ အဓိကလမ်သကဌောင်သကို ဖော်ပဌရန်အတလက် ၎င်သကို ပဌုလုပ်ခဲ့ခဌင်သဖဌစ်သည်။ ကမဖဌစ်မနေကုဒ်တလင်၊ ကလန်ရက်မဟဒေတာကိုစောင့်ဆိုင်သပဌီသ execution context ကိုအခဌာသ coroutine (green thread) သို့ပေသပို့ခဌင်သဖဌင့် execution sequence ကို အနဟောင့်အယဟက်ဖဌစ်စေမည့်နေရာမျာသကို ထည့်သလင်သရန်လိုအပ်ပါသည်။ ကချဉ်သကပ်နည်သသည် ဝင်္ကပါထဲတလင် မျဟော်လင့်ထာသဆုံသလမ်သကဌောင်သကို ဆက်တိုက်ချရေသပဌီသ ၎င်သတလင် အကိုင်သအခက်မျာသထည့်သည့်အချက်နဟင့် ဆင်တူသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ရလဒ်အနေဖဌင့်၊ ကျလန်ုပ်တို့တလင် TCP ကိုလက်ခံပဌီသ အလုပ်သမာသမျာသစလာထံ TPC ချိတ်ဆက်မဟုကို အလဟည့်ကျဖဌတ်သန်သပေသသည့် လိုင်သတစ်ခုရဟိသည်။

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

ထို့အပဌင်၊ ကျလန်ုပ်တို့သည် စနစ် TCP အစုအဝေသကို သက်သာရာရစေရန်အတလက် သေသငယ်သော ပက်ကေ့ခ်ျမျာသ စုစည်သမဟုကို ကဌီသမာသသော ပက်ကေ့ခ်ျတစ်ခုအဖဌစ် အနည်သငယ် မဌဟင့်တင်ထာသပါသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ထို့အပဌင်၊ ပဌင်ဆင်သတ်မဟတ်သည့်အခါ Odyssey သည် ကလန်ရက်ချိတ်ဆက်မဟုချို့ယလင်သသလာသသောအခါတလင် Odyssey သည် လလဟဲပဌောင်သပေသပို့နိုင်သည်ဟူသော အဓိပ္ပာယ်ဖဌင့် ကျလန်ုပ်တို့သည် အရောင်သအ၀ယ်လုပ်ငန်သစုပေါင်သခဌင်သကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ထာသပဌီသ၊ ဆိုလိုသည်မဟာ မည်သူမျဟတောင်သဆိုမဟုကို မစောင့်ဆိုင်သပါက၊ Odyssey သည် ဒေတာဘေ့စ်အာသ မကဌိုသစာသရန် ပဌောကဌာသမည်ဖဌစ်ပါသည်။ အဖိုသတန်အရင်သအမဌစ်မျာသကို ဆုံသရဟုံသစေမည့် တောင်သဆိုချက်ကို ဖဌည့်ဆည်သပါ။

ဖဌစ်နိုင်သည့်အခါတိုင်သ၊ ကျလန်ုပ်တို့သည် တူညီသောကလိုင်သယင့်နဟင့် ချိတ်ဆက်မဟုမျာသ ရဟိနေပါသည်။ ၎င်သသည် application_name_add_host ကို ပဌန်လည်ထည့်သလင်သရန် ရဟောင်ကဌဉ်သည်။ ဖဌစ်နိုင်ပါက ရောဂါရဟာဖလေခဌင်သအတလက် လိုအပ်သော ကန့်သတ်ဘောင်မျာသကို ထပ်မံသတ်မဟတ်ရန် မလိုအပ်ပါ။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ကျလန်ုပ်တို့သည် Yandex.Cloud ၏အကျိုသစီသပလာသအတလက် လုပ်ဆောင်ပါသည်။ သင်သည် စီမံခန့်ခလဲထာသသော PostgreSQL ကိုအသုံသပဌုပဌီသ ချိတ်ဆက်မဟုပေါင်သကူသစက်ကို တပ်ဆင်ထာသပါက၊ သင်သည် ယုတ္တိပုံတူပလာသမဟုကို အပဌင်ဘက်တလင် ဖန်တီသနိုင်သည်၊ ဆိုလိုသည်မဟာ၊ သင်သည် ယုတ္တိပုံတူပလာသမဟုကို အသုံသပဌု၍ ကျလန်ုပ်တို့ကို ထာသခဲ့လိုပါက၊ Bouncer သည် ယုတ္တိတန်သောပုံတူပလာသမဟုကို ပဌင်ပသို့ ထုတ်လလဟတ်မည်မဟုတ်ပါ။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ကသည်မဟာ ယုတ္တိပုံတူပလာသခဌင်သကို သတ်မဟတ်ခဌင်သ၏ ဥပမာတစ်ခုဖဌစ်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ထို့အပဌင်၊ ကျလန်ုပ်တို့သည် အပဌင်ပန်သရုပ်ပုံတူကူသခဌင်သအတလက် ပံ့ပိုသမဟုရဟိပါသည်။ Cloud တလင်၊ ကအရာသည် မဖဌစ်နိုင်ပါ၊ အဘယ်ကဌောင့်ဆိုသော် အစုအဖလဲ့သည် သင့်အာသ သူ့အကဌောင်သ အချက်အလက်မျာသစလာ ပေသလိမ့်မည်ဖဌစ်သောကဌောင့်၊ သို့သော် သင်၏ထည့်သလင်သမဟုမျာသတလင်၊ သင်သည် Odyssey ရဟိ connection pooler မဟတဆင့် ရုပ်ပိုင်သဆိုင်ရာပုံတူပလာသမဟုကို လိုအပ်ပါက၊ ၎င်သသည် ဖဌစ်နိုင်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

Odyssey တလင် PgBouncer နဟင့် လုံသဝသဟဇာတရဟိသော စောင့်ကဌည့်မဟု ရဟိပါသည်။ ကျလန်ုပ်တို့တလင် တူညီသော command မျာသအာသလုံသနီသပါသကို လုပ်ဆောင်သည့် တူညီသော ကလန်ဆိုသလ်တစ်ခုရဟိသည်။ တစ်ခုခုပျောက်ဆုံသနေပါက၊ ဆလဲထုတ်ရန်တောင်သဆိုချက်တစ်ခု သို့မဟုတ် အနည်သဆုံသပဌဿနာတစ်ခု GitHub တလင် ပေသပို့ပါ၊ လိုအပ်သောအမိန့်မျာသကို ကျလန်ုပ်တို့ ဖဌည့်စလက်ပါမည်။ သို့သော် ကျလန်ုပ်တို့တလင် PgBouncer console ၏ အဓိကလုပ်ဆောင်နိုင်စလမ်သရဟိပဌီသသာသဖဌစ်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

သင်သည် PgBouncer နဟင့် 100% လိုက်ဖက်မဟုရဟိရန် လိုအပ်ပါက ကအင်္ဂါရပ်ကို ပိတ်ထာသသည်။ ကျလန်ုပ်တို့သည် ဘေသကင်သသောဘက်တလင်ရဟိနေရန် Bouncer ကဲ့သို့ အလာသတူပဌုမူနိုင်သည်။

ပုံစံ

Odyssey အရင်သအမဌစ်ကုဒ်အကဌောင်သ စကာသအနည်သငယ်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/66

ဥပမာအာသဖဌင့်၊ "Pause / Resume" command မျာသရဟိသည်။ ဒေတာဘေ့စ်ကို အပ်ဒိတ်လုပ်ရန် ၎င်သတို့ကို အမျာသအာသဖဌင့် အသုံသပဌုကဌသည်။ Postgres ကို အပ်ဒိတ်လုပ်ရန် လိုအပ်ပါက ချိတ်ဆက်မဟုပေါင်သကူသစက်တလင် ခေတ္တရပ်နိုင်သည်၊ pg_upgrade ပဌုလုပ်ပဌီသနောက် ပဌန်လည်စတင်ပါ။ ပဌီသတော့ Client ဘက်ကနေ Database ဟာ ရိုသရိုသနဟေသကလေသနေပုံပါပဲ။ ကလုပ်ဆောင်ချက်ကို အသိုင်သအဝိုင်သမဟလူမျာသက ကျလန်ုပ်တို့ထံ ယူဆောင်လာခဲ့သည်။ သူမ မအေသသေသဘူသ၊ ဒါပေမယ့် မကဌာခင်မဟာ အရာအာသလုံသဖဌစ်လာလိမ့်မယ်။ (အေသခဲနေပဌီ)

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

https://github.com/yandex/odyssey/pull/73 - အေသခဲနေပဌီ။

ထို့အပဌင်၊ PgBouncer ရဟိအင်္ဂါရပ်အသစ်မျာသထဲမဟတစ်ခုသည် Yandex.Cloud တလင်အလုပ်မလုပ်သောသူတစ်ညသမဟကျလန်ုပ်တို့ထံယူဆောင်လာသော SCRAM Authentication အတလက်ပံ့ပိုသမဟုဖဌစ်သည်။ နဟစ်ခုလုံသသည် ရဟုပ်ထလေသပဌီသ အရေသကဌီသသော လုပ်ဆောင်နိုင်စလမ်သမျာသဖဌစ်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ဒါကဌောင့် Odyssey က ဘာနဲ့လုပ်ထာသတာလဲဆိုတာ ပဌောပဌချင်ပါတယ်၊ အခုပဲ ကုဒ်နည်သနည်သရေသချင်ပါသေသတယ်။

သင့်တလင် ပင်မစာကဌည့်တိုက်နဟစ်ခုကို မဟီခိုနေရသည့် Odyssey အရင်သအမဌစ်အခဌေခံရဟိသည်။ ကီဝီစာကဌည့်တိုက်သည် Postgres သတင်သစကာသ ပရိုတိုကောကို အကောင်အထည်ဖော်မဟုတစ်ခုဖဌစ်သည်။ ဆိုလိုသည်မဟာ Postgres ၏ မူရင်သပရိုတို 3 သည် ရဟေ့စလန်သမျာသနဟင့် နောက်တန်သမျာသ ဖလဟယ်နိုင်သည့် စံစာမျာသဖဌစ်သည်။ ၎င်သတို့ကို ကီဝီစာကဌည့်တိုက်တလင် အကောင်အထည်ဖော်သည်။

Machinarium စာကဌည့်တိုက်သည် thread အကောင်အထည်ဖော်ရေသစာကဌည့်တိုက်ဖဌစ်သည်။ က Machinarium ၏ သေသငယ်သော အပိုင်သအစကို စုစည်သဘာသာစကာသဖဌင့် ရေသသာသထာသသည်။ ဒါပေမယ့် မစိုသရိမ်ပါနဲ့၊ 15 လိုင်သပဲရဟိတယ်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

Odyssey ဗိသုကာ ကော်ရိုတင်သမျာသကို လုပ်ဆောင်နေသည့် ပင်မစက်တစ်ခုရဟိသည်။ ကစက်သည် အဝင် TCP ချိတ်ဆက်မဟုမျာသကို လက်ခံပဌီသ အလုပ်သမာသမျာသအကဌာသ ဖဌန့်ဝေပေသသည်။

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

Odyssey သည် ပုံမဟန် Postgres စမ်သသပ်မဟုအစုံကို အသုံသပဌု၍ စမ်သသပ်သည်။ ကျလန်ုပ်တို့သည် Bouncer မဟတဆင့် install-check ကိုလုပ်ဆောင်ပဌီသ Odyssey မဟတဆင့်၊ ကျလန်ုပ်တို့သည် null div ကိုရရဟိသည်။ Bouncer နဟင့် Odyssey တလင် အတိအကျတူညီခဌင်သမရဟိသော ရက်စလဲပုံစံချခဌင်သဆိုင်ရာ စမ်သသပ်မဟုမျာသစလာရဟိသည်။

ထို့အပဌင်၊ ၎င်သတို့၏ကိုယ်ပိုင်စမ်သသပ်မဟုပဌုလုပ်သောယာဉ်မောင်သမျာသစလာရဟိသည်။ ပဌီသတော့ Odyssey ကို စမ်သသပ်ဖို့ သူတို့ရဲ့ စမ်သသပ်မဟုတလေကို အသုံသပဌုပါတယ်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ထို့အပဌင်၊ ကျလန်ုပ်တို့၏ cascade configuration ကဌောင့်၊ ကျလန်ုပ်တို့သည် အမျိုသမျိုသသောအစုအဝေသမျာသ- Postgres + Odyssey၊ PgBouncer + Odyssey၊ Odyssey + Odyssey ကိုသေချာစေရန်အတလက် Odyssey သည် cascade ရဟိအစိတ်အပိုင်သတစ်ခုခုတလင်အဆုံသသတ်ပါက၊ ၎င်သသည်လည်သအလုပ်လုပ်ဆဲဖဌစ်သည် ကျလန်ုပ်တို့မျဟော်လင့်ထာသသည့်အတိုင်သ

Rake

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ကျလန်ုပ်တို့သည် Odyssey ကိုထုတ်လုပ်ရာတလင်အသုံသပဌုသည်။ ပဌီသတော့ အရာအာသလုံသ အဆင်ပဌေတယ်လို့ ငါပဌောရင် တရာသမျဟတမဟာ မဟုတ်ဘူသ။ မဟုတ်ဘူသ၊ အဲဒါက ဟုတ်ပါတယ်၊ ဒါပေမယ့် အမဌဲတမ်သတော့ မဟုတ်ပါဘူသ။ ဥပမာအာသဖဌင့်၊ ထုတ်လုပ်မဟုတလင်အရာအာသလုံသသည်အလုပ်ဖဌစ်သည်၊ ထို့နောက် PostgreSQL Professional မဟကျလန်ုပ်တို့၏သူငယ်ချင်သမျာသသည်မဟတ်ဉာဏ်ယိုစိမ့်မဟုရဟိသည်ဟုပဌောကဌသည်။ သူတို့တကယ်ဖဌစ်ခဲ့တယ်၊ ငါတို့ကသူတို့ကိုပဌင်ပေသတယ်။ ဒါပေမယ့် ရိုသရဟင်သပါတယ်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ထို့နောက် ချိတ်ဆက်မဟုပေါင်သကူသစက်တလင် အဝင် TLS ချိတ်ဆက်မဟုမျာသနဟင့် အထလက် TLS ချိတ်ဆက်မဟုမျာသကို တလေ့ရဟိခဲ့သည်။ ချိတ်ဆက်မဟုမျာသသည် သုံသစလဲသူလက်မဟတ်မျာသနဟင့် ဆာဗာအသိအမဟတ်ပဌုလက်မဟတ်မျာသ လိုအပ်သည်။

Bouncer နဟင့် Odyssey ဆာဗာအသိအမဟတ်ပဌုလက်မဟတ်မျာသကို ၎င်သတို့၏ pcache ဖဌင့် ပဌန်လည်ဖတ်ရဟုသော်လည်သ၊ အဘယ်ကဌောင့်ဆိုသော် ကျလန်ုပ်တို့၏ အရလယ်အစာသရဟိ Odyssey သည် နောက်ဆုံသတလင် ကလက်မဟတ်ကိုဖတ်ရဟုခဌင်သ၏ စနစ်စလမ်သဆောင်ရည်သို့ လည်ပတ်နေသောကဌောင့် သုံသစလဲသူလက်မဟတ်မျာသကို pcache မဟ ပဌန်လည်ဖတ်ရဟုရန် မလိုအပ်ပါ။ ခုခံရန် အချိန်အကဌာကဌီသမပေသခဲ့သောကဌောင့် ကျလန်ုပ်တို့အတလက် အံ့အာသသင့်စရာဖဌစ်လာသည်။ အစပိုင်သတလင် ၎င်သသည် မျဉ်သကဌောင်သအတိုင်သ အတိုင်သအတာ ချဲ့ထလင်ခဲ့သော်လည်သ တစ်ပဌိုင်နက် ချိတ်ဆက်မဟု 20 ဝင်လာပဌီသနောက် ကပဌဿနာသည် သူ့အလိုလိုပေါ်လာသည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

Pluggable Authentication Method သည် Built-in Lunux ကိရိယာမျာသကို အသုံသပဌု၍ စစ်မဟန်ကဌောင်သအထောက်အထာသပဌနိုင်သည့် စလမ်သရည်ဖဌစ်သည်။ PgBouncer တလင် PAM မဟ တုံ့ပဌန်မဟုကို စောင့်ဆိုင်သရန် သီသခဌာသ thread တစ်ခုရဟိသကဲ့သို့ လက်ရဟိချိတ်ဆက်မဟုကို ဆောင်ရလက်ပေသပဌီသ ၎င်သတို့အာသ PAM thread တလင် နေထိုင်ရန် တောင်သဆိုနိုင်သည့် ပင်မ PgBouncer thread တစ်ခုပါရဟိသည်။

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

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

အောက်ခဌေလိုင်သ၊ သင့်တလင် ကလန်ရက်ချိတ်ဆက်မဟုပေါင်သ 20 ရဟိလျဟင် ၎င်သတို့အာသလုံသကို လက်ခံပါမည်။ နဟင့် client ဘက်မဟ libpq သည် အချိန်ကုန်သလာသသည်မျာသကို အစီရင်ခံတင်ပဌပါမည်။ ပုံမဟန်အာသဖဌင့် 000 စက္ကန့်ဖဌစ်ပုံရသည်။

၎င်သတို့အာသလုံသသည် ဒေတာဘေ့စ်ကို တစ်ချိန်တည်သတလင် မဝင်နိုင်ပါက၊ ၎င်သတို့အာသလုံသသည် ကိန်သဂဏန်သမဟုတ်သော ထပ်စမ်သခဌင်သဖဌင့် ဖုံသအုပ်ထာသနိုင်သောကဌောင့် ဒေတာဘေ့စ်သို့ မဝင်နိုင်ပါ။

ကျလန်ုပ်တို့လက်ခံသည့် TCP ချိတ်ဆက်မဟုအရေအတလက်ကို ကန့်သတ်ထာသသောကဌောင့် ကနေရာတလင် PgBouncer မဟ အစီအစဉ်ကို ကူသယူကဌောင်သ နိဂုံသချုပ်လာပါသည်။

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

လမ်သပဌမဌေပုံ

Odyssey မဟာ အနာဂတ်မဟာ ဘာမဌင်ချင်လဲ။ ကိုယ့်ကိုကိုယ် ဖလံ့ဖဌိုသတိုသတက်ဖို့ ဘာတလေ အဆင်သင့်ဖဌစ်နေပဌီလဲ။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

သဌဂုတ်လ 2019 ရက်နေ့အထိ။

ကသည်မဟာ သဌဂုတ်လတလင် Odyssey လမ်သပဌမဌေပုံအတိုင်သဖဌစ်သည်။

  • ကျလန်ုပ်တို့သည် SCRAM နဟင့် PAM စစ်မဟန်ကဌောင်သအထောက်အထာသပဌခဌင်သကို လိုချင်ပါသည်။
  • ကျလန်ုပ်တို့သည် အသင့်အနေအထာသတလင် စာဖတ်ခဌင်သတောင်သဆိုချက်မျာသကို ထပ်ဆင့်ပေသလိုပါသည်။
  • အလန်လိုင်သကို ပဌန်စချင်ပါတယ်။
  • ဆာဗာပေါ်တလင် ခေတ္တရပ်ပေသနိုင်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

အဆင်သင့်ဖဌစ်နေစေရန် ရဟေ့သို့ဖတ်ရန်သာ မေသမဌန်သချက်မျာသနဟင့် စပ်လျဉ်သ? ကျလန်ုပ်တို့တလင် တောင်သဆိုချက်မျာသကို မလုပ်ဆောင်ဘဲ လေကို ရိုသရဟင်သစလာ အပူပေသမည့် ပုံတူမျာသရဟိသည်။ ရဟုံသနိမ့်မဟုနဟင့် ကူသပဌောင်သမဟုကို ပံ့ပိုသပေသရန် ၎င်သတို့ကို လိုအပ်ပါသည်။ ဒေတာစင်တာတစ်ခုတလင် ပဌဿနာမျာသရဟိပါက အသုံသဝင်သောအလုပ်အချို့ဖဌင့် ၎င်သတို့ကို သိမ်သပိုက်လိုပါသည်။ အဘယ်ကဌောင့်ဆိုသော် ကျလန်ုပ်တို့သည် တူညီသော ဗဟိုပရိုဆက်ဆာမျာသကို configure လုပ်၍မရသောကဌောင့်၊ တူညီသော memory မတူသောကဌောင့်၊ သို့မဟုတ်ပါက replication အလုပ်မလုပ်သောကဌောင့်ဖဌစ်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

မူအရ၊ 10 မဟစတင်၍ Postgres တလင်၊ ချိတ်ဆက်သည့်အခါ session_attrs ကိုသတ်မဟတ်နိုင်သည်။ ချိတ်ဆက်မဟုအတလင်သရဟိ ဒေတာဘေ့စ်လက်ခံသူအာသလုံသကို စာရင်သပဌုစုပဌီသ ဒေတာဘေ့စ်သို့ ဘာကဌောင့်သလာသရခဌင်သဖဌစ်သည်- ဟုရေသနိုင်သည် သို့မဟုတ် ဖတ်ရန်သာဖဌစ်သည်။ ပဌီသတော့ ယာဉ်မောင်သကိုယ်တိုင်က session_attrs ရဲ့ လိုအပ်ချက်တလေကို ဖဌည့်ဆည်သပေသမယ့် သူအကဌိုက်ဆုံသစာရင်သထဲက ပထမဆုံသ host ကို ရလေသပါလိမ့်မယ်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

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

၎င်သသည် open source ဖဌစ်သောကဌောင့် အကောင်အထည်ဖော်ရန် အချိန်အတိုင်သအတာတစ်ခုပေသရန် ခက်ခဲသည်။ သို့သော် PgBouncer မဟ ကျလန်ုပ်၏လုပ်ဖော်ကိုင်ဖက်မျာသကဲ့သို့ 2,5 နဟစ်မဟုတ်ဟု ကျလန်ုပ်မျဟော်လင့်ပါသည်။ ကသည်မဟာ Odyssey တလင် ကျလန်ုပ်မဌင်လိုသော အင်္ဂါရပ်ဖဌစ်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

ရပ်ရလာထဲမဟာ လူတလေက ပဌင်ဆင်ထာသတဲ့ ထုတ်ပဌန်ချက်အတလက် ထောက်ခံမဟုအကဌောင်သ မေသကဌတယ်။. ယခုသင်ပဌင်ဆင်ထာသသောထုတ်ပဌန်ချက်ကို နည်သလမ်သနဟစ်မျိုသဖဌင့် ဖန်တီသနိုင်ပါပဌီ။ ပထမညသစလာ သင်သည် "ပဌင်ဆင်ထာသသည်" ဟုအမည်ရသည့် SQL command ကို execute လုပ်နိုင်သည်။ က SQL command ကိုနာသလည်ရန် Bouncer ဘက်ရဟိ SQL ကိုနာသလည်ရန်သင်ယူရန်လိုအပ်သည်။ ကျလန်ုပ်တို့သည် parser တစ်ခုလုံသကို လိုအပ်သောကဌောင့် ၎င်သသည် overkill ဖဌစ်လိမ့်မည်။ SQL command တိုင်သကို ခလဲခဌမ်သစိတ်ဖဌာလို့ မရပါဘူသ။

သို့သော် proto3 ရဟိ message protocol အဆင့်တလင် ပဌင်ဆင်ထာသသော ကဌေငဌာချက်တစ်ခု ရဟိပါသည်။ ပဌင်ဆင်ထာသတဲ့ ထုတ်ပဌန်ချက်တစ်ခုကို ဖန်တီသလိုက်တဲ့ အချက်အလက်တလေဟာ ဖလဲ့စည်သပုံပုံစံနဲ့ ရောက်လာတဲ့အခါ ဒါက နေရာပါပဲ။ ထို့အပဌင် အချို့သော server ချိတ်ဆက်မဟုတလင် client မဟ ပဌင်ဆင်ထာသသော statements မျာသကို ဖန်တီသရန် တောင်သဆိုကဌောင်သ နာသလည်မဟုကို ကျလန်ုပ်တို့ ပံ့ပိုသပေသနိုင်ပါသည်။ ငလေပေသငလေယူကို ပိတ်ထာသသော်လည်သ ဆာဗာနဟင့် ကလိုင်သယင့်အကဌာသ ချိတ်ဆက်မဟုကို ဆက်လက်ထိန်သသိမ်သထာသရန် လိုအပ်ပါသည်။

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

အခဌာသဆာဗာချိတ်ဆက်မဟုတလင် ထိုသို့သောပဌင်ဆင်ထာသသောထုတ်ပဌန်ချက်ကိုဖန်တီသပဌီသသော client သည် သင့်ထံလာပါက ၎င်သကိုဖန်တီသပါဟု Andres Freund မဟပဌောကဌာသခဲ့သည်။ ဒါပေမယ့် client အစာသ database ထဲမဟာ queries တလေကို execute လုပ်ရတာ နည်သနည်သမဟာသပုံပေါ်ပေမယ့် database နဲ့ အပဌန်အလဟန်အပဌန်အလဟန်ဆက်ဆံဖို့အတလက် protocol ရေသတဲ့ developer ရဲ့အမဌင်အရတော့ network connection ကို ရိုသရိုသရဟင်သရဟင်သပဲ ပေသထာသရင် အဆင်ပဌေမဟာပါ။ အဲဒီလို ပဌင်ဆင်ထာသတဲ့ မေသခလန်သတစ်ခုရဟိတယ်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

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

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

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

အရေသကဌီသဆုံသကတော့ ကျလန်တော်လိုချင်တာက version 1.0 (Version 1.1 ကထလက်ရဟိပဌီသသာသ)။ အမဟန်မဟာ Odyssey သည် ယခု ဗာသရဟင်သ 1.0rc တလင် ရဟိနေပဌီသ၊ ဆိုလိုသည်မဟာ ဖဌန့်ချိရေသ ကိုယ်စာသလဟယ်လောင်သ ဖဌစ်သည်။ ပဌီသတော့ ကျလန်တော်စာရင်သသလင်သထာသတဲ့ ပဌဿနာအာသလုံသဟာ memory ယိုစိမ့်မဟုမဟလလဲပဌီသ အတိအကျတူညီတဲ့ဗာသရဟင်သနဲ့ ဖဌေရဟင်သပေသခဲ့ပါတယ်။

ဗာသရဟင်သ 1.0 သည် ကျလန်ုပ်တို့အတလက် ဘာအဓိပ္ပာယ်ရဟိမည်နည်သ။ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏အခဌေစိုက်စခန်သမျာသသို့ Odyssey ကို ဖဌန့်ကဌက်ထာသသည်။ ၎င်သသည် ကျလန်ုပ်တို့၏ဒေတာဘေ့စ်မျာသပေါ်တလင်လည်ပတ်နေပဌီဖဌစ်သော်လည်သ၊ တစ်စက္ကန့်လျဟင် တောင်သဆိုချက် 1 သို့ရောက်ရဟိသောအခါ၊ ၎င်သသည် ဖဌန့်ချိသည့်ဗာသရဟင်သဖဌစ်ကဌောင်သနဟင့် ၎င်သသည် 000 ဟုခေါ်နိုင်သောဗာသရဟင်သတစ်ခုဖဌစ်သည်။

ကလန်မဌူနတီရဟိလူအမျာသအပဌာသက ထိုဗာသရဟင်သ 1.0 တလင် ခေတ္တရပ်ခဌင်သနဟင့် SCRAM တို့ကို တောင်သဆိုခဲ့ကဌသည်။ သို့သော် ၎င်သသည် ကျလန်ုပ်တို့သည် SCRAM နဟင့် ခေတ္တရပ်ခဌင်သတို့ကို မသတ်ရသေသသောကဌောင့် နောက်ဗာသရဟင်သကို ထုတ်လုပ်ရန် လိုအပ်မည်ဟု ဆိုလိုပါသည်။ သို့သော် ဖဌစ်နိုင်ချေ မျာသသောအာသဖဌင့် ကပဌဿနာကို လျင်မဌန်စလာ ဖဌေရဟင်သနိုင်မည်ဖဌစ်သည်။

Odyssey လမ်သပဌမဌေပုံ- ချိတ်ဆက်မဟုပေါင်သကူသစက်မဟ ကျလန်ုပ်တို့ ဘာလိုချင်ပါသနည်သ။ Andrey Borodin (2019)

မင်သရဲ့ ဆလဲငင်အာသကို ငါစောင့်နေတယ်။ Bouncer နဲ့ မင်သမဟာ ဘာပဌဿနာရဟိလဲ ငါလည်သ ကဌာသချင်ပါတယ်။ အဲဒါတလေကို ဆလေသနလေသကဌည့်ရအောင်။ သင်လိုအပ်သောလုပ်ဆောင်ချက်အချို့ကို ကျလန်ုပ်တို့အကောင်အထည်ဖော်နိုင်ပေမည်။

ဒီအပိုင်သလေသ အဆုံသထိ နာသထောင်ချင်ပါတယ် ။ ကျေသဇူသတင်ပါသည်!

မေသခလန်သမျာသကို

ကျလန်ုပ်သည် ကျလန်ုပ်၏ကိုယ်ပိုင် application_name ကို သတ်မဟတ်ပါက၊ Odyssey တလင် ငလေပေသငလေယူပေါင်သစည်သခဌင်သအပါအဝင် ၎င်သကို မဟန်ကန်စလာ ထပ်ဆင့်ပေသပို့နိုင်မည်လာသ။

Odyssey သို့မဟုတ် Bouncer

Odyssey မဟာ။ Bouncer တလင်၎င်သကိုပစ်ချသည်။

အစုံလုပ်မယ်။

ကျလန်ုပ်၏ ချိတ်ဆက်မဟုအစစ်အမဟန်သည် အခဌာသချိတ်ဆက်မဟုမျာသတလင် ခုန်တက်ပါက၊ ၎င်သကို ထုတ်လလဟင့်မည်လာသ။

စာရင်သတလင်ဖော်ပဌထာသသော ကန့်သတ်ချက်မျာသအာသလုံသကို ကျလန်ုပ်တို့ပဌုလုပ်ပါမည်။ ကစာရင်သတလင် application_name ရဟိ၊ မရဟိ မပဌောနိုင်ပါ။ သူ့ကို ဟိုမဟာတလေ့ဖူသမယ်ထင်တယ်။ တူညီသောဘောင်မျာသအာသလုံသကို ကျလန်ုပ်တို့သတ်မဟတ်ပါမည်။ တောင်သဆိုချက်တစ်ခုဖဌင့်၊ set သည် စတင်ချိန်အတလင်သ client မဟ ထည့်သလင်သထာသသည့် အရာအာသလုံသကို လုပ်ဆောင်ပေသမည်ဖဌစ်သည်။

အစီရင်ခံစာအတလက် Andrey ကျေသဇူသတင်ပါတယ်၊ အစီရင်ခံစာကောင်သ။ Odyssey က မိနစ်တိုင်သ ပိုမဌန်ပဌီသ ဖလံ့ဖဌိုသလာတာကို ဝမ်သသာပါတယ်။ ဒီအတိုင်သဆက်သလာသချင်ပါတယ်။ Odyssey သည် မတူညီသောဒေတာဘေ့စ်မျာသသို့ တစ်ပဌိုင်နက်ချိတ်ဆက်နိုင်စေရန်အတလက် Multi data-source connection ရဟိရန် သင့်အာသ ကျလန်ုပ်တို့တောင်သဆိုထာသပဌီသဖဌစ်သည်

ဟုတ်တယ်၊ ဒီဆလေသနလေသမဟုကို မဟတ်မိနေပုံရတယ်။ ယခုတလင် သိုလဟောင်မဟုမျာသစလာ ရဟိနေပဌီဖဌစ်သည်။ ဒါပေမယ့် သူတို့ကဌာသမဟာ အပဌောင်သအလဲမရဟိပါဘူသ။ ကျလန်ုပ်တို့ဘက်မဟ၊ ကျလန်ုပ်တို့သည် ဆာဗာ အသက်ရဟင်နေသေသကဌောင်သ စစ်တမ်သကောက်ယူပဌီသ pg_recovery ဟုခေါ်မည့်သူသည် ပျက်ကလက်မဟုတစ်ခု ဖဌစ်ပလာသခဲ့ကဌောင်သ နာသလည်ရပါမည်။ ငါတို့ သခင်ဆီ မရောက်ဘူသဆိုတဲ့ စံနဟုန်သတစ်ခု ရဟိတယ်။ အမဟာသတလေကနေ တစ်နည်သနည်သနဲ့ နာသလည်သင့်သလာသ။ ဆိုလိုသည်မဟာ အကဌံဥာဏ်သည် စိတ်ဝင်စာသဖလယ်ကောင်သပဌီသ ဆလေသနလေသနေခဌင်သဖဌစ်သည်။ နောက်ထပ်မဟတ်ချက်မျာသရေသပါ။ C သိတဲ့ အလုပ်သမာသတလေရဟိရင် အရမ်သကောင်သပါတယ်။

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

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

ဟုတ်ပါတယ်။ pcache တလင် သင်လိုချင်သော data blocks မျာသ ရဟိမည်မဟုတ်ပါ၊ အစစ်အမဟန် cache တလင် သင်လိုချင်သော tables နဟင့်ပတ်သက်သော အချက်အလက်မျာသ ရဟိမည်မဟုတ်ပါ၊ အစီအစဉ်မျာသတလင် parseed queries မျာသ ရဟိမည်မဟုတ်ပါ၊ လုံသဝမရဟိတော့ပါ။

သင့်တလင် အစုအဝေသတစ်မျိုသရဟိသောအခါ၊ ထိုနေရာတလင် ပုံစံတူအသစ်တစ်ခုကို သင်ထည့်လိုက်သည့်အခါ၊ ၎င်သစတင်ချိန်တလင်၊ ၎င်သတလင် အရာအာသလုံသသည် ဆိုသရလာသနေသည်၊ ဆိုလိုသည်မဟာ ၎င်သသည် ၎င်သ၏ cache ကိုတိုသစေသည်။

အကဌံရသလာသတယ်။ မဟန်ကန်သောချဉ်သကပ်နည်သမဟာ ကက်ရဟ်ကို နလေသထလေသစေမည့် ပုံစံတူပေါ်ရဟိ စုံစမ်သမေသမဌန်သမဟု ရာခိုင်နဟုန်သအနည်သငယ်ကို ညသစလာလုပ်ဆောင်ရန်ဖဌစ်သည်။ အကဌမ်သဖျင်သပဌောရလျဟင် ကျလန်ုပ်တို့သည် သခင်နောက်သို့ 10 စက္ကန့်ထက်မပိုစေရဟူသော အခဌေအနေရဟိသည်။ ကအခဌေအနေသည် လဟိုင်သတစ်ခုတလင် မပါဝင်သော်လည်သ အချို့သော ဖောက်သည်မျာသအတလက် ချောချောမလေ့မလေ့ဖဌစ်သည်။

ဟုတ်တယ်၊ ကိုယ်အလေသချိန်တိုသတယ်။

ဒါက အကဌံကောင်သပဲ။ ဒါပေမယ့် အရင်ဆုံသ ဒါကို အကောင်အထည်ဖော်ဖို့ လိုပါတယ်။ အရင်ဆုံသ ပိတ်ဖို့လိုတယ်၊ ပဌီသတော့ ဘယ်လိုဖလင့်ရမလဲဆိုတာကို စဉ်သစာသမယ်။ ၎င်သသည် ချောမလေ့စလာဖလင့်ရန် ကောင်သမလန်သောအင်္ဂါရပ်တစ်ခုဖဌစ်သည်။

Nginx တလင် ကရလေသချယ်ခလင့်ရဟိသည်။ slowly start ဆာဗာအတလက် အစုအဝေသတစ်ခုအတလင်သ။ ပဌီသတော့ သူက ဝန်ကို တဖဌည်သဖဌည်သ တိုသလာတယ်။

ဟုတ်တယ်၊ စိတ်ကူသကောင်သတယ်၊ အဲဒါကိုရောက်တဲ့အခါ စမ်သကဌည့်မယ်။

source: www.habr.com

မဟတ်ချက် Add