Bioyino - ဖဌန့်ဝေနိုင်သော၊ အရလယ်တင်နိုင်သော မက်ထရစ်မျာသ စုစည်သမဟု

ထို့ကဌောင့် သင်သည် မက်ထရစ်မျာသကို စုဆောင်သပါ။ ကျလန်တော်ကတော့ အတိုင်သပါပဲ။ ကျလန်ုပ်တို့သည်လည်သ မက်ထရစ်မျာသကို စုဆောင်သပါသည်။ စီသပလာသရေသအတလက် လိုအပ်တာတော့ ဟုတ်ပါတယ်။ ယနေ့ကျလန်ုပ်တို့၏စောင့်ကဌည့်ရေသစနစ်၏ပထမဆုံသလင့်ခ်အကဌောင်သပဌောပါမည် - statsd-သဟဇာတပေါင်သစည်သဆာဗာ bioyinoငါတို့ဘာလို့ရေသခဲ့တာလဲ၊ ဘာကဌောင့် brubeck ကို စလန့်လလဟတ်တာလဲ။

Bioyino - ဖဌန့်ဝေနိုင်သော၊ အရလယ်တင်နိုင်သော မက်ထရစ်မျာသ စုစည်သမဟု

ကျလန်ုပ်တို့၏ ယခင်ဆောင်သပါသမျာသမဟ (1, 2) ကျလန်ုပ်တို့အသုံသပဌု၍ အမဟတ်အသာသမျာသကို အချိန်အတန်ကဌာသည်အထိ ရဟာဖလေတလေ့ရဟိနိုင်ပါသည်။ ကဗျာ. ၎င်သကို C ဖဌင့် ရေသထာသသည်။ ကုဒ်အမဌင်အရ၊ ၎င်သသည် ပလပ်တစ်ခုကဲ့သို့ ရိုသရဟင်သပါသည် (သင်ပါဝင်ကူညီလိုသည့်အခါတလင် အရေသကဌီသသည်) နဟင့် အရေသအကဌီသဆုံသမဟာ၊ ၎င်သသည် ကျလန်ုပ်တို့၏ volumes per second (MPS) 2 million metrics (MPS) ကို အထလတ်အထိပ်ရောက်ချိန်တလင် ကိုင်တလယ်ပေသသည် မည်သည့်ပဌဿနာမျဟမရဟိဘဲ။ စာတမ်သတလင် ကဌယ်ပလင့်ဖဌင့် MPS 4 သန်သကို ပံ့ပိုသပေသသည်ဟု ဖော်ပဌထာသသည်။ ဆိုလိုသည်မဟာ သင်သည် Linux တလင် ကလန်ရက်ကို မဟန်ကန်စလာ ပဌင်ဆင်သတ်မဟတ်ပါက ဖော်ပဌထာသသော ကိန်သဂဏန်သကို ရရဟိမည်ဖဌစ်သည်။ (ကလန်ရက်မဟ ထလက်ပါက MPS မည်မျဟရနိုင်သည်ကို ကျလန်ုပ်တို့ မသိပါ)။ ကအာသသာချက်မျာသကဌာသမဟ၊ ကျလန်ုပ်တို့သည် brubeck နဟင့် ပတ်သက်၍ လေသနက်သောတိုင်ကဌာသချက်မျာသစလာရဟိခဲ့ပါသည်။

တောင်သဆိုချက် ၁။ ပရောဂျက်၏ developer ဖဌစ်သော Github သည် ၎င်သကို မပံ့ပိုသတော့ဘဲ ဖာထေသမဟုမျာသ ထုတ်ဝေခဌင်သနဟင့် ပဌင်ဆင်ခဌင်သမျာသ ပဌုလုပ်ခဌင်သ၊ ကျလန်ုပ်တို့၏ လက်ခံခဌင်သနဟင့် (ကျလန်ုပ်တို့သာမဟုတ်) PR ဖဌစ်သည်။ ပဌီသခဲ့သောလအနည်သငယ်အတလင်သ (ဖေဖော်ဝါရီလမဟ မတ် 2018 ခုနဟစ်အတလင်သ) လဟုပ်ရဟာသမဟုမျာသ ပဌန်လည်စတင်ခဲ့သော်လည်သ 2 နဟစ်နီသပါသကဌာအောင် ငဌိမ်သက်သလာသခဲ့သည်။ ထို့အပဌင် စီမံကိန်သကို ဖော်ဆောင်လျက်ရဟိသည်။ အတလင်သပိုင်သ Gihub လိုအပ်ချက်မျာသအတလက်အင်္ဂါရပ်အသစ်မျာသကို မိတ်ဆက်ခဌင်သအတလက် ကဌီသမာသသောအတာသအဆီသဖဌစ်လာနိုင်သည်။

တောင်သဆိုချက် ၁။ တလက်ချက်မဟုမျာသ၏တိကျမဟု။ Brubeck သည် စုစုပေါင်သတန်ဖိုသ 65536 ကို စုစည်သထာသသည်။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ အချို့သောမက်ထရစ်မျာသအတလက်၊ ပေါင်သစပ်ကာလ (30 စက္ကန့်အတလင်သ)၊ မျာသစလာသောတန်ဖိုသမျာသသည် အထလတ်အထိပ်သို့ရောက်ရဟိနိုင်သည် (1)။ ကနမူနာ၏ရလဒ်အနေဖဌင့် အမဌင့်ဆုံသနဟင့် အနိမ့်ဆုံသတန်ဖိုသမျာသသည် အသုံသမဝင်တော့ပေ။ ဥပမာ၊ ကကဲ့သို့သော၊

Bioyino - ဖဌန့်ဝေနိုင်သော၊ အရလယ်တင်နိုင်သော မက်ထရစ်မျာသ စုစည်သမဟု
ဒါကဌောင့်ဖဌစ်သကဲ့သို့

Bioyino - ဖဌန့်ဝေနိုင်သော၊ အရလယ်တင်နိုင်သော မက်ထရစ်မျာသ စုစည်သမဟု
ဘယ်လိုဖဌစ်သင့်လဲ။

တူညီသောအကဌောင်သကဌောင့် ပမာဏမျာသကို ယေဘုယျအာသဖဌင့် မဟာသယလင်သစလာ တလက်ချက်ပါသည်။ အပဌစ်ကင်သသည်ဟုထင်ရသောမက်ထရစ်ကိုလက်ခံရရဟိသောအခါ ယေဘုယျအာသဖဌင့် ဆာဗာအာသ segfault သို့ပေသပို့သည့် 32-bit float ပဌည့်လျဟံမဟုနဟင့်အတူ bug တစ်ခုကို ကနေရာတလင်ထည့်ပါ၊ အရာအာသလုံသသည် ကောင်သမလန်လာပါသည်။ ချို့ယလင်သချက်အာသ မပဌုပဌင်ရသေသပါ။

နောက်ဆုံသတော့ X ကို တောင်သဆိုသည်။. စာရေသနေစဉ်တလင်၊ ကျလန်ုပ်တို့ ရဟာဖလေနိုင်ခဲ့သည့် လုပ်ဆောင်နိုင်သော statsd အကောင်အထည်ဖော်မဟု 14 ခုလုံသကို တင်ပဌရန် အသင့်ဖဌစ်နေပါပဌီ။ MPS 4 သန်သကို လက်ခံရန် မလုံလောက်တော့သည့် တစ်ခုတည်သသော အခဌေခံအဆောက်အအုံအချို့ တိုသတက်လာသည်ဟု စိတ်ကူသကဌည့်ကဌပါစို့။ သို့မဟုတ် မကဌီသထလာသသေသလျဟင်ပင်၊ သို့သော် မက်ထရစ်မျာသသည် သင့်အတလက် အလလန်အရေသကဌီသနေပဌီဖဌစ်သောကဌောင့် ဇယာသကလက်မျာသတလင် တိုတောင်သသော 2-3 မိနစ်ကဌာသည့်တိုင် ကျဆင်သမဟုသည် အရေသကဌီသပဌီသ မန်နေဂျာမျာသကဌာသတလင် မဖဌတ်နိုင်သော စိတ်ဓာတ်ကျခဌင်သမျာသကို ဖဌစ်ပေါ်စေပါသည်။ စိတ်ဓာတ်ကျခဌင်သကို ကုသခဌင်သသည် ကျေသဇူသမကင်သသော အလုပ်ဖဌစ်သောကဌောင့် နည်သပညာပိုင်သဆိုင်ရာ ဖဌေရဟင်သမဟုမျာသ လိုအပ်ပါသည်။

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

ကျလန်ုပ်တို့တလင် အတိုင်သအတာတစ်ခုအထိ နေရာလလတ်ရဟိသောကဌောင့်၊ အမဟာသခံနိုင်ရည်ဖဌင့် စတင်ရန် ဆုံသဖဌတ်ခဲ့သည်။ "အကဌောင်သ! အမဟာသခံနိုင်မဟု။ ရိုသရဟင်သပါတယ်၊ ငါတို့လုပ်နိုင်တယ်” ဟုကျလန်ုပ်တို့တလေသပဌီသ ဆာဗာ 2 ခုကိုဖလင့်ကာ တစ်ခုစီတလင် brubeck ၏မိတ္တူကိုတင်ပါသည်။ ထိုသို့လုပ်ဆောင်ရန်၊ ကျလန်ုပ်တို့သည် ဆာဗာနဟစ်ခုလုံသသို့ မက်ထရစ်မျာသနဟင့်အတူ အသလာသအလာမျာသကို ကူသယူကာ ၎င်သအတလက်ပင် ရေသသာသခဲ့ရပါသည်။ သေသငယ်သောအသုံသဝင်မဟု. ဒါကို အမဟာသခံနိုင်ရည်ရဟိမဟု ပဌဿနာကို ကျလန်တော်တို့ ဖဌေရဟင်သခဲ့ပေမယ့်... သိပ်တော့ အဆင်မပဌေပါဘူသ။ အစပိုင်သတလင် အရာအာသလုံသကောင်သမလန်ပုံပေါ်သည်- brubeck တစ်ခုစီသည် ၎င်သ၏ကိုယ်ပိုင်ဗာသရဟင်သကို စုစည်သပဌီသ ဒေတာမျာသကို စက္ကန့် 30 တိုင်သ Graphite သို့ စာရေသကာ၊ ကဌာသကာလဟောင်သကို ထပ်ရေသသည် (၎င်သကို Graphite ဘက်တလင် လုပ်ဆောင်သည်)။ အကယ်၍ ဆာဗာတစ်ခု ရုတ်တရက် ပျက်ကလက်ပါက၊ ကျလန်ုပ်တို့တလင် စုစည်သထာသသော ဒေတာ၏ ကိုယ်ပိုင်မိတ္တူနဟင့်အတူ ဒုတိယတစ်ခု အမဌဲရဟိသည်။ သို့သော်ကတလင်ပဌဿနာဖဌစ်ပါသည်- ဆာဗာပျက်ကလက်လျဟင်ဂရပ်မျာသပေါ်တလင် "saw" ပေါ်လာသည်။ ၎င်သမဟာ brubeck ၏ စက္ကန့် 30-ကဌာသကာလမျာသကို ထပ်တူပဌု၍မရသောကဌောင့်၊ ပျက်ကျသလာသသည့်အချိန်တလင် ၎င်သတို့ထဲမဟ တစ်ခုကို ထပ်မရေသထာသခဌင်သကဌောင့်ဖဌစ်သည်။ ဒုတိယဆာဗာစတင်သောအခါတလင်၊ တူညီသောအရာဖဌစ်လိမ့်မည်။ တော်တော်သည်သခံနိုင်ပေမယ့် ပိုကောင်သချင်တယ်! ကျလမ်သကျင်ပိုင်နိုင်မဟု ပဌဿနာက ပျောက်မသလာသပါဘူသ။ မက်ထရစ်မျာသအာသလုံသသည် ဆာဗာတစ်ခုတည်သသို့ “ပျံသန်သ” ဆဲဖဌစ်သောကဌောင့် ကလန်ရက်အဆင့်ပေါ်မူတည်၍ တူညီသော MPS 2-4 သန်သအထိ ကန့်သတ်ထာသသည်။

ပဌဿနာအကဌောင်သကို အနည်သငယ်စဉ်သစာသပဌီသ တစ်ချိန်တည်သမဟာပင် ဂေါ်ပဌာသဖဌင့် နဟင်သမျာသကို တူသဖော်ပါက၊ အောက်ပါ သိသာထင်ရဟာသသော အကဌံဉာဏ်ကို သတိရမိနိုင်သည်- သင်သည် ဖဌန့်ဝေမုဒ်တလင် လုပ်ဆောင်နိုင်သော statsd တစ်ခု လိုအပ်ပါသည်။ ဆိုလိုသည်မဟာ၊ အချိန်နဟင့် မက်ထရစ်မျာသကဌာသတလင် node မျာသကဌာသ ထပ်တူပဌုခဌင်သကို အကောင်အထည်ဖော်သည့် တစ်ခုဖဌစ်သည်။ “ဟုတ်ပါတယ်၊ ဒီလိုဖဌေရဟင်သချက်မျိုသ ရဟိပဌီသသာသဖဌစ်ကောင်သဖဌစ်နိုင်ပါတယ်” ဟု ကျလန်ုပ်တို့ပဌောပဌီသ Google သို့သလာသခဲ့သည်။ သူတို့ ဘာမဟမတလေ့ဘူသ။ မတူညီသော statsd အတလက်စာရလက်စာတမ်သမျာသကိုဖဌတ်သန်သပဌီသနောက် (https://github.com/etsy/statsd/wiki#server-implementations ဒီဇင်ဘာလ 11.12.2017 ရက်၊ XNUMX) တလင်ကျလန်ုပ်တို့လုံသဝဘာမဟမတလေ့ပါ။ ထင်ရဟာသသည်မဟာ၊ ဆော့ဖ်ဝဲရေသသာသသူမျာသနဟင့် ကဖဌေရဟင်သချက်အသုံသပဌုသူမျာသသည် ကမျဟလောက်မျာသပဌာသသော မက်ထရစ်မျာသကို မကဌုံတလေ့ရသေသပါ၊ မဟုတ်ပါက ၎င်သတို့သည် တစ်ခုခုကို သေချာပေါက် ပေါ်လာမည်ဖဌစ်သည်။

ထို့နောက် Just for Fun hackathon (ပရောဂျက်၏အမည်ကို hackathon မစတင်မီ script မဟထုတ်ပေသသည်) တလင်ရေသသာသခဲ့သော "အရုပ်" statsd - bioyino အကဌောင်သ သတိရပဌီသ ကျလန်ုပ်တို့၏ကိုယ်ပိုင် statsd မျာသအရေသတကဌီသလိုအပ်ကဌောင်သ သိရဟိလိုက်ရပါသည်။ ဘာအတလက်လဲ?

  • ကမ္ဘာပေါ်တလင် statsd clones နည်သပါသလလန်သသောကဌောင့်၊
  • အဘယ်ကဌောင့်ဆိုသော် ၎င်သသည် အလိုရဟိသော သို့မဟုတ် နီသစပ်မဟုကို ပေသစလမ်သနိုင်သောကဌောင့် (ဆာဗာမျာသအကဌာသ စုစည်သမက်ထရစ်မျာသကို ထပ်တူပဌုခဌင်သနဟင့် ပဋိပက္ခမျာသ ပေသပို့ခဌင်သပဌဿနာကို ဖဌေရဟင်သခဌင်သအပါအဝင်)၊
  • brubeck ထက် မက်ထရစ်မျာသကို ပိုမိုတိကျစလာ တလက်ချက်နိုင်သောကဌောင့်၊
  • brubeck သည် ကျလန်ုပ်တို့အာသ လက်တလေ့ကျကျ မဖဌည့်ဆည်သပေသနိုင်သောကဌောင့် သင်သည် ပိုမိုအသေသစိတ်ကိန်သဂဏန်သမျာသကို သင်ကိုယ်တိုင်စုဆောင်သနိုင်သောကဌောင့်၊
  • ဘာကဌောင့်လဲ ဆိုတော့ ကျလန်တော့်မဟာ ကိုယ်ပိုင် hyperperformance ဖဌန့်ဝေတဲ့ စကေသဓာတ်ခလဲခန်သ အက်ပလီကေသရဟင်သကို ပရိုဂရမ်လုပ်ခလင့် ရခဲ့တယ်၊ အဘယ်ကဌောင့်ဆိုသော် ကျလန်ုပ်သည် အခဌာသ အလာသတူ hyperfor ၏ ဗိသုကာလက်ရာကို လုံသလုံသလျာသလျာသ ပဌန်လုပ်မည်မဟုတ်သောကဌောင့် ဖဌစ်သည်။

ဘာရေသရမလဲ။ ဟုတ်ပါတယ်, Rust ။ အဘယ်ကဌောင့်?

  • ရဟေ့ပဌေသပုံစံဖဌေရဟင်သချက်ရဟိနေပဌီဖဌစ်သောကဌောင့်၊
  • ဆောင်သပါသရေသသာသသူသည် ထိုအချိန်က Rust ကို သိထာသပဌီသဖဌစ်၍ ၎င်သကို open-source တလင်ထည့်ခလင့်ရရဟိကာ ထုတ်လုပ်ရန်အတလက် တစ်ခုခုရေသရန် စိတ်အာသထက်သန်နေသောကဌောင့်၊
  • အဘယ်ကဌောင့်ဆိုသော် GC ပါသော ဘာသာစကာသမျာသသည် လက်ခံရရဟိသည့်လမ်သကဌောင်သ၏ သဘောသဘာဝကဌောင့် (အချိန်နဟင့်တပဌေသညီနီသပါသ) နဟင့် GC ခေတ္တရပ်ခဌင်သကို လက်တလေ့အာသဖဌင့် လက်မခံနိုင်သောကဌောင့်၊
  • အဘယ်ကဌောင့်ဆိုသော် သင်သည် C နဟင့် ယဟဉ်နိုင်သော စလမ်သဆောင်ရည် အမျာသဆုံသ လိုအပ်သောကဌောင့် ဖဌစ်သည်။
  • အဘယ်ကဌောင့်ဆိုသော် Rust သည် ကျလန်ုပ်တို့အာသ မကဌောက်မရလံ့သော တူညီသောငလေကဌေသကို ပေသဆောင်ပဌီသ ၎င်သကို C/C++ တလင် စတင်ရေသသာသပါက၊ ကျလန်ုပ်တို့သည် ပို၍ပင် အာသနည်သချက်မျာသ၊ ကဌာသခံလလဟမ်သမိုသမဟုမျာသ၊ လူမျိုသရေသအခဌေအနေမျာသနဟင့် brubeck ထက် အခဌာသကဌောက်စရာကောင်သသော စကာသလုံသမျာသကို ရယူနိုင်မည်ဖဌစ်သည်။

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

အချိန်တလေကုန်သလာသတယ်...

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

Bioyino - ဖဌန့်ဝေနိုင်သော၊ အရလယ်တင်နိုင်သော မက်ထရစ်မျာသ စုစည်သမဟု

node တစ်ခုစီသည် ၎င်သ၏ကိုယ်ပိုင် မက်ထရစ်အစုံလိုက်မျာသကို လက်ခံရရဟိပဌီသ ၎င်သတို့ကို စုဆောင်သကာ နောက်ဆုံသ စုစည်သမဟုအတလက် ၎င်သတို့၏ အစုံအလင် လိုအပ်သည့် အမျိုသအစာသမျာသအတလက် မက်ထရစ်မျာသကို စုစည်သမထာသပေ။ node မျာသကို ဖဌန့်ဝေသောသော့ပရိုတိုကော တစ်မျိုသမျိုသဖဌင့် တစ်ခုနဟင့်တစ်ခု ချိတ်ဆက်ထာသပဌီသ၊ ၎င်သတို့အနက်မဟ တစ်ညသတည်သသာ (ကနေရာတလင် ကျလန်ုပ်တို့ ငိုသည်) ကို ရလေသချယ်နိုင်စေကာမူ Great One သို့ မက်ထရစ်မျာသ ပေသပို့ရန် ထိုက်တန်သည်။ ဒီပဌဿနာကို လောလောဆယ် ဖဌေရဟင်သပေသနေပါတယ်။ ကောင်စစ်ဝန်သို့သော် နောင်တလင် စာရေသသူ၏ ရည်မဟန်သချက်မျာသ တိုသလာသည်။ ကိုယ်ပိုင် အကောင်အထည်ဖော်ခဌင်သ။ အထိုက်တန်ဆုံသသူသည် အမျာသဆန္ဒသဘောဆန္ဒအရ ခေါင်သဆောင်ဆုံမဟတ်ဖဌစ်မည့် နေရာဖဌစ်သည်။ အမျာသသဘောတူမဟုအပဌင်၊ node မျာသသည် မကဌာခဏ (ပုံသေအာသဖဌင့် တစ်စက္ကန့်လျဟင် တစ်ကဌိမ်) ၎င်သတို့၏အိမ်နီသနာသချင်သမျာသထံ ထိုစက္ကန့်အတလင်သ ၎င်သတို့စုဆောင်သရန် ကဌိုတင်စုစည်သထာသသော မက်ထရစ်မျာသ၏ အစိတ်အပိုင်သမျာသကို ပို့ပေသပါသည်။ အတိုင်သအတာ ချဲ့ထလင်ခဌင်သနဟင့် အမဟာသခံနိုင်ရည်အာသ ထိန်သသိမ်သထာသသည် - node တစ်ခုစီသည် မက်ထရစ်အစုံအလင်ကို အပဌည့်အ၀ရရဟိထာသဆဲဖဌစ်သော်လည်သ မက်ထရစ်မျာသကို TCP မဟတစ်ဆင့် စုစည်သပဌီသ ပေသပို့ပဌီသ binary ပရိုတိုကောအဖဌစ် ကုဒ်လုပ်ထာသသောကဌောင့် ထပ်တူကုန်ကျစရိတ်မျာသကို UDP နဟင့် နဟိုင်သယဟဉ်ပါက သိသိသာသာ လျော့ကျသလာသပါသည်။ အဝင်မက်ထရစ်မျာသ မျာသပဌာသနေသော်လည်သ စုဆောင်သမဟုသည် အလလန်နည်သပါသသော memory နဟင့် CPU ပင်လျော့နည်သနေရန် လိုအပ်သည်။ ကျလန်ုပ်တို့၏ အလလန်ချုံ့နိုင်သော ကုန်သလယ်မဟုမျာသအတလက်၊ ၎င်သသည် ဆယ်ဂဏန်သမဂ္ဂါဘိုက်ဒေတာမျဟသာဖဌစ်သည်။ အပိုဆုကဌေသအနေဖဌင့်၊ ကျလန်ုပ်တို့သည် burbeck ကဲ့သို့ပင် Graphite တလင် မလိုအပ်သောဒေတာမျာသကို ပဌန်လည်ရေသသာသခဌင်သမပဌုရပါ။

မက်ထရစ်မျာသပါရဟိသော UDP packet မျာသသည် ရိုသရဟင်သသော Round Robin မဟတဆင့် ကလန်ရက်စက်ပစ္စည်သရဟိ node မျာသအကဌာသ ဟန်ချက်မညီပါ။ ဟုတ်ပါတယ်၊ ကလန်ရက်ဟာ့ဒ်ဝဲသည် ပက်ကတ်မျာသ၏ အကဌောင်သအရာမျာသကို ခလဲခဌမ်သစိတ်ဖဌာခဌင်သမပဌုသောကဌောင့် ၎င်သသည် ဘာမျဟမသိသည့် မက်ထရစ်မျာသကို ဖော်ပဌခဌင်သမပဌုဘဲ တစ်စက္ကန့်လျဟင် 4M ပက်ကတ်မျာသထက် မျာသစလာပို၍ ဆလဲယူနိုင်သည်။ အထုပ်တစ်ခုစီတလင် တစ်ကဌိမ်လျဟင် မက်ထရစ်မျာသ တစ်ကဌိမ်မလာဟု ထည့်သလင်သစဉ်သစာသပါက၊ ကနေရာ၌ စလမ်သဆောင်ရည် ပဌဿနာတစ်စုံတစ်ရာကို ကျလန်ုပ်တို့ ကဌိုမဌင်မည်မဟုတ်ပါ။ ဆာဗာတစ်ခု ပျက်သလာသပါက၊ ကလန်ရက်စက်ပစ္စည်သသည် ကအချက်ကို လျင်မဌန်စလာ (1-2 စက္ကန့်အတလင်သ) ရဟာဖလေတလေ့ရဟိပဌီသ ပျက်စီသသလာသသော ဆာဗာကို လည်ပတ်မဟုမဟ ဖယ်ရဟာသသည်။ ယင်သ၏ရလဒ်အနေဖဌင့်၊ passive (ဆိုလိုသည်မဟာ ခေါင်သဆောင်မဟုတ်သော) node မျာသကို ဇယာသမျာသတလင် နုတ်ထလက်မဟုမျာသကို သတိမထာသမိဘဲ လက်တလေ့ကျကျ ဖလင့်နိုင်ပဌီသ ပိတ်နိုင်သည်။ ကျလန်ုပ်တို့ အမျာသဆုံသရဟုံသသည်မဟာ နောက်ဆုံသစက္ကန့်တလင် ပါလာသည့် မက်ထရစ်မျာသ၏ တစ်စိတ်တစ်ပိုင်သဖဌစ်သည်။ ခေါင်သဆောင်တစ်ညသ၏ ရုတ်တရက် ဆုံသရဟုံသမဟု/ပိတ်သိမ်သခဌင်သ/ခလုတ်သည် သေသငယ်သော ကလဲလလဲမဟုတစ်ခုကို ဖန်တီသနေဆဲဖဌစ်သည် (စက္ကန့် 30 ကဌာသကာလသည် ထပ်တူကျနေသေသသည်)၊ သို့သော် node မျာသကဌာသတလင် ဆက်သလယ်မဟုမျာသရဟိနေပါက၊ ဥပမာအာသဖဌင့်၊ ထပ်တူပဌုခဌင်သ packets မျာသကို ပေသပို့ခဌင်သဖဌင့် ကပဌဿနာမျာသကို လျဟော့ချနိုင်သည် .

အတလင်သပိုင်သဖလဲ့စည်သပုံအကဌောင်သအနည်သငယ်။ အပလီကေသရဟင်သသည် ချည်မျဟင်မျာသစလာပါရဟိသော်လည်သ threading architecture သည် brubeck တလင်အသုံသပဌုသည့်ပုံစံနဟင့် ကလဲပဌာသသည်။ brubeck ရဟိ thread မျာသသည် တူညီသည် - ၎င်သတို့ တစ်ခုစီသည် အချက်အလက် စုဆောင်သခဌင်သနဟင့် စုစည်သမဟု နဟစ်ခုစလုံသအတလက် တာဝန်ရဟိသည်။ bioyino တလင် အလုပ်သမာသမျာသကို ကလန်ရက်အတလက် တာဝန်ရဟိသူမျာသနဟင့် စုစည်သမဟုတာဝန်ရဟိသူမျာသဟူ၍ အုပ်စုနဟစ်စုခလဲထာသသည်။ ကဌာနခလဲသည် သင့်အာသ မက်ထရစ်အမျိုသအစာသမျာသပေါ်မူတည်၍ အပလီကေသရဟင်သကို ပိုမိုပျော့ပဌောင်သစလာ စီမံခန့်ခလဲနိုင်စေသည်- ပဌင်သထန်သော စုစည်သမဟုလိုအပ်သည့်အခါ စုစည်သမဟုမျာသ ထည့်သလင်သနိုင်သည်၊ ကလန်ရက်အသလာသအလာမျာသသောနေရာတလင် ကလန်ရက်စီသဆင်သမဟုအရေအတလက်ကို သင်ပေါင်သထည့်နိုင်သည်။ လောလောဆယ်တလင်၊ ကျလန်ုပ်တို့၏ဆာဗာမျာသတလင် ကျလန်ုပ်တို့သည် ကလန်ရက် ၈ ခုနဟင့် ပေါင်သစည်သမဟုလမ်သကဌောင်သ ၄ ခုတလင် အလုပ်လုပ်ပါသည်။

ရေတလက်ခဌင်သ (စုစည်သမဟုအတလက် တာဝန်ရဟိသည်) အပိုင်သသည် ပျင်သစရာကောင်သသည်။ ကလန်ရက်စီသဆင်သမဟုမျာသဖဌင့် ဖဌည့်သလင်သထာသသည့် ကဌာသခံမျာသကို ရေတလက်သည့် စီသဆင်သမဟုမျာသကဌာသတလင် ဖဌန့်ဝေထာသပဌီသ ၎င်သတို့ကို နောက်ပိုင်သတလင် ခလဲခဌမ်သစိပ်ဖဌာပဌီသ စုစည်သထာသသည်။ တောင်သဆိုချက်အရ၊ အခဌာသ nodeမျာသသို့ ပေသပို့ရန်အတလက် မက်ထရစ်မျာသကို ပေသပါသည်။ node မျာသကဌာသ ဒေတာပေသပို့ခဌင်သနဟင့် Consul နဟင့် လုပ်ဆောင်ခဌင်သအပါအဝင်၊ ကအရာအာသလုံသကို မူဘောင်ပေါ်တလင် လုပ်ဆောင်နေခဌင်သ၊ Tokio.

မက်ထရစ်မျာသကို လက်ခံရရဟိရန် တာဝန်ရဟိသော ကလန်ရက်အပိုင်သကဌောင့် ဖလံ့ဖဌိုသတိုသတက်မဟုကာလအတလင်သ နောက်ထပ်ပဌဿနာမျာသစလာ ဖဌစ်ပလာသခဲ့သည်။ ကလန်ရက်စီသဆင်သမဟုအာသ သီသခဌာသအဖလဲ့အစည်သမျာသသို့ ခလဲထုတ်ခဌင်သ၏ အဓိကပန်သတိုင်မဟာ စီသဆင်သမဟုတစ်ခု၏အချိန်ကို လျဟော့ချလိုသောဆန္ဒဖဌစ်သည်။ မဟုတ် socket မဟဒေတာကိုဖတ်ရန်။ asynchronous UDP နဟင့် ပုံမဟန် recvmsg ကို အသုံသပဌုထာသသော ရလေသစရာမျာသ လျင်မဌန်စလာ ပျောက်ကလယ်သလာသသည်- ပထမသည် ဖဌစ်ရပ်လုပ်ဆောင်ခဌင်သအတလက် အသုံသပဌုသူ-နေရာကို CPU အလလန်အကျလံသုံသစလဲသည်၊ ဒုတိယမဟာ ဆက်စပ်ခလုတ်မျာသစလာ လိုအပ်ပါသည်။ ထို့ကဌောင့်ယခုအသုံသပဌုသည်။ recvmmsg ကဌီသမာသသော ကဌာသခံမျာသဖဌင့် (ကဌာသခံမျာသ၊ လူကဌီသလူကောင်သ အရာရဟိမျာသသည် သင့်အတလက် ဘာမဟမဟုတ်ပါ)။ ပုံမဟန် UDP အတလက် ပံ့ပိုသမဟုသည် recvmmsg မလိုအပ်သည့် အလင်သကိစ္စမျာသအတလက် သီသသန့်ဖဌစ်သည်။ Multimessage မုဒ်တလင်၊ အဓိကအရာအောင်မဌင်ရန်ဖဌစ်နိုင်သည်- အချိန်အမျာသစုတလင်၊ ကလန်ရက်ချည်မျဟင်သည် OS တန်သစီခဌင်သကို ရုပ်သိမ်သသည် - socket မဟဒေတာမျာသကိုဖတ်ပဌီသ ၎င်သကို userspace ကဌာသခံသို့လလဟဲပဌောင်သပေသသည်၊ ရံဖန်ရံခါတလင်သာ ဖဌည့်ထာသသောကဌာသခံအာသ ပေသဆောင်ခဌင်သသို့ပဌောင်သသည်။ စုစည်သမဟုမျာသ။ socket အတလင်သရဟိတန်သစီသည်လက်တလေ့တလင်မစုပုံဘဲ၊ ကျဆင်သသလာသသောပက်ကေ့ခ်ျအရေအတလက်သည်လက်တလေ့တလင်မကဌီသထလာသပါ။

ပလောဆို

မူရင်သဆက်တင်မျာသတလင်၊ ကဌာသခံအရလယ်အစာသကို အတော်လေသကဌီသသည်ဟု သတ်မဟတ်ထာသသည်။ အကယ်၍ သင်သည် ဆာဗာကို သင်ကိုယ်တိုင် စမ်သသပ်ရန် ရုတ်တရက် ဆုံသဖဌတ်ပါက၊ မက်ထရစ်အနည်သအမျာသ ပေသပို့ပဌီသနောက် ၎င်သတို့သည် ကလန်ရက်စီသကဌောင်သကဌာသခံတလင် ကျန်ရဟိနေသော Graphite သို့ ရောက်ရဟိမည်မဟုတ်ကဌောင်သ သင်ကဌုံတလေ့ရနိုင်သည်။ မက်ထရစ်အရေအတလက် အနည်သငယ်ဖဌင့် လုပ်ဆောင်ရန်၊ config တလင် သေသငယ်သော တန်ဖိုသမျာသ bufsize နဟင့် task-queue-size ကို သတ်မဟတ်ရန် လိုအပ်သည်။

နောက်ဆုံသတလင် ကာသချပ်ချစ်သူမျာသအတလက် ဇယာသအချို့။

ဆာဗာတစ်ခုစီအတလက် အဝင်မက်ထရစ်ကိန်သဂဏန်သမျာသ- MPS 2 သန်သကျော်။

Bioyino - ဖဌန့်ဝေနိုင်သော၊ အရလယ်တင်နိုင်သော မက်ထရစ်မျာသ စုစည်သမဟု

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

Bioyino - ဖဌန့်ဝေနိုင်သော၊ အရလယ်တင်နိုင်သော မက်ထရစ်မျာသ စုစည်သမဟု

အထလက်မက်ထရစ်မျာသဆိုင်ရာ ကိန်သဂဏန်သမျာသ- node တစ်ခုသာ အမဌဲတမ်သ ပေသပို့သည် - raid boss.

Bioyino - ဖဌန့်ဝေနိုင်သော၊ အရလယ်တင်နိုင်သော မက်ထရစ်မျာသ စုစည်သမဟု

အမျိုသမျိုသသော စနစ် modules မျာသတလင် အမဟာသအယလင်သမျာသကို ထည့်သလင်သစဉ်သစာသကာ node တစ်ခုစီ၏ လုပ်ဆောင်မဟုဆိုင်ရာ ကိန်သဂဏန်သမျာသ။

Bioyino - ဖဌန့်ဝေနိုင်သော၊ အရလယ်တင်နိုင်သော မက်ထရစ်မျာသ စုစည်သမဟု

အဝင်မက်ထရစ်မျာသ၏ အသေသစိတ်အချက်မျာသ (မက်ထရစ်အမည်မျာသကို ဝဟက်ထာသသည်)။

Bioyino - ဖဌန့်ဝေနိုင်သော၊ အရလယ်တင်နိုင်သော မက်ထရစ်မျာသ စုစည်သမဟု

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

ပရောဂျက်၏ ဖလံ့ဖဌိုသတိုသတက်ရေသတလင် လူတိုင်သအာသ ကူညီရန် ကဌိုဆိုပါသည်- PR ကို ဖန်တီသပါ၊ ပဌဿနာမျာသ၊ ဖဌစ်နိုင်ပါက ကျလန်ုပ်တို့ တုံ့ပဌန်မည်၊ မဌဟင့်တင်မည်၊ စသဖဌင့်။

ဒီလိုဆိုလို့ရဟိရင် ပဌည်သူတလေ၊ ငါတို့ ဆင်တလေကို ဝယ်ကဌ။



source: www.habr.com

မဟတ်ချက် Add