HighLoad++ Moska 2018, Sala tal-Kungress. 9 ta’ Novembru, 15:00
Astratti u preżentazzjoni:
Yuri Nasretdinov (VKontakte): ir-rapport se jitkellem dwar l-esperjenza tal-implimentazzjoni ta 'ClickHouse fil-kumpanija tagħna - għaliex għandna bżonnha, kemm naħżnu dejta, kif niktbuha, eċċ.
Materjali addizzjonali:
Yuri Nasretdinov: - Hi kollha! Jisimni Yuri Nasretdinov, peress li diġà ġejt introdott. Jien naħdem fil-VKontakte. Se nitkellem dwar kif indaħħlu d-dejta fi ClickHouse mill-flotta tas-server tagħna (għexieren ta’ eluf).
X'inhuma zkuk u għaliex tiġborhom?
X'se ngħidulek: dak li għamilna, għaliex kellna bżonn "ClickHouse", rispettivament, għaliex għażilna, x'tip ta 'prestazzjoni tista' tikseb bejn wieħed u ieħor mingħajr ma tikkonfigura xejn apposta. Ngħidlek aktar dwar il-buffer tables, dwar il-problemi li kellna magħhom u dwar is-soluzzjonijiet tagħna li żviluppajna minn sors miftuħ - KittenHouse u Lighthouse.
Għaliex kellna bżonn nagħmlu xejn (kollox dejjem tajjeb fuq VKontakte, hux?). Ridna niġbru logs tad-debug (u kien hemm mijiet ta 'terabytes ta' dejta hemmhekk), forsi b'xi mod ikun aktar konvenjenti li tikkalkula l-istatistika; u għandna flotta ta' għexieren ta' eluf ta' servers li minnhom irid isir dan kollu.
Għaliex iddeċidejna? Probabilment kellna soluzzjonijiet għall-ħażna taz-zkuk. Hawnhekk - hemm tali "Backend VK" pubbliku. Nirrakkomanda ħafna li tissottoskrivi għaliha.
X'inhuma zkuk? Din hija magna li tirritorna arrays vojta. Magni f'VK huma dak li oħrajn isejħu mikroservizzi. U hawn stiker li jitbissem (pjuttost ħafna likes). Kif? Ukoll, isma 'aktar!
X'jista' jintuża biex jaħżnu zkuk? Impossibbli li ma nsemmux lil Hadup. Imbagħad, pereżempju, Rsyslog (li jaħżnu dawn ir-zkuk fil-fajls). LSD. Min jaf x'inhu l-LSD? Le, mhux dan l-LSD. Aħżen fajls, rispettivament, ukoll. Ukoll, ClickHouse hija għażla stramba.
Clickhouse u kompetituri: rekwiżiti u opportunitajiet
Xi rridu? Irridu niżguraw li m'għandniex għalfejn ninkwetaw wisq dwar l-operazzjoni, sabiex taħdem barra mill-kaxxa, preferibbilment b'konfigurazzjoni minima. Irridu niktbu ħafna, u niktbu malajr. U rridu nżommuha għal kull xorta ta’ xhur, snin, jiġifieri għal żmien twil. Forsi rridu nifhmu xi problema li ġew għandna u qalu, "Xi ħaġa mhix qed taħdem hawn," u dan kien 3 xhur ilu), u rridu nkunu nistgħu naraw x'ġara 3 xhur ilu " Kompressjoni tad-dejta - huwa ċar għaliex ikun plus - għaliex inaqqas l-ammont ta 'spazju li jieħu.
U għandna tali rekwiżit interessanti: aħna kultant niktbu l-output ta 'xi kmandi (per eżempju, zkuk), jista' jkun aktar minn 4 kilobytes pjuttost faċilment. U jekk din il-ħaġa taħdem fuq UDP, allura m'għandhiex għalfejn tonfoq ... ma jkollha ebda "overhead" għall-konnessjoni, u għal numru kbir ta 'servers dan ikun plus.
Ejja naraw x'joffrilna l-open source. L-ewwelnett, għandna l-Magna ta 'Zkuk - din hija l-magna tagħna; Fil-prinċipju, jista 'jagħmel kollox, jista' anke jikteb linji twal. Ukoll, ma tikkompressax id-dejta b'mod trasparenti - nistgħu nikkompressaw kolonni kbar aħna stess jekk irridu... aħna, ovvjament, ma rridux (jekk possibbli). L-unika problema hi li jaf jagħti biss dak li jidħol fil-memorja tiegħu; Biex taqra l-bqija, għandek bżonn tikseb il-binlog ta 'din il-magna u, għaldaqstant, huwa pjuttost twil.
X'għażliet oħra hemm? Per eżempju, "Hadup". Faċilità ta' tħaddim... Min jaħseb li Hadup huwa faċli biex jitwaqqaf? Naturalment, m'hemm l-ebda problemi bir-reġistrazzjoni. Meta taqra, kultant iqumu mistoqsijiet. Fil-prinċipju, jien ngħid probabbilment le, speċjalment għal zkuk. Ħażna fit-tul - ovvjament, iva, kompressjoni tad-dejta - iva, kordi twal - huwa ċar li tista 'tirreġistra. Imma rrekordjar minn numru kbir ta' servers... Xorta trid tagħmel xi ħaġa lilek innifsek!
Rsyslog. Fil-fatt, użajna bħala għażla ta 'backup sabiex inkunu nistgħu naqrawha mingħajr dumping il-binlog, iżda ma tistax tikteb linji twal; fil-prinċipju, ma tistax tikteb aktar minn 4 kilobytes. Int trid tagħmel kompressjoni tad-data bl-istess mod lilek innifsek. Il-qari se jiġi minn fajls.
Imbagħad hemm l-iżvilupp "badushka" ta 'LSD. Essenzjalment l-istess bħal "Rsyslog": isostni kordi twal, iżda ma jistax jaħdem permezz ta 'UDP u, fil-fatt, minħabba dan, sfortunatament, hemm bżonn li jinkitbu mill-ġdid ħafna affarijiet. L-LSD jeħtieġ li jiġi ddisinjat mill-ġdid biex ikun jista' jirreġistra minn għexieren ta' eluf ta' servers.
U hawn! Għażla umoristiċi hija ElasticSearch. Kif tgħid? Huwa sejjer tajjeb fil-qari, jiġifieri jaqra malajr, iżda mhux tajjeb ħafna bil-kitba. L-ewwelnett, jekk tikkompressa d-data, hija dgħajfa ħafna. Ħafna probabbli, tfittxija sħiħa teħtieġ strutturi tad-dejta akbar mill-volum oriġinali. Huwa diffiċli li topera u spiss jinqalgħu problemi magħha. U, għal darb'oħra, ir-reġistrazzjoni f'Elastic - irridu nagħmlu kollox aħna.
Hawnhekk ClickHouse hija għażla ideali, ovvjament. L-unika ħaġa hija li r-reġistrazzjoni minn għexieren ta 'eluf ta' servers hija problema. Imma għallinqas hemm problema waħda, nistgħu nippruvaw insolvuha b'xi mod. U l-bqija tar-rapport huwa dwar din il-problema. X'tip ta' prestazzjoni tista' tistenna minn ClickHouse?
Kif ser indaħħluha? MergeTree
Min minnkom ma semax jew ma jafx dwar "ClickHouse"? Għandi bżonn ngħidlek, hux? Mgħaġġel ħafna. L-inserzjoni hemmhekk - 1-2 gigabits kull sekonda, fqigħ ta 'sa 10 gigabits kull sekonda fil-fatt jistgħu jifilħu din il-konfigurazzjoni - hemm żewġ Xeons 6-core (jiġifieri, lanqas l-aktar qawwija), 256 gigabytes ta' RAM, 20 terabytes f'RAID (ħadd ma kkonfigurat, settings default). Alexey Milovidov, l-iżviluppatur tal-ClickHouse, probabbilment qiegħed hemm jibki għax ma kkonfigurajna xejn (kollox ħadem hekk għalina). Għaldaqstant, tista' tinkiseb veloċità tal-iskannjar ta', ngħidu aħna, madwar 6 biljun linja kull sekonda jekk id-dejta tkun kompressata sew. Jekk inti tixtieq % fuq string ta 'test - 100 miljun linja kull sekonda, jiġifieri, jidher pjuttost mgħaġġel.
Kif ser indaħħluha? Ukoll, taf li VK juża PHP. Aħna se daħħal minn kull ħaddiem PHP permezz ta 'HTTP fi "ClickHouse", fit-tabella MergeTree għal kull rekord. Min jara problema b’din l-iskema? Għal xi raġuni, mhux kulħadd għolla jdejh. Ħa ngħidilkom.
L-ewwelnett, hemm ħafna servers - għalhekk, se jkun hemm ħafna konnessjonijiet (ħżiena). Imbagħad ikun aħjar li ddaħħal id-dejta f'MergeTree mhux aktar spiss minn darba kull sekonda. U min jaf għaliex? Okay, okay. Jien ngħidlek ftit aktar dwar dan. Mistoqsija oħra interessanti hija li m'aħniex nagħmlu analitika, m'għandniex bżonn li nkabbru d-dejta, m'għandniex bżonn servers intermedji, irridu daħħal direttament f'"ClickHouse" (preferibbilment - l-aktar direttament, l-aħjar).
Għaldaqstant, kif isir l-inserzjoni f'MergeTree? Għaliex huwa aħjar li daħħal fiha mhux aktar spiss minn darba kull sekonda jew inqas spiss? Il-fatt hu li "ClickHouse" hija database ta 'kolonni u tissortja d-dejta f'ordni axxendenti taċ-ċavetta primarja, u meta tagħmel inserzjoni, jinħolqu għadd ta' fajls mill-inqas ugwali għan-numru ta 'kolonni li fihom id-dejta hija magħżula. f'ordni axxendenti taċ-ċavetta primarja (jinħoloq direttorju separat, sett ta 'fajls fuq disk għal kull inserzjoni). Imbagħad tiġi l-inserzjoni li jmiss, u fl-isfond huma magħquda f'"diviżorji" akbar. Peress li d-data hija magħżula, huwa possibbli li "jgħaqqad" żewġ fajls magħżula mingħajr ma tikkonsma ħafna memorja.
Iżda, kif tista' taħsbu, jekk tikteb 10 fajls għal kull inserzjoni, allura ClickHouse (jew is-server tiegħek) jispiċċa malajr, għalhekk huwa rakkomandat li daħħal f'lottijiet kbar. Għaldaqstant, qatt ma nedejna l-ewwel skema fil-produzzjoni. Immedjatament nedejna waħda, li hawn Nru 2 għandha:
Hawnhekk immaġina li hemm madwar elf server li nedejna, hemm biss PHP. U fuq kull server hemm l-aġent lokali tagħna, li sejjaħna "Kittenhouse", li jżomm konnessjoni waħda ma '"ClickHouse" u jdaħħal id-dejta kull ftit sekondi. Daħħal id-dejta mhux f'MergeTree, iżda f'tabella buffer, li sservi preċiżament biex tevita li tiddaħħal direttament f'MergeTree minnufih.
Ħidma ma 'tabelli buffer
X'inhu? It-tabelli tal-buffer huma biċċa memorja li hija sharded (jiġifieri, tista 'tiddaħħal fiha ta' spiss). Huma jikkonsistu f'diversi biċċiet, u kull waħda mill-biċċiet taħdem bħala buffer indipendenti, u huma mlaħalħa b'mod indipendenti (jekk għandek ħafna biċċiet fil-buffer, allura jkun hemm ħafna inserzjonijiet kull sekonda). Huwa possibbli li taqra minn dawn it-tabelli - allura taqra l-unjoni tal-kontenut tal-buffer u t-tabella ġenitur, iżda f'dan il-mument il-kitba hija mblukkata, għalhekk huwa aħjar li ma taqrax minn hemm. U t-tabelli tal-buffer juru QPS tajjeb ħafna, jiġifieri, sa 3 QPS ma jkollokx problemi meta ddaħħal. Huwa ċar li jekk is-server jitlef il-qawwa, allura d-dejta tista 'tintilef, minħabba li kienet maħżuna biss fil-memorja.
Fl-istess ħin, l-iskema b'buffer tikkomplika ALTER, għax l-ewwel trid twaqqa' t-tabella tal-buffer il-qadima bl-iskema l-antika (id-dejta ma tisparixxi mkien, għax se titlaħlaħ qabel ma titħassar it-tabella). Imbagħad int "tbiddel" it-tabella li għandek bżonn u terġa' toħloq it-tabella tal-buffer. Għaldaqstant, filwaqt li m'hemm l-ebda tabella ta 'buffer, id-dejta tiegħek ma tiċċirkola imkien, iżda jista' jkollokha fuq disk tal-inqas lokalment.
X'inhu Kittenhouse u kif taħdem?
X'inhu KittenHouse? Dan huwa prokura. Aqta liema lingwa? Ġbart l-aktar suġġetti hype fir-rapport tiegħi - "Clickhouse", Mur, forsi niftakar xi ħaġa oħra. Iva, dan huwa miktub f'Go, għax ma tantx naf kif nikteb f'Ċ, ma rridx.
Għaldaqstant, iżomm konnessjoni ma 'kull server u jista' jikteb fil-memorja. Per eżempju, jekk niktbu zkuk ta 'żbalji lil Clickhouse, allura jekk Clickhouse ma jkollhiex ħin biex iddaħħal id-dejta (wara kollox, jekk ikun miktub wisq), allura ma ntefħux il-memorja - aħna sempliċement nefgħu l-bqija. Għax jekk niktbu diversi gigabits kull sekonda ta 'żbalji, allura nistgħu probabbilment tarmi xi wħud barra. Kittenhouse tista 'tagħmel dan. Barra minn hekk, jista 'jwettaq kunsinna affidabbli, jiġifieri, jikteb fuq disk fuq il-magna lokali u darba kull darba (hemm, darba kull ftit sekondi) jipprova jagħti data minn dan il-fajl. U għall-ewwel użajna l-format regolari tal-Valuri - mhux xi format binarju, format tat-test (bħal fl-SQL regolari).
Imma mbagħad ġara dan. Użajna konsenja affidabbli, ktibna zkuk, imbagħad iddeċidejna (kien cluster tat-test kondizzjonali)... Inħareġ għal diversi sigħat u nġabret lura, u bdiet inserzjoni minn elf server - irriżulta li Clickhouse għad kellu "Thread on connection" - għalhekk, f'elf konnessjoni, inserzjoni attiva twassal għal medja ta 'tagħbija fuq is-server ta' madwar elf u nofs. B'mod sorprendenti, is-server aċċetta talbiet, iżda d-dejta kienet għadha mdaħħla wara xi żmien; iżda kien diffiċli ħafna għas-server li jserviha...
Żid nginx
Soluzzjoni bħal din għall-mudell Thread għal kull konnessjoni hija nginx. Installajna nginx quddiem Clickhouse, fl-istess ħin waqqafna l-ibbilanċjar għal żewġ repliki (il-veloċità tal-inserzjoni tagħna żdiedet b'2 darbiet, għalkemm mhuwiex fatt li dan għandu jkun il-każ) u llimita n-numru ta 'konnessjonijiet għal Clickhouse, għall- upstream u, għalhekk, aktar minn 50 konnessjoni, jidher li m'hemm l-ebda skop li tiddaħħal.
Imbagħad indunajna li din l-iskema ġeneralment għandha żvantaġġi, għaliex għandna nginx wieħed biss hawn. Għaldaqstant, jekk din nginx tiġġarraf, minkejja l-preżenza ta 'repliki, nitilfu d-dejta jew, għall-inqas, ma niktbu mkien. C'est pourquoi għamilna l-ibbilanċjar tat-tagħbija tagħna stess. Indunaw ukoll li "Clickhouse" għadu adattat għal zkuk, u d-"dimonju" beda wkoll jikteb zkuk tiegħu fi "Clickhouse" - konvenjenti ħafna, biex inkun onest. Għadna nużawha għal "demons" oħra.
Imbagħad skoprejna din il-problema interessanti: jekk tuża metodu mhux standard ta 'ddaħħal fil-modalità SQL, iġġiegħel parser SQL sħiħ ibbażat fuq AST, li huwa pjuttost bil-mod. Għaldaqstant, żidna settings biex niżguraw li dan qatt ma jiġri. Għamilna load balancing, kontrolli tas-saħħa, sabiex jekk wieħed imut, xorta nħallu d-data. Issa għandna ħafna tabelli li għandna bżonn ikollna clusters ta' Clickhouse differenti. U bdejna wkoll naħsbu dwar użi oħra - pereżempju, ridna niktbu zkuk minn moduli nginx, iżda ma jafux kif jikkomunikaw bl-użu tal-RPC tagħna. Ukoll, nixtieq ngħallimhom kif jibagħtu mill-inqas b'xi mod - pereżempju, biex jirċievu avvenimenti fuq localhost permezz tal-UDP u mbagħad jgħadduhom lil Clickhouse.
Pass 'il bogħod mis-soluzzjoni
L-iskema finali bdiet tidher bħal din (ir-raba 'verżjoni ta' din l-iskema): fuq kull server quddiem Clickhouse hemm nginx (fuq l-istess server) u sempliċement tipprokura talbiet lil localhost b'limitu fuq in-numru ta 'konnessjonijiet ta' 50 biċċiet. U din l-iskema kienet diġà taħdem pjuttost, kollox kien pjuttost tajjeb magħha.
Aħna għexu hekk għal madwar xahar. Kulħadd kien kuntent, żiedu t-tabelli, żiedu, żiedu... B'mod ġenerali, irriżulta li l-mod kif żidna l-buffer tables ma tantx kien ottimali (ejja ngħidu hekk). Għamilna 16-il biċċa f'kull tabella u intervall ta' flash ta' ftit sekondi; kellna 20 tabella u kull tabella rċeviet 8 inserzjonijiet kull sekonda - u f'dan il-punt bdiet "Clickhouse"... ir-rekords bdew jonqsu. Lanqas għaddew minn ... Nginx awtomatikament kellu ħaġa tant interessanti li jekk il-konnessjonijiet spiċċaw fl-upstream, allura sempliċement irritorna "502" għat-talbiet il-ġodda kollha.
U hawn għandna (biss ħares lejn iż-zkuk f'Clickhouse innifsu) madwar nofs fil-mija tat-talbiet fallew. Għaldaqstant, l-użu tad-disk kien għoli, kien hemm ħafna amalgamazzjonijiet. Ukoll, x'għamilt? Naturalment, ma ddejjaqtx nifhem għaliex eżattament il-konnessjoni u l-upstream spiċċaw.
Tissostitwixxi nginx bi prokura inversa
Iddeċidejt li rridu namministraw dan aħna stess, m'għandniex bżonn inħalluh f'nginx - nginx ma jafx x'tabelli hemm f'Clickhouse, u ssostitwijt nginx b'reverse proxy, li ktibt ukoll jien.
X'inhu jagħmel? Jaħdem ibbażat fuq il-librerija fasthttp "goshnoy", jiġifieri malajr, kważi malajr daqs nginx. Jiddispjacini, Igor, jekk int preżenti hawn (nota: Igor Sysoev huwa programmatur Russu li ħoloq is-server tal-web nginx). Jista' jifhem x'tip ta' mistoqsijiet huma dawn - DĦALLA jew AGĦŻEL - għaldaqstant, iżomm pools ta' konnessjoni differenti għal tipi differenti ta' mistoqsijiet.
Għaldaqstant, anki jekk ma jkollniex ħin biex inlestu t-talbiet għall-inserzjoni, il-“jagħżel” jgħaddi, u viċi versa. U jiġbor id-dejta f'tabelli buffer - b'buffer żgħir: jekk kien hemm xi żbalji, żbalji sintassi, eċċ - sabiex ma jaffettwawx ħafna l-bqija tad-dejta, għax meta aħna sempliċement daħħalna fit-tabelli buffer, aħna kellha "bachi" żgħira, u l-iżbalji kollha tas-sintassi affettwaw biss din il-biċċa żgħira; u hawn diġà se jaffettwaw buffer kbir. Żgħir huwa 1 megabyte, jiġifieri mhux daqshekk żgħir.
Iddaħħal sinkronizzazzjoni u essenzjalment tissostitwixxi nginx, essenzjalment tagħmel l-istess ħaġa li nginx għamel qabel - m'għandekx bżonn tibdel il-"Kittenhouse" lokali għal dan. U peress li juża fasthttp, huwa mgħaġġel ħafna - tista 'tagħmel aktar minn 100 elf talba kull sekonda għal inserzjonijiet singoli permezz ta' prokura inversa. Teoretikament, tista 'ddaħħal linja waħda kull darba fil-prokura inversa tal-kittenhouse, iżda ovvjament ma nagħmlux hekk.
L-iskema bdiet tidher bħal din: "Kittenhouse", il-prokura inversa tiġbor ħafna talbiet f'tabelli u, min-naħa tagħhom, it-tabelli tal-buffer idaħħluhom f'dawk prinċipali.
Killer hija soluzzjoni temporanja, Kitten hija permanenti
Din hija problema interessanti... Xi ħadd minnkom uża fasthttp? Min uża fasthttp b'talbiet POST? Probabbilment, dan verament ma kellux isir, minħabba li jibferja l-korp tat-talba awtomatikament, u d-daqs tal-buffer tagħna kien issettjat għal 16 megabytes. L-inserzjoni waqfet tlaħħaq f'xi punt, u biċċiet ta' 16-il megabyte bdew jaslu mill-għexieren ta' eluf ta' servers kollha, u kollha ġew ibuffjati fil-memorja qabel ma ntbagħtu lil Clickhouse. Għaldaqstant, il-memorja spiċċat, il-Killer Out-Of-Memory daħal u qatel il-prokura inversa (jew "Clickhouse", li teoretikament tista '"tiekol" aktar mill-prokura inversa). Iċ-ċiklu rrepeti ruħu. Mhux problema pjaċevoli ħafna. Għalkemm aħna tfixkilna fuq dan biss wara diversi xhur ta 'operazzjoni.
Dak li għamilt? Għal darb'oħra, ma tantx inħobb nifhem x'ġara eżattament. Naħseb li huwa pjuttost ovvju li inti m'għandekx buffer fil-memorja. I ma setgħux garża fasthttp, għalkemm I ppruvaw. Imma sibt mod biex nagħmilha sabiex ma kien hemm l-ebda ħtieġa li garża xejn, u ħarġt bil-metodu tiegħi stess fl-HTTP - sejjaħtlu KITTEN. Ukoll, huwa loġiku - "VK", "Kitten"... X'iktar?...
Jekk talba tasal lis-server bil-metodu Kitten, allura s-server għandu jirrispondi "meow" - loġikament. Jekk iwieġeb għal dan, allura jitqies li jifhem dan il-protokoll, u mbagħad ninterċetta l-konnessjoni (fasthttp għandu metodu bħal dan), u l-konnessjoni tidħol fil-modalità "mhux maħduma". Għaliex għandi bżonnha? Irrid nikkontrolla kif iseħħ il-qari minn konnessjonijiet TCP. TCP għandu proprjetà mill-isbaħ: jekk ħadd ma jkun qed jaqra min-naħa l-oħra, allura l-kitba tibda tistenna, u l-memorja ma tintefaqx b'mod partikolari fuq dan.
U allura naqra minn madwar 50 klijent kull darba (minn ħamsin għax żgur li ħamsin għandhom ikunu biżżejjed, anke jekk ir-rata tiġi minn DC ieħor)... Il-konsum naqas b’dan l-approċċ mill-inqas 20 darba, imma jien, biex inkun onest , Ma stajtx inkejjel eżattament liema ħin, għax diġà huwa bla sens (diġa laħaq il-livell ta 'żball). Il-protokoll huwa binarju, jiġifieri fih l-isem tat-tabella u d-dejta; m'hemm l-ebda headers http, għalhekk ma użajtx web socket (m'għandix bżonn nikkomunika mal-browsers - għamilt protokoll li jaqbel mal-bżonnijiet tagħna). U kollox sar tajjeb miegħu.
It-tabella tal-buffer hija imdejjaq
Riċentement iltqajna ma 'karatteristika oħra interessanti ta' tabelli buffer. U din il-problema diġà hija ħafna aktar koroh mill-oħrajn. Ejja nimmaġinaw din is-sitwazzjoni: diġà qed tuża Clickhouse b'mod attiv, għandek għexieren ta 'servers ta' Clickhouse, u għandek xi talbiet li jieħdu ħafna żmien biex taqraw (ejja ngħidu, aktar minn 60 sekonda); u inti tiġi u tagħmel Alter f'dan il-mument... Sadanittant, "jagħżel" li beda qabel "Alter" mhux se jiġu inklużi f'din it-tabella, "Alter" mhux se jibda - probabbilment xi karatteristiċi ta 'kif taħdem "Clickhouse" fi dan il-post. Forsi dan jista 'jiġi ffissat? Jew impossibbli?
B'mod ġenerali, huwa ċar li fir-realtà din mhix problema daqshekk kbira, iżda b'tabelli buffer issir aktar uġigħ. Għax, jekk, ejja ngħidu, it-timeouts "Alter" tiegħek (u jista 'jispiċċa fuq host ieħor - mhux fuq tiegħek, iżda fuq replika, pereżempju), allura... Int ħassart it-tabella tal-buffer, "Alter" tiegħek ( jew xi host ieħor) skada. imbagħad seħħ żball "Alter") - xorta trid tiżgura li d-dejta tkompli tinkiteb: inti toħloq it-tabelli tal-buffer lura (skond l-istess skema tat-tabella ġenitur), imbagħad "Alter" jgħaddi, jispiċċa wara kollox, u l-buffer it-tabella jibda jvarja fl-iskema mill-ġenitur. Skont x'kienet l-"Alter", l-inserzjoni tista' ma tibqax tmur għal din it-tabella tal-buffer - dan huwa diqa ħafna.
Hemm ukoll sinjal bħal dan (forsi xi ħadd innotah) - jissejjaħ query_thread_log f'verżjonijiet ġodda ta 'Clickhouse. B'mod awtomatiku, f'xi verżjoni kien hemm waħda. Hawnhekk akkumulajna 840 miljun rekord fi ftit xhur (100 gigabytes). Dan huwa minħabba l-fatt li "inserts" inkitbu hemm (forsi issa, bil-mod, mhumiex miktuba). Kif għedtilkom, "inserts" tagħna huma żgħar - kellna ħafna "inserts" fit-tabelli buffer. Huwa ċar li dan huwa diżattivat - qed ngħidlek biss dak li rajt fuq is-server tagħna. Għaliex? Dan huwa argument ieħor kontra l-użu ta' buffer tables! Spotty huwa imdejjaq ħafna.
Min kien jaf li dan il-bniedem jismu Spotty? L-impjegati tal-VK għollew idejhom. KOLLOX SEW.
Dwar il-pjanijiet għal "KitttenHouse"
Il-pjanijiet normalment ma jkunux kondiviżi, hux? F'daqqa waħda mhux se tissodisfahom u mhux se tidher tajba ħafna f'għajnejn nies oħra. Imma nieħu r-riskju! Irridu nagħmlu dan li ġej: buffer tables, jidhirli, għadhom crutch u għandna bżonn nibferu l-inserzjoni aħna stess. Imma għadna ma rridux nibferuha fuq id-diska, għalhekk aħna nibferu l-inserzjoni fil-memorja.
Għaldaqstant, meta ssir "inserzjoni", ma tibqax aktar sinkronika - diġà se taħdem bħala buffer table, se tiddaħħal fit-tabella ġenitur (sewwa, xi darba wara) u tirrapporta permezz ta' kanal separat liema inserzjonijiet għaddew u liema. ma jkollhomx.
Għaliex ma nistax inħalli l-inserzjoni sinkronika? Huwa ħafna aktar konvenjenti. Il-fatt hu li jekk daħħal minn 10 elf hosts, allura kollox huwa tajjeb - ikollok xi ftit minn kull ospitanti, daħħal hemm darba kull sekonda, kollox tajjeb. Imma nixtieq li din l-iskema taħdem, pereżempju, minn żewġ magni, sabiex tkun tista 'tniżżel b'veloċità għolja - forsi ma tieħux il-massimu minn Clickhouse, iżda tikteb mill-inqas 100 megabytes kull sekonda minn magna waħda permezz ta' prokura inversa - dan l-iskema trid tiskala kemm għal kwantitajiet kbar kif ukoll żgħar, għalhekk ma nistgħux nistennew sekonda għal kull inserzjoni, għalhekk għandha tkun asinkronika. U bl-istess mod, konfermi asinkroniċi għandhom jiġu wara li l-inserzjoni tkun tlestiet. Inkunu nafu jekk għadda jew le.
L-iktar ħaġa importanti hija li f’din l-iskema nafu żgur jekk l-inserzjoni saret jew le. Immaġina din is-sitwazzjoni: għandek tabella buffer, ktibt xi ħaġa fiha, u mbagħad, ejja ngħidu, it-tabella daħlet fil-modalità read only u ppruvat tlaħlaħ il-buffer. Fejn se tmur id-data? Huma se jibqgħu fil-buffer. Imma ma nistgħux inkunu ċerti minn dan - x'jiġri jekk ikun hemm xi żball ieħor, li minħabba fih id-dejta ma tibqax fil-buffer... (Jindirizza lil Alexey Milovidov, Yandex, l-iżviluppatur ClickHouse) Jew se tibqa '? Dejjem? Alexey jikkonvinċina li kollox se jkun tajjeb. M’għandniex raġuni biex ma nemmnuhx. Iżda l-istess: jekk ma nużawx tabelli buffer, allura ma jkunx hemm problemi magħhom. Il-ħolqien ta 'doppju ta' tabelli huwa wkoll inkonvenjenti, għalkemm fil-prinċipju m'hemmx problemi kbar. Dan huwa l-pjan.
Ejja nitkellmu dwar il-qari
Issa ejja nitkellmu dwar il-qari. Aħna ktibna wkoll l-għodda tagħna stess hawn. Jidher, ukoll, għaliex tikteb l-istrument tiegħek hawn?.. U min uża Tabix? B'xi ftit nies għollew idejhom... U min hu sodisfatt bil-prestazzjoni ta' Tabix? Ukoll, m'aħniex kuntenti biha, u mhuwiex konvenjenti ħafna biex tara d-dejta. Huwa tajjeb għall-analiżi, iżda biss għall-wiri huwa ċar li mhux ottimizzat. Allura ktibt tiegħi stess, l-interface tiegħi stess.
Huwa sempliċi ħafna - jista 'biss jaqra data. Ma jafx juri grafika, ma jafx jagħmel xejn. Iżda jista 'juri dak li għandna bżonn: per eżempju, kemm ringieli hemm fit-tabella, kemm tieħu spazju (mingħajr ma tinqasam f'kolonni), jiġifieri, interface bażiku ħafna huwa dak li għandna bżonn.
U jidher simili ħafna għal Sequel Pro, iżda magħmul biss fuq il-Bootstrap ta 'Twitter, u t-tieni verżjoni. Inti tistaqsi: "Yuri, għaliex fit-tieni verżjoni?" Liema sena? 2018? B'mod ġenerali, għamilt dan żmien pjuttost twil ilu għal "Muskoli" (MySQL) u biss biddilt ftit linji fil-mistoqsijiet hemmhekk, u bdiet taħdem għal "Clickhouse", li għaliha grazzi speċjali! Minħabba li l-parser huwa simili ħafna għal dak "muskolu", u l-mistoqsijiet huma simili ħafna - konvenjenti ħafna, speċjalment għall-ewwel.
Ukoll, jista 'jiffiltra tabelli, jista' juri l-istruttura u l-kontenut tat-tabella, jippermettilek issortja, tiffiltra b'kolonni, turi l-mistoqsija li rriżultat fir-riżultat, ir-ringieli affettwati (kemm bħala riżultat), jiġifieri, il- affarijiet bażiċi biex tara d-dejta. Pjuttost mgħaġġel.
Hemm ukoll editur. Onestament ippruvajt nisraq l-editur kollu minn Tabix, imma ma stajtx. Imma b'xi mod jaħdem. Fil-prinċipju, dak kollu.
"Clickhouse" huwa adattat għal dens
Irrid ngħidilkom li Clickhouse, minkejja l-problemi kollha deskritti, huwa adattat ħafna għal zkuk. L-aktar importanti, issolvi l-problema tagħna - huwa mgħaġġel ħafna u jippermettilek tiffiltra zkuk mill-kolonni. Fil-prinċipju, il-buffer tables ma ħadux tajjeb, iżda ġeneralment ħadd ma jkun jaf għaliex... Forsi issa taf aħjar fejn se jkollok problemi.
TCP? B'mod ġenerali, fil-VK hija drawwa li tuża UDP. U meta użajt it-TCP... Ovvjament ħadd ma qalli: “Yuri, xiex qed titkellem! Ma tistax, għandek bżonn UDP.” Irriżulta li TCP mhux daqshekk tal-biża. L-unika ħaġa hija, jekk għandek għexieren ta 'eluf ta' komposti attivi li tikteb, għandek bżonn tippreparaha ftit aktar bir-reqqa; iżda huwa possibbli, u pjuttost faċli.
Wegħdt li nippubblika “Kittenhouse” u “Lighthouse” fuq HighLoad Siberia jekk kulħadd abbona mal-“VK backend” pubbliku tagħna... U taf, mhux kulħadd abbona... Naturalment, mhux se nitolbok li tabbona għal tagħna pubbliku. Għad hemm wisq minnkom, xi ħadd jista' saħansitra jiġi offiż, iżda xorta waħda, jekk jogħġbok abbona (u hawn irrid nagħmel għajnejn bħal dawk ta' qattus). Dak hu
Moderatur: - Ħbieb, issa għall-mistoqsijiet. Eżatt wara nippreżentaw iċ-ċertifikat ta’ apprezzament u r-rapport tiegħek dwar il-VHS.
Yuri Nasretdinov (minn hawn 'il quddiem imsejjaħ YN): – Kif kont kapaċi tirreġistra r-rapport tiegħi fuq il-VHS jekk spiċċa biss?
Moderatur: – Ma tistax tiddetermina bis-sħiħ kif "Clickhouse" se taħdem jew le! Ħbieb, 5 minuti għall-mistoqsijiet!
mistoqsijiet
Mistoqsija mill-udjenza (minn hawn 'il quddiem imsejħa Q): - Il-waranofsinhar it-tajjeb. Grazzi ħafna għar-rapport. Għandi żewġ mistoqsijiet. Nibda b'xi ħaġa frivola: in-numru ta' ittri t fl-isem "Kittenhouse" fid-dijagrammi (3, 4, 7...) jaffettwa s-sodisfazzjon tal-qtates?
YN: - Kwantità ta 'xiex?
Z: – Ittra t. Hemm tliet t's, xi mkien madwar tliet t's.
YN: - Ma rranġajtux? Ukoll, ovvjament hekk! Dawn huma prodotti differenti - I kien biss iqarraq inti dan il-ħin kollu. Okay, qed niċċajta - ma jimpurtax. Ah, eżatt hawn! Le, huwa l-istess ħaġa, għamilt typo.
Z: - Grazzi. It-tieni mistoqsija hija serja. Sa fejn nifhem jien, f'Clickhouse, it-tabelli buffer jgħixu esklussivament fil-memorja, mhumiex buffered fuq disk u, għalhekk, mhumiex persistenti.
YN: - Iva.
Z: – U fl-istess ħin, il-klijent tiegħek jibbaża fuq id-disk, li jimplika xi garanzija tal-kunsinna ta 'dawn l-istess zkuk. Iżda dan bl-ebda mod mhu garantit fi Clickhouse. Spjega kif titwettaq il-garanzija, minħabba xiex?.. Hawn dan il-mekkaniżmu f'aktar dettall
YN: – Iva, teoretikament m'hemm l-ebda kontradizzjoni hawn, għaliex meta Clickhouse jaqa', tista' fil-fatt tiskopriha b'miljun modi differenti. Jekk Clickhouse tiġġarraf (jekk tispiċċa ħażin), tista', bejn wieħed u ieħor, tkeċċi ftit mill-ġurnal tiegħek li ktibt u tibda mill-mument meta kollox kien eżattament tajjeb. Ejja ngħidu li tirrewind minuta, jiġifieri, huwa kkunsidrat li tkun laħlaħ kollox f'minuta.
Z: – Jiġifieri, “Kittenhouse” iżżomm it-tieqa itwal u, f’każ ta’ waqgħa, tista’ tagħrafha u tirrivolġiha?
YN: – Imma dan huwa fit-teorija. Fil-prattika, aħna ma nagħmlux dan, u l-kunsinna affidabbli hija minn żero sa infinita darbiet. Iżda bħala medja waħda. Aħna sodisfatti li jekk Clickhouse tiġġarraf għal xi raġuni jew is-servers "reboot", allura nitilfu ftit. Fil-każijiet l-oħra kollha, mhu se jiġri xejn.
Z: - Bongu. Mill-bidu nett deherli li int tabilħaqq tkun qed tuża l-UDP mill-bidu nett tar-rapport. Għandek http, dak kollu... U ħafna mill-problemi li ddeskriviet, kif nifhem jien, kienu kkawżati minn din is-soluzzjoni partikolari...
YN: – X'nużaw it-TCP?
Z: - Essenzjalment iva.
YN: - Le.
Z: – Kien bil-fasthttp li kellek problemi, bil-konnessjoni kellek problemi. Kieku kont għadek kif użajt l-UDP kont tiffranka xi żmien lilek innifsek. Ukoll, ikun hemm problemi b'messaġġi twal jew xi ħaġa oħra...
YN: - Biex?
Z: – B'messaġġi twal, peress li jista 'ma jidħolx fl-MTU, xi ħaġa oħra... Ukoll, jista' jkun hemm problemi tagħhom stess. Il-mistoqsija hija: għaliex le UDP?
YN: – Nemmen li l-awturi li żviluppaw TCP/IP huma ħafna aktar intelliġenti minni u jafu aħjar minni kif serialize pakketti (sabiex imorru), fl-istess ħin aġġusta t-tieqa li tibgħat, ma jgħabbix żżejjed in-netwerk, tagħti feedback dwar dak ma jinqarax, ma jgħoddx fuq in-naħa l-oħra... Dawn il-problemi kollha, fl-opinjoni tiegħi, ikunu jeżistu fl-UDP, biss ikolli nikteb saħansitra aktar kodiċi milli diġà ktibt sabiex nimplimenta l-istess ħaġa jien u wisq probabbli ħażin. Lanqas nħobb nikteb b'Ċ, aħseb u ara hemm...
Z: - Biss konvenjenti! Mibgħut ok u tistenna xejn - huwa kompletament asinkroniku. Ġiet lura notifika li kollox kien tajjeb - jiġifieri wasal; Jekk ma tiġix, ifisser li hija ħażina.
YN: – Għandi bżonn it-tnejn – għandi bżonn inkun kapaċi nibgħat it-tnejn b’garanzija ta’ kunsinna u mingħajr garanzija ta’ kunsinna. Dawn huma żewġ xenarji differenti. Għandi bżonn ma nitlifx xi zkuk jew ma nitlifhomx fi ħdan ir-raġuni.
Z: – Mhux se naħli ħin. Dan jeħtieġ li jiġi diskuss aktar. Grazzi.
Moderatur: – Min għandu mistoqsijiet – idejn lejn is-sema!
Z: - Hello, jien Sasha. X'imkien f'nofs ir-rapport, deher sensazzjoni li, minbarra TCP, kien possibbli li tintuża soluzzjoni lesta - xi tip ta 'Kafka.
YN: – Tajjeb... għidtlek li ma rridx nuża servers intermedji, għax... f’Kafka, jirriżulta li għandna għaxart elef hosts; fil-fatt, għandna aktar - għexieren ta 'eluf ta' ospiti. Jista 'jkun ukoll ta' uġigħ li tagħmel ma 'Kafka mingħajr ebda prokura. Barra minn hekk, l-aktar importanti, xorta tagħti "latency", tagħti hosts żejda li jeħtieġ li jkollok. Imma ma rridx li jkollihom - irrid...
Z: "Imma fl-aħħar irriżulta hekk xorta waħda."
YN: – Le, m'hemmx hosts! Dan kollu jaħdem fuq Clickhouse hosts.
Z: - Ukoll, u "Kittenhouse", li huwa l-maqlub - fejn jgħix?
YN: – Fuq l-host Clickhouse, ma jikteb xejn fuq id-diska.
Z: - Ejja nissuponi.
Moderatur: – Int sodisfatt? Nistgħu nagħtuk salarju?
Z: - Iva tista. Fil-fatt, hemm ħafna krozzi sabiex tikseb l-istess ħaġa, u issa - it-tweġiba preċedenti dwar is-suġġett tat-TCP tikkontradixxi, fl-opinjoni tiegħi, din is-sitwazzjoni. Inħoss li kollox seta’ jsir fuq irkopptejti f’ħafna inqas ħin.
YN: – U wkoll għaliex ma ridtx nuża lil Kafka, għax kien hemm ħafna ilmenti fiċ-chat ta’ Clickhouse Telegram li, pereżempju, messaġġi minn Kafka intilfu. Mhux minn Kafka stess, imma fl-integrazzjoni ta’ Kafka u Clickhaus; jew xi ħaġa ma qabditx hemm. Bejn wieħed u ieħor, ikun meħtieġ li tikteb klijent għal Kafka allura. Ma naħsibx li jista' jkun hemm soluzzjoni aktar sempliċi jew aktar affidabbli.
Z: – Għidli, għaliex ma ppruvajtx xi kjuwijiet jew xi tip ta’ xarabank komuni? Peress li tgħid li b'asynchrony tista 'tibgħat ir-zkuk huma stess permezz tal-kju u tirċievi r-rispons b'mod asinkroniku permezz tal-kju?
YN: – Jekk jogħġbok tissuġġerixxi liema kjuwijiet jistgħu jintużaw?
Z: – Kwalunkwe, anki mingħajr garanzija li huma f'ordni. Xi tip ta’ Redis, RMQ...
YN: – Għandi tħossok li Redis x'aktarx mhux se jkun jista 'jiġbed tali volum ta' inserzjoni anke fuq host wieħed (fis-sens ta 'diversi servers) li jiġbed Clickhouse. Ma nista 'nsostni dan bl-ebda evidenza (ma għamiltx benchmark), iżda jidhirli li Redis mhix l-aħjar soluzzjoni hawn. Fil-prinċipju, din is-sistema tista' titqies bħala kju ta' messaġġi improvizzati, iżda li hija mfassla biss għal "Clickhouse"
Moderatur: – Yuri, grazzi ħafna. Nipproponi li ntemm il-mistoqsijiet u t-tweġibiet hawn u ngħid lil min minn dawk li għamlu l-mistoqsija se nagħtu l-ktieb.
YN: – Nixtieq nagħti ktieb lill-ewwel persuna li għamlet mistoqsija.
Moderatur: - Sbaħ! Kbir! Fabulous! Grazzi ħafna!
Xi reklami 🙂
Grazzi talli bqajt magħna. Tħobb l-artikoli tagħna? Trid tara aktar kontenut interessanti? Appoġġuna billi tagħmel ordni jew tirrakkomanda lill-ħbieb,
Dell R730xd 2 darbiet orħos fiċ-ċentru tad-dejta Equinix Tier IV f'Amsterdam? Hawn biss
Sors: www.habr.com