HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

HighLoad++ Maskava 2018, Kongresu nams. 9. novembrī 15:00

Abstrakti un prezentācija: http://www.highload.ru/moscow/2018/abstracts/4066

Jurijs Nasretdinovs (VKontakte): pārskatā tiks runāts par ClickHouse ievieÅ”anas pieredzi mÅ«su uzņēmumā - kāpēc mums tas ir vajadzÄ«gs, cik daudz datu mēs glabājam, kā tos rakstām utt.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Papildu materiāli: izmantojot Clickhouse kā ELK, Big Query un TimescaleDB aizstājēju

Jurijs Nasretdinovs: - Sveiki visiem! Mani sauc Jurijs Nasretdinovs, kā mani jau iepazÄ«stināja. Es strādāju VKontakte. Es runāŔu par to, kā mēs ievietojam datus ClickHouse no mÅ«su serveru flotes (desmitiem tÅ«kstoÅ”u).

Kas ir apaļkoki un kāpēc tos vākt?

Ko mēs jums pastāstÄ«sim: ko mēs darÄ«jām, kāpēc mums bija nepiecieÅ”ams ā€œClickHouseā€, attiecÄ«gi, kāpēc mēs to izvēlējāmies, kādu veiktspēju jÅ«s varat iegÅ«t, neko Ä«paÅ”i nekonfigurējot. Es jums pastāstÄ«Å”u vairāk par bufera tabulām, par problēmām, kas mums radās ar tām, un par mÅ«su risinājumiem, ko izstrādājām no atvērtā koda ā€” KittenHouse un Lighthouse.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Kāpēc mums vispār bija kaut kas jādara (VKontakte vienmēr viss ir kārtÄ«bā, vai ne?). Mēs gribējām savākt atkļūdoÅ”anas žurnālus (un tur bija simtiem terabaitu datu), varbÅ«t kaut kā ērtāk bÅ«tu aprēķināt statistiku; un mums ir desmitiem tÅ«kstoÅ”u serveru, no kuriem tas viss ir jādara.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Kāpēc mēs izlēmām? DroÅ”i vien mums bija risinājumi baļķu uzglabāŔanai. LÅ«k ā€“ ir tāds publisks ā€œBackend VKā€. Es ļoti iesaku to abonēt.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Kas ir apaļkoki? Å is ir dzinējs, kas atgriež tukÅ”us masÄ«vus. Dzinējus VK citi sauc par mikropakalpojumiem. Un Å”eit ir smaidoÅ”a uzlÄ«me (diezgan daudz atzÄ«mju patÄ«k). Kā tā? Nu klausies tālāk!

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Ko var izmantot žurnālu uzglabāŔanai? Nav iespējams nepieminēt Hadupu. Pēc tam, piemēram, Rsyslog (Å”o žurnālu saglabāŔana failos). LSD. Kas zina, kas ir LSD? Nē, ne Å”is LSD. AttiecÄ«gi arÄ« saglabājiet failus. Nu, ClickHouse ir dÄ«vaina iespēja.

Clickhouse un konkurenti: prasības un iespējas

Ko mēs gribam? Mēs vēlamies nodroÅ”ināt, ka mums nav pārāk jāuztraucas par darbÄ«bu, lai tā darbotos jau no kastes, vēlams ar minimālu konfigurāciju. Mēs vēlamies rakstÄ«t daudz un ātri. Un mēs vēlamies to saglabāt visādus mēneÅ”us, gadus, tas ir, ilgu laiku. Mēs, iespējams, vēlēsimies izprast kādu problēmu, ar kuru viņi pie mums vērsās un teica: ā€œÅ eit kaut kas nedarbojasā€, un tas notika pirms 3 mēneÅ”iem), un mēs vēlamies redzēt, kas notika pirms 3 mēneÅ”iem. Datu saspieÅ”ana ā€” ir skaidrs, kāpēc tas bÅ«tu pluss ā€” jo tas samazina aizņemto vietu.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Un mums ir tāda interesanta prasÄ«ba: mēs dažreiz rakstām dažu komandu izvadi (piemēram, žurnālus), tas var bÅ«t lielāks par 4 kilobaitiem diezgan viegli. Un, ja Ŕī lieta darbojas, izmantojot UDP, tad tai nav jātērē... tai nebÅ«s nekādu "pieskaitÄ«jumu" savienojumam, un lielam skaitam serveru tas bÅ«s plus.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

ApskatÄ«sim, ko mums piedāvā atvērtais avots. Pirmkārt, mums ir Logs Engine ā€” tas ir mÅ«su dzinējs; Principā viņŔ var visu, var pat rakstÄ«t garas rindas. Nu, tas nepārskatāmi nesaspiež datus - mēs paÅ”i varam saspiest lielas kolonnas, ja vēlamies... mēs, protams, nevēlamies (ja iespējams). VienÄ«gā problēma ir tā, ka viņŔ var atdot tikai to, kas iederas viņa atmiņā; Lai lasÄ«tu pārējo, jums ir jāiegÅ«st Ŕī dzinēja binlogs, un attiecÄ«gi tas aizņem diezgan ilgu laiku.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Kādas vēl ir iespējas? Piemēram, "Hadup". VienkārÅ”a darbÄ«ba... KurÅ” domā, ka Hadup ir viegli iestatÄ«t? Protams, ar ierakstu nav nekādu problēmu. Lasot, reizēm rodas jautājumi. Principā es teiktu, ka droÅ”i vien nē, it Ä«paÅ”i attiecÄ«bā uz baļķiem. Ilgtermiņa glabāŔana - protams, jā, datu saspieÅ”ana - jā, garas virknes - ir skaidrs, ka varat ierakstÄ«t. Bet ierakstÄ«Å”ana no liela daudzuma serveriem... Vēl kaut kas jādara paÅ”am!

Rsyslog. Faktiski mēs to izmantojām kā rezerves opciju, lai mēs to varētu lasÄ«t, neizlaižot binlog, bet tas nevar rakstÄ«t garas rindas; principā tas nevar ierakstÄ«t vairāk par 4 kilobaitiem. Tādā paŔā veidā datu saspieÅ”ana jāveic paÅ”am. LasÄ«Å”ana notiks no failiem.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Tad ir LSD ā€œbadushkaā€ attÄ«stÄ«ba. BÅ«tÄ«bā tas pats, kas ā€œRsyslogā€: tas atbalsta garas virknes, taču tas nevar darboties, izmantojot UDP, un patiesÄ«bā tāpēc diemžēl ir diezgan daudz lietu, kas ir jāpārraksta. LSD ir jāpārveido, lai varētu ierakstÄ«t no desmitiem tÅ«kstoÅ”u serveru.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Un Å”eit! SmieklÄ«ga iespēja ir ElasticSearch. Kā pateikt? Viņam labi veicas ar lasÄ«Å”anu, proti, viņŔ lasa ātri, bet ne pārāk labi ar rakstÄ«Å”anu. Pirmkārt, ja tas saspiež datus, tas ir ļoti vājÅ”. Visticamāk, pilnÄ«gai meklÄ“Å”anai ir nepiecieÅ”amas lielākas datu struktÅ«ras nekā sākotnējam apjomam. To ir grÅ«ti operēt, un ar to bieži rodas problēmas. Un, atkal, ieraksts Elastic - viss jādara paÅ”iem.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Å eit ClickHouse, protams, ir ideāls risinājums. VienÄ«gā lieta ir tāda, ka ierakstÄ«Å”ana no desmitiem tÅ«kstoÅ”u serveru ir problēma. Bet vismaz ir viena problēma, mēs varam mēģināt to kaut kā atrisināt. Un pārējā ziņojuma daļa ir par Å”o problēmu. Kādu sniegumu jÅ«s varat sagaidÄ«t no ClickHouse?

Kā mēs to ievietosim? MergeTree

KurÅ” no jums nav dzirdējis vai nezina par ā€œClickHouseā€? Man tev jāsaka, vai ne? Ä»oti ātri. Tur esoÅ”ais ievietojums - 1-2 gigabiti sekundē, sērijveidā lÄ«dz 10 gigabitiem sekundē faktiski var izturēt Å”o konfigurāciju - ir divi 6 kodolu Xeon (tas ir, pat ne jaudÄ«gākie), 256 gigabaiti RAM, 20 terabaiti RAID (nav konfigurēts, noklusējuma iestatÄ«jumi). Aleksejs Milovidovs, ClickHouse izstrādātājs, iespējams, sēž un raud, jo mēs neko nekonfigurējām (mums viss tā strādāja). AttiecÄ«gi, ja dati ir labi saspiesti, var iegÅ«t skenÄ“Å”anas ātrumu, piemēram, apmēram 6 miljardus lÄ«niju sekundē. Ja jums patÄ«k % teksta virknē - 100 miljoni rindiņu sekundē, tas ir, tas Ŕķiet diezgan ātri.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Kā mēs to ievietosim? Nu, jÅ«s zināt, ka VK izmanto PHP. Mēs ievietosim no katra PHP darbinieka, izmantojot HTTP, ā€œClickHouseā€, katra ieraksta MergeTree tabulā. KurÅ” saskata problēmas Å”ajā shēmā? Nez kāpēc ne visi pacēla rokas. Ä»auj man tev pateikt.

Pirmkārt, ir daudz serveru - attiecÄ«gi bÅ«s daudz savienojumu (slikti). Tad labāk ir ievietot datus MergeTree ne biežāk kā reizi sekundē. Un kas zina, kāpēc? Labi, labi. Es jums pastāstÄ«Å”u mazliet vairāk par Å”o. Vēl viens interesants jautājums ir tas, ka mēs neveicam analÄ«zi, mums nav nepiecieÅ”ams bagātināt datus, mums nav vajadzÄ«gi starpposma serveri, mēs vēlamies ievietot tieÅ”i ā€œClickHouseā€ (vēlams - jo tieŔāk, jo labāk).

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

AttiecÄ«gi, kā ievietoÅ”ana tiek veikta programmā MergeTree? Kāpēc labāk tajā ievietot ne biežāk kā reizi sekundē vai retāk? Fakts ir tāds, ka ā€œClickHouseā€ ir kolonnu datu bāze un sakārto datus augoŔā secÄ«bā pēc primārās atslēgas, un, veicot ievietoÅ”anu, tiek izveidots failu skaits, kas ir vismaz vienāds ar kolonnu skaitu, kurās dati ir sakārtoti. primārās atslēgas augoŔā secÄ«bā (tiek izveidots atseviŔķs direktorijs, failu kopa diskā katram ievietojumam). Tad nāk nākamais ievietojums, un fonā tie tiek apvienoti lielākās ā€œstarpsienāsā€. Tā kā dati ir sakārtoti, ir iespējams ā€œsapludinātā€ divus sakārtotus failus, nepatērējot daudz atmiņas.

Bet, kā jÅ«s varētu nojaust, ja katram ievietojumam ierakstÄ«sit 10 failus, ClickHouse (vai jÅ«su serveris) ātri beigsies, tāpēc ieteicams ievietot lielās partijās. AttiecÄ«gi mēs nekad neieviesām pirmo shēmu ražoÅ”anā. Mēs nekavējoties izlaidām vienu, kam Å”eit Nr. 2 ir:

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Å eit iedomājieties, ka ir apmēram tÅ«kstotis serveru, uz kuriem mēs esam palaiduÅ”i, ir tikai PHP. Un katrā serverÄ« ir mÅ«su vietējais aÄ£ents, ko mēs nosaucām par ā€œKittenhouseā€, kas uztur vienu savienojumu ar ā€œClickHouseā€ un ievieto datus ik pēc dažām sekundēm. Ievieto datus nevis MergeTree, bet gan bufera tabulā, kas precÄ«zi kalpo, lai izvairÄ«tos no tÅ«lÄ«tējas ievietoÅ”anas MergeTree.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Darbs ar bufera tabulām

Kas tas ir? Bufera tabulas ir atmiņas daļa, kas ir sadalÄ«ta (tas ir, to var tajā ievietot bieži). Tie sastāv no vairākiem gabaliem, un katrs no tiem darbojas kā neatkarÄ«gs buferis, un tie tiek izskaloti neatkarÄ«gi (ja jums ir daudz gabalu buferÄ«, tad bÅ«s daudz ieliktņu sekundē). No Ŕīm tabulām var lasÄ«t - tad jÅ«s lasāt bufera un vecāktabulas satura savienÄ«bu, bet Å”ajā brÄ«dÄ« rakstÄ«Å”ana ir bloķēta, tāpēc no turienes labāk nelasÄ«t. Un bufera tabulas parāda ļoti labu QPS, tas ir, lÄ«dz 3 tÅ«kstoÅ”iem QPS jums vispār nebÅ«s nekādu problēmu ievietojot. Skaidrs, ka, ja serverim pazÅ«d strāva, tad dati var pazust, jo tie tika saglabāti tikai atmiņā.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Tajā paŔā laikā shēma ar buferi apgrÅ«tina ALTER, jo vispirms ir jāatmet vecā bufera tabula ar veco shēmu (dati nekur nepazudÄ«s, jo tie tiks izskaloti pirms tabulas dzÄ“Å”anas). Pēc tam jÅ«s "maināt" vajadzÄ«go tabulu un vēlreiz izveidojat bufera tabulu. AttiecÄ«gi, kamēr nav bufera tabulas, jÅ«su dati nekur neplÅ«st, bet tie var bÅ«t diskā vismaz lokāli.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Kas ir Kittenhouse un kā tā darbojas?

Kas ir KittenHouse? Å is ir starpniekserveris. Uzmini kādā valodā? Es savā pārskatā apkopoju visvairāk ažiotāžu tēmas - ā€œClickhouseā€, Aiziet, varbÅ«t atcerÄ“Å”os vēl kaut ko. Jā, tas ir rakstÄ«ts Go, jo es Ä«sti nezinu, kā rakstÄ«t C valodā, es nevēlos.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

AttiecÄ«gi tas uztur savienojumu ar katru serveri un var rakstÄ«t atmiņā. Piemēram, ja mēs ierakstām kļūdu žurnālus Clickhouse, tad, ja Clickhouse nav laika ievietot datus (galu galā, ja ir rakstÄ«ts pārāk daudz), tad mēs neuzpÅ«Å”am atmiņu - mēs vienkārÅ”i izmetam pārējo. Jo, ja mēs ierakstām vairākus gigabitus sekundē kļūdas, tad mēs droÅ”i vien varam izmest dažas. Kittenhouse to var izdarÄ«t. Turklāt tas var veikt uzticamu piegādi, tas ir, rakstÄ«t uz diska vietējā datorā un vienu reizi (tur, reizi pāris sekundēs) mēģina piegādāt datus no Ŕī faila. Un sākumā mēs izmantojām parasto vērtÄ«bu formātu - nevis kādu bināro formātu, bet teksta formātu (kā parastajā SQL).

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Bet tad tas notika. Mēs izmantojām uzticamu piegādi, rakstÄ«jām žurnālus, tad nolēmām (tas bija nosacÄ«ta testa klasteris)... Tas tika izlikts uz vairākām stundām un atkal tika celts, un sākās ievietoÅ”ana no tÅ«kstoÅ” serveriem - izrādÄ«jās, ka Clickhouse joprojām bija ā€œPavediens savienojumāā€ - attiecÄ«gi tÅ«kstoÅ” savienojumu aktÄ«va ievietoÅ”ana noved pie servera vidējās slodzes aptuveni pusotra tÅ«kstoÅ”a. PārsteidzoÅ”i, serveris pieņēma pieprasÄ«jumus, bet dati joprojām tika ievietoti pēc kāda laika; bet serverim bija ļoti grÅ«ti to apkalpot...

Pievienojiet nginx

Šāds Thread per savienojuma modeļa risinājums ir nginx. Mēs instalējām nginx pirms Clickhouse, tajā paŔā laikā iestatÄ«jām balansÄ“Å”anu divām replikām (mÅ«su ievietoÅ”anas ātrums palielinājās 2 reizes, lai gan tas nav fakts, ka tam vajadzētu bÅ«t) un ierobežojām savienojumu skaitu ar Clickhouse, lÄ«dz augÅ”tecē un attiecÄ«gi vairāk , nekā 50 savienojumos, Ŕķiet, nav jēgas ievietot.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Tad mēs sapratām, ka Å”ai shēmai kopumā ir trÅ«kumi, jo mums Å”eit ir tikai viens nginx. AttiecÄ«gi, ja Å”is nginx avarē, neskatoties uz kopiju klātbÅ«tni, mēs zaudējam datus vai vismaz nekur nerakstām. Tāpēc mēs paÅ”i izveidojām slodzes lÄ«dzsvaroÅ”anu. Mēs arÄ« sapratām, ka ā€œClickhouseā€ joprojām ir piemērots apaļkokiem, un ā€œdēmonsā€ arÄ« sāka rakstÄ«t savus žurnālus ā€œClickhouseā€ - godÄ«gi sakot, ļoti ērti. Mēs joprojām to izmantojam citiem "dēmoniem".

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Tad mēs atklājām Å”o interesanto problēmu: ja izmantojat nestandarta ievietoÅ”anas metodi SQL režīmā, tas piespiež pilnvērtÄ«gu AST balstÄ«tu SQL parsētāju, kas ir diezgan lēns. AttiecÄ«gi mēs esam pievienojuÅ”i iestatÄ«jumus, lai nodroÅ”inātu, ka tas nekad nenotiek. Veicām slodzes balansÄ“Å”anu, veselÄ«bas pārbaudes, lai ja kāds nomirst, tad tomēr atstājam datus. Tagad mums ir diezgan daudz tabulu, kurām mums ir jābÅ«t dažādām Clickhouse klasteriem. Un mēs arÄ« sākām domāt par citiem lietojumiem - piemēram, mēs vēlējāmies rakstÄ«t žurnālus no nginx moduļiem, bet viņi nezina, kā sazināties, izmantojot mÅ«su RPC. Labi, es gribētu iemācÄ«t viņiem vismaz kaut kā sÅ«tÄ«t - piemēram, saņemt notikumus localhost caur UDP un pēc tam pārsÅ«tÄ«t tos uz Clickhouse.

Viena soļa attālumā no risinājuma

GalÄ«gā shēma sāka izskatÄ«ties Ŕādi (Ŕīs shēmas ceturtā versija): katrā serverÄ« Clickhouse priekŔā ir nginx (uz tā paÅ”a servera), un tā vienkārÅ”i nosÅ«ta pieprasÄ«jumus vietējam resursdatoram ar ierobežojumu savienojumu skaitam 50. gabaliem. Un Ŕī shēma jau darbojās diezgan labi, ar to viss bija diezgan labi.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Mēs Ŕādi dzÄ«vojām apmēram mēnesi. Visi priecājās, pievienoja tabulas, pievienoja, pievienoja... Kopumā izrādÄ«jās, ka veids, kā mēs pievienojām bufera tabulas, nebija Ä«paÅ”i optimāls (teiksim tā). Mēs izdarÄ«jām 16 gabalus katrā tabulā un pāris sekunžu zibspuldzes intervālu; mums bija 20 galdi un katra tabula saņēma 8 ieliktņus sekundē - un Å”ajā brÄ«dÄ« sākās ā€œClickhouseā€... ieraksti sāka palēnināties. Viņi pat netika cauri ... Nginx pēc noklusējuma bija tik interesanta lieta, ka, ja savienojumi beidzās augÅ”pusē, tas vienkārÅ”i atgrieza "502" visiem jaunajiem pieprasÄ«jumiem.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Un Å”eit mēs esam (es tikko paskatÄ«jos paŔā Clickhouse žurnālus) apmēram puse procenta pieprasÄ«jumu neizdevās. AttiecÄ«gi diska noslodze bija augsta, bija daudz sapludināŔanas. Nu ko es izdarÄ«ju? Protams, es neuztraucos izdomāt, kāpēc tieÅ”i savienojums un augÅ”tece beidzās.

Nginx aizstāŔana ar reverso starpniekserveri

Es nolēmu, ka mums tas ir jāpārvalda paÅ”iem, mums tas nav jāatstāj nginx ziņā ā€” nginx nezina, kādas tabulas ir Clickhouse, un es aizstāju nginx ar reverso starpniekserveri, ko arÄ« rakstÄ«ju pats.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Ko viņŔ dara? Tas darbojas, pamatojoties uz fasthttp bibliotēku ā€œgoshnoyā€, tas ir, ātri, gandrÄ«z tikpat ātri kā nginx. Atvainojiet, Igor, ja esat Å”eit (piezÄ«me: Igors Sisojevs ir krievu programmētājs, kurÅ” izveidoja nginx tÄ«mekļa serveri). Tas var saprast, kāda veida vaicājumi tie ir ā€“ INSERT vai SELECT ā€“ attiecÄ«gi tam ir dažādi savienojumu pÅ«li dažāda veida vaicājumiem.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

AttiecÄ«gi, pat ja mums nav laika izpildÄ«t ievietoÅ”anas pieprasÄ«jumus, ā€œatlasÄ«tieā€ tiks izturēti un otrādi. Un tas sagrupē datus bufera tabulās - ar nelielu buferi: ja ir kādas kļūdas, sintakses kļūdas un tā tālāk - lai tie Ä«paÅ”i neietekmētu pārējos datus, jo, vienkārÅ”i ievietojot bufera tabulās, bija mazs "bachi", un visas sintakses kļūdas skāra tikai Å”o mazo gabalu; un te jau tie ietekmēs lielu buferi. Mazs ir 1 megabaits, tas ir, ne tik mazs.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Sinhronizācijas ievietoÅ”ana un bÅ«tÄ«bā nginx aizstāŔana bÅ«tÄ«bā veic to paÅ”u, ko nginx darÄ«ja iepriekÅ” ā€” Å”im nolÅ«kam nav jāmaina vietējā ā€œKaķēnu mājaā€. Un, tā kā tas izmanto fasthttp, tas ir ļoti ātrs - jÅ«s varat veikt vairāk nekā 100 tÅ«kstoÅ”us pieprasÄ«jumu sekundē atseviŔķiem ieliktņiem, izmantojot apgriezto starpniekserveri. Teorētiski kaķēnu mājas reversajā starpniekserverÄ« varat ievietot vienu rindiņu vienlaikus, taču mēs, protams, to nedarām.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Shēma sāka izskatÄ«ties Ŕādi: ā€œKittenhouseā€, reversais starpniekserveris sagrupē daudzus pieprasÄ«jumus tabulās un, savukārt, bufera tabulas ievieto tos galvenajās.

Killer ir pagaidu risinājums, kaķēns ir pastāvīgs

Å Ä« ir interesanta problēma... Vai kāds no jums ir izmantojis fasthttp? KurÅ” izmantoja fasthttp ar POST pieprasÄ«jumiem? Iespējams, to tieŔām nevajadzēja darÄ«t, jo tas pēc noklusējuma buferē pieprasÄ«juma pamattekstu, un mÅ«su bufera lielums tika iestatÄ«ts uz 16 megabaiti. Kādā brÄ«dÄ« ievietoÅ”ana pārstāja sekot lÄ«dzi, un no visiem desmitiem tÅ«kstoÅ”u serveru sāka pienākt 16 megabaitu gabali, un tie visi tika buferēti atmiņā pirms nosÅ«tÄ«Å”anas uz Clickhouse. AttiecÄ«gi atmiņa beidzās, atnāca Out-Of-Memory Killer un nogalināja reverso starpniekserveri (vai ā€œClickhouseā€, kas teorētiski varēja ā€œapēstā€ vairāk nekā reversais starpniekserveris). Cikls atkārtojās. Ne pārāk patÄ«kama problēma. Lai gan uz Å”o uzdÅ«rāmies tikai pēc vairāku mēneÅ”u darbÄ«bas.

Ko es esmu izdarÄ«jis? Man atkal ļoti nepatÄ«k saprast, kas Ä«sti notika. Manuprāt, ir diezgan skaidrs, ka nevajadzētu buferizēt atmiņā. Es nevarēju patch fasthttp, lai gan es mēģināju. Bet es atradu veidu, kā padarÄ«t to tā, lai nekas nebÅ«tu jālāpÄ«, un es izdomāju savu metodi HTTP - es to nosaucu KITTEN. Nu loÄ£iski - ā€œVKā€, ā€œKaķēnsā€... Kas vēl?...

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Ja serverim pienāk pieprasÄ«jums ar Kitten metodi, tad serverim ir jāatbild ā€œÅ†auā€ ā€“ loÄ£iski. Ja viņŔ uz to reaģē, tiek uzskatÄ«ts, ka viņŔ saprot Å”o protokolu, un tad es pārtveru savienojumu (fasthttp ir Ŕāda metode), un savienojums pāriet ā€œneapstrādātāā€ režīmā. Kāpēc man tas ir vajadzÄ«gs? Es vēlos kontrolēt, kā notiek lasÄ«Å”ana no TCP savienojumiem. TCP ir brÄ«niŔķīgs Ä«paÅ”ums: ja neviens nelasa no otras puses, tad rakstÄ«Å”ana sāk gaidÄ«t, un atmiņa tam netiek Ä«paÅ”i tērēta.

Un tā es lasu no kādiem 50 klientiem vienā reizē (no piecdesmit jo piecdesmit noteikti vajadzētu pietikt, pat ja likme nāk no cita DC)... PatēriņŔ ar Å”o pieeju ir samazinājies vismaz 20 reizes, bet es, ja godÄ«gi , nevarēju precÄ«zi izmērÄ«t cik laiku, jo tas jau ir bezjēdzÄ«gi (jau ir sasniegts kļūdas lÄ«menis). Protokols ir binārs, tas ir, tajā ir tabulas nosaukums un dati; nav http galvenes, tāpēc es neizmantoju tÄ«mekļa ligzdu (man nav jāsazinās ar pārlÅ«kprogrammām - es izveidoju protokolu, kas atbilst mÅ«su vajadzÄ«bām). Un ar viņu viss kļuva kārtÄ«bā.

Bufera tabula ir skumja

Nesen mēs saskārāmies ar vēl vienu interesantu bufera tabulu funkciju. Un Ŕī problēma jau ir daudz sāpÄ«gāka par citām. Iedomāsimies Ŕādu situāciju: jÅ«s jau aktÄ«vi izmantojat Clickhouse, jums ir desmitiem Clickhouse serveru un jums ir daži pieprasÄ«jumi, kuru nolasÄ«Å”ana prasa ļoti ilgu laiku (teiksim, vairāk nekā 60 sekundes); un jÅ«s nāciet un izdariet Alter Å”ajā brÄ«dÄ«... Tikmēr ā€œatlasÄ«tieā€, kas sākās pirms ā€œAlterā€, netiks iekļauti Å”ajā tabulā, ā€œAlterā€ nesāksies ā€” iespējams, dažas funkcijas, kā ā€œClickhouseā€ darbojas Ŕī vieta. VarbÅ«t Å”o var labot? Vai arÄ« tas ir neiespējami?

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Kopumā ir skaidrs, ka patiesÄ«bā tā nav tik liela problēma, bet ar bufera tabulām kļūst sāpÄ«gāk. Jo, ja, teiksim, jÅ«su ā€œAlterā€ taimauts (un tam var beigties taimauts citā resursdatorā - nevis jÅ«su, bet, piemēram, replikā), tad... JÅ«s izdzēsāt bufera tabulu, savu ā€œAlterā€ ( vai kādam citam resursdatoram) iestājās taimauts. tad ir radusies kļūda ā€œAlterā€) ā€” jums joprojām ir jānodroÅ”ina, lai dati turpinātu rakstÄ«t: jÅ«s izveidojat atpakaļ bufera tabulas (saskaņā ar to paÅ”u shēmu kā vecāktabula), pēc tam ā€œAlterā€ iet cauri, galu galā beidzas, un tabulas buferis sāk atŔķirties no vecākshēmas. AtkarÄ«bā no tā, kas bija ā€œAlterā€, ieliktnis var vairs nenonākt Å”ajā bufera tabulā - tas ir ļoti skumji.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Ir arÄ« Ŕāda zÄ«me (varbÅ«t kāds to pamanÄ«ja) - jaunajās Clickhouse versijās to sauc par query_thread_log. Pēc noklusējuma dažās versijās tāda bija. Å eit pāris mēneÅ”u laikā esam uzkrājuÅ”i 840 miljonus ierakstu (100 gigabaitu). Tas ir saistÄ«ts ar faktu, ka tur bija rakstÄ«ti ā€œieliktņiā€ (varbÅ«t tagad, starp citu, tie nav rakstÄ«ti). Kā jau teicu, mÅ«su ā€œieliktņiā€ ir mazi ā€“ mums bija daudz ā€œieliktņuā€ bufera tabulās. Ir skaidrs, ka tas ir atspējots ā€” es tikai saku, ko redzēju mÅ«su serverÄ«. Kāpēc? Å is ir vēl viens arguments pret bufera tabulu izmantoÅ”anu! Plankumains ir ļoti skumjÅ”.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

KurÅ” zināja, ka Å”o puisi sauc Spotijs? VK darbinieki pacēla rokas. LABI.

Par ā€œKitttenHouseā€ plāniem

Plāni parasti netiek dalÄ«ti, vai ne? PēkŔņi jÅ«s tos neizpildÄ«sit un citu cilvēku acÄ«s neizskatÄ«sieties Ä«paÅ”i labi. Bet es riskÄ“Å”u! Mēs vēlamies rÄ«koties Ŕādi: bufera tabulas, man Ŕķiet, joprojām ir kruÄ·is, un mums paÅ”iem ir jābuferē ievietoÅ”ana. Bet mēs joprojām nevēlamies to buferizēt diskā, tāpēc mēs buferēsim ievietoÅ”anu atmiņā.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

AttiecÄ«gi, kad tiks veikts ā€œievietojumsā€, tas vairs nebÅ«s sinhrons ā€“ darbosies jau kā bufera tabula, ievietos vecāktabulā (nu, kaut kad vēlāk) un pa atseviŔķu kanālu ziņos, kuri ieliktņi ir pagājuÅ”i un kuri nav.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Kāpēc es nevaru atstāt sinhrono ieliktni? Tas ir daudz ērtāk. Fakts ir tāds, ka ja ievieto no 10 tÅ«kstoÅ”iem saimnieku, tad viss ir kārtÄ«bā - no katra hosta saņemsi pa druskai, ievieto tur reizi sekundē, viss ir kārtÄ«bā. Bet es gribētu, lai Ŕī shēma darbotos, piemēram, no divām maŔīnām, lai jÅ«s varētu lejupielādēt lielā ātrumā - varbÅ«t ne iegÅ«t maksimumu no Clickhouse, bet rakstÄ«t vismaz 100 megabaitus sekundē no vienas maŔīnas caur reverso starpniekserveri - Å ajā gadÄ«jumā shēmai ir jāmēro gan lieliem, gan maziem daudzumiem, tāpēc mēs nevaram gaidÄ«t sekundi lÄ«dz katrai ievietoÅ”anai, tāpēc tai ir jābÅ«t asinhronai. Un tādā paŔā veidā asinhroniem apstiprinājumiem vajadzētu nākt pēc ievietoÅ”anas pabeigÅ”anas. Mēs uzzināsim, vai tas ir pagājis vai nē.

VissvarÄ«gākais ir tas, ka Å”ajā shēmā mēs droÅ”i zinām, vai ievietoÅ”ana notika vai nē. Iedomājieties Ŕādu situāciju: jums ir bufera tabula, jÅ«s tajā kaut ko ierakstÄ«jāt, un tad, teiksim, tabula pārgāja tikai lasÄ«Å”anas režīmā un mēģināja iztukÅ”ot buferi. Kur tiks dati? Tie paliks buferÄ«. Bet par to mēs nevaram bÅ«t droÅ”i - ja nu ir kāda cita kļūda, kuras dēļ dati nepaliks buferÄ«... (Uzrunā Aleksejs Milovidovs, Yandex, ClickHouse izstrādātājs) Vai arÄ« paliks? Vienmēr? Aleksejs mÅ«s pārliecina, ka viss bÅ«s labi. Mums nav iemesla viņam neticēt. Bet tas pats: ja mēs neizmantosim bufera tabulas, tad ar tām nebÅ«s nekādu problēmu. Divreiz vairāk tabulu izveidoÅ”ana arÄ« ir neērta, lai gan principā lielu problēmu nav. Å is ir plāns.

Parunāsim par lasīŔanu

Tagad parunāsim par lasÄ«Å”anu. Å eit mēs arÄ« rakstÄ«jām savu rÄ«ku. Å Ä·iet, nu, kāpēc te jāraksta savs instruments?.. Un kurÅ” izmantoja Tabix? Kaut kā maz cilvēku pacēla rokas... Un kurÅ” ir apmierināts ar Tabix sniegumu? Nu, mēs neesam apmierināti ar to, un tas nav Ä«paÅ”i ērti datu apskatei. Tas ir piemērots analÄ«tikai, taču tikai skatÄ«Å”anai tas acÄ«mredzami nav optimizēts. Tāpēc es uzrakstÄ«ju savu, savu interfeisu.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Tas ir ļoti vienkārÅ”i - tas var tikai nolasÄ«t datus. ViņŔ nezina, kā parādÄ«t grafiku, viņŔ nezina, kā kaut ko darÄ«t. Bet tas var parādÄ«t, kas mums ir nepiecieÅ”ams: piemēram, cik rindu ir tabulā, cik daudz vietas tā aizņem (nesadalot to kolonnās), tas ir, mums ir nepiecieÅ”ams ļoti vienkārÅ”s interfeiss.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Un tas izskatās ļoti lÄ«dzÄ«gs Sequel Pro, taču izveidots tikai vietnē Twitter Bootstrap un otrajā versijā. JÅ«s jautājat: "Juri, kāpēc otrajā versijā?" Kurā gadā? 2018. gads? Kopumā es to izdarÄ«ju diezgan sen pirms ā€œMuscleā€ (MySQL) un tikai mainÄ«ju dažas rindiņas tur esoÅ”ajos vaicājumos, un tas sāka darboties ā€œClickhouseā€, par ko Ä«paÅ”s paldies! Jo parsētājs ir ļoti lÄ«dzÄ«gs ā€œmuskuļuā€ parsētājam, un vaicājumi ir ļoti lÄ«dzÄ«gi - ļoti ērti, it Ä«paÅ”i sākumā.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Tā var filtrēt tabulas, var parādīt tabulas struktūru un saturu, ļauj kārtot, filtrēt pēc kolonnām, parāda vaicājumu, kura rezultātā tika iegūts rezultāts, ietekmētās rindas (cik daudz rezultātā), tas ir, pamata lietas datu apskatei. Diezgan ātri.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Ir arī redaktors. Godīgi sakot, es mēģināju nozagt visu redaktoru no Tabix, bet es nevarēju. Bet kaut kā tas darbojas. Principā tas arī viss.

"Clickhouse" ir piemērots midzeņiem

Es vēlos jums pateikt, ka Clickhouse, neskatoties uz visām aprakstÄ«tajām problēmām, ir ļoti labi piemērots apaļkokiem. Pats galvenais, tas atrisina mÅ«su problēmu ā€“ tas ir ļoti ātrs un ļauj filtrēt žurnālus pēc kolonnām. Principā bufera tabulas nav snieguÅ”as labu sniegumu, bet parasti neviens nezina, kāpēc... VarbÅ«t tagad jÅ«s labāk zināt, kur jums bÅ«s problēmas.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

TCP? Kopumā VK ir ierasts izmantot UDP. Un kad es lietoju TCP... Man, protams, neviens neteica: ā€œJuri, ko tu runā! JÅ«s nevarat, jums ir nepiecieÅ”ams UDP. IzrādÄ«jās, ka TCP nav tik biedējoÅ”s. VienÄ«gais, ja jums ir desmitiem tÅ«kstoÅ”u aktÄ«vo savienojumu, ko jÅ«s rakstāt, jums tas ir jāsagatavo nedaudz rÅ«pÄ«gāk; bet tas ir iespējams un diezgan vienkārÅ”i.

Es apsolÄ«ju HighLoad Siberia ievietot ā€œKittenhouseā€ un ā€œLighthouseā€, ja visi abonēs mÅ«su publisko ā€œVK backendā€... Un ziniet, ne visi abonēja... Protams, es nepieprasÄ«Å”u, lai jÅ«s abonētu mÅ«su publiski. JÅ«su joprojām ir pārāk daudz, kāds var pat apvainoties, bet tomēr, lÅ«dzu, abonējiet (un te man jātaisa acis kā kaÄ·im). Tas ir starp citu saiti uz to. Liels paldies! Github ir mÅ«su Å”eit. Ar Clickhouse jÅ«su mati bÅ«s mÄ«ksti un zÄ«daini.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

VadoÅ”ais: - Draugi, tagad uz jautājumiem. TÅ«lÄ«t pēc tam, kad esam uzrādÄ«juÅ”i atzinÄ«bas sertifikātu un jÅ«su ziņojumu par VHS.

Jurijs Nasretdinovs (turpmāk tekstā YN): ā€“ Kā jÅ«s varējāt ierakstÄ«t manu ziņojumu VHS, ja tas tikko beidzās?

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

VadoÅ”ais: ā€“ JÅ«s arÄ« nevarat pilnÄ«bā noteikt, kā ā€œClickhouseā€ darbosies vai nē! Draugi, 5 minÅ«tes jautājumiem!

jautājumi

KlausÄ«tāju jautājums (turpmāk tekstā Q): - Labdien. Liels paldies par ziņojumu. Man ir divi jautājumi. SākÅ”u ar kaut ko vieglprātÄ«gu: vai t burtu skaits nosaukumā "Kaķēnu māja" diagrammās (3, 4, 7...) ietekmē kaÄ·u apmierinātÄ«bu?

YN: - Cik daudz?

Z: ā€“ Burts t. Ir trÄ«s t, kaut kur ap trÄ«s t.

YN: - Vai es to neizlaboju? Nu, protams, ka dara! Tie ir dažādi produkti ā€“ visu Å”o laiku es jÅ«s vienkārÅ”i maldināju. Labi, es jokoju ā€“ tas nav svarÄ«gi. Ak, tieÅ”i Å”eit! Nē, tas ir tas pats, es pieļāvu drukas kļūdu.

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Z: - Paldies. Otrs jautājums ir nopietns. Cik es saprotu, Clickhouse bufera tabulas dzīvo tikai atmiņā, nav buferētas diskā un attiecīgi nav noturīgas.

YN: - Jā.

Z: ā€“ Un tajā paŔā laikā jÅ«su klients buferē diskā, kas nozÄ«mē zināmu garantiju Å”o paÅ”u žurnālu piegādei. Bet Clickhouse tas nekādā gadÄ«jumā netiek garantēts. Paskaidrojiet, kā tiek veikta garantija, sakarā ar ko?.. Å eit ir Å”is mehānisms sÄ«kāk

YN: ā€“ Jā, teorētiski Å”eit nav nekādu pretrunu, jo tad, kad Clickhouse krÄ«t, to faktiski var noteikt miljons dažādos veidos. Ja Clickhouse avarē (ja tas beidzas nepareizi), varat, rupji sakot, nedaudz attÄ«t no jÅ«su pierakstÄ«tā žurnāla un sākt no brīža, kad viss bija precÄ«zi. Pieņemsim, ka attÄ«siet minÅ«ti atpakaļ, tas ir, tiek uzskatÄ«ts, ka esat visu izskalojis minÅ«tes laikā.

Z: ā€“ Proti, ā€œKittenhouseā€ logu notur ilgāk un kritiena gadÄ«jumā var atpazÄ«t un attÄ«t atpakaļ?

YN: ā€“ Bet tas ir teorētiski. Praksē mēs to nedarām, un uzticama piegāde ir no nulles lÄ«dz bezgalÄ«bai. Bet vidēji viens. Mēs esam apmierināti, ka, ja Clickhouse kāda iemesla dēļ avarē vai serveri "pārstartējas", mēs zaudējam nedaudz. Visos citos gadÄ«jumos nekas nenotiks.

Z: - Sveiki. No paÅ”a sākuma man Ŕķita, ka jÅ«s patieŔām izmantosit UDP jau no paÅ”a ziņojuma sākuma. Jums ir http, viss tas... Un lielākā daļa no jÅ«su aprakstÄ«tajām problēmām, kā es saprotu, radās tieÅ”i Ŕī risinājuma dēļ...

YN: - Ko mēs izmantojam TCP?

Z: - Būtībā jā.

YN: - Nē.

Z: ā€“ Ar fasthttp jums bija problēmas, ar savienojumu jums bija problēmas. Ja jÅ«s tikko bÅ«tu izmantojis UDP, jÅ«s bÅ«tu ietaupÄ«jis sev kādu laiku. Nu bÅ«tu problēmas ar garām ziņām vai ko citu...

YN: - Ar ko?

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Z: ā€“ Ar gariem ziņojumiem, jo ā€‹ā€‹tas var neiederēties MTU, kaut kas cits... Nu, var bÅ«t savas problēmas. Jautājums ir: kāpēc ne UDP?

YN: ā€“ Uzskatu, ka autori, kas izstrādāja TCP/IP, ir daudz gudrāki par mani un labāk par mani zina, kā serializēt paketes (lai tās iet), tajā paŔā laikā pielāgot sÅ«tÄ«Å”anas logu, nepārslogot tÄ«klu, sniegt atsauksmes par to, ko netiek lasÄ«ts, neskaitot otru pusi... Visas Ŕīs problēmas, manuprāt, pastāvētu UDP, tikai man bÅ«tu jāuzraksta vēl vairāk koda nekā jau uzrakstÄ«ju, lai pats ieviestu to paÅ”u un visticamāk slikti. Man pat ļoti nepatÄ«k rakstÄ«t C valodā, kur nu vēl...

Z: - VienkārÅ”i ērti! NosÅ«tÄ«ja labi un neko negaidiet - tas ir pilnÄ«gi asinhroni. Atnāca paziņojums, ka viss ir kārtÄ«bā - tas nozÄ«mē, ka tas ir pienācis; Ja tas nenāk, tas nozÄ«mē, ka tas ir slikti.

YN: ā€“ Man vajag abus ā€“ jāvar nosÅ«tÄ«t gan ar piegādes garantiju, gan bez piegādes garantijas. Å ie ir divi dažādi scenāriji. Man ir nepiecieÅ”ams nepazaudēt dažus žurnālus vai tos nepazaudēt saprāta robežās.

Z: ā€“ Es netērÄ“Å”u laiku. Par to ir jārunā vairāk. Paldies.

VadoÅ”ais: ā€“ Kam ir jautājumi ā€“ rokas pret debesÄ«m!

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

Z: - Sveiki, es esmu SaÅ”a. Kaut kur ziņojuma vidÅ« parādÄ«jās sajÅ«ta, ka papildus TCP var izmantot jau gatavu risinājumu - kaut kādu Kafku.

YN: ā€“ Nu... es tev teicu, ka nevēlos izmantot starpserverus, jo... Kafkā izrādās, ka mums ir desmit tÅ«kstoÅ”i saimnieku; patiesÄ«bā mums ir vairāk - desmitiem tÅ«kstoÅ”u saimnieku. Var bÅ«t sāpÄ«gi darÄ«t ar Kafku bez starpniekiem. Turklāt, pats galvenais, tas joprojām nodroÅ”ina ā€œlatenciā€, tas dod papildu saimniekdatorus, kas jums ir nepiecieÅ”ami. Bet es nevēlos tos iegÅ«t - es gribu...

Z: "Bet galu galā tas tik un tā izrādījās."

YN: ā€“ Nē, saimnieku nav! Tas viss darbojas Clickhouse saimniekiem.

Z: - Nu un ā€œKaķēnu mājaā€, kas ir otrādi - kur viņŔ dzÄ«vo?

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

YN: - Clickhouse resursdatorā tas neko neieraksta diskā.

Z: - Pieņemsim.

VadoÅ”ais: - Vai esi apmierināts? Vai mēs varam jums iedot algu?

Z: - Jā tu vari. PatiesÄ«bā ir daudz kruÄ·u, lai dabÅ«tu vienu un to paÅ”u, un tagad - iepriekŔējā atbilde par tēmu TCP ir pretrunā, manuprāt, Å”ai situācijai. Tā vien Ŕķiet, ka visu varēja izdarÄ«t uz ceļiem daudz Ä«sākā laikā.

YN: ā€“ Un arÄ« kāpēc es negribēju izmantot Kafku, jo Clickhouse Telegram tērzÄ“Å”anā bija diezgan daudz sÅ«dzÄ«bu, ka, piemēram, pazaudētas ziņas no Kafkas. Nevis no paÅ”as Kafkas, bet Kafkas un Clickhaus integrācijā; vai kaut kas tur nesaslēgās. Rupji runājot, tad bÅ«tu nepiecieÅ”ams Kafkai uzrakstÄ«t klientu. Es nedomāju, ka varētu bÅ«t vienkārŔāks vai uzticamāks risinājums.

Z: ā€“ Sakiet, kāpēc jÅ«s neizmēģinājāt rindas vai kādu kopÄ«gu autobusu? Tā kā jÅ«s sakāt, ka ar asinhroniju jÅ«s varētu sÅ«tÄ«t paÅ”us žurnālus caur rindu un saņemt atbildi asinhroni caur rindu?

HighLoad++, Jurijs Nasretdinovs (VKontakte): kā VK ievieto datus ClickHouse no desmitiem tūkstoŔu serveru

YN: ā€“ LÅ«dzu, iesakiet, kādas rindas varētu izmantot?

Z: ā€“ Jebkuras, pat bez garantijas, ka tās ir kārtÄ«bā. Kaut kāds Redis, RMQ...

YN: ā€“ Man ir sajÅ«ta, ka Redis, visticamāk, nespēs izvilkt tādu ievietoÅ”anas apjomu pat vienā hostā (vairāku serveru izpratnē), kas izvelk Clickhouse. Es nevaru to pamatot ar pierādÄ«jumiem (es neesmu to salÄ«dzinājis), bet man Ŕķiet, ka Redis Å”eit nav labākais risinājums. Principā Å”o sistēmu var uzskatÄ«t par improvizētu ziņojumu rindu, bet kas ir pielāgota tikai ā€œClickhouseā€

VadoÅ”ais: ā€“ Jurij, liels paldies. Ierosinu Å”eit beigt jautājumus un atbildes un pateikt, kuram no jautājuma uzdevējiem grāmatu atdosim.

YN: ā€“ Es gribētu uzdāvināt grāmatu pirmajam, kurÅ” uzdeva jautājumu.

VadoŔais: - BrīniŔķīgi! Lieliski! BrīniŔķīgi! Liels paldies!

Dažas reklāmas šŸ™‚

Paldies, ka palikāt kopā ar mums. Vai jums patīk mūsu raksti? Vai vēlaties redzēt interesantāku saturu? Atbalsti mūs, pasūtot vai iesakot draugiem, mākoņa VPS izstrādātājiem no 4.99 USD, unikāls sākuma līmeņa serveru analogs, ko mēs jums izgudrojām: Visa patiesība par VPS (KVM) E5-2697 v3 (6 kodoli) 10GB DDR4 480GB SSD 1Gbps no 19$ vai kā koplietot serveri? (pieejams ar RAID1 un RAID10, līdz 24 kodoliem un līdz 40 GB DDR4).

Dell R730xd 2x lētāk Equinix Tier IV datu centrā Amsterdamā? Tikai Å”eit 2x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV no 199$ NÄ«derlandē! Dell R420 ā€” 2x E5-2430 2.2 GHz 6C 128 GB DDR3 2x960 GB SSD 1 Gbps 100 TB ā€” no 99 USD! LasÄ«t par Kā izveidot infrastruktÅ«ras uzņēmumu klase ar Dell R730xd E5-2650 v4 serveru izmantoÅ”anu 9000 eiro par santÄ«mu?

Avots: www.habr.com

Pievieno komentāru