HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

HighLoad++ Moscow 2018, Congress Hall. Noofambar 9, 15:00

Qoraallada iyo soo bandhigida: http://www.highload.ru/moscow/2018/abstracts/4066

Yuri Nasretdinov (VKontakte): Warbixintu waxay ka hadli doontaa waayo-aragnimada fulinta ClickHouse ee shirkadeena - sababta aan ugu baahanahay, inta xog ee aan kaydineyno, sida aan u qorno, iyo wixii la mid ah.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Alaabooyin dheeri ah: iyadoo la isticmaalayo Clickhouse beddelka ELK, Big Query iyo TimecaleDB

Yuri Nasretdinov: - Salaamu calaykum! Magacaygu waa Yuri Nasretdinov, sida mar hore la ii soo bandhigay. Waxaan ka shaqeeyaa VKontakte. Waxaan ka hadli doonaa sida aan u gelino xogta ClickHouse ee ka socda server-keena (tobanaan kun).

Waa maxay qoryo iyo sababta loo ururiyo?

Waxa aanu kuu sheegi doono: waxa aanu samaynay, sababta aan ugu baahanahay "ClickHouse", siday u kala horreeyaan, sababta aan u dooranay, nooca waxqabadka aad ku dhawaad ​​heli karto adiga oo aan wax si gaar ah u habeynin. Waxaan kuu sheegi doonaa wax dheeraad ah oo ku saabsan miisaska kaydinta, dhibaatooyinka aan la kulannay iyaga iyo xalalkeena aan ka soo saarnay ilo furan - KittenHouse iyo Lighthouse.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Waa maxay sababta aan ugu baahanahay inaan wax samayno (wax walbaa had iyo jeer way ku fiican yihiin VKontakte, sax?). Waxaan rabnay inaan aruurinno diiwaannada cilladaha (oo waxaa jiray boqolaal terabyte oo xog ah halkaas), malaha si uun bay ku habboonaan lahayd in la xisaabiyo tirakoobka; waxaana leenahay tobanaan kun oo server ah kuwaas oo waxaas oo dhan loo baahan yahay in la sameeyo.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Maxaan u go'aansanay? Waxay u badan tahay inaynu haysanay xalal lagu kaydin lahaa geedaha. Halkan - waxaa jira dadwaynaha sida "Backend VK". Waxaan aad ugu talinayaa in aad is-diiwaangeliso.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Waa maxay logu? Kani waa mishiin soo celinaya habab madhan. Matoorada ku jira VK waa waxa ay dadka kale u yaqaanaan adeegaha yar yar. Oo halkan waxaa ah sticker dhoola cadeynaya (jecel aad u badan). Sidee sidaas tahay? Hagaag, sii dhegayso!

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Maxaa lagu kaydin karaa logyada? Suuragal maaha in la sheego Hadup. Kadib, tusaale ahaan, Rsyslog (kaydinta diiwaanadan faylasha). LSD Yaa garanaya waxa LSD yahay? Maya, maaha LSD kan. Kaydi faylasha, siday u kala horreeyaan, sidoo kale. Hagaag, ClickHouse waa ikhtiyaar la yaab leh.

Clickhouse iyo tartamayaasha: shuruudaha iyo fursadaha

Maxaan rabnaa? Waxaan rabnaa inaan hubinno inaanan aad uga walwalin hawlgalka, si ay uga shaqeyso sanduuqa, iyadoo la doorbidayo qaabeynta ugu yar. Waxaan rabnaa inaan wax badan qorno, oo si degdeg ah u qorno. Oo waxaan rabnaa inaan ku hayno dhammaan noocyada bilaha, sannadaha, taas oo ah, muddo dheer. Waxaa laga yaabaa inaan rabno inaan fahamno dhibaato ay noo yimaaddeen oo ay nagu dhaheen, "Waxba halkaan kama shaqeynayo," taasina waxay ahayd 3 bilood ka hor), oo waxaan rabnaa inaan awoodno inaan aragno wixii dhacay 3 bilood ka hor " Isku-buufinta xogta - way caddahay sababta ay u noqon doonto wax lagu daray - sababtoo ah waxay yaraynaysaa qadarka booska ay qaadato.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Oo waxaan leenahay shuruudo xiiso leh: mararka qaarkood waxaan qornaa wax soo saarka amarrada qaarkood (tusaale ahaan, logs), waxay noqon kartaa wax ka badan 4 kilobytes si fudud. Oo haddii shaygani uu ka shaqeeyo UDP, markaa uma baahna in la kharash gareeyo ... ma yeelan doonto wax "kor u kaca" isku xirka, iyo tiro badan oo server ah tani waxay noqon doontaa dheeraad ah.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Aan aragno waxa il furan noo soo bandhigo. Marka hore, waxaan leenahay Logs Engine - kani waa mishiinkeena; Mabda 'ahaan, wax walba wuu samayn karaa, xitaa wuxuu qori karaa khadadka dhaadheer. Hagaag, si hufan uma cadaadiyo xogta - waxaan ku cadaadin karnaa tiirarka waaweyn nafteena haddii aan rabno... annagu, dabcan, ma rabno (haddii ay suurtagal tahay). Dhibka kaliya ayaa ah in uu bixin karo oo kaliya waxa ku habboon xusuusta; Si aad u akhrido inta soo hartay, waxaad u baahan tahay inaad heshid binlog-ga mishiinkan, sidaas awgeed, waxay qaadanaysaa waqti dheer.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Waa maxay fursadaha kale ee jira? Tusaale ahaan, "Hadup". Fududeynta hawlgalka... Yaa u malaynaya in Hadup ay fududahay in la dejiyo? Dabcan, ma jiraan wax dhib ah oo ku saabsan duubista. Markaad wax akhrinayso, su'aalo ayaa mararka qaarkood soo baxa. Mabda 'ahaan, waxaan dhihi lahaa malaha, gaar ahaan lo'da. Kaydinta muddada-dheer - dabcan, haa, isku-buufin xogta - haa, xadhig dheer - way caddahay inaad duubi karto. Laakiin duubista tiro badan oo adeegayaal ah... Weli waa inaad adigu wax samaysaa!

Rsyslog Dhab ahaantii, waxaan u isticmaalnay sidii doorasho kayd ah si aan u akhrino iyada oo aan la tuurin binlog, laakiin ma qori karo khadadka dhaadheer, mabda'a, ma qori karo wax ka badan 4 kilobytes. Waa inaad samaysaa isku-buufinta xogta si la mid ah naftaada. Akhrisku wuxuu ka iman doonaa galalka

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Kadibna waxaa jira horumarinta "badushka" ee LSD. Asal ahaan la mid ah "Rsyslog": waxay taageertaa xadhkaha dhaadheer, laakiin kuma shaqayn karto UDP, dhab ahaantii, taas aawadeed, nasiib daro, waxyaabo badan ayaa u baahan in dib loogu qoro halkaas. LSD waxay u baahan tahay in dib loo habeeyo si ay awood ugu yeelato inay ka duubto tobanaan kun oo adeegayaal.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Oo halkan! Doorashada qosolka leh waa ElasticSearch. Sidee loo sheegaa? Waxa uu ku fiican yahay akhriska, yacni, si degdeg ah ayuu wax u akhriyaa, laakiin aad uma fiicna qoraalka. Marka hore, haddii ay xogta ku cadaadiyo, aad bay u liidataa. Inta badan, raadinta buuxda waxay u baahan tahay qaab dhismeed xogeed ka weyn mugga asalka ah. Way adag tahay in la shaqeeyo, dhibaatooyin ayaana inta badan ka dhasha. Iyo, mar labaad, duubista Elastic - waa inaan wax walba samaynaa nafteena.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Halkan ClickHouse waa ikhtiyaar ku habboon, dabcan. Waxa kaliya ayaa ah in duubista tobanaan kun oo server ay dhibaato tahay. Laakiin ugu yaraan waxaa jirta hal dhibaato, waxaan isku dayi karnaa inaan si uun u xalino. Warbixinta inteeda kale waxay ku saabsan tahay dhibaatadan. Waa maxay nooca waxqabadka aad ka filan kartaa ClickHouse?

Sideen u galinaa? MergeTree

Yaa idinka mid ah oo aan maqlin ama aan ogayn wax ku saabsan "ClickHouse"? Waxaan u baahanahay inaan kuu sheego, ma aha? Aad u degdeg badan. Gelitaanka halkaas - 1-2 gigabits halkii ilbiriqsi, dillaaca ilaa 10 gigabits ilbiriqsi ayaa dhab ahaantii u adkeysan kara qaabeynta - waxaa jira laba Xeons 6-core (taas oo ah, xitaa kuwa ugu awoodda badan), 256 gigabytes RAM, 20 terabytes. gudaha RAID (ma jiro qof habaysan, habayn caadi ah). Alexey Milovidov, horumariyaha ClickHouse, waxaa laga yaabaa inuu halkaas ku fadhiyo isagoo ooyaya sababtoo ah waxba maanu habeynin (wax walba ayaa sidaas noogu shaqeeyay). Sidaa darteed, xawaaraha iskaanka, dheh, qiyaastii 6 bilyan oo xariiq ilbiriqsikiiba waa la heli karaa haddii xogta si fiican loo cadaadiyo. Haddii aad jeceshahay % xardhka qoraalka - 100 milyan oo xariiq ilbiriqsikii, taasi waa, waxay u muuqataa mid aad u degdeg badan.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Sideen u galinaa? Hagaag, waad ogtahay in VK uu isticmaalo PHP. Waxaan ka galin doonaa shaqaale kasta oo PHP ah anagoo HTTP u sii marin doona "ClickHouse", miiska MergeTree ee diiwaan kasta. Yaa dhib u arka qorshahan? Sabab qaar ka mid ah, qof kastaa ma uusan kor u qaadin gacmihiisa. Aan kuu sheego.

Marka hore, waxaa jira server badan - sidaas darteed, waxaa jiri doona xiriiro badan (xun). Markaa way fiicantahay inaad geliso xogta MergeTree wax ka badan hal mar ilbiriqsikiiba. Oo yaa garan kara sababta? Waayahay, waayahay Waxaan in yar kaaga sheegi doonaa arrintan. Su'aal kale oo xiiso leh ayaa ah in aynaan samaynayn falanqaynta, uma baahnid inaan kobcinno xogta, uma baahnid server-yada dhexe, waxaan rabnaa inaan si toos ah u gelino "ClickHouse" (doorbidayaa - si toos ah, ka sii fiican).

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Sidaas awgeed, sidee loo geliyaa MergeTree? Waa maxay sababta ay ugu fiican tahay in la geliyo marar badan hal ilbiriqsi ama in ka yar marar badan? Xaqiiqdu waxay tahay in "ClickHouse" ay tahay kaydka tiirarka oo u kala saara xogta siday u kala horreeyaan ee furaha aasaasiga ah, iyo marka aad geliso, tiro faylal ah ayaa la abuuray ugu yaraan waxay la mid tahay tirada tiirarka ee xogta lagu kala soocay. iyadoo loo eegayo siday u kala horreeyaan furaha aasaasiga ah (tusaale gooni ah ayaa la sameeyay, faylal saxan ah oo la gelinayo kasta). Kadib gelinta soo socota ayaa timaad, oo gadaasha waxaa lagu daraa "qaybo" waaweyn. Maadaama xogta la kala soocay, waxaa suurtagal ah in la "isku daro" laba faylal oo la soocay iyada oo aan la isticmaalin xusuus badan.

Laakiin, sida aad qiyaasi karto, haddii aad ku qorto 10 fayl mid kasta, ka dibna ClickHouse (ama server-kaaga) si dhakhso ah ayuu u dhammaan doonaa, markaa waxaa lagula talinayaa in aad geliso qaybo waaweyn. Sidaas awgeed, weligii ma aannu bilaabin qorshaha ugu horreeya ee wax-soo-saarka. Waxaan isla markiiba bilownay mid, kaas oo halkan No. 2 leeyahay:

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Halkan ka qiyaas in ay jiraan ilaa kun server oo aan ku bilownay, waxaa jira kaliya PHP. Server kastaa waxa ku jira wakiilkayaga maxaliga ah, kaas oo aanu ugu yeedhnay "Kittenhouse", kaas oo ku haya hal xidhiidh oo leh "ClickHouse" oo gelinaya xogta dhowr ilbiriqsi kasta. Gelida xogta oo aan gelin MergeTree, laakiin geliya miiska kaydka, kaas oo si sax ah ugu adeega si looga fogaado in si toos ah loo geliyo MergeTree isla markaaba.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Ku shaqaynta miisaska kaydka

Waa maxay? Miisaska kaydka ah waa qayb ka mid ah xusuusta la jeexjeexay (yacni, si joogto ah ayaa loo gelin karaa). Waxay ka kooban yihiin dhowr qaybood, mid walbana wuxuu u shaqeeyaa sidii bakhaar madax-bannaan, oo si madax-bannaan ayaa loo nadiifiyaa (haddii aad haysato qaybo badan oo ka mid ah bakhaarka, ka dibna waxaa jiri doona waxyaabo badan oo la gelinayo halkii labaad). Waxaa suurtagal ah in laga akhriyo jaantusyadan - ka dibna waxaad akhridaa midowga waxyaabaha ku jira buffer iyo miiska waalidka, laakiin xilligan xaadirka ah qorista waa la xannibay, markaa way fiicantahay inaadan ka akhriyin. Iyo miisaska kaydinta waxay muujinayaan QPS aad u wanaagsan, taas oo ah, ilaa 3 kun oo QPS ah wax dhib ah kalama kulmi doontid haba yaraatee markaad gelinayso. Way caddahay in haddii server-ku lumiyo awoodda, markaa xogta waa la lumin karaa, sababtoo ah waxaa lagu kaydiyay oo kaliya xusuusta.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Isla mar ahaantaana, nidaamka leh bakhaar ayaa adkeynaya ALTER, sababtoo ah waxaad marka hore u baahan tahay inaad hoos u dhigto miiska hore ee nidaamkii hore (xogtu meelna kuma baabi'in doonto, sababtoo ah waa la nadiifin doonaa ka hor inta aan miiska la tirtirin). Kadibna waxaad "bedeshaa" miiska aad u baahan tahay oo waxaad mar kale abuurtaa miiska dajinta. Sidaa awgeed, iyadoo aanu jirin miis kayd ah, xogtaadu meelna kuma socon doonto, laakiin waxaad ku hayn kartaa disk ugu yaraan gudaha.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Waa maxay Kittenhouse sideese u shaqeysaa?

Waa maxay KittenHouse? Kani waa wakiil. Bal qiyaas luqaddee? Waxaan ku ururiyay mawduucyada ugu buunbuuninta warbixintayda - "Clickhouse", Go, malaha wax kale ayaan xasuusan doonaa. Haa, tani waxay ku qoran tahay Go, sababtoo ah ma aqaan runtii sida loo qoro C, ma rabo.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Sidaas awgeed, waxay ilaalinaysaa xidhiidhka server kasta oo waxay ku qori kartaa xusuusta. Tusaale ahaan, haddii aan u qorno qaladaadka Clickhouse, ka dibna haddii Clickhouse uusan haysan waqti aad ku geliso xogta (ka dib oo dhan, haddii wax badan la qoro), markaa ma bararno xusuusta - waxaan si fudud u tuurnaa inta kale. Sababtoo ah haddii aan ku qorno dhowr gigabits halkii ilbiriqsi ee khaladaadka, markaa waxay u badan tahay inaan qaar ka tuurno. Kittenhouse ayaa tan samayn karta. Intaa waxaa dheer, waxay sameyn kartaa gaarsiinta la isku halleyn karo, taas oo ah, qorista diskka mashiinka maxalliga ah iyo mar kasta (halkaas, hal mar labadii ilbiriqsi kasta) waxay isku daydaa inay ka bixiso xogta faylkan. Oo markii ugu horeysay waxaan isticmaalnay qaabka caadiga ah ee qiimaha - ma aha qaab binary, qaab qoraal ah (sida SQL caadiga ah).

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Laakiin markaas tani way dhacday. Waxaan isticmaalnay gaarsiinta la isku halleyn karo, waxaan qornay qoraallo, ka dibna waxaan go'aansannay (waxay ahayd koox tijaabo ah oo shuruud ah)... Waxaa la saaray dhowr saacadood oo dib ayaa loo soo celiyay, gelinta ayaa ka bilaabatay kun server - waxaa soo baxday in Clickhouse uu weli haysto "Thread on connection" - sidaas darteed, in kun isku xirka, gelinta firfircooni waxay keenaysaa celceliska culeyska ee server-ka qiyaastii hal iyo badh kun. Waxaa la yaab leh, server-ku wuu aqbalay codsiyada, laakiin xogta ayaa weli la geliyey muddo ka dib; laakiin aad bay ugu adkeyd in server-ku u adeego...

Ku dar nginx

Xalka noocan oo kale ah ee Thread halkii qaab isku xirka waa nginx. Waxaan ku rakibnay nginx horteeda Clickhouse, isla markaa waxaan dejinay isu dheelitirka laba nuqul (xawaarahayaga gelinta wuxuu kordhay 2 jeer, in kasta oo aysan ahayn xaqiiqo ah in tani ay tahay kiiska) oo xaddiday tirada isku xirka Clickhouse, kor iyo, si waafaqsan, in ka badan , in ka badan 50 isku xirka, waxay u muuqataa in aysan jirin wax macno ah in la geliyo.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Kadib waxaan ogaanay in nidaamkani guud ahaan uu leeyahay faa'iido darrooyin, sababtoo ah waxaan halkan ku haynaa hal nginx kaliya. Sidaa awgeed, haddii nginx-kan uu burburo, inkastoo ay jiraan nuqullo, waxaan luminaa xogta ama, ugu yaraan, meelna ha ku qorin. Taasi waa sababta aan u samaynay isku dheelitirnaanta rarkayaga. Waxaan sidoo kale ogaanay in "Clickhouse" uu weli ku habboon yahay qoryaha, iyo "jinni" ayaa sidoo kale bilaabay inuu ku qoro qoraalkiisa "Clickhouse" - aad u habboon, si daacad ah. Waxaan weli u isticmaalnaa "jinniyada" kale.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Ka dib waxaan ogaanay dhibaatadan xiisaha leh: haddii aad isticmaasho habka aan caadiga ahayn ee gelinta habka SQL, waxay ku qasbeysaa falanqeeye AST-ku-saleysan oo buuxa, kaas oo ah mid gaabis ah. Sidaa awgeed, waxaanu ku darnay goobo si loo hubiyo inaanay tani weligeed dhicin. Waxaanu samaynay isku dheelitirnaan, hubin caafimaad, si haddii uu mid dhinto, aan wali uga tagno xogta. Hadda waxaan haynaa miisas aad u badan oo aan u baahanahay si aan u yeelano kooxo Clickhouse oo kala duwan. Waxaan sidoo kale bilownay inaan ka fikirno isticmaalka kale - tusaale ahaan, waxaan rabnay inaan ka qorno qoraallada modules nginx, laakiin ma yaqaaniin sida loola xiriiro annaga oo isticmaalaya RPC. Hagaag, waxaan jeclaan lahaa inaan baro sida loo diro ugu yaraan si uun - tusaale ahaan, inay ka helaan dhacdooyinka localhost iyada oo loo sii marayo UDP ka dibna u sii gudbiyo Clickhouse.

Hal tallaabo ayaa u jirta xalka

Nidaamka kama dambaysta ahi wuxuu bilaabay inuu sidan u ekaado (nooca afraad ee nidaamkan): Server kasta oo ka horreeya Clickhouse waxaa ku yaal nginx (oo isla server ah) oo waxay si fudud u wakiil ka tahay codsiyada localhost iyadoo xaddidaysa tirada isku xirka 50. gabal Nidaamkani wuxuu ahaa mid mar hore si fiican u shaqaynayay, wax walbana aad bay ugu fiicnaayeen.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Waxaan sidan ku noolayn muddo bil ku dhow. Qof kastaa wuu farxay, miis ayuu ku daray, way ku dareen, way ku dareen...Guud ahaan, waxa soo baxday in habka aanu ugu darnay miisaska kaydka ahi aanu ahayn mid aad u fiicnayd ( aynu sidaa u dhigno). Miis kasta waxa aanu ku samaynay 16 xabbo, waxa aanu ku samaynay dhawr ilbiriqsi; Waxaan haysanay 20 miisas, miis kastana wuxuu helay 8 dhejis ilbiriqsi kasta - oo markan "Clickhouse" ayaa bilaabmay ... diiwaanada waxay bilaabeen inay hoos u dhigaan. Xitaa ma aysan dhex marin ... Nginx sida caadiga ah waxay lahayd wax xiiso leh oo haddii xiriirku ku dhamaado dusha sare, ka dibna waxay si fudud ugu soo celisay "502" dhammaan codsiyada cusub.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Oo halkan waxaan ku haynaa (waxaan eegay diiwaanka Clickhouse laftiisa) qiyaastii nus boqolkiiba codsiyada ayaa guuldareystay. Sidaa darteed, isticmaalka diskku wuxuu ahaa mid sarreeya, waxaa jiray wax badan oo isku dhafan. Hagaag, maxaan sameeyay? Dabiici ahaan, iskuma dhibin inaan ogaado sababta dhabta ah ee xidhiidhka iyo kor u kaca u dhammaaday.

Ku beddelashada nginx wakiil gadaale ah

Waxaan go'aansaday inaan u baahanahay inaan maareyno nafteena, uma baahnid inaan uga tagno nginx - nginx ma garanayo miisaska ku yaal Clickhouse, oo waxaan ku beddelay nginx wakiil gadaal ah, oo aan sidoo kale naftayda u qoray.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

muxuu sameynayaa? Waxay u shaqeysaa iyadoo lagu saleynayo maktabadda fasthttp “goshnoy”, taas oo ah, dhakhso badan, ugu dhakhsaha badan sida nginx. Waan ka xunahay, Igor, haddii aad joogtid halkan (xusuusnow: Igor Sysoev waa barnaamij-sameeyaha Ruushka kaas oo abuuray server-ka nginx). Way fahmi kartaa nooca weydiimaha kuwanu yihiin - GELI ama XUL - sidaas awgeed, waxay haysaa barkadaha isku xirka ee noocyada kala duwan ee weydiimaha.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Sidaa darteed, xitaa haddii aanaan haysan waqti aan ku dhamaystirno codsiyada gelinta, "doorashada" way gudbi doonaan, iyo liddi ku ah. Oo waxay xogta u kala qaybisaa miisaska kaydinta - oo leh bakhaar yar: haddii ay jiraan wax khalad ah, khaladaadka syntax, iyo wixii la mid ah - si ayan si weyn u saameynin xogta inteeda kale, sababtoo ah marka aan si fudud u galno miisaska kaydka, waxaan lahaa "bachi" yar, iyo dhammaan khaladaadka syntax kaliya saameeyay qaybtan yar; halkanna waxay horeba u saamayn doonaan kayd weyn. Yari waa 1 megabyte, yacni, ma yara.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Gelida isku-dubarid iyo beddelka nginx, waxay asal ahaan ka dhigtaa wax la mid ah kii ay nginx hore u samaysay - uma baahnid inaad tan u beddesho "Kittenhouse" maxalliga ah. Oo maadaama ay isticmaasho fasthttp, aad bay u dhakhso badan tahay - waxaad samayn kartaa in ka badan 100 kun oo codsi ilbiriqsi kasta hal gelis iyada oo loo marayo wakiil gadaale ah. Aragti ahaan, waxaad geli kartaa hal xariiq hal mar gudaha kittenhouse proxy reverse, laakiin dabcan taas ma samayno.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Nidaamku wuxuu bilaabay inuu u ekaado sidan: "Kittenhouse", kooxo wakiil ah oo ka soo horjeeda codsiyo badan oo miisaska ah iyo, markeeda, miisaska kaydinta waxay gelisaa kuwa ugu muhiimsan.

Killer waa xal ku meel gaar ah, Kitten waa xal waara

Tani waa dhibaato xiiso leh... Midkiin ma isticmaashay fasthttp? Yaa isticmaalay fasthttp codsiyada POST? Malaha, tani runtii ma ahayn in la sameeyo, sababtoo ah waxay u dejinaysaa jidhka codsiga si caadi ah, cabbirka kaydkayagana waxaa loo dejiyay 16 megabyte. Gelintu waxay joojisay sii wadida mar uun, iyo 16-megabyte xabbadood ayaa bilaabay inay ka yimaadaan dhammaan tobanaan kun oo adeegayaal, waxaana dhammaantood lagu xidhay xusuusta ka hor inta aan loo dirin Clickhouse. Sidaas awgeed, xusuustu way dhammaatay, Killer-ka-Xasuusta-ka-baxa ayaa yimid oo dilay wakiilkii kale (ama "Clickhouse", kaas oo aragti ahaan "cuni" ka badan karo wakiillada kale). Wareegii ayaa isa soo celiyay. Ma aha dhibaato aad u faraxsan. Inkasta oo aan ku turunturooday arrintan kaliya dhowr bilood oo qaliin ah ka dib.

Maxaan sameeyay? Mar labaad, runtii ma jecli inaan fahmo waxa dhabta ah ee dhacay. Waxaan u maleynayaa inay aad u caddahay inaadan ku mashquulin xusuusta. Ma aan xiri karin fasthttp, inkastoo aan isku dayay. Laakiin waxaan helay hab aan ku sameeyo si aan loo baahnayn in wax lagu dhejiyo, waxaanan la imid habkayga HTTP - waxaan u bixiyay KITTEN. Waa hagaag, waa macquul - "VK", "Kitten" ... Maxaa kale?

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Haddii codsi u yimaado server-ka habka Kitten, markaa adeeguhu waa inuu ka jawaabaa "meow" - si macquul ah. Haddii uu tan ka jawaabo, ka dibna waxaa loo arkaa inuu fahamsan yahay borotokoolkan, ka dibna waxaan dhexgaliyaa xiriirka (fasthttp wuxuu leeyahay habkan oo kale), xiriirkuna wuxuu galayaa habka "ceeriin". Maxaan ugu baahanahay? Waxaan rabaa inaan xakameeyo sida wax u akhrinta isku xirka TCP u dhaco. TCP waxay leedahay hanti cajiib ah: haddii qofna uusan wax ka akhrin dhinaca kale, markaa qoraalku wuxuu bilaabaa inuu sugo, xusuustana si gaar ah looguma kharash gareeyo tan.

Oo sidaas daraaddeed waxaan ka akhriyey ilaa 50 macaamiisha markiiba (laga bilaabo konton sababtoo ah konton waa hubaal inay ku filan tahay, xitaa haddii sicirku ka yimaado DC kale) ... Isticmaalka ayaa hoos u dhacay habkan ugu yaraan 20 jeer, laakiin aniga, si daacad ah , Ma aan qiyaasi karin wakhtiga saxda ah, sababtoo ah mar horeba macno la'aan (waxay mar hore gaartay heerka qaladka). Nidaamku waa binary, taas oo ah, waxa uu ka kooban yahay magaca miiska iyo xogta; ma jiraan madax-hoosaadyo http, markaa ma aan isticmaalin godka shabakadda (Uma baahni inaan la xiriiro daalacashada - waxaan sameeyay hab-maamuus ku habboon baahideena). Wax walbana isagay ku wanaagsanaayeen.

Miiska kaydka waa murugo

Dhawaan waxa aanu la kulanay sifo kale oo xiiso leh oo ah miisaska kaydinta. Dhibaatadani waa mid aad uga xanuun badan kuwa kale. Aynu qiyaasno xaaladdan: waxaad mar hore si firfircoon u isticmaalaysay Clickhouse, waxaad haysataa daraasiin server ah oo Clickhouse ah, waxaadna haysataa codsiyo waqti dheer qaadanaya in la akhriyo (aan dhahno, in ka badan 60 ilbiriqsi); Haddana, "dooro" oo bilaabmay ka hor "Beddelka" laguma dari doono shaxdan, "Beddelka" ma bilaaban doono - malaha qaar ka mid ah sifooyinka sida "Clickhouse" u shaqeeyo meeshaan. Ma laga yaabaa in tan la hagaajin karo? Mise suurtagal maaha?

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Guud ahaan, way caddahay in dhab ahaantii tani aysan ahayn dhibaato weyn, laakiin miisaska kaydinta waxay noqoneysaa mid aad u xanuun badan. Sababtoo ah, haddii, aynu nidhaahno, "Beddelka" wakhtigu kaa dhamaanayo (oo waxa laga yaabaa inay ku dhammaanayso martigeliyaha kale - maaha kaaga, laakiin nuqul, tusaale ahaan), markaa... Waxaad tirtirtay miiska kaydka, "Beddelkaaga" ( ama qaar kale oo martida loo yahay) waqti go'ay, ka dib "Beddelka" qalad ayaa dhacay) - weli waxaad u baahan tahay inaad hubiso in xogta sii socoto qorista: waxaad dib u abuurtaa miisaska kaydinta (sida waafaqsan nidaamka miiska waalidka), ka dibna "Beddelka" wuu dhex maraa, wuu dhamaanayaa ka dib, iyo kaydka miiska wuxuu bilaabmaa inuu ka duwan yahay schema ka waalidka. Iyada oo ku xidhan waxa "Beddelku" ahaa, gelintu waxa laga yaabaa in aanay aadin miiskan kaydka ah - tani waa mid murugo badan.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Waxa kale oo jirta calaamad noocan oo kale ah (laga yaabee in qof arkay) - waxa loo yaqaan query_thread_log noocyada cusub ee Clickhouse. By default, in version qaar ka mid ah waxaa jiray mid. Halkan waxaan ku ururinay 840 milyan oo diiwaan dhawr bilood gudaheed (100 gigabytes). Tani waxay sabab u tahay xaqiiqda ah in "gelinta" halkaas lagu qoray (laga yaabee hadda, habka, ma qorna). Sida aan kuu sheegay, "gelisyadayadu" way yar yihiin - waxaan haysanay "gelisyo" badan oo la geliyay miisaska kaydinta. Way caddahay in tani ay naafada tahay - kaliya waxaan kuu sheegayaa wixii aan ku arkay server-kayaga. Waa maxay sababtu? Tani waa dood kale oo ka dhan ah isticmaalka miisaska kaydinta! Spotty aad bay u murugaysan tahay.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Yaa ogaa in ninkan magaciisa uu yahay Spotty? Shaqaalaha VK ayaa gacmaha kor u taagay. OK

Ku saabsan qorshayaasha "KitttenHouse"

Qorshayaasha inta badan lama wadaago, sax? Si lama filaan ah ma fulin doontid iyaga oo si fiican uguma ekaan doontid indhaha dadka kale. Laakiin waan qaadan doonaa khatarta! Waxaan rabnaa inaan sameyno kuwan soo socda: miisaska wax-ka-qabashada, waxay iila muuqataa, inay wali yihiin qolof, waxaanan u baahanahay inaan nafteena ilaalino gelinta. Laakiin wali ma rabno in aan ku xidhno saxanka, markaa waxa aanu ku xidhi doonaa galinta xusuusta.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Sidaas awgeed, marka "gelinta" la sameeyo, ma sii ahaan doonto mid isku mid ah - waxay horeyba u shaqeyn doontaa sidii miis kayd ah, waxay gelin doontaa miiska waalidka (si fiican, maalin ka dib) waxayna ka warbixisaa kanaal gooni ah kaas oo gelinta uu gudbay ma laha.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Waa maxay sababta aan uga tagi la'yahay gelinta isku midka ah? Aad bay uga habboon tahay. Xaqiiqdu waxay tahay in haddii aad ka soo geliso 10 kun oo marti-geliyayaal ah, markaa wax walba waa fiican yihiin - waxaad ka heli doontaa wax yar oo ka mid ah martigeliyaha kasta, waxaad gelisaa hal mar ilbiriqsi, wax walbaa waa fiican yihiin. Laakiin waxaan jeclaan lahaa in nidaamkani uu shaqeeyo, tusaale ahaan, laba mashiin, si aad u soo dejisan karto xawaare sare - laga yaabee inaadan ka helin ugu badnaan Clickhouse, laakiin ku qor ugu yaraan 100 megabytes ilbiriqsi kasta hal mashiin iyada oo loo marayo wakiil gadaal ah - Habkani waa inuu miisaamaa tiro yar iyo mid weyn labadaba, markaa ma sugi karno ilbiriqsiyo gelin kasta, markaa waa inay noqotaa mid isku mid ah. Si la mid ah, xaqiijinta asynchronous waa in ay timaadaa ka dib gelinta la dhammeeyo. Waynu ogaan doonaa inay dhaaftay iyo in kale.

Waxa ugu muhiimsan waa in nidaamkan aan si hubaal ah u ogaanay in gelinta ay dhacday iyo in kale. Bal qiyaas xaaladdan: waxaad haysataa miis bakhaar ah, wax aad ku qortay, ka dibna, aynu nidhaahno, miiska ayaa galay habka akhrinta oo kaliya oo isku dayay inuu nadiifiyo baqshadda. Xaggee xogtu aadi doontaa? Waxay ku sii jiri doonaan kaydka Laakiin ma xaqiijin karno tan - ka waran haddii ay jirto qalad kale, taas oo ay ugu wacan tahay xogta aan ku sii jiri doonin kaydka ... Had iyo jeer? Alexey wuxuu nagu qanciyay in wax walba ay fiicnaan doonaan. Ma hayno sabab aanu u rumaysan waynay. Laakiin dhammaantood waa isku mid: haddii aynaan isticmaalin miisaska kaydinta, markaa ma jiri doonto wax dhibaato ah iyaga. Abuuritaanka miisaska laba jeer ka badan sidoo kale waa mid aan habooneyn, inkastoo mabda'a aysan jirin dhibaatooyin waaweyn. Qorshahani waa kan.

Aan ka hadalno wax akhriska

Hadda aan ka hadalno wax akhriska. Waxaan sidoo kale halkan ku qornay qalab noo gaar ah. Waxay u egtahay, si fiican, maxaad u qortaa qalabkaaga halkan?... Oo yaa isticmaalay Tabix? Si kastaba ha ahaatee dad yar ayaa gacmaha kor u taagay... Yaase ku qanacsan waxqabadkii Tabix? Hagaag, kuma faraxsana, mana aha mid aad ugu habboon daawashada xogta. Way ku fiican tahay falanqaynta, laakiin kaliya daawashada si cad looma hagaajin. Markaa waxaan qoray aniga oo iska leh, interface-kayga.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Aad bay u fududahay - waxay akhrin kartaa oo keliya xogta. Isagu ma yaqaan sida loo tuso garaafyada, ma yaqaan sida wax loo sameeyo. Laakiin waxay muujin kartaa waxa aan u baahanahay: tusaale ahaan, inta saf ee miiska ku jira, inta boos ee ay qaadanayso (iyada oo aan la jebin tiirarka), taas oo ah, interface aad u aasaasi ah waa waxa aan u baahanahay.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Waxayna u egtahay mid la mid ah Sequel Pro, laakiin kaliya ayaa lagu sameeyay Bootstrap-ka Twitter-ka, iyo nooca labaad. Waxaad waydiisaa: "Yuri, sababta nooca labaad?" Sannadkee? 2018? Guud ahaan, waxaan tan u sameeyay wakhti dheer ka hor "Muscle" (MySQL) oo kaliya bedelay dhowr xariiq oo su'aalo ah oo ku jira halkaas, oo ay u shaqeyso "Clickhouse", taas oo mahad gaar ah leh! Sababtoo ah falanqeeye wuxuu aad ugu eg yahay midka "muruqa", iyo su'aalaha aad u eg - aad u habboon, gaar ahaan marka hore.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Waa hagaag, waxay shaandheyn kartaa miisaska, waxay muujin kartaa qaabka iyo waxa ku jira miiska, waxay kuu ogolaaneysaa inaad kala soocdo, shaandhayso tiirar, waxay muujisaa weydiinta natiijada natiijada, safafka saameeya (inta natiijada), taas oo ah, waxyaabaha aasaasiga ah ee daawashada xogta. Aad u dhaqso badan.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Waxaa kaloo jira tafatire. Waxaan si daacad ah isku dayay inaan ka xado tifaftiraha guud ee Tabix, laakiin ma awoodin. Laakiin si uun bay u shaqaysaa. Mabda 'ahaan, waa intaas.

"Clickhouse" waxay ku habboon tahay godadka

Waxaan rabaa inaan kuu sheego in Clickhouse, in kasta oo dhammaan dhibaatooyinka lagu sharraxay, ay aad ugu habboon tahay logyada. Tan ugu muhiimsan, waxay xallisaa dhibaatadeena - aad bay u dhakhso badan tahay waxayna kuu ogolaaneysaa inaad ku shaandhayso tiirarka. Mabda 'ahaan, miisaska kaydinta si fiican uma aysan soo bixin, laakiin badanaa qofna ma garanayo sababta

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

TCP? Guud ahaan, VK waa caado in la isticmaalo UDP. Oo markii aan isticmaalay TCP ... Dabcan, ninna iima sheegin: "Yuri, maxaad ka hadlaysaa! Ma awoodid, waxaad u baahan tahay UDP. " Waxaa soo baxday in TCP aysan ahayn mid cabsi leh. Waxa kaliya ayaa ah, haddii aad haysato tobanaan kun oo xeryahooda firfircoon oo aad qorto, waxaad u baahan tahay inaad si taxadar leh u diyaariso; laakiin waa suurtogal, waana sahlan tahay.

Waxaan ballan qaaday inaan ku dhejin doono "Kittenhouse" iyo "Lighthouse" HighLoad Siberia haddii qof kastaa iska diiwaan galiyay dadweynahayaga "VK backend" dadweynaha. Weli aad baad u badan tihiin, qof xitaa wuu xanaaqi karaa, laakiin weli, fadlan rukunka (oo halkan waa inaan indhaha ka dhigaa sida kuwa bisadda). Taasi waa isku xidhka jidka. Aad ayaad u mahadsantahay! Github annagaa iska leh halkan. Clickhouse timahaagu waxay noqon doonaan kuwo jilicsan oo jilicsan.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Hogaaminaya: - Saaxiibayaal, hadda su'aalo. Isla ka dib markii aan soo bandhigno shahaadada mahadnaqa iyo warbixintaada VHS.

Yuri Nasretdinov (oo hadda loo yaqaan YN): - Sidee ugu suurtagashay inaad ku duubto warbixintayda VHS haddii ay hadda dhammaatay?

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Hogaaminaya: - Sidoo kale si buuxda uma go'aamin kartid sida "Clickhouse" u shaqeyn doono iyo in kale! Saaxiibada, 5 daqiiqo su'aalaha!

Su'aalahaada

Su'aal ka timid dhagaystayaashu (hadda dambe loo yaqaan Q): - Galab wanaagsan. Aad baad ugu mahadsantahay warbixinta. Waxaan qabaa laba su'aalood. Waxaan ku bilaabi doonaa wax aan macquul ahayn: tirada xarfaha t ee magaca "Kittenhouse" ee jaantusyada (3, 4, 7 ...) ma saameeyaan qanacsanaanta bisadaha?

YN: Waa maxay tirada?

Z: – Xarafka t. Waxaa jira saddex t's, meel ku dhow saddex t's.

YN: - Miyaanan hagaajin? Hagaag, dabcan way samaynaysaa! Kuwani waa badeecooyin kala duwan - waxaan ahaa kaliya ku khiyaaneeyay waqtigan oo dhan. Hagaag, waan kaftamayaa - dhib malahan. Ah, halkan! Maya, waa isla shay, waxaan sameeyay qoraal qoris ah.

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Z: - Mahadsanid. Su'aasha labaad waa halis. Ilaa hadda inta aan fahamsanahay, gudaha Clickhouse, miisaska kaydinta waxay ku nool yihiin si gaar ah xusuusta, laguma xirin saxanka, sidaas darteed, maaha kuwo joogto ah.

YN: - Haa.

Z: - Isla mar ahaantaana, macmiilkaagu wuxuu ku dhejiyaa diskka, taas oo tuseysa xoogaa dammaanad ah gaarsiinta kuwan la midka ah. Laakiin tani sinaba dammaanad ugama aha Clickhouse. Sharax sida dammaanadda loo fuliyo, maxaa sababay?... Waa tan habkan si faahfaahsan

YN: - Haa, aragti ahaan halkan ma jiraan wax is burinaya, sababtoo ah marka Clickhouse dhaco, waxaad dhab ahaantii ku ogaan kartaa hal milyan oo siyaabo kala duwan. Haddii Clickhouse uu shil galo (haddii uu si khalad ah u dhammaado), waxaad awoodi kartaa, qiyaas ahaan, inaad dib u soo celiso wax yar oo ka mid ah loggaaga aad qortay oo aad bilawdo wakhtiga ay wax waliba hagaageen. Aynu nidhaahno waxaad dib u soo celisaa hal daqiiqo, taas oo ah, waxaa loo arkaa inaad wax walba ku nadiifisay hal daqiiqo gudaheed.

Z: - Taasi waa, "Kittenhouse" waxay haysaa daaqadda wakhti dheer oo, haddii ay dhacdo, ma aqoonsan kartaa oo dib u celin kartaa?

YN: - Laakiin tani waa aragti. Ficil ahaan, ma samayno tan, iyo gaarsiinta la isku halayn karo waa eber ilaa waqtiyo aan xadidnayn. Laakiin celcelis ahaan hal. Waan ku qanacsanahay in haddii Clickhouse uu burburo sabab qaar ama adeegayaashu "dib u kiciyaan," ka dib waxaan luminay wax yar. Dhammaan kiisaska kale, waxba ma dhici doonaan.

Z: - Hello. Bilowgiiba waxa ay iigu muuqatay in aad isticmaalayso UDP bilawgii warbixinta. Waxaad haysaa http, intaas oo dhan... Iyo inta badan dhibaatooyinka aad ku qeexday, sida aan u fahmay, waxaa keenay xalkan gaarka ah...

YN: Maxaan isticmaalnaa TCP?

Z: - Dhab ahaantii haa.

YN: – waa

Z: - Waxa ay ahayd fasthttp in aad dhibaato kala kulanto, xiriirka aad la kulantay dhibaato. Haddii aad hadda isticmaali lahayd UDP waxaad badbaadin lahayd naftaada waqti. Hagaag, waxaa jiri lahaa dhibaatooyin fariimaha dhaadheer ama wax kale...

YN: Maxaa la socda?

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Z: - Farriimaha dhaadheer, maadaama laga yaabo inaysan ku habboonayn MTU, wax kale ... Hagaag, waxaa jiri kara dhibaatooyin iyaga u gaar ah. Su'aashu waxay tahay: maxaa diidaya UDP?

YN: - Waxaan aaminsanahay in qorayaasha horumariyay TCP/IP ay aad uga caqli badan yihiin aniga oo iga aqoon fiican yihiin sida loo kala saaro baakadaha (si ay u tagaan), isla markaana ay hagaajiyaan daaqadda soo dirida, ha ku xad-gudbin shabakada, jawaab celin ka bixi waxa aan la akhriyin, aan lagu tirin dhinaca kale ... Dhibaatooyinkan oo dhan, fikradeyda, waxay ku jiri lahaayeen UDP, kaliya waa inaan qoro xitaa kood ka badan intii aan hore u qoray si aan u fuliyo wax la mid ah naftayda iyo inta badan. liidata. Xitaa runtii ma jecli wax ku qorista C, iska daa halkaas...

Z: - Kaliya ku habboon! Waa loo diray ok oo waxba ha sugin - gabi ahaanba waa isku mid. Ogeysiis ayaa soo noqday in wax walba ay wanaagsan yihiin - taasi waxay ka dhigan tahay inay timid; Haddii aysan iman, waxay la macno tahay inay xun tahay.

YN: - Waxaan u baahanahay labadaba - Waxaan u baahanahay inaan awood u yeesho inaan ku diro labadaba dammaanad qaadis iyo dammaanad qaadis la'aan. Kuwani waa laba xaaladood oo kala duwan. Waxaan u baahanahay inaanan lumin qaar ka mid ah geedaha ama ma lumin sabab la'aan.

Z: - Waqti kuma lumin doono. Tani waxay u baahan tahay in wax badan laga hadlo. Mahadsanid.

Hogaaminaya: - Yaa su'aalo qaba - gacmaha cirka!

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

Z: - Hello, waxaan ahay Sasha. Meel ka mid ah bartamaha warbixinta, dareen ayaa u muuqday, marka lagu daro TCP, waxaa suurtagal ah in la isticmaalo xal diyaar ah - nooc ka mid ah Kafka.

YN: - Waa hagaag ... Waxaan kuu sheegay inaanan rabin inaan isticmaalo server-yada dhexdhexaadka ah, sababtoo ah ... Kafka, waxay soo baxday in aan haysano toban kun oo martigeliyayaal ah; dhab ahaantii, waxaan haysanaa in ka badan - tobanaan kun oo martigeliyayaal ah. Waxa kale oo ay noqon kartaa xanuun in lagu sameeyo Kafka iyada oo aan wax wakiil ah. Intaa waxaa dheer, tan ugu muhiimsan, waxay weli siisaa "daahitaanka", waxay ku siinaysaa martigelin dheeraad ah oo aad u baahan tahay inaad haysato. Laakiin ma rabo inaan haysto - waxaan rabaa ...

Z: "Laakiin aakhirkii waxay noqotay si kastaba."

YN: - Maya, ma jiraan martigeliyayaal! Dhammaan tani waxay ku shaqeysaa dadka martida loo yahay ee Clickhouse.

Z: - Waa hagaag, iyo "Kittenhouse", taas oo ah gadaal - halkee ayuu ku nool yahay?

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

YN: - Hoyga Clickhouse, waxba kuma qorto saxanka.

Z: - Aynu ka soo qaadno.

Hogaaminaya: – Ma ku qanacsan tahay? Ma ku siin karnaa mushahar?

Z: - Haa, waad awoodaa. Dhab ahaantii, waxaa jira wax badan oo kabo ah si loo helo wax la mid ah, iyo hadda - jawaabtii hore ee mawduuca TCP ayaa ka soo horjeeda, fikradeyda, xaaladdan. Waxay ila tahay in wax walba lagu samayn karo jilbahayga waqti aad u yar.

YN: - Iyo sidoo kale sababta aanan u rabin inaan isticmaalo Kafka, sababtoo ah waxaa jiray cabashooyin badan oo ku jiray wada sheekeysiga Clickhouse Telegram taas oo, tusaale ahaan, farriimaha Kafka laga lumay. Ma aha Kafka lafteeda, laakiin isdhexgalka Kafka iyo Clickhaus; ama wax aan halkaas isku xirin. Ku dhawaad ​​hadalka, waxa lagama maarmaan noqon doonta in markaa loo qoro macmiil Kafka. Uma malaynayo in uu jiri karo xal ka fudud ama la isku halayn karo.

Z: – Ii sheeg, maxaad u tijaabin wayday safafka ama nooc ka mid ah baska caadiga ah? Mar haddii aad tiraahdo asynchrony waxaad soo diri kartaa logyada laftooda safka oo aad ka heli kartaa jawaabta si isku mid ah safka?

HighLoad++, Yuri Nasretdinov (VKontakte): sida VK u geliso xogta ClickHouse ee tobanaan kun oo server ah

YN: - Fadlan soo jeedi waa maxay safafka la isticmaali karaa?

Z: - Mid kasta, xitaa iyada oo aan la helin dammaanad ah in ay nidaamsan yihiin. Nooc ka mid ah Redis, RMQ...

YN: - Waxaan dareemayaa in Redis ay u badan tahay inaysan awoodi doonin inay soo jiidato mugga galinta xitaa hal marti (macnaha dhowr adeegayaal) oo soo jiidaya Clickhouse. Kuma soo celin karo tan wax caddayn ah (ma aanan qiyaasin), laakiin waxay iila muuqataa in Redis aanu ahayn xalka ugu fiican halkan. Mabda 'ahaan, nidaamkan waxaa loo tixgelin karaa inuu yahay saf fariin ah oo la hagaajiyay, laakiin kaas oo loogu talagalay kaliya "Clickhouse"

Hogaaminaya: – Yuri, aad baad u mahadsantahay. Waxaan soo jeedinayaa in su'aalaha iyo jawaabaha halkan lagu soo afjaro oo aan sheego cidda su'aasha waydiisay ee aan siin doono buugga.

YN: – Waxaan jeclaan lahaa inaan buug siiyo qofkii ugu horreeyay ee su’aal weydiiyey.

Hogaaminaya: - Cajiib! Wayn! Cajiib! Aad baad u mahadsantahay!

Xayeysiisyada qaar 🙂

Waad ku mahadsan tahay inaad nala joogto. Ma jeceshahay maqaalladayada? Ma doonaysaa inaad aragto wax badan oo xiiso leh? Nagu taageer adigoo dalbanaya amar ama kula talinaya asxaabta, Cloud VPS ee horumariyeyaasha laga bilaabo $ 4.99, analoog gaar ah oo ah server-yada heerka gelitaanka, kaas oo anaga aanu adiga kuu hindisay: Xaqiiqada oo dhan ee ku saabsan VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps laga bilaabo $19 ama sida loo wadaago server? (waxaa laga heli karaa RAID1 iyo RAID10, ilaa 24 cores iyo ilaa 40GB DDR4).

Dell R730xd 2x ka jaban xarunta xogta Equinix Tier IV ee Amsterdam? Kaliya halkan 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV laga bilaabo $199 Nederlaan! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - laga bilaabo $99! Wax ka akhri Sida loo dhiso infrastructure Corp. fasalka iyadoo la adeegsanayo Dell R730xd E5-2650 v4 servers oo qiimahoodu yahay 9000 euro dinaar?

Source: www.habr.com

Add a comment