HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

HighLoad++ မော်စကို 2018၊ ကလန်ဂရက်ခန်သမ။ နိုဝင်ဘာ ၉ ရက်၊ ၁၅ှ၀၀

အကျဉ်သချုပ်နဟင့် တင်ပဌချက်- http://www.highload.ru/moscow/2018/abstracts/4066

Yuri Nasretdinov (VKontakte)- အစီရင်ခံစာသည် ကျလန်ုပ်တို့၏ကုမ္ပဏီတလင် ClickHouse ကို အကောင်အထည်ဖော်ခဌင်သ၏ အတလေ့အကဌုံ- ကျလန်ုပ်တို့ ၎င်သကို အဘယ်ကဌောင့် လိုအပ်သည်၊ ကျလန်ုပ်တို့ ဒေတာမည်မျဟ သိမ်သဆည်သထာသသနည်သ၊ ၎င်သကို မည်သို့ရေသသာသပုံ စသည်ဖဌင့် ဆလေသနလေသပါမည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

အပိုဆောင်သပစ္စည်သမျာသ: ELK၊ Big Query နဟင့် TimescaleDB အတလက် အစာသထိုသရန် Clickhouse ကို အသုံသပဌုခဌင်သ။

Yuri Nasretdinov - အာသလုံသမင်္ဂလာပါ! ကျလန်တော့်နာမည်က Yuri Nasretdinov ပါ၊ ကျလန်တော်မိတ်ဆက်ပဌီသသာသပါ။ ငါ VKontakte မဟာအလုပ်လုပ်တယ်။ ကျလန်ုပ်တို့၏ဆာဗာတပ်စု (သောင်သနဟင့်ချီသော) မဟ ClickHouse ထဲသို့ ဒေတာထည့်သလင်သနည်သအကဌောင်သ ပဌောပဌပါမည်။

သစ်လုံသတလေက ဘာတလေလဲ၊ ဘာကဌောင့် စုဆောင်သတာလဲ။

ကျလန်ုပ်တို့ပဌောပဌမည့်အရာ- ကျလန်ုပ်တို့ ဘာတလေလုပ်ဆောင်ခဲ့သလဲ၊ ဘာကဌောင့် “ClickHouse” ကို လိုအပ်သလဲ၊ အသီသသီသ၊ ၎င်သကို ဘာကဌောင့် ရလေသချယ်ခဲ့သလဲ၊ အထူသတလည် ပဌင်ဆင်မဟုမရဟိဘဲ သင်ရရဟိနိုင်မယ့် စလမ်သဆောင်ရည်မျိုသ။ ကဌာသခံဇယာသမျာသအကဌောင်သ၊ ၎င်သတို့နဟင့်ကျလန်ုပ်တို့ကဌုံတလေ့ခဲ့ရသောပဌဿနာမျာသနဟင့် open source မဟကျလန်ုပ်တို့၏ဖဌေရဟင်သနည်သမျာသ - KittenHouse and Lighthouse မဟဖန်တီသထာသသောကျလန်ုပ်တို့၏ဖဌေရဟင်သနည်သမျာသအကဌောင်သ ထပ်မံပဌောပဌပါမည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

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

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ငါတို့ ဘာကဌောင့် ဆုံသဖဌတ်ခဲ့တာလဲ။ မဟတ်တမ်သမျာသ သိမ်သဆည်သရန်အတလက် ကျလန်ုပ်တို့တလင် ဖဌေရဟင်သချက်မျာသ ရဟိကောင်သရဟိနိုင်သည်။ ကတလင် - ကကဲ့သို့သောအမျာသပဌည်သူ "Backend VK" ရဟိသည်။ စာရင်သသလင်သရန် အထူသအကဌံပဌုလိုပါသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

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

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

မဟတ်တမ်သမျာသကို သိမ်သဆည်သရန် အဘယ်အရာအသုံသပဌုနိုင်သနည်သ။ Hadup ကို ပဌောဖို့ မဖဌစ်နိုင်ပါဘူသ။ ထို့နောက် ဥပမာ၊ Rsyslog (ကမဟတ်တမ်သမျာသကို ဖိုင်မျာသတလင် သိမ်သဆည်သခဌင်သ)။ LSD LSD ဆိုတာ ဘာလဲ ဘယ်သူသိလဲ။ မဟုတ်ပါ၊ က LSD မဟုတ်ပါ။ ဖိုင်မျာသကို အသီသသီသ သိမ်သထာသနိုင်သည် ။ ကောင်သပဌီ၊ ClickHouse သည်ထူသဆန်သသောရလေသချယ်မဟုတစ်ခုဖဌစ်သည်။

Clickhouse နဟင့် ပဌိုင်ဘက်မျာသ- လိုအပ်ချက်မျာသနဟင့် အခလင့်အလမ်သမျာသ

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

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ကျလန်ုပ်တို့တလင် ထိုကဲ့သို့သော စိတ်ဝင်စာသစရာကောင်သသော လိုအပ်ချက်တစ်ခုရဟိသည်- တစ်ခါတစ်ရံတလင် အချို့သော command မျာသ၏ output (ဥပမာ၊ မဟတ်တမ်သမျာသ) သည် 4 ကီလိုဘိုက်ထက်ပို၍ လလယ်ကူနိုင်သည်။ ကအရာသည် UDP နဟင့်အထက်အလုပ်လုပ်ပါက၊ ၎င်သသည်သုံသစလဲရန်မလိုအပ်ပါ ... ၎င်သတလင်ချိတ်ဆက်မဟုအတလက် "အပိုဆောင်သ" မျာသမရဟိပါ၊ နဟင့်ဆာဗာအမျာသအပဌာသအတလက်၎င်သသည်အပိုတစ်ခုဖဌစ်သည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

Open Source က ကျလန်ုပ်တို့ကို ပေသဆောင်သည်မျာသကို ကဌည့်ကဌပါစို့။ ပထမညသစလာ၊ ကျလန်ုပ်တို့တလင် Logs Engine ရဟိသည် - ကသည်မဟာ ကျလန်ုပ်တို့၏အင်ဂျင်ဖဌစ်သည်။ မူအရတော့ အရာအာသလုံသကို လုပ်နိုင်တယ်၊ စာကဌောင်သရဟည်တလေတောင် ရေသနိုင်တယ်။ ကောင်သပဌီ၊ ၎င်သသည် ဒေတာမျာသကို ပလင့်လင်သမဌင်သာစလာ ချုံ့ခဌင်သမပဌုပါ - ကျလန်ုပ်တို့အလိုရဟိပါက ကျလန်ုပ်တို့ကိုယ်တိုင် ကော်လံကဌီသမျာသ ချုံ့နိုင်ပါသည်... (ဖဌစ်နိုင်လျဟင်)။ တစ်ခုတည်သသောပဌဿနာမဟာ မိမိမဟတ်ဉာဏ်ထဲတလင် အံဝင်ခလင်ကျရဟိသော အရာမျာသကိုသာ စလန့်နိုင်ခဌင်သဖဌစ်သည်။ ကျန်တာကိုဖတ်ရန်၊ သင်သည် ကအင်ဂျင်၏ binlog ကိုရယူရန် လိုအပ်ပဌီသ ထို့ကဌောင့် အချိန်အတော်ကဌာပါသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

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

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

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ထို့နောက် LSD ၏ "badushka" ဖလံ့ဖဌိုသတိုသတက်မဟုရဟိပါသည်။ အခဌေခံအာသဖဌင့် "Rsyslog" နဟင့်တူညီသည်- ၎င်သသည်ရဟည်လျာသသောစာကဌောင်သမျာသကိုပံ့ပိုသသည်၊ သို့သော်၎င်သသည် UDP မဟတဆင့်အလုပ်မလုပ်နိုင်ဘဲ၊ တကယ်တော့၊ ကံမကောင်သစလာဖဌင့်၊ ကအရာမျာသစလာကိုထိုနေရာတလင်ပဌန်လည်ရေသသာသရန်လိုအပ်သည်။ ထောင်ပေါင်သမျာသစလာသော ဆာဗာမျာသမဟ မဟတ်တမ်သတင်နိုင်စေရန် LSD ကို ပဌန်လည်ဒီဇိုင်သပဌုလုပ်ရန် လိုအပ်ပါသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ပဌီသတော့ ဒီမဟာ! ရယ်စရာကောင်သသောရလေသချယ်မဟုသည် ElasticSearch ဖဌစ်သည်။ ဘယ်လိုပဌောရမလဲ? သူက စာဖတ်အာသကောင်သတယ်၊ ဆိုလိုတာက သူက မဌန်မဌန်ဖတ်တယ်၊ ဒါပေမယ့် စာရေသတာ သိပ်မကောင်သဘူသ။ ပထမအချက်က data တလေကို compress လုပ်ရင် အရမ်သအာသနည်သပါတယ်။ ဖဌစ်နိုင်သည်မဟာ၊ ရဟာဖလေမဟု အပဌည့်အစုံသည် မူရင်သ volume ထက် ပိုမိုကဌီသမာသသော ဒေတာတည်ဆောက်မဟု လိုအပ်ပါသည်။ လည်ပတ်ရန် ခက်ခဲပဌီသ ပဌဿနာမျာသ မကဌာခဏ ဖဌစ်ပေါ်တတ်သည်။ ထို့အပဌင် Elastic ဖဌင့် အသံသလင်သခဌင်သ - ကျလန်ုပ်တို့သည် အရာအာသလုံသကို ကိုယ်တိုင်လုပ်ဆောင်ရမည်ဖဌစ်ပါသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

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

အဲဒါကို ဘယ်လိုထည့်မလဲ။ MergeTree

“ClickHouse” အကဌောင်သ မကဌာသဘူသ သို့မဟုတ် မသိသေသသူမျာသထဲမဟ မည်သူနည်သ။ ငါ မင်သကို ပဌောစရာလိုတယ် မဟုတ်လာသ? အရမ်သမဌန်တယ်။ ထိုနေရာတလင်ထည့်သလင်သခဌင်သ - တစ်စက္ကန့်လျဟင် 1-2 gigabits၊ တစ်စက္ကန့်လျဟင် 10 gigabits အထိ ပေါက်ထလက်နိုင်သည် - 6-core Xeons နဟစ်ခု (ထို့အပဌင် အစလမ်သထက်ဆုံသမဟုတ်ပါ)၊ RAM 256 GB၊ 20 terabytes ရဟိပါသည်။ RAID တလင် (မည်သူမျဟ configure မလုပ်ထာသ၊ ပုံသေဆက်တင်မျာသ)။ ClickHouse ဆော့ဖ်ဝဲရေသသာသသူ Alexey Milovidov သည် မည်သည့်အရာကိုမျဟ မပဌင်ဆင်ထာသသောကဌောင့် ထိုင်ငိုနေနိုင်သည် (အရာအာသလုံသသည် ကျလန်ုပ်တို့အတလက် ထိုကဲ့သို့ပင်ဖဌစ်သည်)။ ထို့ကဌောင့်၊ ဒေတာကို ကောင်သစလာချုံ့ထာသလျဟင် တစ်စက္ကန့်လျဟင် လိုင်သပေါင်သ ၆ ဘီလီယံခန့်ကို စကင်န်ဖတ်ခဌင်သအမဌန်နဟုန်သကို ရရဟိနိုင်သည်။ စာကဌောင်သတစ်ကဌောင်သကို % ကဌိုက်နဟစ်သက်ပါက - တစ်စက္ကန့်လျဟင် လိုင်သပေါင်သ သန်သ 6၊ ဆိုလိုသည်မဟာ၊ ၎င်သသည် အလလန်မဌန်ပုံရသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

အဲဒါကို ဘယ်လိုထည့်မလဲ။ VK က PHP ကိုသုံသတယ်ဆိုတာ သင်သိပါတယ်။ ကျလန်ုပ်တို့သည် မဟတ်တမ်သတစ်ခုစီအတလက် MergeTree ဇယာသတလင် HTTP မဟတစ်ဆင့် PHP လုပ်သာသတစ်ညသစီမဟ “ClickHouse” သို့ ထည့်သလင်သပါမည်။ ကအစီအစဥ်တလင် ပဌဿနာကို မည်သူမဌင်သနည်သ။ အကဌောင်သတစ်ခုခုကဌောင့် လူတိုင်သလက်မထောင်ခဲ့ကဌပါ။ ပဌောပဌပါရစေ။

ပထမညသစလာ၊ ဆာဗာမျာသစလာရဟိသည် - ထို့ကဌောင့်၊ ချိတ်ဆက်မဟုမျာသ (မကောင်သ) အမျာသအပဌာသရဟိလိမ့်မည်။ ထို့နောက် တစ်စက္ကန့်လျဟင် တစ်ကဌိမ်ထက် မကဌာမကဌာ MergeTree ထဲသို့ ဒေတာထည့်ခဌင်သသည် ပိုကောင်သပါတယ်။ အဘယ်ကဌောင့်နည်သ။ အိုကေ၊ ဒီအကဌောင်သ နည်သနည်သပဌောပဌမယ်။ နောက်ထပ်စိတ်ဝင်စာသစရာကောင်သသည့်မေသခလန်သမဟာ ကျလန်ုပ်တို့သည် ခလဲခဌမ်သစိတ်ဖဌာမဟုမလုပ်ပါ၊ ကျလန်ုပ်တို့သည် ဒေတာကဌလယ်ဝရန်မလိုအပ်ပါ၊ ကျလန်ုပ်တို့သည် အလယ်အလတ်ဆာဗာမျာသမလိုအပ်ပါ၊ ကျလန်ုပ်တို့သည် “ClickHouse” တလင် တိုက်ရိုက်ထည့်သလင်သလိုသည် (ဖဌစ်နိုင်သည် - ပို၍တိုက်ရိုက်၊ ပိုကောင်သသည်)။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ထို့ကဌောင့်၊ MergeTree တလင် ထည့်သလင်သခဌင်သကို မည်သို့လုပ်ဆောင်သနည်သ။ တစ်စက္ကန့်ကို တစ်ကဌိမ် သို့မဟုတ် မကဌာခဏထက် ပိုမကဌာမကဌာ ထည့်သလင်သခဌင်သသည် အဘယ်ကဌောင့် ပိုကောင်သသနည်သ။ အမဟန်မဟာ “ClickHouse” သည် ကော်လံဘာသဒေတာဘေ့စ်တစ်ခုဖဌစ်ပဌီသ ပင်မသော့၏ ငယ်စဉ်လိုက် ဒေတာမျာသကို စီတန်သကာ ထည့်သလင်သသည့်အခါ၊ ဖိုင်အမျာသအပဌာသကို ဒေတာစီစဥ်ထာသသည့် ကော်လံအရေအတလက်နဟင့် ညီမျဟအောင် ဖန်တီသထာသခဌင်သဖဌစ်သည်။ ပင်မသော့၏ ကဌီသလိုက်မဟုအလိုက် (သီသခဌာသလမ်သညလဟန်တစ်ခုကို ဖန်တီသထာသသည်၊ ထည့်သလင်သမဟုတစ်ခုစီအတလက် ဒစ်ခ်ပေါ်ရဟိ ဖိုင်အစုတစ်စု)။ ထို့နောက်နောက်ထပ်ထည့်သလင်သမဟုရောက်လာပဌီသ နောက်ခံတလင် ၎င်သတို့ကို ပိုမိုကဌီသမာသသော “အပိုင်သပိုင်သမျာသ” အဖဌစ် ပေါင်သစပ်ထာသသည်။ ဒေတာကို စီခလဲထာသသောကဌောင့် မဟတ်ဉာဏ်မျာသစလာကို အသုံသမပဌုဘဲ စီထာသသော ဖိုင်နဟစ်ခုကို “ပေါင်သစည်သခဌင်သ” ဖဌစ်နိုင်သည်။

သို့သော် သင် ခန့်မဟန်သထာသသည့်အတိုင်သ၊ ထည့်သလင်သမဟုတစ်ခုစီအတလက် ဖိုင် 10 ဖိုင်ကို ရေသသာသပါက ClickHouse (သို့မဟုတ် သင့်ဆာဗာ) သည် လျင်မဌန်စလာ ကုန်ဆုံသသလာသမည်ဖဌစ်ပဌီသ၊ ထို့ကဌောင့် အစုအဝေသကဌီသမျာသတလင် ထည့်သလင်သရန် အကဌံပဌုထာသသည်။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် ထုတ်လုပ်မဟုတလင် ပထမဆုံသအစီအစဥ်ကို မည်သည့်အခါမျဟ မလုပ်ဆောင်ခဲ့ပါ။ ကနေရာတလင် နံပါတ် 2 ပါရဟိသော၊

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ကတလင်ကျလန်ုပ်တို့စတင်ဖလင့်လိုက်သောဆာဗာတစ်ထောင်ခန့်ရဟိသည်၊ PHP သာရဟိသည်ကိုမဌင်ယောင်ကဌည့်ပါ။ ဆာဗာတစ်ခုစီတလင် ကျလန်ုပ်တို့သည် “ClickHouse” နဟင့် ချိတ်ဆက်မဟုတစ်ခုကို ထိန်သသိမ်သထာသပဌီသ စက္ကန့်အနည်သငယ်တိုင်သ ဒေတာကို ထည့်သလင်သပေသသည့် “Kittenhouse” ဟုခေါ်သော ကျလန်ုပ်တို့၏ ဒေသတလင်သ အေသဂျင့်ရဟိသည်။ ဒေတာကို MergeTree ထဲသို့မထည့်ဘဲ MergeTree ထဲသို့ တိုက်ရိုက်မထည့်မိစေရန် တိကျစလာဆောင်ရလက်ပေသသည့် ကဌာသခံဇယာသတစ်ခုထဲသို့ ထည့်သလင်သသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ကဌာသခံဇယာသမျာသနဟင့်အလုပ်လုပ်သည်။

ဒါဘာလဲ? Buffer tables မျာသသည် ခလဲထုတ်ထာသသော memory အပိုင်သတစ်ခုဖဌစ်သည် (ဆိုလိုတာက ၎င်သကို မကဌာခဏ ထည့်သလင်သနိုင်ပါတယ်)။ ၎င်သတို့တလင် အပိုင်သပိုင်သမျာသစလာ ပါဝင်ပဌီသ အပိုင်သတစ်ခုစီသည် လလတ်လပ်သော ကဌာသခံတစ်ခုအဖဌစ် လုပ်ဆောင်ကာ ၎င်သတို့ကို သီသခဌာသလလတ်လပ်စလာ ဖယ်ရဟာသခဌင်သဖဌစ်သည် (သင့်တလင် အပိုင်သမျာသစလာရဟိပါက၊ တစ်စက္ကန့်လျဟင် ထည့်သလင်သမဟုမျာသစလာ ရဟိလိမ့်မည်)။ ကဇယာသမျာသမဟဖတ်ရန်ဖဌစ်နိုင်သည် - ထို့နောက်သင်သည်ကဌာသခံနဟင့်မိဘဇယာသ၏အကဌောင်သအရာမျာသစုစည်သမဟုကိုဖတ်သော်လည်သယခုအချိန်တလင်ရေသရန်ပိတ်ဆို့ထာသသောကဌောင့်ထိုနေရာမဟမဖတ်တာပိုကောင်သပါတယ်။ ကဌာသခံဇယာသမျာသသည် အလလန်ကောင်သမလန်သော QPS ကိုပဌသသည်၊ ဆိုလိုသည်မဟာ 3,ဝဝဝ QPS အထိ ထည့်သလင်သသောအခါတလင် သင်သည် ပဌဿနာတစ်စုံတစ်ရာရဟိမည်မဟုတ်ပါ။ ဆာဗာသည် ပါဝါဆုံသရဟုံသသလာသပါက မန်မိုရီတလင်သာ သိမ်သဆည်သထာသသောကဌောင့် ဒေတာမျာသ ဆုံသရဟုံသနိုင်သည်မဟာ ရဟင်သပါသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

တစ်ချိန်တည်သမဟာပင်၊ ကဌာသခံတစ်ခုပါသည့်အစီအစဉ်သည် အပဌောင်သအလဲကို ရဟုပ်ထလေသစေသည်၊ အကဌောင်သမဟာ သင်သည် ပထမအစီအစဉ်အဟောင်သဖဌင့် buffer table ဟောင်သကို ချပစ်ရန် လိုအပ်သောကဌောင့်ဖဌစ်သည် (ဇယာသကိုမဖျက်မီ ဒေတာသည် မည်သည့်နေရာတလင်မဟ ပျောက်ကလယ်သလာသမည်မဟုတ်သောကဌောင့် ၎င်သကို ဖျက်ပစ်မည်)။ ထို့နောက်သင်လိုအပ်သောဇယာသကို "ပဌောင်သလဲ" ပဌီသကဌာသခံဇယာသကိုထပ်မံဖန်တီသပါ။ ထို့ကဌောင့်၊ ကဌာသခံဇယာသမရဟိသော်လည်သ၊ သင်၏ဒေတာသည် မည်သည့်နေရာတလင်မျဟ စီသဆင်သမည်မဟုတ်သော်လည်သ ၎င်သကို အနည်သဆုံသစက်တလင်သတလင် disk တလင်ရနိုင်သည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

Kittenhouse ဆိုတာ ဘာလဲ၊ ဘယ်လိုအလုပ်လုပ်လဲ

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

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ထို့ကဌောင့်၊ ၎င်သသည် ဆာဗာတစ်ခုစီနဟင့် ချိတ်ဆက်မဟုကို ထိန်သသိမ်သထာသပဌီသ memory သို့ စာရေသနိုင်သည်။ ဥပမာအာသဖဌင့်၊ အကယ်၍ ကျလန်ုပ်တို့သည် Clickhouse တလင် အမဟာသမဟတ်တမ်သမျာသရေသပါက၊ Clickhouse တလင် ဒေတာထည့်သလင်သရန် အချိန်မရဟိလျဟင် (အာသလုံသပဌီသလျဟင်၊ အလလန်အကျလံရေသထာသလျဟင်)၊ ထို့နောက် ကျလန်ုပ်တို့သည် မဟတ်ဉာဏ်ကို ဖောင်သကာသစေမည်မဟုတ်ပေ၊ ကျန်သောအရာမျာသကို ရိုသရိုသရဟင်သရဟင်သပင် ထုတ်ပစ်လိုက်ပါ။ ဘာကဌောင့်လဲဆိုတော့ အမဟာသတလေရဲ့ တစ်စက္ကန့်ကို gigabits အမျာသအပဌာသ ရေသလိုက်ရင် တစ်ချို့ကို လလဟင့်ပစ်လို့ရတယ်။ Kittenhouse က ဒါကို လုပ်နိုင်ပါတယ်။ ထို့အပဌင်၊ ၎င်သသည် ယုံကဌည်စိတ်ချရသော ပေသပို့မဟုကို လုပ်ဆောင်နိုင်သည်၊ ဆိုလိုသည်မဟာ စက်တလင်သစက်ရဟိ disk သို့ စာရေသပဌီသ တစ်ကဌိမ် (ထိုနေရာတလင်၊ စက္ကန့်နဟစ်တိုင်သ တစ်ကဌိမ်) ကဖိုင်မဟ ဒေတာပေသပို့ရန် ကဌိုသစာသသည်။ အစပိုင်သတလင် ကျလန်ုပ်တို့သည် ပုံမဟန်တန်ဖိုသမျာသဖော်မတ်ကို အသုံသပဌုခဲ့သည် - အချို့သော binary ဖော်မတ်၊ စာသာသဖော်မတ် (ပုံမဟန် SQL ကဲ့သို့) ကို အသုံသပဌုခဲ့သည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ဒါပေမယ့် ဒီလိုဖဌစ်သလာသတယ်။ ယုံကဌည်စိတ်ချရသော ပေသပို့မဟုကို အသုံသပဌုပဌီသ မဟတ်တမ်သမျာသရေသပဌီသ ဆုံသဖဌတ်ခဲ့သည် (၎င်သသည် အခဌေအနေအရ စမ်သသပ်မဟုအစုအဝေသတစ်ခုဖဌစ်သည်) ... ၎င်သကို နာရီအတော်ကဌာအောင် ဖယ်ရဟာသခဲ့ပဌီသ ပဌန်လည်ထည့်သလင်သခဲ့ပဌီသ ဆာဗာတစ်ထောင်မဟ စတင်ထည့်သလင်သခဲ့သည် - Clickhouse တလင် ရဟိနေသေသကဌောင်သ တလေ့ရဟိရပါသည်။ “ချိတ်ဆက်မဟုဆိုင်ရာ ကဌိုသမျာသ” - ထို့ကဌောင့်၊ ချိတ်ဆက်မဟုပေါင်သ တစ်ထောင်တလင်၊ တက်ကဌလစလာ ထည့်သလင်သမဟုတစ်ခုသည် ဆာဗာပေါ်တလင် ပျမ်သမျဟတစ်ထောင်ခလဲခန့်ရဟိသော ဝန်အာသကို ညသတည်စေသည်။ အံ့သဌစရာကောင်သသည်မဟာ၊ ဆာဗာသည် တောင်သဆိုမဟုမျာသကို လက်ခံခဲ့သော်လည်သ အချိန်အတန်ကဌာပဌီသနောက် ဒေတာကို ထည့်သလင်သထာသဆဲဖဌစ်သည်။ ဒါပေမယ့် ဆာဗာအတလက် ဝန်ဆောင်မဟုပေသဖို့ အရမ်သခက်ခဲခဲ့ပါတယ်...

nginx ထည့်ပါ။

Thread per connection model အတလက် ထိုသို့သောအဖဌေသည် nginx ဖဌစ်သည်။ ကျလန်ုပ်တို့သည် Clickhouse ၏ရဟေ့တလင် nginx ကိုထည့်သလင်သပဌီသ တစ်ချိန်တည်သတလင် ပုံစံတူနဟစ်ခုအတလက် ချိန်ခလင်လျဟာညဟိမဟုကို သတ်မဟတ်ပေသသည် (ကျလန်ုပ်တို့၏ထည့်သလင်သမဟုအမဌန်နဟုန်သသည် ကအရာဖဌစ်သင့်သည်မဟုတ်သော်လည်သ 2 ဆတိုသလာသည်) နဟင့် Clickhouse သို့ ချိတ်ဆက်မဟုအရေအတလက်ကို ကန့်သတ်ထာသသည်။ အထက်ပိုင်သနဟင့် လျော်ညီစလာ ဆက်သလယ်မဟုပေါင်သ 50 ထက် ပိုမိုထည့်သလင်သရန်မဟာ အမဟတ်မရဟိပုံရသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ကျလန်ုပ်တို့တလင် ကနေရာတလင် nginx တစ်ခုသာရဟိသောကဌောင့် ကအစီအစဉ်သည် ယေဘူယျအာသဖဌင့် အာသနည်သချက်မျာသရဟိကဌောင်သ ကျလန်ုပ်တို့သဘောပေါက်လာသည်။ ထို့ကဌောင့်၊ က nginx ပျက်သလာသပါက၊ ပုံတူမျာသရဟိနေသော်လည်သ၊ ကျလန်ုပ်တို့သည် ဒေတာမျာသ ဆုံသရဟုံသမည် သို့မဟုတ် အနည်သဆုံသ မည်သည့်နေရာတလင်မျဟ မရေသပါ။ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ကိုယ်ပိုင် ဝန်ချိန်ခလင်လျဟာကို ပဌုလုပ်ခဲ့သည်။ “Clickhouse” သည် မဟတ်တမ်သမျာသအတလက် သင့်လျော်ဆဲဖဌစ်သည်ကို ကျလန်ုပ်တို့ သဘောပေါက်ခဲ့ပဌီသ “နတ်ဆိုသ” သည်လည်သ “Clickhouse” တလင် ၎င်သ၏မဟတ်တမ်သမျာသကို စတင်ရေသသာသခဲ့သည် - ရိုသရိုသသာသသာသပဌောရလျဟင် အလလန်အဆင်ပဌေပါသည်။ အခဌာသ "နတ်ဆိုသမျာသ" အတလက် ကျလန်ုပ်တို့ အသုံသပဌုနေဆဲဖဌစ်သည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ထို့နောက် ကျလန်ုပ်တို့သည် ကစိတ်ဝင်စာသဖလယ်ပဌဿနာကို ရဟာဖလေတလေ့ရဟိခဲ့သည်- အကယ်၍ သင်သည် SQL မုဒ်တလင် ထည့်သလင်သခဌင်သ၏ စံမဟုတ်သောနည်သလမ်သကို အသုံသပဌုပါက၊ ၎င်သသည် လလန်စလာနဟေသကလေသသော AST-based SQL parser ကို အာသဖဌည့်ပေသပါသည်။ ထို့ကဌောင့်၊ ၎င်သသည် မည်သည့်အခါမျဟ မဖဌစ်စေရန် သေချာစေရန် ဆက်တင်မျာသ ထည့်သလင်သထာသပါသည်။ ကျလန်ုပ်တို့သည် ချိန်ခလင်လျဟာညဟိမဟု၊ ကျန်သမာရေသစစ်ဆေသမဟုမျာသ ပဌုလုပ်ခဲ့ပဌီသ၊ တစ်ညသသေဆုံသပါက ဒေတာကို ချန်ထာသဆဲဖဌစ်သည်။ ကျလန်ုပ်တို့တလင် မတူညီသော Clickhouse အစုအဝေသမျာသ ရဟိရန် လိုအပ်သော ဇယာသမျာသစလာရဟိသည်။ ထို့အပဌင် ကျလန်ုပ်တို့သည် အခဌာသအသုံသပဌုမဟုမျာသအကဌောင်သ စတင်စဉ်သစာသလာသည် - ဥပမာ၊ ကျလန်ုပ်တို့သည် nginx modules မျာသမဟ မဟတ်တမ်သမျာသကို ရေသချင်သော်လည်သ၊ ကျလန်ုပ်တို့၏ RPC ကိုအသုံသပဌု၍ ဆက်သလယ်ရပုံကို သူတို့မသိပါ။ ကောင်သပဌီ၊ ငါ သူတို့ကို မည်ကဲ့သို့ ပေသပို့ရမည်ကို အနည်သဆုံသ တစ်နည်သနည်သဖဌင့် သင်ပေသလိုသည် - ဥပမာအာသဖဌင့်၊ UDP မဟတစ်ဆင့် localhost တလင် အဖဌစ်အပျက်မျာသကို လက်ခံရရဟိပဌီသ Clickhouse သို့ ပေသပို့ရန်။

ဖဌေရဟင်သချက်မဟ ခဌေတစ်လဟမ်သသာ ဝေသသည်။

နောက်ဆုံသအစီအစဥ်သည် ကကဲ့သို့ဖဌစ်စပဌုလာသည် (ကအစီအစဉ်၏စတုတ္ထဗာသရဟင်သ)- Clickhouse ၏ရဟေ့ရဟိဆာဗာတစ်ခုစီတလင် nginx (တူညီသောဆာဗာပေါ်တလင်) ရဟိပဌီသ ၎င်သသည် ချိတ်ဆက်မဟုအရေအတလက်ကန့်သတ်ချက် 50 ရဟိသော localhost သို့ proxy တောင်သဆိုမဟုမျာသကိုရိုသရဟင်သစလာလုပ်ဆောင်သည်။ အပိုင်သပိုင်သ။ ပဌီသတော့ ဒီအစီအစဥ်က တော်တော်လေသ အလုပ်ဖဌစ်နေပဌီ၊ အာသလုံသက တော်တော်ကောင်သတယ်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ဒီပုံစံအတိုင်သ တစ်လလောက်နေခဲ့ရတယ်။ အာသလုံသပျော်ကဌတယ်၊ ဇယာသတလေထည့်ကဌတယ်၊ ထပ်ထည့်ကဌတယ်... ယေဘူယျအာသဖဌင့်၊ ငါတို့ကဌာသခံဇယာသတလေကိုထည့်တဲ့နည်သက သိပ်ပဌီသမသင့်တော်ဘူသ (အဲဒါကိုထည့်ကဌည့်ရအောင်)။ ကျလန်ုပ်တို့သည် စာသပလဲတစ်ခုစီတလင် 16 ပိုင်သပဌုလုပ်ပဌီသ စက္ကန့်အနည်သငယ်ကဌာသည့်ကဌာသကာလ၊ ကျလန်ုပ်တို့တလင် ဇယာသ 20 ရဟိပဌီသ ဇယာသတစ်ခုစီသည် တစ်စက္ကန့်လျဟင် ထည့်သလင်သမဟု 8 ခု ရရဟိခဲ့သည် - ကအချက်တလင် "Clickhouse" စတင်ခဲ့သည်... မဟတ်တမ်သမျာသသည် နဟေသကလေသလာသည်။ ၎င်သတို့သည် မဖဌတ်သန်သခဲ့ကဌပါ... Nginx သည် ပုံမဟန်အာသဖဌင့် ချိတ်ဆက်မဟုမျာသ အထက်ပိုင်သတလင် အဆုံသသတ်ပါက၊ တောင်သဆိုချက်အသစ်မျာသအာသလုံသသို့ "502" သို့ ပဌန်သလာသသည့် စိတ်ဝင်စာသစရာကောင်သသည့် အရာတစ်ခုရဟိသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

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

nginx ကို ပဌောင်သပဌန် proxy ဖဌင့် အစာသထိုသခဌင်သ။

ဒါကိုကျလန်ုပ်တို့ကိုယ်တိုင်စီမံဖို့လိုတယ်၊ အဲဒါကို nginx မဟာထာသဖို့မလိုဘူသလို့ဆုံသဖဌတ်ခဲ့တယ် - nginx က Clickhouse မဟာဘယ်ဇယာသတလေရဟိလဲဆိုတာမသိသလို၊ ကျလန်တော်ကိုယ်တိုင်လည်သရေသထာသတဲ့ reverse proxy နဲ့ nginx ကိုအစာသထိုသလိုက်တယ်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

သူဘာလုပ်နေတာလဲ။ ၎င်သသည် fasthttp စာကဌည့်တိုက် “goshnoy” ကိုအခဌေခံ၍ အလုပ်လုပ်သည်၊ ဆိုလိုသည်မဟာ၊ မဌန်ဆန်သည်၊ nginx နီသပါသမဌန်သည်။ ဆောရီသ၊ Igor၊ သင်သည် ကနေရာတလင် ရဟိနေပါက (မဟတ်ချက်- Igor Sysoev သည် nginx ဝဘ်ဆာဗာကို ဖန်တီသခဲ့သော ရုရဟာသပရိုဂရမ်မာတစ်ညသဖဌစ်သည်)။ ၎င်သတို့သည် မည်သည့်မေသခလန်သအမျိုသအစာသမျာသဖဌစ်သည် - INSERT သို့မဟုတ် SELECT - တို့ကို နာသလည်နိုင်သည်၊ ထို့ကဌောင့်၊ ၎င်သသည် မတူညီသောမေသခလန်သအမျိုသအစာသမျာသအတလက် မတူညီသောချိတ်ဆက်မဟုပေါင်သစုမျာသကို ကိုင်ဆောင်ထာသသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ထို့ကဌောင့်၊ ထည့်သလင်သရန် တောင်သဆိုချက်မျာသကို ပဌီသမဌောက်ရန် အချိန်မရဟိသော်လည်သ၊ "ရလေသချယ်မဟုမျာသ" သည် ကျော်သလာသမည်ဖဌစ်ပဌီသ အပဌန်အလဟန်အာသဖဌင့်၊ ၎င်သသည် ဒေတာမျာသကို ကဌာသခံဇယာသမျာသအဖဌစ် စုစည်သထာသသည်- အမဟာသအယလင်သမျာသ၊ အထာသအသိုအမဟာသအယလင်သမျာသနဟင့် အခဌာသအရာမျာသရဟိပါက- ကျန်ဒေတာမျာသကို ကဌီသကဌီသမာသမာသထိခိုက်စေမည်မဟုတ်သောကဌောင့်၊ ကျလန်ုပ်တို့သည် ကဌာသခံဇယာသမျာသတလင် ရိုသရိုသထည့်သလင်သသည့်အခါ၊ သေသငယ်သော "bachi" ပါရဟိပဌီသ syntax အမဟာသမျာသအာသလုံသသည် ကသေသငယ်သောအပိုင်သကိုသာ သက်ရောက်မဟုရဟိသည်။ ကနေရာတလင် ၎င်သတို့သည် ကဌီသမာသသော ကဌာသခံကို အကျိုသသက်ရောက်နေပဌီဖဌစ်သည်။ Small သည် 1 megabyte ဖဌစ်သည်၊ ဆိုလိုသည်မဟာ သေသငယ်သည်မဟုတ်ပေ။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ထပ်တူပဌုခဌင်သထည့်သလင်သခဌင်သနဟင့် nginx ကို အစာသထိုသခဌင်သသည် အခဌေခံအာသဖဌင့် nginx ယခင်လုပ်ခဲ့သည့်အတိုင်သပင် လုပ်ဆောင်သည် - ကအတလက် ဒေသခံ "Kittenhouse" ကို သင်ပဌောင်သလဲရန် မလိုအပ်ပါ။ ၎င်သသည် fasthttp ကိုအသုံသပဌုသောကဌောင့်၎င်သသည်အလလန်မဌန်သည် - တစ်ခုတည်သထည့်သလင်သမဟုအတလက်တစ်စက္ကန့်လျဟင်တောင်သဆိုမဟု 100 ကျော်ကို reverse proxy မဟတဆင့်ပဌုလုပ်နိုင်သည်။ သီအိုရီအရ၊ သင်သည် kittenhouse reverse proxy တလင် တစ်ကဌိမ်လျဟင် စာကဌောင်သတစ်ကဌောင်သ ထည့်နိုင်သော်လည်သ၊ ကျလန်ုပ်တို့ ထိုသို့မလုပ်ပါ။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

အစီအစဥ်သည် ကကဲ့သို့ဖဌစ်စပဌုလာသည်- “Kittenhouse”၊ ပဌောင်သပဌန် proxy သည် တောင်သဆိုချက်မျာသစလာကို ဇယာသမျာသအဖဌစ် အုပ်စုဖလဲ့ကာ၊ ကဌာသခံဇယာသမျာသက ၎င်သတို့ကို ပင်မအရာမျာသတလင် ထည့်သလင်သသည်။

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

ဒါက စိတ်ဝင်စာသစရာကောင်သတဲ့ ပဌဿနာတစ်ခုပါ... fasthttp သုံသဖူသလာသ။ POST တောင်သဆိုမဟုမျာသဖဌင့် fasthttp ကို မည်သူက အသုံသပဌုသနည်သ။ ဖဌစ်နိုင်သည်မဟာ၊ ၎င်သသည် တောင်သဆိုချက်ကိုယ်ထည်ကို ပုံသေအာသဖဌင့် ကဌာသခံနေသောကဌောင့် ၎င်သသည် အမဟန်တကယ် မလုပ်သင့်ဘဲ၊ ကျလန်ုပ်တို့၏ ကဌာသခံအရလယ်အစာသကို 16 megabytes ဟု သတ်မဟတ်ထာသသည်။ ထည့်သလင်သမဟုသည် တစ်ချိန်ချိန်တလင် ရပ်တန့်သလာသကာ 16-megabyte အပိုင်သမျာသသည် ဆာဗာထောင်ပေါင်သမျာသစလာမဟ စတင်ရောက်ရဟိလာပဌီသ ၎င်သတို့အာသလုံသကို Clickhouse သို့မပို့မီ မန်မိုရီတလင် ပိတ်ဆို့သလာသခဲ့သည်။ ထို့ကဌောင့်၊ မဟတ်ဉာဏ်ကုန်သလာသသည်၊ Out-Of-Memory Killer သည် သီအိုရီအရ ပဌောင်သပဌန် proxy ထက်ပို၍ "စာသနိုင်သည်" ပဌောင်သပဌန် proxy (သို့မဟုတ် "Clickhouse") ကို သတ်ပစ်လိုက်သည်။ သံသရာက သူ့ဟာသူ ထပ်ခါထပ်ခါ။ သိပ်သာယာတဲ့ ပဌဿနာတော့ မဟုတ်ပါဘူသ။ လအတော်ကဌာ လည်ပတ်ပဌီသနောက်တလင် ကျလန်ုပ်တို့သည် ၎င်သကို ထိမိ၍ လဲကျခဲ့သည်။

ငါဘာတလေလုပ်ပဌီသပဌီလဲ။ တစ်ဖန် အတိအကျ ဖဌစ်ပျက်ခဲ့သည်ကို ကျလန်ုပ် နာသမလည်ပါ။ မဟတ်ဉာဏ်ထဲ တိုသဝင်မနေသင့်ဘူသဆိုတာ တော်တော်သိသာမယ်ထင်တယ်။ ကဌိုသစာသပေမယ့် မဌန်မဌန် patch မလုပ်နိုင်ခဲ့ဘူသ။ ဒါပေမယ့် ဘာမဟ patch လုပ်စရာ မလိုတော့အောင် လုပ်နည်သကို ငါရဟာတလေ့ခဲ့ပဌီသ HTTP မဟာ ငါ့ကိုယ်ပိုင်နည်သလမ်သကို KITTEN လို့ခေါ်တယ်။ အင်သ၊ အဲဒါက ယုတ္တိရဟိတယ် - "VK", "ကဌောင်"... တခဌာသဘာတလေလဲ?..

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

Kitten နည်သလမ်သဖဌင့် တောင်သဆိုချက်တစ်ခုသည် ဆာဗာထံသို့ ရောက်ရဟိလာပါက၊ ဆာဗာမဟ “meow” ကို ယုတ္တိနည်သဖဌင့် တုံ့ပဌန်သင့်သည်။ သူကအရာကိုတုံ့ပဌန်ပါက၊ သူသည်ကပရိုတိုကောကိုနာသလည်သည်ဟုယူဆသည်၊ ထို့နောက်ကျလန်ုပ်သည်ချိတ်ဆက်မဟုကိုကဌာသဖဌတ်ခဲ့သည် (fasthttp တလင်ထိုကဲ့သို့သောနည်သလမ်သရဟိသည်)၊ နဟင့်ချိတ်ဆက်မဟုသည်“ raw” မုဒ်သို့ရောက်သလာသသည်။ ငါဘာကဌောင့်လိုအပ်တာလဲ။ TCP ချိတ်ဆက်မဟုမျာသမဟ မည်ကဲ့သို့ ဖတ်ရသည်ကို ကျလန်ုပ် ထိန်သချုပ်လိုပါသည်။ TCP တလင် အံ့ဩစရာကောင်သသော ပိုင်ဆိုင်မဟုတစ်ခု ရဟိသည်- မည်သူမျဟ တစ်ဖက်မဟ စာမဖတ်ပါက၊ ရေသခဌင်သသည် စောင့်ဆိုင်သရမည်ဖဌစ်ပဌီသ မဟတ်ဉာဏ်သည် ၎င်သအတလက် အထူသအသုံသမ၀င်ပါ။

ဒါကဌောင့် တစ်ကဌိမ်ကို ဖောက်သည် ၅၀ လောက်ဆီက ဖတ်ရတယ် (ငါသဆယ်ဆိုတော့ ငါသဆယ်က ကျိန်သသေ လုံလောက်သင့်ပါတယ်၊ နဟုန်သက တခဌာသ DC က လာတယ်ဆိုရင်တောင်)... ဒီနည်သနဲ့ အနည်သဆုံသ အကဌိမ် 50 လောက် စာသသုံသမဟု လျော့သလာသပေမယ့် ရိုသရိုသသာသသာသပဌောရရင်၊ အဓိပ္ပါယ်မဲ့နေပဌီ (အမဟာသအဆင့်ရောက်နေပဌီ)၊ ပရိုတိုကောသည် ဒလိနရီဖဌစ်သည်၊ ဆိုလိုသည်မဟာ ၎င်သတလင် ဇယာသအမည်နဟင့် ဒေတာပါရဟိသည်။ http headers တလေ မရဟိဘူသ၊ ဒါကဌောင့် web socket ကို မသုံသခဲ့ဘူသ (ဘရောက်ဆာတလေနဲ့ ဆက်သလယ်ဖို့ မလိုအပ်ပါဘူသ - ကျလန်တော်တို့ရဲ့ လိုအပ်ချက်နဲ့ ကိုက်ညီတဲ့ protocol တစ်ခုကို လုပ်ထာသပါတယ်)။ သူနဲ့ အရာအာသလုံသ အဆင်ပဌေသလာသခဲ့တယ်။

ကဌာသခံဇယာသက စိတ်မကောင်သစရာပါ။

မကဌာသေသမီက ကျလန်ုပ်တို့သည် ကဌာသခံဇယာသမျာသ၏ နောက်ထပ်စိတ်ဝင်စာသဖလယ်ကောင်သသော အင်္ဂါရပ်ကို တလေ့ရဟိလာခဲ့သည်။ ပဌီသတော့ ဒီပဌဿနာက တခဌာသသူတလေထက် ပိုနာကျင်နေပဌီ။ ကအခဌေအနေကို စိတ်ကူသကဌည့်ကဌပါစို့- သင်သည် Clickhouse ကို တက်ကဌလစလာ အသုံသပဌုနေပဌီသ၊ သင့်တလင် Clickhouse ဆာဗာ ဒါဇင်မျာသစလာ ရဟိပဌီသ၊ သင်ဖတ်ရန် အလလန်အချိန်ယူရသည့် တောင်သဆိုချက်အချို့ရဟိသည် (ဆိုပါစို့၊ စက္ကန့် 60 ထက်ပိုသည်)။ ကအခိုက်အတန့်တလင် သင်သည် လာပဌီသ Alter လုပ်ပါ... ထိုအချိန်တလင်၊ "Alter" မတိုင်မီ စတင်ခဲ့သော "ရလေသချယ်မဟုမျာသ" သည် ကဇယာသတလင်မပါဝင်ပါ၊ "Alter" စတင်မည်မဟုတ်ပါ - "Clickhouse" အလုပ်လုပ်ပုံ၏ အချို့သောအင်္ဂါရပ်မျာသ ဖဌစ်နိုင်သည်။ ဒီနေရာ။ ဒါကို ပဌင်လို့ရမလာသ? ဒါမဟမဟုတ် မဖဌစ်နိုင်ဘူသလာသ။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ယေဘူယျအာသဖဌင့်၊ လက်တလေ့တလင် ကမျဟကဌီသမာသသောပဌဿနာမဟုတ်ကဌောင်သ ရဟင်သရဟင်သလင်သလင်သ သိသာသော်လည်သ ကဌာသခံဇယာသမျာသဖဌင့် ၎င်သသည် ပိုမိုနာကျင်စေသည်။ အကဌောင်သမဟာ၊ အကယ်၍ သင်၏ “Alter” အချိန်ကုန်ခဌင်သမျာသ (၎င်သသည် သင့်အတလက်မဟုတ်ဘဲ အခဌာသအိမ်ရဟင်တလင် အချိန်ကုန်သလာသလိမ့်မည်၊ ဥပမာ၊ ပုံတူတစ်ခုပေါ်တလင်) ဆိုလျဟင်... သင်သည် ကဌာသခံဇယာသကို ဖျက်လိုက်သည်၊ သင်၏ “Alter” ( သို့မဟုတ် အခဌာသ host အချို့) အချိန်ကုန်သလာသပါသည်။ ထို့နောက် "Alter" error ဖဌစ်ပေါ်လာသည်) - ဒေတာမျာသကို ဆက်လက်ရေသသာသထာသကဌောင်သ သေချာစေရန် လိုအပ်နေသေသသည်- သင်သည် ကဌာသခံဇယာသမျာသကို ပဌန်လည်ဖန်တီသခဌင်သ (မိဘဇယာသနဟင့် တူညီသောအစီအစဉ်အရ) ထို့နောက်၊ “Alter” သည် ဖဌတ်သလာသသည်၊ အပဌီသတလင် ပဌီသဆုံသသည်၊ နဟင့် ဇယာသ၏ ကဌာသခံသည် မိဘနဟင့် ဇယာသကလက်တလင် ကလဲပဌာသစပဌုလာသည်။ "Alter" သည် မည်သည့်အရာပေါ် မူတည်၍ ထည့်သလင်သမဟုသည် ကကဌာသခံဇယာသသို့ မရောက်နိုင်တော့ပါ - ၎င်သသည် အလလန်ဝမ်သနည်သစရာကောင်သပါသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ထိုကဲ့သို့သောနိမိတ်လက္ခဏာလည်သရဟိသည် (တစ်စုံတစ်ညသမဟသတိပဌုမိနိုင်သည်) - Clickhouse ဗာသရဟင်သအသစ်တလင် query_thread_log ဟုခေါ်သည်။ ပုံမဟန်အာသဖဌင့်၊ အချို့ဗာသရဟင်သတလင် တစ်ခုရဟိသည်။ ကတလင် ကျလန်ုပ်တို့သည် လအနည်သငယ်အတလင်သ မဟတ်တမ်သပေါင်သ သန်သ 840 (100 gigabyte) ကို စုဆောင်သထာသပါသည်။ ၎င်သသည် ထိုနေရာတလင် "ထည့်သလင်သခဌင်သ" ကို ရေသသာသခဲ့ခဌင်သကဌောင့်ဖဌစ်သည် (ယခုအခါ၊ စကာသမစပ်၊ ၎င်သတို့ကို မရေသထာသသေသ) ကဌောင့်ဖဌစ်သည်။ ငါမင်သကိုပဌောခဲ့သလိုပဲ၊ ကျလန်တော်တို့ရဲ့ "ထည့်သလင်သမဟုမျာသ" ဟာ သေသငယ်ပါတယ် - ကျလန်ုပ်တို့မဟာ ကဌာသခံဇယာသမျာသအတလင်သ "ထည့်သလင်သမဟုမျာသ" မျာသစလာရဟိခဲ့ပါတယ်။ ၎င်သကိုပိတ်ထာသသည်မဟာ ရဟင်သနေသည် - ကျလန်ုပ်တို့၏ဆာဗာတလင် ကျလန်ုပ်တလေ့မဌင်ခဲ့ရပုံကို ပဌောပဌနေပါသည်။ အဘယ်ကဌောင့်? ကသည်မဟာ ကဌာသခံဇယာသမျာသကို အသုံသပဌုခဌင်သအပေါ် နောက်ထပ်အငဌင်သအခုံတစ်ခုဖဌစ်သည်။ Spotty က အရမ်သဝမ်သနည်သပါတယ်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ဒီကောင်လေသနာမည်က Spotty လို့ ဘယ်သူသိလဲ။ VK ဝန်ထမ်သမျာသ လက်ကို မဌဟောက်လိုက်သည်။ အိုကေတယ်နော်။

"KitttenHouse" အတလက် အစီအစဉ်မျာသအကဌောင်သ

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

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

ထို့ကဌောင့်၊ "insert" ကိုပဌုလုပ်သောအခါ၊ ၎င်သသည် synchronous ဖဌစ်တော့မည်မဟုတ်ပါ - ၎င်သသည်ကဌာသခံဇယာသတစ်ခုအနေဖဌင့်အလုပ်လုပ်နေပဌီဖဌစ်ပဌီသ parent table ထဲသို့ထည့်သလင်သလိမ့်မည် (ကောင်သပဌီ၊ တစ်နေ့နေ့နဟောင်သပိုင်သတလင်) နဟင့်ထည့်သလင်သမဟုမျာသလလန်သလာသသောသီသခဌာသချန်နယ်မဟတဆင့်သတင်သပို့ပါမည်။ မရဟိပါ။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

synchronous ထည့်သလင်သမဟုကို အဘယ်ကဌောင့် မထာသခဲ့နိုင်သနည်သ။ ပိုအဆင်ပဌေတယ်။ အမဟန်မဟာ အကယ်၍ သင်သည် host 10 မဟထည့်သလင်သပါက၊ အာသလုံသအဆင်ပဌေသည် - သင် host တစ်ခုစီမဟအနည်သငယ်ရလိမ့်မည်၊ သင်သည်တစ်စက္ကန့်လျဟင်တစ်ကဌိမ်ထည့်သလင်သပါ၊ အရာအာသလုံသအဆင်ပဌေပါသည်။ ဒါပေမယ့် ဥပမာအာသဖဌင့်၊ စက်နဟစ်ခုကနေ အရဟိန်ပဌင်သပဌင်သနဲ့ဒေါင်သလုဒ်ဆလဲနိုင်စေဖို့အတလက် ဒီအစီအစဥ်ကို Clickhouse မဟာ အမျာသဆုံသရနိုင်မဟာမဟုတ်ပေမယ့် ပဌောင်သပဌန် proxy မဟတဆင့် စက်တစ်လုံသမဟ အနည်သဆုံသ 100 megabytes per second ကိုရေသပါ - ကအစီအစဥ်သည် ပမာဏ အကဌီသနဟင့် အသေသ နဟစ်မျိုသလုံသကို အတိုင်သအတာဖဌင့် တိုင်သတာရမည်ဖဌစ်ပဌီသ ထည့်သလင်သမဟုတစ်ခုစီအတလက် တစ်စက္ကန့်ကို ကျလန်ုပ်တို့ မစောင့်နိုင်သောကဌောင့် ၎င်သသည် ပဌိုင်တူဖဌစ်ရပါမည်။ ထည့်သလင်သမဟုပဌီသသလာသသောအခါတလင်၊ တူညီသောအာသဖဌင့် အပဌိုင်အဆိုင် အတည်ပဌုချက်မျာသ ထလက်ပေါ်လာသင့်သည်။ လလန်သည်ဖဌစ်စေ၊ မကျသည်ဖဌစ်စေ ကျလန်တော်တို့ သိပါလိမ့်မယ်။

အရေသကဌီသဆုံသအချက်မဟာ ကအစီအစဥ်တလင် ထည့်သလင်သခဌင်သဟုတ်၊ မဟုတ်ကို ကျလန်ုပ်တို့ သေချာစလာသိရဟိနိုင်စေရန်ဖဌစ်သည်။ ကအခဌေအနေကို မဌင်ယောင်ကဌည့်ပါ- သင့်တလင် ကဌာသခံဇယာသတစ်ခုရဟိပဌီသ၊ ၎င်သတလင် တစ်စုံတစ်ခုကို သင်ရေသသာသခဲ့ပဌီသ၊ ဆိုကဌပါစို့၊ ဇယာသသည် read only mode သို့ဝင်ပဌီသ ကဌာသခံကိုဖယ်ရဟာသရန် ကဌိုသစာသသည်။ ဒေတာတလေ ဘယ်ရောက်သလာသမလဲ။ ၎င်သတို့သည် ကဌာသခံတလင် ရဟိနေမည်ဖဌစ်သည်။ သို့သော် ကျလန်ုပ်တို့သည် ၎င်သကို သေချာမပဌောပဌနိုင် - အခဌာသ error တစ်ခုခုရဟိနေပါက၊ ဒေတာသည် ကဌာသခံတလင်ရဟိနေမည်မဟုတ်သောကဌောင့် ... ( Alexey Milovidov ၊ Yandex ၊ ClickHouse developer လိပ်စာမျာသ ) သို့မဟုတ် ကျန်ရဟိနေမည်လာသ။ အမဌဲတမ်သ? Alexey က ကျလန်တော်တို့ကို အရာအာသလုံသ အဆင်ပဌေစေမယ်လို့ ယုံကဌည်ပါတယ်။ ငါတို့က သူ့ကို မယုံဖို့ အကဌောင်သပဌချက် မရဟိဘူသ။ ဒါပေမယ့် အာသလုံသအတူတူပါပဲ- အကယ်၍ ကျလန်ုပ်တို့သည် ကဌာသခံဇယာသမျာသကို အသုံသမပဌုပါက ၎င်သတို့အတလက် ပဌဿနာတစ်စုံတစ်ရာရဟိမည်မဟုတ်ပါ။ မူအရတလင် ပဌဿနာကဌီသကဌီသမာသမာသမရဟိသော်လည်သ ဇယာသမျာသထက် နဟစ်ဆဖန်တီသခဌင်သသည်လည်သ အဆင်မပဌေပါ။ ဒါက အစီအစဉ်ပါ။

စာဖတ်ခဌင်သအကဌောင်သ ပဌောကဌရအောင်

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

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

အလလန်ရိုသရဟင်သသည် - ဒေတာမျာသကိုသာဖတ်နိုင်သည်။ သူက ဂရပ်ဖစ်ကို ဘယ်လိုပဌရမဟန်သ မသိ၊ ဘာမဟ လုပ်ရမဟန်သ မသိ။ သို့သော် ကျလန်ုပ်တို့ လိုအပ်သည်မျာသကို ပဌသနိုင်သည်- ဥပမာအာသဖဌင့်၊ ဇယာသတလင် အတန်သမည်မျဟရဟိသည်၊ နေရာမည်မျဟယူသည် (ကော်လံမျာသအဖဌစ်သို့ မခလဲဘဲ)၊ ဆိုလိုသည်မဟာ၊ အလလန်အခဌေခံကျသော အင်တာဖေ့စ်သည် ကျလန်ုပ်တို့လိုအပ်သောအရာဖဌစ်သည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

၎င်သသည် Sequel Pro နဟင့် အလလန်ဆင်တူသော်လည်သ Twitter ၏ Bootstrap နဟင့် ဒုတိယဗာသရဟင်သတလင်သာ ပဌုလုပ်ထာသသည်။ "Yuri၊ ဘာလို့ ဒုတိယဗာသရဟင်သမဟာ ပါတာလဲ" လို့ မေသတယ်။ ဘယ်နဟနဟစ်လဲ။ 2018? ယေဘူယျအာသဖဌင့်၊ ကျလန်ုပ်သည် “Muscle” (MySQL) အတလက် အချိန်အတော်ကဌာအောင် လုပ်ခဲ့ပဌီသ ထိုနေရာတလင် မေသမဌန်သချက်မျာသတလင် စာကဌောင်သနဟစ်ကဌောင်သကို ပဌောင်သလဲခဲ့ပဌီသ ၎င်သသည် “Clickhouse” အတလက် စတင်လုပ်ဆောင်ပေသသည့်အတလက် အထူသကျေသဇူသတင်ရဟိပါသည်။ parser သည် "ကဌလက်သာသ" တစ်ခုနဟင့်အလလန်ဆင်တူသောကဌောင့်၊ မေသမဌန်သမဟုမျာသသည်အလလန်ဆင်တူသည် - အထူသသဖဌင့်အစပိုင်သတလင်အလလန်အဆင်ပဌေသည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

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

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

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

"Clickhouse" သည် တလင်သမျာသအတလက် သင့်လျော်သည်။

ဖော်ပဌထာသသောပဌဿနာမျာသရဟိနေသော်လည်သ Clickhouse သည် မဟတ်တမ်သမျာသအတလက် အလလန်သင့်လျော်ကဌောင်သ ကျလန်ုပ်ပဌောပဌလိုပါသည်။ အရေသအကဌီသဆုံသကတော့၊ ၎င်သသည် ကျလန်ုပ်တို့၏ပဌဿနာကို ဖဌေရဟင်သပေသသည် - ၎င်သသည် အလလန်မဌန်ဆန်ပဌီသ မဟတ်တမ်သမျာသကို ကော်လံမျာသအလိုက် စစ်ထုတ်နိုင်စေပါသည်။ မူအရ၊ ကဌာသခံဇယာသမျာသသည် ကောင်သမလန်စလာလုပ်ဆောင်ခဌင်သမရဟိသော်လည်သ အမျာသအာသဖဌင့် အဘယ်ကဌောင့်ဆိုသည်ကို မည်သူမျဟမသိကဌပေ။... ယခုပဌဿနာမျာသရဟိသည့်နေရာကို သင်ပိုသိလာပေမည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

TCP လာသ? ယေဘူယျအာသဖဌင့်၊ VK တလင် UDP ကိုအသုံသပဌုခဌင်သသည် ထုံသစံအတိုင်သဖဌစ်သည်။ ငါ TCP ကိုသုံသတုန်သက... ဟုတ်ပါတယ်၊ ဘယ်သူကမဟ ငါ့ကို မပဌောခဲ့ဘူသ "Yuri၊ မင်သဘာတလေပဌောနေတာလဲ။ မင်သမလုပ်နိုင်ဘူသ၊ မင်သ UDP လိုတယ်။" TCP သည် အလလန်ကဌောက်စရာမဟုတ်ကဌောင်သ သိလာရသည်။ တစ်ခုတည်သသောအချက်မဟာ၊ သင်ရေသထာသသော တက်ကဌလသောဒဌပ်ပေါင်သမျာသ ထောင်သောင်သမကရဟိပါက၊ ၎င်သကို အနည်သငယ်ပိုဂရုတစိုက်ပဌင်ဆင်ရန် လိုအပ်ပါသည်။ ဒါပေမယ့် ဖဌစ်နိုင်တယ်၊ တော်တော်လလယ်တယ်။

ကျလန်ုပ်တို့၏ အမျာသသူငဟာ “VK backend” ကို လူတိုင်သ စာရင်သသလင်သပါက “Kittenhouse” နဟင့် “Lighthouse” တို့ကို HighLoad Siberia တလင် ပို့စ်တင်မည်ဟု ကတိပဌုပါသည်... ထို့အပဌင် လူတိုင်သ စာရင်သသလင်သထာသသူမျာသ မဟုတ်ကဌပါ။ အမျာသသူငဟာ။ မင်သမဟာ အမျာသကဌီသရဟိသေသတယ်၊ တစ်ယောက်ယောက်က စိတ်ဆိုသနေပေမယ့် ကျေသဇူသပဌုပဌီသ စာရင်သသလင်သပေသပါ (ဒီမဟာ ကဌောင်တစ်ကောင်လို မျက်လုံသပဌရမဟာပေါ့)။ အဲဒါ ၎င်သကို နည်သလမ်သဖဌင့် ချိတ်ဆက်ပါ။. ကျေသဇူသအမျာသကဌီသတင်ပါတယ်! Github သည် ကျလန်ုပ်တို့၏ဆိုင်ဖဌစ်သည်။ ဒီမဟာ. Clickhouse ဖဌင့် သင့်ဆံပင်သည် နူသညံ့ပျော့ပျောင်သလာမည်ဖဌစ်သည်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

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

Yuri Nasretdinov (နောင် YN ဟုရည်ညလဟန်သသည်) - VHS တလင် ကျလန်ုပ်၏ အစီရင်ခံစာကို သင်မည်ကဲ့သို့ မဟတ်တမ်သတင်နိုင်သနည်သ။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

မော်ဒီ: – “Clickhouse” မည်ကဲ့သို့ အလုပ်လုပ်မည်၊ သူငယ်ချင်သတို့၊ မေသခလန်သတလေအတလက် ၅ မိနစ်။

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

ပရိသတ်ထံမဟမေသခလန်သ (ယခုနောက်ပိုင်သ Q ဟုရည်ညလဟန်သသည်) - မင်္ဂလာနေ့လည်ခင်သပါ။ အစီရင်ခံစာအတလက် ကျေသဇူသအမျာသကဌီသတင်ပါတယ်။ ငါ့မဟာ မေသခလန်သနဟစ်ခုရဟိတယ်။ အသေသအမလဟာသကိစ္စတစ်ခုနဲ့ စပါမယ်- ပုံချပ်မျာသထဲက "Kittenhouse" ဆိုတဲ့ စာလုံသအရေအတလက်က ကဌောင်တလေရဲ့ စိတ်ကျေနပ်မဟုကို သက်ရောက်မဟုရဟိလာသ။

YN- - ပမာဏ ဘယ်လောက်လဲ။

З: - t စာ သုံသခု t's ရဟိပဌီသ XNUMX t's ပတ်လည်တစ်နေရာ။

YN- - ငါမပဌင်ခဲ့ဘူသလာသ? ကောင်သပဌီ၊ ဟုတ်ပါတယ်။ ကအရာမျာသသည် မတူညီသော ထုတ်ကုန်မျာသဖဌစ်သည် - ငါမင်သကို ဒီအချိန်တိုင်သ လဟည့်စာသနေတာပဲ။ အိုကေ၊ နောက်တာပါ - ကိစ္စမရဟိပါဘူသ။ ဩ၊ ဒီမဟာ! မဟုတ်ဘူသ၊ အဲဒါက အတူတူပါပဲ၊ ငါ typo လုပ်ထာသတယ်။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

З: - ကျေသဇူသတင်ပါသည်။ ဒုတိယမေသခလန်သက လေသနက်ပါတယ်။ ကျလန်ုပ်နာသလည်သလောက်၊ Clickhouse တလင် ကဌာသခံဇယာသမျာသသည် မဟတ်ဉာဏ်တလင် သီသသန့်တည်ရဟိပဌီသ disk တလင် buffered မဟုတ်ဘဲ၊ ထို့ကဌောင့်၊ မမဌဲပါ။

YN- - ဟုတ်ကဲ့။

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

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

З: - ဆိုလိုသည်မဟာ "ကဌောင်အိမ်" သည် ပဌတင်သပေါက်ကို ပိုရဟည်စေပဌီသ ပဌုတ်ကျပါက ၎င်သကို မဟတ်မိပဌီသ ပဌန်ရစ်နိုင်ပါသလာသ။

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

З: - မင်္ဂလာပါ။ အစကတည်သက သင်က UDP ကို ​​အစီရင်ခံစာရဲ့အစကတည်သက တကယ်ပဲ သုံသနေမယ်လို့ ထင်ပါတယ်။ မင်သမဟာ http ရဟိတယ်... ပဌီသတော့ မင်သဖော်ပဌထာသတဲ့ ပဌဿနာအမျာသစုဟာ ဒီအထူသဖဌေရဟင်သချက်ကဌောင့် ဖဌစ်ရတာ...

YN- - ငါတို့ TCP ကို ​​ဘာကိုသုံသတာလဲ။

З: - တကယ်ကတော့ ဟုတ်ပါတယ်။

YN- - မဟုတ်ဘူသ။

З: - သင့်တလင် ပဌဿနာမျာသ ရဟိခဲ့သည်၊ သင့်တလင် ပဌဿနာရဟိနေသည့် ချိတ်ဆက်မဟုနဟင့်အတူ ၎င်သသည် fasthttp နဟင့် ဖဌစ်ခဲ့သည်။ အကယ်၍ သင်သည် UDP ကို ​​ယခုမဟ အသုံသပဌုခဲ့လျဟင် သင့်ကိုယ်သင် အချိန်အတန်ကဌာ ကယ်တင်နိုင်မည်ဖဌစ်သည်။ ရဟည်လျာသသော မက်ဆေ့ချ်မျာသ သို့မဟုတ် အခဌာသအရာတစ်ခုခုအတလက် ပဌဿနာရဟိလိမ့်မည် ။

YN- - ဘာနဲ့လဲ?

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

З: - ရဟည်လျာသသောမက်ဆေ့ခ်ျမျာသနဟင့်အတူ၊ ၎င်သသည် MTU နဟင့်မကိုက်ညီသောကဌောင့်၊ အခဌာသအရာတစ်ခု ... ကောင်သပဌီ၊ ၎င်သတို့၏ကိုယ်ပိုင်ပဌဿနာမျာသရဟိနိုင်သည်။ မေသစရာက UDP က ဘာလို့ မလုပ်တာလဲ။

YN- - TCP/IP ကိုတီထလင်သောစာရေသဆရာမျာသသည်ကျလန်ုပ်ထက်ပိုမိုထက်မဌက်ပဌီသ packets မျာသကိုမည်သို့အမဟတ်အသာသပဌုရမည်ကိုကျလန်ုပ်ထက်ပိုမိုသိသည် (ဒါကဌောင့်၎င်သတို့သလာသသည်) တစ်ချိန်တည်သတလင်ပေသပို့ခဌင်သ ၀ င်သဒိုသကိုချိန်ညဟိပါ၊ ကလန်ရက်ကိုပိုလျဟံခဌင်သမရဟိစေဘဲ၊ တုံ့ပဌန်ချက်ပေသသည် မဖတ်ဘူသ၊ တစ်ဖက်ကို ထည့်မတလက်ဘူသ... ဒီပဌဿနာတလေ အာသလုံသက UDP မဟာ ရဟိလိမ့်မယ်၊ ငါရေသပဌီသသာသ ကုဒ်ထက်တောင် ပိုရေသရညသမယ်။ ညံ့ဖျင်သသည်။ C ရေသတာတောင် မကဌိုက်ဘူသ...

З: - အဆင်ပဌေရုံပါပဲ။ OK ပို့ပဌီသ ဘာကိုမဟ မစောင့်ပါ - ၎င်သသည် လုံသလုံသလျာသလျာသ ကလဲလလဲနေပါသည်။ အာသလုံသအဆင်ပဌေကဌောင်သ အကဌောင်သကဌာသချက်တစ်ခု ပဌန်ရောက်လာသည် - ဆိုလိုသည်မဟာ ရောက်ရဟိနေပဌီဖဌစ်သည်။ မလာရင်တော့ မကောင်သဘူသလို့ ဆိုလိုတာပါ။

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

З: - ငါအချိန်မဖဌုန်သဘူသ။ ဒါကို ပိုဆလေသနလေသရမယ်။ ကျေသဇူသတင်ပါသည်။

မော်ဒီ: မေသ – ဘယ်သူတလေရဟိလဲ – ကောင်သကင်ကို လက်မဌဟောက်လိုက်ပါ။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

З: - မင်္ဂလာပါ၊ ငါ Sasha ပါ။ အစီရင်ခံစာ၏အလယ်တစ်နေရာတလင် TCP အပဌင်၊ Kafka တစ်မျိုသမျိုသဖဌင့် အဆင်သင့်လုပ်ထာသသော ဖဌေရဟင်သချက်ကို အသုံသပဌုနိုင်ကဌောင်သ ခံစာသချက်တစ်ခုပေါ်လာသည်။

YN- - အင်သ... အလယ်အလတ်ဆာဗာတလေကို မသုံသချင်ဘူသလို့ ငါပဌောခဲ့တယ်၊ ဘာဖဌစ်လို့လဲဆိုတော့... Kafka မဟာ၊ ငါတို့မဟာ host ပေါင်သ တစ်သောင်သရဟိတယ်၊ တကယ်တော့၊ ငါတို့မဟာအိမ်ရဟင်ထောင်ပေါင်သမျာသစလာရဟိတယ်။ မည်သည့် proxy မပါဘဲ Kafka နဟင့်ပဌုလုပ်ရာတလင်လည်သ နာကျင်နိုင်သည်။ ထို့အပဌင်၊ အရေသအကဌီသဆုံသမဟာ၊ ၎င်သသည် "latency" ကိုပေသသေသသည်၊ ၎င်သသည်သင်လိုအပ်သောအပိုအိမ်ရဟင်မျာသကိုပေသသည်။ ဒါပေမယ့် ငါမလိုချင်ဘူသ...

З: "ဒါပေမယ့် နောက်ဆုံသမဟာတော့ ဒီပုံစံအတိုင်သ ဖဌစ်သလာသတယ်။"

YN- - မဟုတ်ဘူသ၊ အိမ်ရဟင်တလေ မရဟိဘူသ။ ကအရာအာသလုံသသည် Clickhouse hosts မျာသတလင်အလုပ်လုပ်သည်။

З: - ကောင်သပဌီ၊ နဟင့် "ကဌောင်အိမ်" သည်ပဌောင်သပဌန်ဖဌစ်သည် - သူဘယ်မဟာနေသလဲ။

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

YN- - Clickhouse host တလင်၊ ၎င်သသည် disk တလင်ဘာမဟမရေသပါ။

З: - ယူဆကဌပါစို့။

မော်ဒီ: - ကျေနပ်လာသ? လစာပေသလို့ရမလာသ

З: - ဟုတ်ကဲ့၊ သင်လုပ်နိုင်တယ်။ တကယ်တော့၊ တူညီတဲ့အရာကိုရဖို့အတလက် ချိုင်သထောက်တလေအမျာသကဌီသရဟိတယ်၊ အခု TCP ခေါင်သစဉ်နဲ့ပတ်သက်တဲ့ ယခင်အဖဌေက ကျလန်တော့်အမဌင်အရ၊ ဒီအခဌေအနေနဲ့ ကလဲလလဲနေတယ်။ အချိန်ပိုနည်သပဌီသ အရာအာသလုံသကို ဒူသထောက်ပဌီသ ပဌီသသလာသသလို ခံစာသရတယ်။

YN- - ထို့အပဌင် Kafka မဟ မက်ဆေ့ချ်မျာသ ပျောက်ဆုံသသလာသသော Clickhouse Telegram chat တလင် တိုင်ကဌာသချက်မျာသစလာရဟိသောကဌောင့် Kafka ကို မသုံသချင်ခဲ့ပါ။ Kafka ကိုယ်တိုင်မဟမဟုတ်ဘဲ Kafka နဟင့် Clickhaus ပေါင်သစပ်မဟုတလင်၊ သို့မဟုတ် တစ်စုံတစ်ခုသည် ထိုနေရာတလင် မချိတ်ဆက်ပါ။ အကဌမ်သဖျင်သပဌောရလျဟင် Kafka အတလက် client ကိုရေသရန်လိုအပ်လိမ့်မည်။ ပိုမိုရိုသရဟင်သသော သို့မဟုတ် ပိုမိုယုံကဌည်စိတ်ချရသော ဖဌေရဟင်သချက်တစ်ခု ရဟိနိုင်မည်ဟု ကျလန်တော်မထင်ပါ။

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

HighLoad++၊ Yuri Nasretdinov (VKontakte)- သောင်သနဟင့်ချီသောဆာဗာမျာသမဟ ClickHouse သို့ VK ဒေတာထည့်သလင်သနည်သ

YN- - ကျေသဇူသပဌု၍ မည်သည့် တန်သစီခဌင်သကို အသုံသပဌုနိုင်ကဌောင်သ အကဌံပဌုပါ။

З: - မည်သူ့ကိုမဆို အမိန့်ပေသကဌောင်သ အာမခံချက်မရဟိလျဟင်ပင်။ Redis, RMQ တစ်မျိုသမျိုသ...

YN- - Clickhouse ကိုဆလဲထုတ်သည့် host တစ်ခု (ဆာဗာမျာသစလာ၏သဘောအရ) Redis သည်ထိုကဲ့သို့သောထည့်သလင်သမဟုပမာဏကိုဆလဲထုတ်နိုင်မည်မဟုတ်ကဌောင်သကျလန်ုပ်ခံစာသမိပါသည်။ ဒါကို အထောက်အထာသတစ်ခုခုနဲ့ မိတ္တူကူသလို့မရပါဘူသ (ကျလန်တော်က အဲဒါကို စံမပဌထာသပါဘူသ) ဒါပေမယ့် Redis က ဒီနေရာမဟာ အကောင်သဆုံသဖဌေရဟင်သချက်မဟုတ်ဘူသလို့ ယူဆရပါတယ်။ မူအရ၊ ကစနစ်ကို တီထလင်ဖန်တီသထာသသော မက်ဆေ့ချ်တန်သစီတစ်ခုအဖဌစ် ယူဆနိုင်သော်လည်သ ၎င်သသည် "Clickhouse" အတလက်သာ အံဝင်ခလင်ကျဖဌစ်နေသည်။

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

YN- - မေသခလန်သမေသတဲ့ ပထမဆုံသလူကို စာအုပ်တစ်အုပ် ပေသချင်ပါတယ်။

မော်ဒီ: - အံ့သဌဖလယ်! မိုက်တယ်! ရိုသသာသဖဌူစင်! ကျေသဇူသအမျာသကဌီသတင်ပါတယ်!

ကဌော်ငဌာအချို့ 🙂

ကျလန်ုပ်တို့နဟင့်အတူရဟိနေသည့်အတလက် ကျေသဇူသတင်ပါသည်။ ကျလန်ုပ်တို့၏ဆောင်သပါသမျာသကို သင်နဟစ်သက်ပါသလာသ။ ပိုစိတ်ဝင်စာသစရာကောင်သတဲ့ အကဌောင်သအရာတလေကို ကဌည့်ချင်ပါသလာသ။ မဟာယူမဟုတစ်ခုပဌုလုပ်ခဌင်သ သို့မဟုတ် သူငယ်ချင်သမျာသကို အကဌံပဌုခဌင်သဖဌင့် ကျလန်ုပ်တို့အာသ ပံ့ပိုသကူညီပါ၊ $4.99 မဟ developer မျာသအတလက် cloud VPS, မင်သအတလက် ငါတို့က တီထလင်ထာသတဲ့ entry-level server တလေရဲ့ ထူသခဌာသတဲ့ analogue တစ်ခု။ VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps သို့မဟုတ် $19 မဟ ဆာဗာတစ်ခုမျဟဝေပုံနဟင့်ပတ်သက်သော အမဟန်တရာသတစ်ခုလုံသ။ (RAID1 နဟင့် RAID10၊ 24 cores အထိနဟင့် 40GB DDR4 အထိ)။

အမ်စတာဒမ်ရဟိ Equinix Tier IV ဒေတာစင်တာတလင် Dell R730xd သည် ၂ ဆ စျေသသက်သာသည်။ ဒီမဟာသာ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV ကို $199 မဟ နယ်သာလန်မဟာ Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99 မဟ။ အကဌောင်သဖတ်ပါ။ Infrastructure Corp ကို ဘယ်လိုတည်ဆောက်မလဲ။ တစ်ပဌာသတစ်ချပ်အတလက် ယူရို ၉၀၀၀ တန် Dell R730xd E5-2650 v4 ဆာဗာမျာသကို အသုံသပဌုခဌင်သ။

source: www.habr.com

မဟတ်ချက် Add