HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

HighLoad++ Москва 2018, Конгресс Холл. 9 ноябрь, соати 15

Реферат ва презентатсия: http://www.highload.ru/moscow/2018/abstracts/4066

Юрий Насретдинов (ВКонтакте): гузориш дар бораи таҷрибаи татбиқи ClickHouse дар ширкати мо нақл мекунад - барои чӣ ба мо он лозим аст, мо чӣ қадар маълумотро нигоҳ дорем, чӣ гуна онро менависем ва ғайра.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Маводи иловагӣ: бо истифода аз Clickhouse ҳамчун иваз барои ELK, Big Query ва TimescaleDB

Юрий Насретдинов: - Салом ба ҳама! Номи ман Юрий Насретдинов аст, зеро маро аллакай шинос карда буданд. Ман дар ВКонтакте кор мекунам. Ман дар бораи чӣ гуна мо маълумотро ба ClickHouse аз парки сервери худ ворид мекунем (даҳҳо ҳазорҳо) сӯҳбат мекунам.

Гузоришҳо чист ва чаро онҳоро ҷамъ кунед?

Мо ба шумо чӣ мегӯем: мо чӣ кор кардем, барои чӣ ба мо "ClickHouse" лозим буд, мутаносибан чаро мо онро интихоб кардем, чӣ гуна кореро, ки шумо тақрибан бидуни танзим кардани ягон чизи махсус ба даст оварда метавонед. Ман ба шумо минбаъд дар бораи ҷадвалҳои буферӣ, дар бораи мушкилоте, ки мо бо онҳо доштем ва дар бораи ҳалли мо, ки мо аз сарчашмаи кушод таҳия кардем - KittenHouse ва Lighthouse нақл мекунам.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Чаро ба мо лозим буд, ки ягон коре кунем (дар ВКонтакте ҳама чиз ҳамеша хуб аст, дуруст?). Мо мехостем, ки гузоришҳои дебагро ҷамъоварӣ кунем (ва дар он ҷо садҳо терабайт маълумот мавҷуд буд), шояд ба ҳар сурат ҳисоб кардани омор қулайтар бошад; ва мо парки даҳҳо ҳазор серверҳо дорем, ки ҳамаи ин бояд аз он анҷом дода шавад.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Чаро мо тасмим гирифтем? Мо шояд барои нигоҳ доштани гузоришҳо ҳалли худро дошта бошем. Дар ин ҷо - чунин як ҷамъиятии "Backend VK" вуҷуд дорад. Ман хеле тавсия медиҳам, ки ба он обуна шавед.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Лоғҳо чист? Ин муҳаррикест, ки массивҳои холиро бармегардонад. Муҳаррикҳо дар VK он чизест, ки дигарон микросервисҳоро меноманд. Ва инак як стикери табассумкунанда (бисёр лайкҳо). Чӣ тавр? Хуб, бештар гӯш кунед!

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Барои нигоҳ доштани гузоришҳо чӣ метавон истифода бурд? Хадупро зикр накардан мумкин нест. Сипас, масалан, Rsyslog (нигоҳ доштани ин гузоришҳо дар файлҳо). LSD. Кӣ медонад, ки LSD чист? Не, ин LSD нест. Файлҳоро низ мутаносибан захира кунед. Хуб, ClickHouse як варианти аҷиб аст.

Clickhouse ва рақибон: талабот ва имкониятҳо

Мо чӣ мехоҳем? Мо мехоҳем боварӣ ҳосил кунем, ки мо набояд дар бораи амалиёт хавотир нашавем, то он аз қуттӣ, беҳтараш бо конфигуратсияи ҳадди ақал кор кунад. Мо мехоҳем бисёр бинависем ва зуд нависем. Ва мо мехоҳем онро барои ҳар гуна моҳҳо, солҳо, яъне муддати тӯлонӣ нигоҳ дорем. Шояд мо мехоҳем фаҳмем, ки мушкилоте, ки онҳо ба назди мо омадаанд ва гуфтанд: "Дар ин ҷо чизе кор намекунад" ва ин 3 моҳ пеш буд) ва мо мехоҳем бубинем, ки 3 моҳ пеш чӣ рӯй дода буд. Фишурдани маълумот - маълум аст, ки чаро он як плюс хоҳад буд - зеро он миқдори ҷойро ишғол мекунад, кам мекунад.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Ва мо чунин як талаботи ҷолиб дорем: мо баъзан баромади баъзе фармонҳоро менависем (масалан, логҳо), он метавонад аз 4 килобайт зиёд бошад. Ва агар ин чиз аз болои UDP кор кунад, пас ба он сарф кардан лозим нест ... он барои пайвастшавӣ ҳеҷ гуна "сари изофӣ" нахоҳад дошт ва барои шумораи зиёди серверҳо ин як плюс хоҳад буд.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Биёед бубинем, ки манбаи кушода ба мо чӣ пешниҳод мекунад. Аввалан, мо Engine Logs дорем - ин муҳаррики мост; Аслан вай аз ухдаи хама кор мебарояд, хатто сатрхои дароз навишта метавонад. Хуб, он маълумотро шаффоф фишурда намекунад - мо метавонем худамон сутунҳои калонро фишурда кунем ... мо, албатта, намехоҳем (агар имконпазир бошад). Ягона мушкилот дар он аст, ки ӯ метавонад танҳо он чизеро, ки дар хотираи ӯ мувофиқ аст, диҳад; Барои хондани боқимонда ба шумо лозим аст, ки бинлоги ин муҳаррикро гиред ва мутаносибан он хеле вақти зиёдро мегирад.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Кадом вариантҳои дигар вуҷуд доранд? Масалан, "Hadup". Осонии кор... Кй гумон мекунад, ки Хадупро ба осонй гузоштан мумкин аст? Албатта, дар сабт ягон мушкилот вуҷуд надорад. Ҳангоми хондан баъзан саволҳо ба миён меоянд. Дар асл, ман гуфта метавонам, ки эҳтимол не, махсусан барои гузоришҳо. Нигоҳдории дарозмуддат - албатта, ҳа, фишурдани маълумот - ҳа, сатрҳои дароз - маълум аст, ки шумо метавонед сабт кунед. Аммо сабт аз шумораи зиёди серверҳо ... Шумо ба ҳар ҳол бояд худатон коре кунед!

Rsyslog. Дар асл, мо онро ҳамчун варианти эҳтиётӣ истифода бурдем, то онро бидуни партофтани бинлог хонда тавонем, аммо он наметавонад сатрҳои дароз нависад; аслан, он наметавонад аз 4 килобайт бештар нависад. Шумо бояд фишурдани маълумотро ба ҳамин тариқ худатон анҷом диҳед. Хондан аз файлҳо меояд.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Пас аз он рушди "бадушка" -и LSD вуҷуд дорад. Аслан якхела бо "Rsyslog": он сатрҳои дарозро дастгирӣ мекунад, аммо он тавассути UDP кор карда наметавонад ва дар асл, аз ин сабаб, мутаассифона, бисёр чизҳоро дар он ҷо дубора навиштан лозим аст. LSD бояд аз нав тарҳрезӣ карда шавад, то тавонанд аз даҳҳо ҳазор сервер сабт кунад.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Ва ин ҷо! Варианти хандовар ElasticSearch аст. Чӣ тавр гуфтан? Вай бо хондан хуб кор мекунад, яъне зуд мехонад, аммо навиштан чандон хуб нест. Аввалан, агар он маълумотро фишурда кунад, он хеле заиф аст. Эҳтимол, ҷустуҷӯи пурра сохторҳои калонтари маълумотро нисбат ба ҳаҷми аслӣ талаб мекунад. Кор кардан душвор аст ва аксар вақт мушкилот бо он ба миён меоянд. Ва боз, сабт дар Elastic - мо бояд ҳама чизро худамон иҷро кунем.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Дар ин ҷо ClickHouse интихоби беҳтарин аст, албатта. Ягона чизе ин аст, ки сабт аз даҳҳо ҳазор серверҳо мушкил аст. Аммо акаллан як мушкилие ҳаст, мо метавонем онро бо ягон роҳ ҳал кунем. Ва боқимондаи гузориш дар бораи ин мушкилот аст. Шумо аз ClickHouse чӣ гуна корҳоро интизор шуда метавонед?

Мо онро чӣ гуна дохил мекунем? MergeTree

Кадоме аз шумо дар бораи "ClickHouse" нашунида ва ё намедонад? Ман бояд ба шумо гӯям, ҳамин тавр не? Хеле зуд. Воридшавӣ ба он ҷо - 1-2 гигабит дар як сония, таркишҳои то 10 гигабит дар як сония воқеан ба ин конфигуратсия тоб оварда метавонанд - ду Xeon-и 6-аслӣ (яъне ҳатто пурқувваттарин нест), 256 гигабайт RAM, 20 терабайт мавҷуд аст. дар RAID (ҳеҷ кас танзим нашудааст, танзимоти пешфарз). Алексей Миловидов, таҳиягари ClickHouse, эҳтимол он ҷо нишаста гиря мекунад, зеро мо чизеро танзим накардаем (ҳама чиз барои мо чунин кор мекард). Мувофиқи он, агар маълумот хуб фишурда шавад, суръати сканкунӣ, масалан, тақрибан 6 миллиард хат дар як сонияро ба даст овардан мумкин аст. Агар ба шумо % дар сатри матн маъқул бошад - 100 миллион сатр дар як сония, яъне он хеле зуд ба назар мерасад.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Мо онро чӣ гуна дохил мекунем? Хуб, шумо медонед, ки VK PHP-ро истифода мебарад. Мо аз ҳар як коргари PHP тавассути HTTP ба "ClickHouse" ба ҷадвали MergeTree барои ҳар як сабт дохил мекунем. Кӣ мушкилотро бо ин схема мебинад? Аз чй сабаб бошад, ки на хар кас даст боло кард. Биёед ман ба шумо мегӯям.

Аввалан, серверҳои зиёде мавҷуданд - мувофиқан, пайвастҳои зиёде хоҳанд буд (бад). Пас беҳтар аст, ки маълумотро ба MergeTree на бештар аз як маротиба дар як сония ворид кунед. Ва кӣ медонад, ки чаро? Хуб, хуб. Ман ба шумо дар ин бора каме бештар нақл мекунам. Саволи дигари ҷолиб ин аст, ки мо таҳлил намекунем, ба мо лозим нест, ки маълумотро ғанӣ гардонем, ба мо серверҳои фосилавӣ лозим нест, мо мехоҳем мустақиман ба "ClickHouse" дохил кунем (беҳтараш - ҳар қадар мустақимтар бошад, ҳамон қадар беҳтар).

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Мувофиқи он, воридкунӣ дар MergeTree чӣ гуна сурат мегирад? Чаро беҳтар аст, ки ба он на бештар аз як маротиба дар як сония ё камтар ворид кунед? Гап дар он аст, ки "ClickHouse" махзани сутунӣ буда, маълумотро бо тартиби афзоиши калиди аввалия ба навъҳо ҷудо мекунад ва ҳангоми воридкунӣ шумораи файлҳо ҳадди аққал ба шумораи сутунҳое, ки маълумот дар онҳо мураттаб карда мешавад, эҷод карда мешавад. бо тартиби болоравии калиди ибтидоӣ (директорияи алоҳида сохта мешавад, маҷмӯи файлҳо дар диск барои ҳар як васлкунӣ). Сипас воридкунии навбатӣ меояд ва дар замина онҳо ба "қисмҳои" калонтар муттаҳид мешаванд. Азбаски маълумот мураттаб карда мешавад, ду файли мураттабшударо бе сарфи хотираи зиёд "якҷоя кардан" мумкин аст.

Аммо, тавре ки шумо тахмин карда метавонед, агар шумо барои ҳар як васлкунӣ 10 файл нависед, он гоҳ ClickHouse (ё сервери шумо) зуд хотима меёбад, аз ин рӯ тавсия дода мешавад, ки ба қисмҳои калон ворид кунед. Мувофики он мо схемаи якумро хеч гох дар истехсолот чорй накардаем. Мо дарҳол якеро ба кор андохтаем, ки дар ин ҷо № 2 дорои:

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Дар ин ҷо тасаввур кунед, ки тақрибан ҳазор серверҳо мавҷуданд, ки мо онҳоро оғоз кардем, танҳо PHP вуҷуд дорад. Ва дар ҳар як сервер агенти маҳаллии мо мавҷуд аст, ки мо онро "Киттенхаус" меномем, ки як пайвастро бо "ClickHouse" нигоҳ медорад ва ҳар чанд сония маълумот ворид мекунад. Маълумотро на ба MergeTree, балки ба ҷадвали буферӣ дохил мекунад, ки маҳз барои пешгирӣ кардани воридкунии бевосита ба MergeTree фавран хизмат мекунад.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Кор бо ҷадвалҳои буферӣ

Ин чист? Ҷадвалҳои буферӣ як пораи хотира мебошанд, ки ҷудошуда мебошанд (яъне онро зуд-зуд ба он дохил кардан мумкин аст). Онҳо аз якчанд қисм иборатанд ва ҳар як порча ҳамчун буфери мустақил кор мекунад ва онҳо мустақилона шуста мешаванд (агар шумо дар буфер қисмҳои зиёд дошта бошед, пас дар як сония бисёр қисмҳо вуҷуд доранд). Аз ин ҷадвалҳо хондан мумкин аст - пас шумо иттиҳоди мундариҷаи буфер ва ҷадвали волидайнро мехонед, аммо дар айни замон навиштан баста шудааст, аз ин рӯ беҳтар аст, ки аз он ҷо нахонед. Ва ҷадвалҳои буферӣ QPS-ро хеле хуб нишон медиҳанд, яъне то 3 ҳазор QPS ҳангоми ворид кардан шумо ҳеҷ мушкиле нахоҳед дошт. Маълум аст, ки агар сервер қувваи барқро аз даст диҳад, пас маълумот метавонад гум шавад, зеро он танҳо дар хотира нигоҳ дошта мешуд.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Дар айни замон, схема бо буфер ALTER-ро душвор мегардонад, зеро шумо аввал ҷадвали буферии кӯҳнаро бо схемаи кӯҳна партофтан лозим аст (маълумот дар ҳеҷ ҷо нопадид намешавад, зеро он пеш аз нест кардани ҷадвал тоза карда мешавад). Пас шумо ҷадвали лозимиро "тағйир медиҳед" ва ҷадвали буфериро дубора эҷод мекунед. Мутаносибан, дар ҳоле ки ҷадвали буферӣ вуҷуд надорад, маълумоти шумо ба ҳеҷ ҷо ҷараён намеёбад, аммо шумо метавонед онро дар диск ҳадди аққал ба таври маҳаллӣ дошта бошед.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Kittenhouse чист ва он чӣ гуна кор мекунад?

KittenHouse чист? Ин прокси аст. Фикр кунед, ки кадом забон? Ман дар гузориши худ мавзӯъҳои пурҳашаматро ҷамъ овардам - ​​"Clickhouse", Гузаштан, шояд чизи дигареро дар ёд дошта бошам. Бале, ин дар Go навишта шудааст, зеро ман аслан намедонам, ки дар C чӣ гуна нависам, ман намехоҳам.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Мувофиқи он, он бо ҳар як сервер робита нигоҳ медорад ва метавонад ба хотира нависад. Масалан, агар мо гузоришҳои хатогиҳоро ба Clickhouse нависед, пас агар Clickhouse барои ворид кардани маълумот вақт надошта бошад (охир, агар аз ҳад зиёд навишта шуда бошад), мо хотираро варам намекунем - мо танҳо боқимондаро мепартоем. Зеро агар мо дар як сония якчанд гигабит хато нависем, пас эҳтимолан мо метавонем баъзеи онро хориҷ кунем. Kittenhouse метавонад ин корро кунад. Илова бар ин, он метавонад интиқоли боэътимодро иҷро кунад, яъне ба диск дар мошини маҳаллӣ навиштан ва ҳар дафъа (дар он ҷо, дар ҳар ду сония як маротиба) кӯшиш мекунад, ки маълумотро аз ин файл интиқол диҳад. Ва дар аввал мо формати муқаррарии Арзишҳоро истифода бурдем - на формати дуӣ, формати матнӣ (ба мисли SQL муқаррарӣ).

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Аммо баъд ин ҳодиса рӯй дод. Мо интиқоли боэътимодро истифода бурдем, гузоришҳо навиштем, баъд тасмим гирифтем (ин кластери санҷишии шартӣ буд)... Онро барои чанд соат хомӯш карданд ва дубора барқарор карданд ва воридкунӣ аз ҳазор сервер оғоз шуд - маълум шуд, ки Clickhouse ҳоло ҳам "Равҳаи пайвастшавӣ" - мувофиқан, дар ҳазор пайвастшавӣ, воридкунии фаъол боиси сарбории миёнаи сервер тақрибан якуним ҳазор мегардад. Тааҷҷубовар аст, ки сервер дархостҳоро қабул кард, аммо пас аз чанд вақт маълумот ҳанӯз ворид карда шуд; аммо хидматрасонии он барои сервер хеле душвор буд...

nginx илова кунед

Чунин ҳалли барои Thread барои як модели пайвастшавӣ nginx мебошад. Мо nginx-ро дар назди Clickhouse насб кардем ва ҳамзамон мувозинатро барои ду реплика насб кардем (суръати воридкунии мо 2 маротиба зиёд шуд, гарчанде ки ин ҳақиқат нест, ки ин бояд чунин бошад) ва шумораи пайвастҳоро ба Clickhouse маҳдуд кард. болооб ва мутаносибан бештар , аз 50 пайвастшавӣ, ба назар чунин мерасад, ки ворид кардан ҳеҷ маъно надорад.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Баъд мо фаҳмидем, ки ин схема умуман нуқсонҳо дорад, зеро мо дар ин ҷо танҳо як nginx дорем. Мувофиқи он, агар ин nginx суқут кунад, сарфи назар аз мавҷудияти репликаҳо, мо маълумотро аз даст медиҳем ё ҳадди аққал дар ягон ҷо наменависем. Аз ин рӯ, мо худамон мувозинати сарборӣ кардем. Мо инчунин фаҳмидем, ки "Clickhouse" ҳоло ҳам барои чӯбҳо мувофиқ аст ва "дев" низ ба навиштани гузоришҳои худ дар "Clickhouse" шурӯъ кард - ростӣ, хеле қулай. Мо то ҳол онро барои дигар «девҳо» истифода мебарем.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Пас аз он мо ин мушкилоти ҷолибро кашф кардем: агар шумо усули ғайристандартии ворид кардан дар ҳолати SQL-ро истифода баред, он таҳлилгари мукаммали AST-асоси SQL-ро маҷбур мекунад, ки хеле суст аст. Бинобар ин, мо танзимотро илова кардем, то боварӣ ҳосил кунем, ки ин ҳеҷ гоҳ рӯй надиҳад. Мо мувозинати сарборӣ, санҷиши саломатиро анҷом додем, то агар касе бимирад, мо то ҳол маълумотро тарк мекунем. Ҳоло мо ҷадвалҳои зиёде дорем, ки мо бояд кластерҳои гуногуни Clickhouse дошта бошем. Ва мо инчунин дар бораи дигар истифодаҳо фикр карданро сар кардем - масалан, мо мехостем, ки аз модулҳои nginx гузоришҳо нависем, аммо онҳо намедонанд, ки бо истифода аз RPC мо чӣ гуна муошират кунанд. Хуб, ман мехостам ба онҳо ёд диҳам, ки чӣ гуна ҳадди аққал бо кадом роҳ ирсол кунанд - масалан, қабул кардани рӯйдодҳоро дар localhost тавассути UDP ва сипас онҳоро ба Clickhouse интиқол диҳанд.

Як қадам дуртар аз ҳалли

Нақшаи ниҳоӣ чунин ба назар мерасад (версияи чоруми ин схема): дар ҳар як сервер дар назди Clickhouse nginx мавҷуд аст (дар ҳамон сервер) ва он танҳо дархостҳоро ба localhost бо маҳдудияти шумораи пайвастҳои 50 прокси мефиристад. дона. Ва ин схема аллакай кор мекард, ҳама чиз бо он хеле хуб буд.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Мо тақрибан як моҳ ҳамин тавр зиндагӣ кардем. Ҳама хурсанд шуданд, ҷадвалҳо илова карданд, илова карданд, илова карданд... Умуман, маълум шуд, ки тарзи илова кардани ҷадвалҳои буферӣ чандон оптималӣ нест (биёед, ҳамин тавр кунем). Мо дар ҳар як ҷадвал 16 дона ва фосилаи дурахши чанд сонияро иҷро кардем; мо 20 ҷадвал доштем ва ҳар як ҷадвал дар як сония 8 варақ мегирифт - ва дар ин лаҳза "Clickhouse" оғоз шуд... сабтҳо суст шудан гирифтанд. Онҳо ҳатто нагузаштанд ... Nginx ба таври нобаёнӣ чунин як чизи ҷолибе дошт, ки агар пайвастшавӣ дар болооб анҷом ёбад, он танҳо ба ҳама дархостҳои нав "502" -ро баргардонд.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Ва дар ин ҷо мо (ман танҳо ба гузоришҳо дар худи Clickhouse назар кардам) тақрибан ним фоизи дархостҳо ноком шуданд. Мувофиқи он, истифодаи дискҳо баланд буд, бисёр якҷояшавӣ вуҷуд дошт. Хуб, ман чӣ кор кардам? Табиист, ки ман намефаҳмидам, ки чаро маҳз пайвастшавӣ ва болооб тамом шудааст.

Иваз кардани nginx бо прокси баръакс

Ман қарор додам, ки мо бояд инро худамон идора кунем, ба мо лозим нест, ки онро ба nginx гузорем - nginx намедонад, ки дар Clickhouse кадом ҷадвалҳо мавҷуд аст ва ман nginx-ро бо прокси баръакс иваз кардам, ки онро худам низ навиштаам.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Ӯ чӣ кор мекунад? Он дар асоси китобхонаи fasthttp "goshnoy" кор мекунад, яъне зуд, тақрибан ба мисли nginx. Бубахшед, Игор, агар шумо дар ин ҷо ҳузур дошта бошед (дар хотир доред: Игор Сысоев барномасози рус аст, ки веб-сервери nginx-ро офаридааст). Он метавонад фаҳмад, ки инҳо чӣ гуна дархостҳо мебошанд - INSERT ё SELECT - мутаносибан, он ҳавзҳои гуногуни пайвастшавиро барои намудҳои гуногуни дархостҳо нигоҳ медорад.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Мувофиқи он, ҳатто агар мо барои пур кардани дархостҳои воридкунӣ вақт надорем, "интихобҳо" мегузаранд ва баръакс. Ва он маълумотро ба ҷадвалҳои буферӣ гурӯҳбандӣ мекунад - бо буфери хурд: агар ягон хатогӣ, хатогиҳои синтаксисӣ ва ғайра вуҷуд дошта бошанд - ба тавре ки онҳо ба боқимондаи додаҳо таъсири зиёд нарасонанд, зеро вақте ки мо танҳо ба ҷадвалҳои буферӣ ворид кардем, мо "бачи"-и хурд дошт ва ҳамаи хатогиҳои синтаксисӣ танҳо ба ин порчаи хурд таъсир расониданд; ва дар ин ҷо онҳо аллакай ба буфери калон таъсир мерасонанд. Хурд 1 мегабайт аст, яъне он қадар хурд нест.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Ворид кардани синхронизатсия ва аслан иваз кардани nginx, аслан ҳамон кореро мекунад, ки nginx қаблан карда буд - барои ин ба шумо лозим нест, ки "Киттенхаус"-и маҳаллиро иваз кунед. Ва азбаски он fasthttp-ро истифода мебарад, он хеле зуд аст - шумо метавонед тавассути прокси баръакс дар як сония зиёда аз 100 ҳазор дархостро барои ворид кардани ягона дархост кунед. Аз ҷиҳати назариявӣ, шумо метавонед як сатрро дар як вақт ба прокси баръакси гӯрбача гузоред, аммо албатта мо ин корро намекунем.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Схема чунин ба назар мерасад: "Киттенхаус", прокси баръакс бисёр дархостҳоро ба ҷадвалҳо гурӯҳбандӣ мекунад ва дар навбати худ, ҷадвалҳои буферӣ онҳоро ба ҷадвалҳои асосӣ дохил мекунанд.

Қотил ҳалли муваққатӣ аст, Гурбача доимист

Ин як мушкили ҷолиб аст... Оё касе аз шумо fasthttp-ро истифода кардааст? Кӣ fasthttp-ро бо дархостҳои POST истифода бурд? Эҳтимол, ин воқеан набояд иҷро мешуд, зеро он ба таври нобаёнӣ мақоми дархостро буфер мекунад ва андозаи буфери мо ба 16 мегабайт муқаррар карда шудааст. Ҷойгиркунӣ дар як лаҳза нигоҳ доштанро қатъ кард ва қисмҳои 16-мегабайтӣ аз ҳама даҳҳо ҳазор серверҳо ворид шудан гирифтанд ва ҳамаашон пеш аз фиристодан ба Clickhouse дар хотира буфер карда шуданд. Мутаносибан, хотира тамом шуд, қотили берун аз хотира омада, проксии баръаксро кушт (ё "Кликхаус", ки аз ҷиҳати назариявӣ метавонад аз прокси баръакс бештар "хӯрад"). Давра худаш такрор шуд. Мушкилоти хеле гуворо нест. Ҳарчанд мо танҳо пас аз чанд моҳи амалиёт ба ин пешпо хӯрдем.

Ман чӣ кор кардам? Боз ҳам, ман аслан намефаҳмам, ки маҳз чӣ ҳодиса рӯй дод. Ман фикр мекунам, ки ин хеле равшан аст, ки шумо набояд ба хотира буферӣ кунед. Ман метавонистам fasthttp-ро часпонед, гарчанде ки ман кӯшиш кардам. Аммо ман як роҳи сохтани онро ёфтам, то ягон чизро часпондан лозим набошад ва ман дар HTTP усули худамро пайдо кардам - ​​ман онро ГУРБАЧА хондам. Хуб, ин мантиқист - "ВК", "Гурбача"... Боз чӣ?..

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Агар дархост ба сервер бо усули Kitten ворид шавад, сервер бояд ба таври мантиқӣ "meow" ҷавоб диҳад. Агар ӯ ба ин посух диҳад, пас чунин мешуморанд, ки вай ин протоколро мефаҳмад ва ман пайвастро қатъ мекунам (fasthttp чунин усул дорад) ва пайвастшавӣ ба ҳолати "хом" мегузарад. Чаро ман ба он ниёз дорам? Ман мехоҳам назорат кунам, ки чӣ тавр хондан аз пайвастҳои TCP рух медиҳад. TCP дорои хосияти олиҷаноб аст: агар касе аз тарафи дигар нахонад, пас навиштан ба интизор шудан оғоз мекунад ва хотира махсусан барои ин сарф намешавад.

Ва ҳамин тавр ман дар як вақт аз тақрибан 50 муштарӣ хондам (аз панҷоҳ, зеро панҷоҳ бояд ҳатман басанда бошад, ҳатто агар нарх аз дигар DC омада бошад) ... Истеъмол бо ин равиш ҳадди аққал 20 маротиба коҳиш ёфтааст, аммо ман, ростӣ , Ман дақиқан чанд вақтро чен карда натавонистам, зеро он аллакай бемаънӣ аст (он аллакай ба дараҷаи хатогӣ расидааст). Протокол дуӣ аст, яъне номи ҷадвал ва маълумотро дар бар мегирад; сарлавҳаҳои http вуҷуд надоранд, бинобар ин ман васлаки вебро истифода накардаам (ба ман лозим нест, ки бо браузерҳо муошират кунам - ман протоколе сохтам, ки ба ниёзҳои мо мувофиқ бошад). Ва ҳама чиз бо ӯ хуб шуд.

Ҷадвали буферӣ ғамгин аст

Ба наздикӣ мо боз як хусусияти ҷолиби ҷадвалҳои буфериро пайдо кардем. Ва ин мушкилот аллакай аз дигарон хеле дардноктар аст. Биёед ин вазъиятро тасаввур кунем: шумо аллакай Clickhouse-ро фаъолона истифода мебаред, шумо даҳҳо серверҳои Clickhouse доред ва шумо якчанд дархостҳо доред, ки барои хондан вақти хеле тӯлонӣ лозим аст (биёед, зиёда аз 60 сония); ва шумо дар ин лаҳза меоед ва Alter мекунед... Дар ҳамин ҳол, "интихобҳое", ки қабл аз "Alter" оғоз шуда буданд, ба ин ҷадвал дохил намешаванд, "Alter" оғоз намешавад - шояд баъзе хусусиятҳои кори "Clickhouse" дар ин макон. Шояд инро ислоҳ кардан мумкин аст? Ё мумкин нест?

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Умуман, маълум аст, ки дар асл ин як мушкили бузург нест, аммо бо ҷадвалҳои буферӣ он дардноктар мешавад. Зеро, агар бигӯем, вақти «Тағйир»-и шумо ба охир расад (ва он метавонад дар ҳости дигар - на дар они шумо, балки дар реплика вақт ба охир расад), пас ... Шумо ҷадвали буфериро нест кардаед, «Тағир»-и шумо ( ё ягон хости дигар) ба охир расид. пас хатои "Тағйир додан" рух дод) - шумо ба ҳар ҳол бояд боварӣ ҳосил кунед, ки навиштани маълумот идома дорад: шумо ҷадвалҳои буфериро баргардонед (мувофиқи ҳамон схемаи ҷадвали волидайн), пас "Тағйир додан" мегузарад, ба охир мерасад ва буфери ҷадвал аз рӯи схема аз волидайн фарқ мекунад. Вобаста аз он ки "Alter" чӣ буд, замима метавонад дигар ба ин ҷадвали буферӣ наравад - ин хеле ғамгин аст.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Чунин аломат низ вуҷуд дорад (шояд касе онро пайхас карда бошад) - он дар версияҳои нави Clickhouse query_thread_log номида мешавад. Бо нобаёнӣ, дар баъзе версияҳо як вуҷуд дошт. Дар ин ҷо мо дар тӯли якчанд моҳ 840 миллион сабт ҷамъ кардем (100 гигабайт). Ин аз он сабаб аст, ки дар онҷо «вазкунакҳо» навишта шуда буданд (шояд ҳоло, дар омади гап, онҳо навишта нашудаанд). Тавре ки ман ба шумо гуфтам, "варишҳо"-и мо хурданд - мо дар ҷадвалҳои буферӣ "варақҳо"-и зиёде доштем. Маълум аст, ки ин ғайрифаъол аст - ман танҳо ба шумо он чизеро, ки дар сервери мо дидаам, мегӯям. Чаро? Ин боз як далели зидди истифодаи ҷадвалҳои буферӣ аст! Spotty хеле ғамгин аст.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Кӣ медонист, ки номи ин бача Spotty аст? Кормандони ВК даст бардоштанд. ДУРУСТ.

Дар бораи нақшаҳои "KitttenHouse"

Нақшаҳо одатан мубодила намешаванд, дуруст? Ногаҳон шумо онҳоро иҷро намекунед ва дар назари дигарон хеле хуб ба назар намерасед. Аммо ман таваккал мекунам! Мо мехоҳем корҳои зеринро анҷом диҳем: ҷадвалҳои буферӣ, ба назарам, то ҳол асобағал мебошанд ва мо бояд худамон воридкуниро буфер кунем. Аммо мо ба ҳар ҳол намехоҳем, ки онро дар диск буфер кунем, аз ин рӯ мо воридкуниро дар хотира буфер мекунем.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Мутаносибан, вақте ки "вариш" сохта мешавад, он дигар синхронӣ нахоҳад буд - он аллакай ҳамчун ҷадвали буферӣ кор хоҳад кард, ба ҷадвали волидайн дохил карда мешавад (хуб, баъдтар) ва тавассути канали алоҳидае, ки воридкунӣ гузаштааст ва он гузориш медиҳад. надоранд.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Чаро ман наметавонам замимаи синхронро тарк кунам? Ин хеле қулайтар аст. Гап дар сари он аст, ки агар шумо аз 10 ҳазор ҳост ворид кунед, ҳама чиз хуб аст - шумо аз ҳар як ҳост каме мегиред, шумо дар як сония як маротиба ба он ҷо дохил мекунед, ҳама чиз хуб аст. Аммо ман мехоҳам, ки ин схема, масалан, аз ду мошин кор кунад, то шумо метавонед бо суръати баланд зеркашӣ кунед - шояд аз Clickhouse ҳадди аксарро ба даст наоред, аммо ҳадди аққал 100 мегабайт дар як сония аз як мошин тавассути прокси баръакс нависед - ин нақша бояд ҳам ба миқдори калон ва ҳам хурд миқёс дошта бошад, аз ин рӯ мо наметавонем барои ҳар як ворид як сония интизор шавем, бинобар ин он бояд асинхронӣ бошад. Ва ба ҳамин тариқ, тасдиқҳои асинхронӣ бояд пас аз ба итмом расидани воридкунӣ ворид шаванд. Мо медонем, ки он гузашт ё не.

Муҳимтар аз ҳама он аст, ки дар ин схема мо аниқ медонем, ки воридкунӣ сурат гирифтааст ё не. Ин вазъиятро тасаввур кунед: шумо ҷадвали буферӣ доред, шумо ба он чизе навиштед ва баъд, биёед бигӯем, ҷадвал ба ҳолати танҳо хондан гузашт ва кӯшиш кард, ки буферро тоза кунад. Маълумот ба куҷо меравад? Онҳо дар буфер боқӣ хоҳанд монд. Аммо мо ба ин боварӣ дошта наметавонем - чӣ мешавад, агар ягон хатои дигаре вуҷуд дошта бошад, ки аз сабаби он маълумот дар буфер намемонад... (Муроҷиат Алексей Миловидов, Яндекс, таҳиягари ClickHouse) Ё он боқӣ мемонад? Ҳамеша? Алексей моро бовар мекунонад, ки хамааш хуб мешавад. Мо ягон сабаб надорем, ки ба вай бовар накунем. Аммо ба ҳар ҳол: агар мо ҷадвалҳои буфериро истифода набарем, пас бо онҳо ҳеҷ мушкиле ба миён намеояд. Ташкили ду баробар зиёд ҷадвалҳо низ номувофиқ аст, гарчанде ки дар асл мушкилоти калон вуҷуд надорад. Ин план аст.

Биёед дар бораи хондан сӯҳбат кунем

Акнун биёед дар бораи хондан сӯҳбат кунем. Мо инчунин асбоби худро дар ин ҷо навиштем. Чунин ба назар мерасад, хуб, чаро асбоби худро дар ин ҷо нависед?.. Ва Табиксро кӣ истифода кардааст? Чй хел кам одамон даст бардошт... Ва аз спектакли Табикс каноатманд аст? Хуб, мо аз он қаноатманд нестем ва он барои дидани маълумот чандон қулай нест. Ин барои таҳлил хуб аст, аммо танҳо барои тамошо он комилан оптимизатсия нашудааст. Ҳамин тавр, ман интерфейси шахсии худро навиштам.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Ин хеле содда аст - он метавонад танҳо маълумотро хонад. Вай чи тавр нишон додани графикро намедонад, чй тавр кор карданро намедонад. Аммо он метавонад нишон диҳад, ки ба мо чӣ лозим аст: масалан, дар ҷадвал чанд сатр мавҷуд аст, он чӣ қадар ҷойро ишғол мекунад (бидуни он ба сутунҳо тақсим карда мешавад), яъне интерфейси хеле оддӣ он чизест, ки ба мо лозим аст.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Ва он ба Sequel Pro хеле монанд аст, аммо танҳо дар Twitter Bootstrap ва версияи дуюм сохта шудааст. Шумо мепурсед: "Юри, чаро дар версияи дуюм?" Кадом сол? 2018? Умуман, ман инро хеле пештар барои "Muscle" (MySQL) карда будам ва танҳо як чанд сатрро дар дархостҳо дар он ҷо иваз кардам ва он барои "Clickhouse" ба кор шурӯъ кард, ки ташаккури махсус! Азбаски таҳлилгар ба "мушакҳо" хеле монанд аст ва дархостҳо хеле монанданд - хеле қулай, махсусан дар аввал.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Хуб, он метавонад ҷадвалҳоро филтр кунад, сохтор ва мундариҷаи ҷадвалро нишон диҳад, ба шумо имкон медиҳад, ки ба навъҳо ҷудо кунед, аз рӯи сутунҳо филтр кунед, дархостеро, ки дар натиҷа натиҷа дод, сатрҳои зарардида (чанд дар натиҷа), нишон медиҳад, яъне чизҳои асосӣ барои дидани маълумот. Хеле зуд.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Муҳаррир низ ҳаст. Ман ростқавлона кӯшиш кардам, ки тамоми муҳаррирро аз Tabix дуздам, аммо натавонистам. Аммо гӯё он кор мекунад. Дар асл, ҳамааш ҳамин аст.

"Clickhouse" барои хонаҳо мувофиқ аст

Ман мехоҳам ба шумо бигӯям, ки Clickhouse, сарфи назар аз ҳама мушкилоти тавсифшуда, барои гузоришҳо хеле мувофиқ аст. Муҳимтар аз ҳама, он мушкилоти моро ҳал мекунад - он хеле зуд аст ва ба шумо имкон медиҳад, ки гузоришҳоро аз рӯи сутунҳо филтр кунед. Аслан, ҷадвалҳои буферӣ хуб кор накардаанд, аммо одатан ҳеҷ кас намедонад, ки чаро... Шояд ҳоло шумо беҳтар медонед, ки дар куҷо мушкилот доред.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

TCP? Умуман, дар ВК истифодаи UDP маъмул аст. Ва вакте ки ман TCP-ро истифода кардам... Албатта, касе ба ман нагуфт: «Юрий, ту чй мегуй! Шумо наметавонед, ба шумо UDP лозим аст." Маълум шуд, ки TCP он қадар даҳшатнок нест. Ягона чиз ин аст, ки агар шумо даҳҳо ҳазор пайвастагиҳои фаъол дошта бошед, ки шумо менависед, шумо бояд онро каме бодиққат омода кунед; аммо ин имконпазир аст ва хеле осон аст.

Ман ваъда додам, ки агар ҳама ба "ВК бэйнд"-и оммавии мо обуна шаванд, "Киттенхаус" ва "Маяк"-ро дар HighLoad Siberia мегузорам... Ва шумо медонед, ки на ҳама обуна шуданд... Албатта, ман аз шумо талаб намекунам, ки ба мо обуна шавед. чамъиятй. Шумо ҳоло ҳам зиёданд, шояд касе ҳатто хафа шавад, аммо ба ҳар ҳол, лутфан обуна шавед (ва дар ин ҷо ман бояд чашмони гурбаро монанд кунам). ки бо роҳи пайваст ба он. Ташаккури зиёд! Github аз они мост дар ин ҷо. Бо Clickhouse мӯи шумо нарм ва абрешим хоҳад буд.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Модератор: — Рафикон, акнун барои саволхо. Дарҳол пас аз пешниҳоди шаҳодатномаи миннатдорӣ ва ҳисоботи шумо дар бораи VHS.

Юрий Насретдинов (минбаъд Ю. Н.): - Чӣ тавр шумо тавонистед гузориши маро дар бораи VHS сабт кунед, агар он нав ба охир расида бошад?

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

Модератор: - Шумо инчунин наметавонед пурра муайян кунед, ки "Clickhouse" чӣ гуна кор мекунад ё не! Дӯстон, 5 дақиқа барои саволҳо!

Саволҳои шумо

Саволи шунавандагон (минбаъд - Савол): - Нимирӯзи ба хайр. Ташаккури зиёд барои гузориш. Ман ду савол дорам. Ман бо як чизи сабук оғоз мекунам: оё шумораи ҳарфҳои t дар номи "Киттенхаус" дар диаграммаҳо (3, 4, 7...) ба қаноатмандии гурбаҳо таъсир мерасонад?

YN: - Миқдори чӣ?

З: – Номаи т. Се t ҳастанд, дар ҷое тақрибан се т.

YN: -Оё ман ислоҳ накардаам? Хуб, албатта мекунад! Инҳо маҳсулоти гуногунанд - ман ҳама вақт шуморо фиреб медодам. Хуб, ман шӯхӣ мекунам - ин муҳим нест. Оҳ, ҳамин ҷо! Не, ҳамин хел аст, ман хато кардам.

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

З: - Сипос. Саволи дуюм ҷиддӣ аст. То ҷое ки ман мефаҳмам, дар Clickhouse ҷадвалҳои буферӣ танҳо дар хотира зиндагӣ мекунанд, ба диск буферӣ карда намешаванд ва мувофиқан доимӣ нестанд.

YN: - Бале.

З: - Ва дар айни замон, муштарии шумо ба диск буферӣ мекунад, ки ин кафолати интиқоли ҳамон гузоришҳоро дорад. Аммо ин ба ҳеҷ ваҷҳ дар Clickhouse кафолат дода намешавад. Фахмонед, ки кафолат чй тавр ба чо оварда мешавад, аз чй сабаб?.. Ана ин механизм муфассалтар

YN: – Бале, аз ҷиҳати назариявӣ дар ин ҷо ягон зиддият вуҷуд надорад, зеро вақте ки Clickhouse меафтад, шумо метавонед онро бо миллионҳо роҳҳои гуногун муайян кунед. Агар Clickhouse суқут кунад (агар он нодуруст анҷом ёбад), шумо метавонед, тақрибан гӯем, каме сабти худро, ки навиштаед, баргардонед ва аз лаҳзае, ки ҳама чиз хуб буд, оғоз кунед. Фарз мекунем, ки шумо як дақиқа ба ақиб бармегардед, яъне дар як дақиқа ҳама чизро шустаед.

З: – Яъне «Киттенхаус» тирезаро дарозтар нигоҳ медорад ва дар сурати афтодан метавонад онро шинохт ва ба ақиб печонад?

YN: — Аммо ин дар назария аст. Дар амал, мо ин корро намекунем ва интиқоли боэътимод аз сифр то вақти беохир аст. Аммо ба ҳисоби миёна як. Мо қаноатмандем, ки агар Clickhouse бо ягон сабаб суқут кунад ё серверҳо "аз нав оғоз кунанд", пас мо каме гум мекунем. Дар ҳама ҳолатҳои дигар, ҳеҷ чиз рӯй нахоҳад дод.

З: - Салом. Аз аввал ба ман чунин менамуд, ки шумо воқеан аз ибтидои гузориш UDP-ро истифода мебаред. Шумо http доред, ин ҳама... Ва аксари мушкилоте, ки шумо тавсиф кардед, чунон ки ман мефаҳмам, аз ҳамин ҳалли мушаххас ба вуҷуд омадааст...

YN: - Мо TCP-ро чӣ истифода мебарем?

З: - Аслан бале.

YN: -Ном.

З: - Маҳз бо fasthttp мушкилот доштед, бо пайвастшавӣ шумо мушкилот дошт. Агар шумо танҳо UDP-ро истифода мебурдед, шумо каме вақтро сарфа мекардед. Хуб, бо паёмҳои тӯлонӣ ё чизи дигар мушкилот вуҷуд дорад ...

YN: — Бо чй?

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

З: – Бо паёмҳои тӯлонӣ, азбаски он метавонад ба МТУ мувофиқат накунад, чизи дигар... Хуб, шояд мушкилоти худашон ҳам бошад. Савол ин аст: чаро UDP нест?

YN: - Ман боварӣ дорам, ки муаллифоне, ки TCP/IP-ро таҳия кардаанд, аз ман хеле оқилтаранд ва аз ман беҳтар медонанд, ки чӣ тавр пакетҳоро силсилавӣ кардан (то он ки онҳо бираванд), ҳамзамон равзанаи ирсолро танзим кунанд, шабакаро аз ҳад зиёд пурбор накунанд ва дар бораи он фикру мулоҳизаҳо диҳанд. хонда намешавад, аз тарафи дигар ҳисоб намекунад... Ҳамаи ин мушкилот, ба назари ман, дар UDP вуҷуд доранд, танҳо ман бояд аз он ки аллакай навишта будам, коди бештаре нависам, то худи ҳамон чизеро амалӣ созам ва эҳтимол дорад. бад. Ман ҳатто навиштан дар C-ро дӯст намедорам, бигзор он ҷо…

З: - Фақат қулай! Хуб фиристода шуд ва ҳеҷ чизро интизор нашавед - он комилан асинхронӣ аст. Огоҳинома омад, ки ҳама чиз хуб аст - ин маънои онро дорад, ки он расидааст; Агар он наояд, ин маънои онро дорад, ки он бад аст.

YN: — Ба ман хар ду лозим — ман бояд хам бо кафолати тахеил ва хам бе кафолати тахеил фиристам. Ин ду сенарияи гуногун мебошанд. Ман бояд баъзе гузоришҳоро гум накунам ё онҳоро дар асоси сабаб гум накунам.

З: — Ман вақтро аз даст намедиҳам. Инро бештар мухокима кардан лозим аст. Сипос.

Модератор: – Кӣ савол дорад – даст ба осмон!

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

З: - Салом, ман Саша ҳастам. Дар ягон чо дар мобайни гузориш чунин хиссиёте пайдо шуд, ки ба гайр аз TCP, аз халли тайёр — як навъ Кафка истифода бурдан мумкин аст.

YN: – Хуб... Ман ба шумо гуфтам, ки ман серверҳои миёнаравро истифода кардан намехоҳам, зеро... дар Кафка маълум мешавад, ки мо даҳ ҳазор ҳост дорем; дар асл, мо бештар - даҳҳо ҳазор мизбон дорем. Бе ягон прокси кор кардан бо Кафка низ метавонад дардовар бошад. Илова бар ин, муҳимтар аз ҳама, он ҳоло ҳам "таҳқирӣ" медиҳад, он ҳостҳои иловагӣ медиҳад, ки шумо бояд дошта бошед. Аммо ман намехоҳам онҳоро дошта бошам - ман мехоҳам ...

З: "Аммо дар ниҳоят ин тавр шуд."

YN: – Не, мизбон нест! Ин ҳама дар мизбонҳои Clickhouse кор мекунад.

З: - Хуб, ва "Киттенхаус", ки баръакс аст - ӯ дар куҷо зиндагӣ мекунад?

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

YN: – Дар мизбони Clickhouse, он ба диск чизе наменависад.

З: — Фарз мекунем.

Модератор: — Шумо қаноатмандед? Оё мо метавонем ба шумо маош диҳем?

З: — Бале, метавонед. Воқеан, барои ба даст овардани як чиз асобаҳои зиёде мавҷуданд ва ҳоло - ҷавоби қаблӣ дар мавзӯи TCP, ба назари ман, ин вазъият мухолиф аст. Чунин ба назар мерасад, ки ҳама чизро дар зонуҳои ман дар муддати хеле камтар иҷро кардан мумкин буд.

YN: - Ва инчунин чаро ман намехостам Кафкаро истифода барам, зеро дар сӯҳбати Clickhouse Telegram шикоятҳои зиёде буданд, ки масалан, паёмҳои Кафка гум шудаанд. На аз худи Кафка, балки дар ҳамгироии Кафка ва Кликхаус; ё чизе ба он ҷо пайваст нашудааст. Тақрибан, он вақт барои Кафка мизоҷ навиштан лозим буд. Ман фикр намекунам, ки ҳалли соддатар ё боэътимодтар вуҷуд дошта бошад.

З: - Бигӯед, ки чаро шумо ягон навбат ё автобуси маъмулиро надидед? Азбаски шумо мегӯед, ки бо асинхронӣ шумо метавонед гузоришҳоро тавассути навбат фиристед ва посухро ба таври асинхронӣ тавассути навбат қабул кунед?

HighLoad++, Юрий Насретдинов (ВКонтакте): чӣ гуна ВК маълумотро ба ClickHouse аз даҳҳо ҳазор серверҳо ворид мекунад

YN: – Лутфан пешниҳод кунед, ки кадом навбатҳоро истифода бурдан мумкин аст?

З: - Ҳар гуна, ҳатто бе кафолати дар тартибот будан. Як навъ Redis, RMQ...

YN: - Ман ҳис мекунам, ки Редис эҳтимолан ҳатто дар як ҳост (ба маънои якчанд сервер), ки Clickhouse-ро берун мекунад, чунин ҳаҷми воридкуниро гирифта наметавонад. Ман инро бо ягон далел тасдиқ карда наметавонам (ман онро муқоиса накардаам), аммо ба назари ман, Редис беҳтарин роҳи ҳалли ин ҷо нест. Аслан, ин системаро метавон як навбати паёмнависии импровизатсияшуда ҳисоб кард, аммо он танҳо барои "Clickhouse" мутобиқ карда шудааст.

Модератор: — Юрий, ташаккури зиёд. Пешниҳод мекунам, ки саволу ҷавобро дар ҳамин ҷо анҷом диҳам ва бигӯям, ки ба кадоме аз онҳое, ки савол додаанд, китобро медиҳем.

YN: — Ба аввалин касе, ки савол дод, китоб додан мехостам.

Модератор: - Аҷоиб! Аҷоиб! Аҷоиб! Ташаккур!

Баъзе рекламаҳо 🙂

Ташаккур ба шумо барои бо мо мондан. Мақолаҳои мо ба шумо маъқуланд? Мехоҳед мундариҷаи ҷолибтарро бубинед? Бо фармоиш додан ё тавсия додан ба дӯстон моро дастгирӣ кунед, абр VPS барои таҳиягарон аз $4.99, аналоги беназири серверҳои сатҳи ибтидоӣ, ки аз ҷониби мо барои шумо ихтироъ шудааст: Тамоми ҳақиқат дар бораи VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps аз $19 ё чӣ гуна мубодила кардани сервер? (бо RAID1 ва RAID10, то 24 ядро ​​ва то 40 ГБ DDR4 дастрас аст).

Dell R730xd дар маркази додаҳои Equinix Tier IV дар Амстердам 2 маротиба арзонтар аст? Танҳо дар ин ҷо 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ аз $199 дар Нидерландия! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - аз $99! Дар бораи хондан Корпоратсияи инфраструктураро чӣ гуна бояд сохт. синф бо истифодаи серверҳои Dell R730xd E5-2650 v4 ба маблағи 9000 XNUMX евро барои як динор?

Манбаъ: will.com

Илова Эзоҳ