HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

HighLoad++ مسکو 2018، د کانګرس تالار. د نومبر 9، 15:00

لنډیز او وړاندې کول: http://www.highload.ru/moscow/2018/abstracts/4066

یوري ناصردینوف (VKontakte): راپور به زموږ په شرکت کې د ClickHouse پلي کولو تجربې په اړه وغږیږي - ولې موږ ورته اړتیا لرو، څومره معلومات چې موږ یې ذخیره کوو، څنګه یې لیکو، او داسې نور.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

اضافي توکي: د ELK، لوی پوښتنې او TimescaleDB لپاره د بدیل په توګه د Clickhouse کارول

یوري نصردینوف: - سلام و ټولو ته! زما نوم یوري نصریتدینوف دی، لکه څنګه چې زه دمخه معرفي شوی یم. زه په VKontakte کې کار کوم. زه به د دې په اړه وغږیږم چې څنګه موږ زموږ د سرور بیړۍ (په لسګونو زره) څخه ClickHouse ته ډاټا داخل کړو.

لاګونه څه دي او ولې یې راټولوي؟

هغه څه چې موږ به تاسو ته ووایو: موږ څه وکړل، ولې موږ په ترتیب سره "کلک هاؤس" ته اړتیا درلوده، ولې موږ دا غوره کړه، کوم ډول فعالیت چې تاسو تقریبا د کوم ځانګړي ترتیب کولو پرته ترلاسه کولی شئ. زه به تاسو ته د بفر میزونو په اړه نور معلومات درکړم ، د هغه ستونزو په اړه چې موږ ورسره درلوده او زموږ د حلونو په اړه چې موږ د خلاصې سرچینې څخه رامینځته کړي - کیټین هاؤس او لایټ هاوس.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

ولې موږ اړتیا درلوده چې هرڅه ترسره کړو (هر څه تل ​​په VKontakte کې ښه وي، سمه ده؟). موږ غوښتل د ډیبګ لاګ راټول کړو (او هلته په سلګونو ټیرابایټ ډیټا شتون درلود) ، شاید یو څه به د احصایو محاسبه کول خورا اسانه وي؛ او موږ د لسګونو زرو سرورونو بیړۍ لرو چې دا ټول باید ترسره شي.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

ولې موږ پریکړه وکړه؟ موږ شاید د لاګونو ذخیره کولو لپاره حلونه درلودل. دلته - داسې عامه "بیکینډ VK" شتون لري. زه په کلکه د دې ګډون کولو وړاندیز کوم.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

لاګونه څه دي؟ دا یو انجن دی چې خالي صفونه بیرته راولي. په VK کې انجنونه هغه څه دي چې نور یې مایکرو خدمتونه بولي. او دلته یو موسکا سټیکر دی (کافي ډیر خوښونه). هغه څنګه؟ ښه، نور واورئ!

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

د لاګونو ذخیره کولو لپاره څه کارول کیدی شي؟ دا ناشونې ده چې د هډوپ یادونه ونه شي. بیا، د مثال په توګه، Rsyslog (دا لاګ په فایلونو کې ذخیره کول). LSD. څوک پوهیږي چې LSD څه شی دی؟ نه، دا LSD نه. فایلونه په ترتیب سره ذخیره کړئ. ښه، کلیک هاوس یو عجیب انتخاب دی.

کلک هاؤس او سیالي: اړتیاوې او فرصتونه

موږ څه غواړو؟ موږ غواړو ډاډ ترلاسه کړو چې موږ د عملیاتو په اړه ډیر اندیښنه نلرو ، نو دا د بکس څخه بهر کار کوي ، په غوره توګه د لږترلږه ترتیب سره. موږ غواړو ډیر څه ولیکو، او ژر تر ژره ولیکئ. او موږ غواړو چې دا د هر ډول میاشتو، کلونو، دا د اوږدې مودې لپاره وساتو. موږ شاید غواړو په یو څه ستونزه پوه شو چې دوی موږ ته راغلل او ویې ویل ، "دلته یو څه کار نه کوي ،" او دا 3 میاشتې دمخه و) او موږ غواړو وګورو چې 3 میاشتې دمخه څه پیښ شوي. د ډیټا کمپریشن - دا روښانه ده چې ولې دا به یو پلس وي - ځکه چې دا د هغه ځای اندازه کموي چې دا یې اخلي.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

او موږ ورته په زړه پوري اړتیا لرو: موږ ځینې وختونه د ځینې کمانډونو محصول لیکو (د مثال په توګه ، لاګ) ، دا په اسانۍ سره له 4 کیلوبایټ څخه ډیر کیدی شي. او که دا شی په UDP کې کار کوي، نو بیا دا مصرف کولو ته اړتیا نلري ... دا به د پیوستون لپاره هیڅ "سرسري" ونه لري، او د ډیری سرورونو لپاره دا به یو پلس وي.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

راځئ وګورو چې خلاصې سرچینې موږ ته څه وړاندیز کوي. لومړی، موږ د لوګو انجن لرو - دا زموږ انجن دی؛ په اصولو کې، هغه کولی شي هر څه وکړي، هغه کولی شي حتی اوږدې کرښې ولیکي. ښه، دا په شفاف ډول ډیټا کمپریس نه کوي - موږ کولی شو پخپله لوی کالمونه کمپرس کړو که موږ وغواړو ... موږ، البته، نه غواړو (که امکان ولري). یوازینۍ ستونزه دا ده چې هغه یوازې هغه څه ورکوي چې د هغه په ​​حافظه کې مناسب وي. د پاتې لوستلو لپاره، تاسو اړتیا لرئ چې د دې انجن بنلاګ ترلاسه کړئ او په وینا، دا ډیر وخت نیسي.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

نور کوم اختیارونه شتون لري؟ د مثال په توګه، "Hadup". د عملیاتو اسانتیا... څوک فکر کوي چې هډوپ تنظیم کول اسانه دي؟ البته، د ثبت کولو سره کومه ستونزه نشته. کله چې لوستل، ځینې وختونه پوښتنې راپورته کیږي. په اصولو کې، زه به ووایم چې شاید نه، په ځانګړې توګه د لاګونو لپاره. د اوږدې مودې ذخیره - البته، هو، د معلوماتو کمپریشن - هو، اوږد تارونه - دا روښانه ده چې تاسو ریکارډ کولی شئ. مګر د ډیری سرورونو څخه ثبت کول ... تاسو لاهم باید پخپله یو څه وکړئ!

Rsyslog. په حقیقت کې، موږ دا د بیک اپ اختیار په توګه کارولی ترڅو موږ د بنلاګ ډمپ کولو پرته لوستلی شو، مګر دا نشي کولی اوږدې کرښې ولیکي؛ په اصولو کې، دا د 4 کیلوبایټ څخه زیات نشي لیکلی. تاسو باید پخپله د ډیټا کمپریشن په ورته ډول ترسره کړئ. لوستل به د فایلونو څخه راشي.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

بیا د LSD "بدوشکا" پراختیا شتون لري. اساسا د "Rsyslog" په څیر ورته دی: دا د اوږدو تارونو ملاتړ کوي ، مګر دا نشي کولی د UDP له لارې کار وکړي او په حقیقت کې د دې له امله ، له بده مرغه ، ډیری شیان باید هلته بیا لیکل شي. LSD باید بیا ډیزاین شي ترڅو د لسګونو زرو سرورونو څخه ثبتولو وړ وي.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

او دلته! یو مسخره اختیار دی ElasticSearch. څنګه ووایم؟ هغه د لوستلو سره ښه کوي، دا دی، هغه په ​​​​چټکۍ سره لوستل کوي، مګر د لیکلو سره ډیر ښه نه دی. لومړی، که دا ډاټا فشاروي، دا خورا کمزوری دی. ډیری احتمال، بشپړ لټون د اصلي حجم په پرتله لوی ډیټا جوړښتونو ته اړتیا لري. دا کار کول ستونزمن دي او ډیری وختونه ورسره ستونزې رامینځته کیږي. او بیا، په لچکدار کې ثبت کول - موږ باید هرڅه پخپله وکړو.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

دلته کلیک هاوس یو غوره اختیار دی، البته. یوازینی شی دا دی چې د لسګونو زرو سرورونو څخه ثبت کول یوه ستونزه ده. مګر لږترلږه یوه ستونزه شتون لري، موږ کولی شو د حل کولو هڅه وکړو. او د راپور پاتې برخه د همدې ستونزې په اړه ده. تاسو د ClickHouse څخه د کوم ډول فعالیت تمه کولی شئ؟

موږ به دا څنګه داخل کړو؟ MergeTree

ستاسو څخه څوک د "کلک هاؤس" په اړه ندي اوریدلي یا نه پوهیږي؟ زه باید تاسو ته ووایم، زه نه؟ ډیر چټک. هلته داخلول - په یوه ثانیه کې 1-2 ګیګابایټ، په هر ثانیه کې تر 10 ګیګابایټ پورې دفن کول واقعیا د دې ترتیب سره مقاومت کولی شي - دلته دوه 6 کور Xeons شتون لري (چې حتی خورا ځواکمن نه دی) ، 256 ګیګابایټ RAM ، 20 ټیرابایټ په RAID کې (هیڅوک نه دی ترتیب شوی، ډیفالټ ترتیبات). الیکسي میلویدوف، د کلیک هاوس پراختیا کونکی، شاید هلته ناست وي چې ژاړي ځکه چې موږ هیڅ شی نه دی ترتیب کړی (هر څه زموږ لپاره ورته کار کاوه). په دې اساس، د سکین کولو سرعت، ووایه، په هر ثانیه کې شاوخوا 6 ملیارد لاینونه ترلاسه کیدی شي که چیرې معلومات په ښه توګه کمپریس شي. که تاسو د متن په تار کې٪ خوښ کړئ - په هره ثانیه کې 100 ملیون لینونه، دا خورا چټک ښکاري.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

موږ به دا څنګه داخل کړو؟ ښه، تاسو پوهیږئ چې VK پی ایچ پی کاروي. موږ به د هر PHP کارمند څخه د HTTP له لارې په "کلک هاؤس" کې د هر ریکارډ لپاره MergeTree جدول ته داخل کړو. څوک د دې سکیم سره ستونزه ګوري؟ د ځینو دلیلونو لپاره، هرڅوک خپل لاسونه پورته نه کړل. اجازه راکړئ تاسو ته ووایم.

لومړی، ډیری سرورونه شتون لري - په وینا، ډیری اړیکې به وي (خراب). بیا دا غوره ده چې په هر ثانیه کې له یو ځل څخه ډیر ځله په MergeTree کې ډاټا داخل کړئ. او څوک پوهیږي چې ولې؟ سمه ده سمه ده. زه به تاسو ته په دې اړه لږ څه ووایم. بله په زړه پورې پوښتنه دا ده چې موږ تحلیلونه نه کوو، موږ اړتیا نلرو چې ډاټا بډایه کړو، موږ منځګړی سرورونو ته اړتیا نلرو، موږ غواړو مستقیم "کلک هاؤس" کې داخل کړو (ترجیح - ډیر مستقیم، غوره).

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

په دې اساس، په MergeTree کې داخلول څنګه ترسره کیږي؟ ولې دا غوره ده چې په ثانیه کې یو ځل یا لږ ځله په دې کې دننه کړئ؟ حقیقت دا دی چې "کلک هاؤس" یو کالم ډیټابیس دی او ډاټا د ابتدايي کیلي په پورته کولو ترتیب کې ترتیبوي، او کله چې تاسو داخل کړئ، یو شمیر فایلونه لږترلږه د کالمونو شمیر سره برابر دي چې ډاټا په کې ترتیب شوي. د لومړني کیلي په پورته کولو ترتیب کې (یو جلا ډایرکټر جوړ شوی، د هر داخلولو لپاره په ډیسک کې د فایلونو سیټ). بیا راتلونکی داخلول راځي، او په شالید کې دوی په لویو "پارشنونو" کې یوځای کیږي. څرنګه چې ډاټا ترتیب شوي، نو دا ممکنه ده چې دوه ترتیب شوي فایلونه "ضم" کړئ پرته له دې چې ډیرې حافظې مصرف کړي.

مګر، لکه څنګه چې تاسو اټکل کولی شئ، که تاسو د هر داخلولو لپاره 10 فایلونه ولیکئ، نو کلیک هاوس (یا ستاسو سرور) به په چټکۍ سره پای ته ورسیږي، نو دا سپارښتنه کیږي چې په لویو بستونو کې دننه کړئ. په دې اساس، موږ هیڅکله په تولید کې لومړی سکیم نه دی پیل کړی. موږ سمدلاسه یو پیل کړ، کوم چې دلته نمبر 2 لري:

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

دلته تصور وکړئ چې شاوخوا زر سرورونه شتون لري چې موږ یې پیل کړي، یوازې PHP شتون لري. او په هر سرور کې زموږ ځایی اجنټ شتون لري ، کوم چې موږ ورته "کیټین هاؤس" وایو ، کوم چې د "کلک هاؤس" سره یو اړیکه ساتي او په هر څو ثانیو کې ډیټا داخلوي. ډاټا په MergeTree کې نه، بلکې په بفر میز کې داخلوي، کوم چې په سمه توګه د MergeTree په مستقیم ډول د ننوتلو مخه نیسي.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

د بفر میزونو سره کار کول

دا څه شی دی؟ د بفر میزونه د حافظې یوه ټوټه ده چې ټوټه شوې ده (یعنې دا په مکرر ډول دننه کیدی شي). دوی د څو ټوټو څخه جوړ دي، او هره ټوټه د خپلواک بفر په توګه کار کوي، او دوی په خپلواکه توګه فلش کیږي (که تاسو په بفر کې ډیری ټوټې ولرئ، نو په هره ثانیه کې به ډیری داخلونه وي). د دې جدولونو څخه لوستل ممکن دي - بیا تاسو د بفر او اصلي جدول مینځپانګې اتحادیه ولولئ ، مګر پدې وخت کې لیکنه بنده شوې ده ، نو دا به غوره وي چې له هغه ځایه ونه لوستل شي. او د بفر میزونه خورا ښه QPS ښیې ، دا چې تر 3 زره QPS پورې به تاسو د داخلولو پرمهال هیڅ ستونزه ونلرئ. دا روښانه ده چې که سرور بریښنا له لاسه ورکړي، نو ډاټا له لاسه ورکولی شي، ځکه چې دا یوازې په حافظه کې ساتل شوي.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

په ورته وخت کې ، د بفر سره سکیم ALTER پیچلی کوي ، ځکه چې تاسو لومړی اړتیا لرئ د زوړ سکیم سره زوړ بفر جدول پریږدئ (ډیټا به چیرې له لاسه ورنکړي ، ځکه چې دا به د میز له حذف کیدو دمخه فلش شي). بیا تاسو هغه میز "بدل کړئ" چې تاسو ورته اړتیا لرئ او بیا د بفر میز جوړ کړئ. په دې اساس، پداسې حال کې چې د بفر میز شتون نلري، ستاسو ډاټا به چیرته نه تیریږي، مګر تاسو کولی شئ دا لږترلږه په محلي توګه په ډیسک کې ولرئ.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

Kittenhouse څه شی دی او دا څنګه کار کوي؟

KittenHouse څه شی دی؟ دا یو پراکسي دی. فکر وکړه کومه ژبه؟ ما په خپل راپور کې خورا مشهور موضوعات راټول کړل - "کلک هاؤس"، لاړ شه، شاید زه به یو څه یاد کړم. هو، دا په Go کې لیکل شوی، ځکه چې زه واقعیا نه پوهیږم چې څنګه په C کې ولیکم، زه نه غواړم.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

په دې اساس، دا د هر سرور سره اړیکه ساتي او کولی شي حافظې ته ولیکي. د مثال په توګه ، که موږ کلیک هاوس ته د خطا لاګونه ولیکئ ، نو که کلیک هاوس د معلوماتو داخلولو لپاره وخت ونلري (په هرصورت ، که خورا ډیر لیکل شوی وي) ، نو موږ حافظه نه سوز کوو - موږ په ساده ډول پاتې یې وباسو. ځکه چې که موږ په هره ثانیه کې څو ګیګابایټ خطا ولیکو، نو موږ شاید یو څه وباسو. Kittenhouse کولی شي دا کار وکړي. برسیره پردې، دا کولی شي د اعتبار وړ تحویلي ترسره کړي، دا دی، په محلي ماشین کې ډیسک ته لیکل او هر ځل (هلته، په هر څو ثانیو کې یو ځل) هڅه کوي چې د دې فایل څخه ډاټا وړاندې کړي. او په لومړي سر کې موږ د منظم ارزښتونو بڼه کارولې - نه ځینې بائنری بڼه، د متن بڼه (لکه څنګه چې په منظم SQL کې).

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

مګر بیا دا پیښه شوه. موږ د باور وړ تحویلۍ وکاروو، لاګونه یې ولیکل، بیا پریکړه وشوه (دا د مشروط ازموینې کلستر و)... دا د څو ساعتونو لپاره پریښودل شو او بیرته راوړل شو، او د زرو سرورونو څخه داخلول پیل شول - دا معلومه شوه چې کلک هاؤس لاهم شتون لري. "په اتصال کې تار" - په دې اساس، په زرو اتصالونو کې، یو فعال داخلول په سرور کې د یو نیم زرو په اوسط ډول د بار کولو لامل کیږي. په حیرانتیا سره، سرور غوښتنې ومنلې، مګر ډاټا بیا هم د یو څه وخت وروسته داخل شوي؛ مګر د سرور لپاره دا خورا ستونزمن و چې دا خدمت وکړي ...

nginx اضافه کړئ

د هر ارتباط ماډل لپاره دا ډول حل nginx دی. موږ د کلک هاؤس مخې ته نګینکس نصب کړ ، په ورته وخت کې د دوه عکسونو لپاره توازن تنظیم کړ (زموږ د داخلولو سرعت 2 ځله ډیر شوی ، که څه هم دا حقیقت ندی چې دا باید قضیه وي) او د کلیک هاوس پورې د ارتباطاتو شمیر محدود کړ. upstream او په دې اساس، له 50 اتصالونو څخه ډیر، داسې بریښي چې د داخلولو هیڅ معنی نلري.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

بیا موږ پوهیږو چې دا سکیم عموما زیانونه لري، ځکه چې موږ دلته یوازې یو نینګکس لرو. په دې اساس، که چیرې دا نګینکس حادثه شي، د نقلونو شتون سره سره، موږ ډاټا له لاسه ورکوو یا لږترلږه، چیرته نه لیکو. له همدې امله موږ د خپل بار بار توازن جوړ کړ. موږ دا هم پوهیږو چې "کلک هاؤس" لاهم د لاګونو لپاره مناسب دی ، او "شیطان" هم په "کلک هاؤس" کې د خپلو لاګونو لیکل پیل کړل - خورا اسانه ، د ریښتیني کیدو لپاره. موږ لاهم دا د نورو "شیطانانو" لپاره کاروو.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

بیا موږ دا په زړه پوري ستونزه وموندله: که تاسو د SQL حالت کې د ننوتلو غیر معیاري میتود وکاروئ ، نو دا د AST میشته SQL پارسر بشپړ ځواک کوي ، کوم چې خورا ورو دی. په دې اساس، موږ ترتیبات اضافه کړي ترڅو ډاډ ترلاسه کړي چې دا هیڅکله نه کیږي. موږ د بار توازن ، روغتیا معاینات وکړل ، ترڅو که یو څوک مړ شي ، موږ لاهم ډاټا پریږدو. موږ اوس خورا ډیر میزونه لرو چې موږ اړتیا لرو د مختلف کلیک هاوس کلسترونه ولرو. او موږ د نورو کارولو په اړه هم فکر پیل کړ - د بیلګې په توګه، موږ غوښتل د نګینکس ماډلونو څخه لاګونه ولیکئ، مګر دوی نه پوهیږي چې څنګه زموږ د RPC په کارولو سره اړیکه ونیسي. ښه، زه غواړم دوی ته درس ورکړم چې څنګه لږترلږه یو څه ولیږئ - د بیلګې په توګه، د UDP له لارې په محلي کوربه کې پیښې ترلاسه کول او بیا یې کلیک هاؤس ته لیږل.

د حل څخه یو ګام لرې

وروستنۍ سکیم د دې په څیر ښکاري (د دې سکیم څلورمه نسخه): د کلک هاؤس مخې ته په هر سرور کې نینګکس (په ورته سرور کې) شتون لري او دا په ساده ډول د 50 پیوستون شمیر محدودیت سره لوکل هوسټ ته غوښتنه کوي. ټوټې او دا سکیم لا دمخه خورا کار کاوه، هرڅه د هغې سره خورا ښه وو.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

موږ شاوخوا یوه میاشت همداسې ژوند کاوه. هرڅوک خوشحاله و، دوی میزونه اضافه کړل، دوی زیاته کړه، دوی زیاته کړه ... په عموم کې، دا معلومه شوه چې هغه طریقه چې موږ د بفر میزونو اضافه کول خورا غوره نه و (راځئ چې دا ورته ورته کړو). موږ په هر میز کې 16 ټوټې کړې او د څو ثانیو لپاره یو فلش وقفه؛ موږ 20 میزونه درلودل او هر میز په هره ثانیه کې 8 داخلونه ترلاسه کړل - او پدې وخت کې "کلک هاوس" پیل شو ... ریکارډونه ورو پیل شول. نه یوازې دوی نه دي تیر شوي ... په ډیفالټ سره ، نګینکس دومره په زړه پوري شی درلود چې که چیرې اړیکې په پورتنۍ برخه کې پای ته ورسیږي ، نو دا په ساده ډول ټولو نویو غوښتنو ته "502" راستانه شوې.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

او دلته موږ لرو (ما یوازې په کلیک هاؤس کې لاګونو ته وکتل) شاوخوا نیم سلنه غوښتنې ناکامې شوې. په دې اساس، د ډیسک کارول خورا لوړ وو، ډیری ادغامونه شتون درلود. ښه، ما څه وکړل؟ په طبیعي توګه، ما د دې په اړه فکر نه کاوه چې ولې دقیقا اړیکه او پورته پای ته ورسیده.

د نګینکس بدلول د ریورس پراکسي سره

ما پریکړه وکړه چې موږ باید دا پخپله اداره کړو، موږ اړتیا نلرو چې دا نګینکس ته پریږدو - نګینکس نه پوهیږي چې په کلیک هاوس کې کوم میزونه شتون لري، او ما نینګکس د ریورس پراکسي سره بدل کړ، کوم چې ما پخپله هم لیکلي.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

هغه څه کوي؟ دا د fasthttp کتابتون "goshnoy" پراساس کار کوي ، دا دی ، ګړندی ، نږدې د نګینکس په څیر ګړندی. بخښنه غواړم، ایګور، که تاسو دلته شتون لرئ (یادونه: ایګور سیسویف یو روسی پروګرامر دی چې د نګینکس ویب سرور یې رامینځته کړی). دا کولی شي پوه شي چې دا کوم ډول پوښتنې دي - INSERT یا SELECT - په وینا، دا د مختلفو ډولونو پوښتنو لپاره د ارتباط مختلف حوضونه لري.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

په دې اساس، حتی که موږ د ننوتلو غوښتنو بشپړولو لپاره وخت نلرو، "ټاکنې" به تیریږي، او برعکس. او دا ډاټا په بفر جدولونو کې ګروپ کوي - د کوچني بفر سره: که چیرې کومه تېروتنه وي، د ترکیب تېروتنې، او داسې نور - نو دا به په پاتې ډیټا خورا اغیزه ونکړي، ځکه چې کله موږ په ساده ډول بفر جدولونو کې داخل کړو، موږ کوچنۍ "بچي" درلوده، او ټولې نحوي تېروتنې یوازې دا کوچنۍ ټوټه اغیزه کړې؛ او دلته به دوی دمخه یو لوی بفر اغیزه وکړي. کوچنی 1 میګابایټ دی، دا دی، دومره کوچنی ندی.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

د همغږي داخلول او په لازمي ډول د نګینکس ځای په ځای کول ، اساسا ورته کار کوي چې نګینکس دمخه کړی و - تاسو اړتیا نلرئ د دې لپاره ځایی "کیټین هاوس" بدل کړئ. او له هغه ځایه چې دا fasthttp کاروي، دا خورا ګړندی دی - تاسو کولی شئ د ریورس پراکسي له لارې د واحد داخلولو لپاره په هره ثانیه کې له 100 زرو څخه ډیر غوښتنې وکړئ. په تیوریکي توګه، تاسو کولی شئ په یو وخت کې یو کرښه د کیټین هاؤس ریورس پراکسي کې دننه کړئ، مګر البته موږ دا نه کوو.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

سکیم د دې په څیر ښکاري: "کیټین هاوس"، ریورس پراکسي ډیری غوښتنې په میزونو کې ګروپ کوي او په پایله کې، بفر میزونه دوی اصلي ته داخلوي.

وژونکی یو لنډمهاله حل دی، بلی دایمی دی

دا یوه په زړه پورې ستونزه ده ... آیا ستاسو څخه کوم یو fasthttp کارولی دی؟ چا د POST غوښتنو سره fasthttp کارولی؟ شاید، دا واقعیا باید نه وي ترسره شوي، ځکه چې دا د ډیفالټ لخوا د غوښتنې بدن بفر کوي، او زموږ د بفر اندازه 16 میګابایټ ته ټاکل شوې وه. داخل کول په یو وخت کې ساتل ودرول، او د 16 میګابایټ ټوټې د لسګونو زرو سرورونو څخه راوتلي، او دا ټول د کلیک هاوس ته لیږلو دمخه په حافظه کې بفر شوي. په دې اساس، حافظه پای ته ورسیده، د حافظې څخه بهر وژونکی راغی او ریورس پراکسي یې وواژه (یا "کلک هاؤس"، کوم چې کولی شي په نظرياتي توګه د ریورس پراکسي څخه ډیر "خوري"). دوره پخپله تکرار شوه. ډیره په زړه پوری ستونزه نده. که څه هم موږ دا یوازې د څو میاشتو عملیاتو وروسته ودرول.

ما څه کړي دي؟ یوځل بیا ، زه واقعیا نه غواړم پوه شم چې واقعیا څه پیښ شوي. زما په اند دا خورا څرګند دی چې تاسو باید په حافظه کې بفر ونه کړئ. زه نشم کولی چټک HTTP پیچ کړم، که څه هم ما هڅه وکړه. مګر ما د دې د جوړولو لپاره یوه لاره وموندله چې هیڅ شی پیچ کولو ته اړتیا نلري، او زه په HTTP کې د خپل میتود سره راغلم - ما ورته KITTEN نوم ورکړ. ښه، دا منطقي ده - "VK"، "بلینګ" ... نور څه؟ ...

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

که چیرې سرور ته د پتنګ میتود سره غوښتنه راشي ، نو سرور باید په منطقي ډول "میاو" ځواب ورکړي. که هغه دې ته ځواب ووایی، نو دا په پام کې نیول کیږي چې هغه دا پروتوکول پوهیږي، او بیا زه پیوستون مداخله کوم (fasthttp داسې طریقه لري)، او پیوستون "خام" حالت ته ځي. زه ولې ورته اړتیا لرم؟ زه غواړم کنټرول کړم چې څنګه د TCP ارتباطاتو لوستل کیږي. TCP یو په زړه پوری ملکیت لري: که چیرې هیڅ څوک له بل لوري نه لوستل کیږي، نو بیا لیکل د انتظار لپاره پیل کیږي، او حافظه په ځانګړې توګه پدې کې نه مصرف کیږي.

او له همدې امله ما په یو وخت کې د شاوخوا 50 پیرودونکو څخه لوستل (له پنځوسو څخه ځکه چې پنځوس باید یقینا کافي وي ، حتی که نرخ د بل DC څخه راشي) ... مصرف لږترلږه 20 ځله کم شوی دی ، مګر زه صادق یم ، زه نشم کولی دقیقا څه وخت اندازه کړم ، ځکه چې دا دمخه بې معنی دی (دا دمخه د غلطۍ کچې ته رسیدلی دی). پروتوکول بائنری دی، دا د میز نوم او ډاټا لري؛ دلته هیڅ http سرلیکونه شتون نلري، نو ما د ویب ساکټ نه کار اخیستی (زه اړتیا نلرم چې د براوزرونو سره اړیکه ونیسم - ما یو پروتوکول جوړ کړ چې زموږ اړتیاوې پوره کوي). او هر څه ورسره سم شول.

د بفر میز غمجن دی

پدې وروستیو کې موږ د بفر میزونو یو بل په زړه پوري ځانګړتیا سره مخ شو. او دا ستونزه لا دمخه د نورو په پرتله خورا دردناکه ده. راځئ چې دا وضعیت تصور کړو: تاسو دمخه په فعاله توګه د کلک هاؤس کاروئ ، تاسو لسګونه کلیک هاوس سرورونه لرئ ، او تاسو ځینې غوښتنې لرئ چې لوستل یې خورا اوږد وخت نیسي (راځئ چې ووایو ، له 60 ثانیو څخه ډیر)؛ او تاسو په دې شیبه کې راشئ او بدل یې کړئ ... په ورته وخت کې ، هغه "انتخابات" چې د "بدل" څخه دمخه پیل شوي په دې جدول کې به شامل نشي ، "بدل" به پیل نشي - شاید ځینې ځانګړتیاوې چې "کلک هاؤس" څنګه کار کوي دا ځای. شاید دا ثابت شي؟ یا دا ممکنه نه ده؟

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

په عموم کې، دا روښانه ده چې په حقیقت کې دا دومره لویه ستونزه نه ده، مګر د بفر میزونو سره دا ډیر دردناک کیږي. ځکه، که ووایو، ستاسو د "بدلون" مهال ویش (او دا ممکن په بل کوربه کې پای ته ورسیږي - ستاسو په اړه نه، مګر په نقل کې، د بیلګې په توګه)، نو بیا ... تاسو د بفر میز حذف کړی، ستاسو "بدل" ( یا کوم بل کوربه) وخت پای ته ورسید. بیا د "بدلون" تېروتنه رامنځته شوه) - تاسو لاهم اړتیا لرئ ډاډ ترلاسه کړئ چې ډاټا لیکلو ته دوام ورکوي: تاسو د بفر میزونه بیرته جوړ کړئ (د اصلي میز په څیر د ورته سکیم سره سم)، بیا "بدل" تیریږي، په پای کې پای ته رسیږي، او د میز بفر د مور او پلار څخه په سکیما کې توپیر پیل کوي. د هغه څه پورې اړه لري چې "بدل" و، داخل ممکن نور دې بفر میز ته لاړ نشي - دا خورا غمجن دی.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

دلته داسې نښه هم شتون لري (شاید یو څوک یې په پام کې ونیسي) - دا د کلیک هاؤس په نوي نسخو کې د query_thread_log په نوم یادیږي. په ډیفالټ، په ځینو نسخو کې یو شتون درلود. دلته موږ په څو میاشتو کې (840 ګیګابایټ) 100 ملیون ریکارډونه راټول کړي دي. دا د دې حقیقت له امله دی چې "انسرټونه" هلته لیکل شوي (شاید اوس، په لاره کې، دوی نه دي لیکل شوي). لکه څنګه چې ما تاسو ته وویل، زموږ "انسرټونه" کوچني دي - موږ په بفر میزونو کې ډیری "انسرټونه" درلودل. دا روښانه ده چې دا معیوب دی - زه یوازې تاسو ته وایم هغه څه چې ما زموږ په سرور کې ولیدل. ولې؟ دا د بفر میزونو کارولو پروړاندې بل دلیل دی! سپوټی ډیر غمجن دی.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

څوک پوهیدل چې د دې سړي نوم سپوټي دی؟ د VK کارمندانو خپل لاسونه پورته کړل. سمه ده.

د "KittenHouse" لپاره د پلانونو په اړه

پلانونه معمولا نه شریک کیږي، سمه ده؟ ناڅاپه تاسو به دوی پوره نه کړئ او د نورو خلکو په سترګو کې به ښه نه ښکاري. خو زه به خطر واخلم! موږ غواړو لاندې کارونه وکړو: د بفر میزونه، داسې ښکاري چې زما په نظر، لاهم یو کرچ دی او موږ اړتیا لرو چې پخپله داخل کول بفر کړو. مګر موږ لاهم نه غواړو دا په ډیسک کې بفر کړو، نو موږ به په حافظه کې داخلول بفر کړو.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

په دې اساس، کله چې یو "داخل" جوړ شي، نو دا به نور هم همغږي نه وي - دا به دمخه د بفر میز په توګه کار وکړي، په اصلي میز کې به داخل شي (ښه، یوه ورځ وروسته) او د یو جلا چینل له لارې راپور ورکوي چې داخلونه تیر شوي او کوم نه لرل.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

ولې زه نشم کولی همغږي داخل پریږدم؟ دا ډیر اسانه دی. حقیقت دا دی چې که تاسو د 10 زره کوربه څخه داخل کړئ، نو هرڅه سم دي - تاسو به د هر کوربه څخه لږ څه ترلاسه کړئ، تاسو په ثانیه کې یو ځل هلته داخل کړئ، هرڅه سم دي. مګر زه غواړم چې دا سکیم کار وکړي، د بیلګې په توګه، د دوو ماشینونو څخه، نو تاسو کولی شئ په تیز رفتار سره ډاونلوډ کړئ - شاید د کلک هاؤس څخه اعظمي نه ترلاسه کړئ، مګر د یو ماشین څخه لږ تر لږه 100 میګابایټ په ثانیه کې د ریورس پراکسي له لارې ولیکئ. دا سکیم باید په لوی او کوچنیو مقدارونو کې اندازه شي، نو موږ نشو کولی د هر داخلولو لپاره یوه ثانیه انتظار وکړو، نو دا باید غیر متناسب وي. او په ورته ډول، غیر متناسب تاییدات باید د ننوتلو بشپړولو وروسته راشي. موږ به پوه شو چې ایا دا تیریږي یا نه.

ترټولو مهمه خبره دا ده چې په دې سکیم کې موږ په ډاډه توګه پوهیږو چې ایا داخلیدل ترسره شوي که نه. د دې وضعیت تصور وکړئ: تاسو د بفر میز لرئ، تاسو په دې کې یو څه لیکلي، او بیا، راځئ چې ووایو، میز یوازې د لوستلو حالت ته لاړ او هڅه یې وکړه چې بفر فلش کړي. معلومات به چیرته ځي؟ دوی به په بفر کې پاتې شي. مګر موږ پدې اړه ډاډه نشو - څه به وي که چیرې کومه بله تېروتنه وي، چې له امله به یې ډاټا په بفر کې پاتې نشي ... (د الیکسي میلویدوف، یانډیکس، د کلک هاؤس پراختیا کونکي پته) یا دا به پاتې وي؟ تل؟ الیکسي موږ ته قانع کوي چې هرڅه به سم وي. موږ هیڅ دلیل نلرو چې په هغه باور ونه کړو. مګر ټول ورته: که موږ د بفر میزونه ونه کاروو، نو بیا به د دوی سره کومه ستونزه ونلري. د دوه ځله ډیری میزونو رامینځته کول هم ناشونې دي ، که څه هم په اصولو کې لویې ستونزې شتون نلري. دا پلان دی.

راځئ چې د لوستلو په اړه خبرې وکړو

اوس راځئ چې د لوستلو په اړه خبرې وکړو. موږ دلته خپله وسیله هم لیکلې. داسې ښکاري، ښه، ولې دلته خپل وسیله لیکئ؟... او چا ټابیکس کارولی؟ یو څه لږو خلکو خپل لاسونه پورته کړل ... او څوک د تابیکس له فعالیت څخه راضي دي؟ ښه ، موږ له دې څخه خوښ نه یو ، او دا د معلوماتو لیدو لپاره خورا اسانه ندي. دا د تحلیلونو لپاره ښه دی، مګر یوازې د لیدلو لپاره دا په واضح ډول اصلاح شوی نه دی. نو ما خپل ځان، زما خپل انٹرفیس ولیکه.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

دا خورا ساده دی - دا یوازې ډاټا لوستلی شي. هغه نه پوهیږي چې څنګه ګرافیک ښکاره کړي، هغه نه پوهیږي چې څنګه څه وکړي. مګر دا کولی شي هغه څه وښیې چې موږ ورته اړتیا لرو: د بیلګې په توګه، په میز کې څومره قطارونه دي، دا څومره ځای نیسي (پرته له دې چې په کالمونو کې یې مات کړي)، دا یو خورا بنسټیز انٹرفیس دی چې موږ ورته اړتیا لرو.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

او دا د سیکویل پرو سره ورته ښکاري ، مګر یوازې د ټویټر بوټسټریپ ، او دوهم نسخه کې جوړ شوی. تاسو پوښتنه کوئ: "یوري، ولې په دویمه نسخه کې؟" کوم کال؟ 2018؟ په عموم کې ، ما دا ډیر وخت دمخه د "عضلاتو" (MySQL) لپاره کړی و او یوازې په پوښتنو کې یې یو څو کرښې بدلې کړې ، او دا د "کلک هاؤس" لپاره کار پیل کړ ، د کوم لپاره چې ځانګړې مننه! ځکه چې پارسر د "عضلاتو" سره خورا ورته دی، او پوښتنې خورا ورته دي - خورا اسانه، په ځانګړې توګه په لومړي سر کې.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

ښه، دا کولی شي میزونه فلټر کړي، کولی شي د جدول جوړښت او مینځپانګې وښيي، تاسو ته اجازه درکوي ترتیب کړئ، د کالمونو په واسطه فلټر کړئ، هغه پوښتنه ښیي چې پایله یې پایله شوې، اغیزمن شوي قطارونه (څومره په پایله کې)، دا دی. د معلوماتو لیدو لپاره لومړني شیان. ډیر چټک.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

یو مدیر هم شتون لري. ما په صادقانه توګه هڅه وکړه چې د Tabix څخه ټول مدیر غلا کړم، مګر ما نشو کولی. مګر یو څه دا کار کوي. په اصولو کې، دا ټول دي.

"کلک هاؤس" د ډنډونو لپاره مناسب دی

زه غواړم تاسو ته ووایم چې کلک هاؤس، د ټولو تشریح شویو ستونزو سره سره، د لاګونو لپاره خورا ښه مناسب دی. تر ټولو مهم، دا زموږ ستونزه حل کوي - دا خورا ګړندی دی او تاسو ته اجازه درکوي د کالمونو په واسطه لاګ فلټر کړئ. په اصولو کې، بفر میزونه ښه نه دي ترسره شوي، مګر معمولا هیڅوک نه پوهیږي چې ولې ... شاید اوس تاسو ښه پوهیږئ چیرې چې تاسو به ستونزې ولرئ.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

TCP؟ په عموم کې، په VK کې د UDP کارولو دودیز دی. او کله چې ما TCP کارولی ... البته، هیڅوک ما ته ونه ویل: "یوري، تاسو د څه په اړه خبرې کوئ! تاسو نشئ کولی، تاسو UDP ته اړتیا لرئ. دا معلومه شوه چې TCP دومره ډارونکی ندی. یوازینی شی دا دی، که تاسو لسګونه زره فعال مرکبات ولرئ چې تاسو یې لیکئ، نو تاسو اړتیا لرئ چې دا په ډیر احتیاط سره چمتو کړئ؛ مګر دا ممکنه ده، او خورا اسانه ده.

ما ژمنه وکړه چې "کیټین هاؤس" او "لیټ هاؤس" په های لوډ سایبیریا کې پوسټ کړم که هرڅوک زموږ عامه "VK بیکینډ" کې ګډون وکړي ... او تاسو پوهیږئ ، هرچا ګډون نه دی کړی ... البته ، زه به دا غوښتنه ونه کړم چې تاسو زموږ سبسکرائب کړئ عامه ستاسو څخه لاهم ډیر شتون لري ، یو څوک حتی ناراض کیدی شي ، مګر بیا هم ، مهرباني وکړئ ګډون وکړئ (او دلته زه باید د پیشو په څیر سترګې جوړ کړم). دا دی په لاره کې د هغې سره اړیکه ونیسئ. ډیره مننه له تاسو سره! ګیتوب زموږ دی سمه ده. د کلک هاؤس سره به ستاسو ویښتان نرم او ورېښم وي.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

مخکښ: - ملګري، اوس د پوښتنو لپاره. سمدلاسه وروسته له هغه چې موږ د VHS په اړه د ستاینې سند او ستاسو راپور وړاندې کوو.

یوري نصردینوف (له دې وروسته د YN په نوم یادیږي): - تاسو څنګه کولی شئ زما راپور په VHS کې ثبت کړئ که چیرې دا پای ته ورسیږي؟

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

مخکښ: - تاسو نشئ کولی په بشپړ ډول وټاکئ چې "کلک هاؤس" به څنګه کار وکړي یا نه! ملګرو، د پوښتنو لپاره 5 دقیقې!

پوښتنې

د لیدونکو څخه پوښتنه (له دې وروسته د Q په نوم یادیږي): - بعد له غرمه مو پخیر. د راپور لپاره ډیره مننه. زه دوه پوښتنې لرم. زه به د یو څه سره پیل وکړم: ایا په ډیاګرامونو کې د "کیټین هاوس" په نوم د تورو شمیر (3، 4، 7...) د پیشوګانو په رضایت اغیزه کوي؟

YN: - د څه شي مقدار؟

ز: - لیک ټ. دلته درې t's شتون لري، چیرته چې شاوخوا درې t's.

YN: - ما دا نه دی سم کړی؟ ښه، البته دا کوي! دا مختلف محصولات دي - زه دا ټول وخت تاسو ته دوکه ورکوم. ښه، زه ټوکې کوم - دا مهمه نده. آه، دلته سمه ده! نه، دا هماغه خبره ده، ما ټایپ کړی.

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

ز: - له تاسو مننه. دوهمه پوښتنه جدي ده. تر هغه ځایه چې زه پوهیږم، په کلک هاؤس کې، بفر میزونه په ځانګړې توګه په حافظه کې ژوند کوي، ډیسک ته بفر شوي ندي او په وینا یې دوامدار ندي.

YN: - هو.

ز: - او په ورته وخت کې ، ستاسو پیرودونکي ډیسک ته بفر کوي ، کوم چې د ورته لاګونو تحویلي ځینې تضمین معنی لري. مګر دا په هیڅ ډول په کلیک هاؤس کې تضمین ندی. تشریح کړئ چې تضمین څنګه ترسره کیږي، د څه له امله؟ ... دلته دا میکانیزم په تفصیل سره دی

YN: - هو، په تیوریکي توګه دلته هیڅ ډول تضاد شتون نلري، ځکه چې کله چې کلک هاؤس راښکته شي، تاسو کولی شئ دا په یو ملیون مختلفو لارو کشف کړئ. که چیرې کلیک هاوس حادثه شي (که چیرې دا په غلط ډول پای ته ورسیږي)، تاسو کولی شئ، په لنډه توګه، ستاسو د ننوتلو لږ څه بیرته راوباسئ چې تاسو یې لیکلي او له هغه شیبې څخه پیل کړئ کله چې هرڅه سم وو. راځئ چې ووایو تاسو یوه دقیقه بیرته راوباسئ، دا په پام کې نیول کیږي چې تاسو په یوه دقیقه کې هرڅه فلش کړي دي.

ز: - دا دی، "کیټین هاوس" کړکۍ اوږده ساتي او د سقوط په صورت کې، کولی شي دا پیژني او بیرته یې راوباسي؟

YN: - مګر دا په تیوري کې دی. په عمل کې، موږ دا نه کوو، او د اعتبار وړ تحویل له صفر څخه تر انفینٹی وختونو پورې دی. مګر په اوسط ډول یو. موږ مطمین یو چې که کلیک هاوس د کوم دلیل لپاره حادثه شي یا سرورونه "ریبوټ" شي نو موږ یو څه له لاسه ورکوو. په نورو ټولو قضیو کې، هیڅ شی به نه وي.

ز: - سلام. له پیل څخه ما ته داسې بریښي چې تاسو به واقعیا د راپور له پیل څخه UDP کاروئ. تاسو http، ټول هغه څه لرئ ... او ډیری ستونزې چې تاسو یې تشریح کړې، لکه څنګه چې زه پوهیږم، د دې ځانګړي حل له امله رامینځته شوي ...

YN: - موږ TCP څه کاروو؟

ز: - په اصل کې هو.

YN: - نه.

ز: - دا د fasthttp سره وه چې تاسو ستونزې درلودې ، د اړیکې سره تاسو ستونزې درلودې. که تاسو یوازې UDP کارولی وای نو تاسو به یو څه وخت خوندي کړی وای. ښه، د اوږد پیغامونو یا بل څه سره به ستونزې وي ...

YN: - له څه سره؟

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

ز: - د اوږدو پیغامونو سره، ځکه چې دا ممکن په MTU کې مناسب نه وي، بل څه ... ښه، ممکن د دوی ستونزې وي. پوښتنه دا ده: ولې UDP نه؟

YN: - زه باور لرم چې هغه لیکوالان چې TCP/IP یې رامینځته کړي زما په پرتله خورا هوښیار دي او زما څخه ښه پوهیږي چې څنګه د پیکټو سریال کولو څرنګوالی (تر څو دوی لاړ شي) ، په ورته وخت کې د لیږلو کړکۍ تنظیم کړئ ، د شبکې ډیر بار مه کوئ ، د څه په اړه نظر ورکړئ نه لوستل کیږي، په بل اړخ کې نه شمیرل کیږي ... دا ټولې ستونزې، زما په نظر، په UDP کې به شتون ولري، یوازې زه باید حتی ډیر کوډ ولیکم چې ما مخکې لیکلي وو ترڅو پخپله ورته شی پلي کړم او ډیری احتمال کمزوری زه حتی په C کې لیکل نه خوښوم ، یوازې پریږده ...

ز: - بس بس! سم لیږل شوی او هیڅ شی ته انتظار مه کوئ - دا په بشپړ ډول غیر متزلزل دی. یو خبرتیا بیرته راغله چې هرڅه سم دي - پدې معنی چې دا رارسیدلی؛ که دا نه راځي، دا پدې مانا ده چې دا خراب دی.

YN: - زه دواړو ته اړتیا لرم - زه اړتیا لرم چې دواړه د تحویلي تضمین سره او د تحویلي تضمین پرته ولیږم. دا دوه مختلف سناریوګانې دي. زه اړتیا لرم چې ځینې لاګونه له لاسه ورنکړو یا یې په دلیل کې له لاسه ورنکړو.

ز: - زه به وخت ضایع نه کړم. دا باید نور بحث وشي. له تاسو مننه.

مخکښ: - څوک پوښتنه لري - اسمان ته لاسونه!

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

ز: - سلام، زه ساشا یم. د راپور په مینځ کې ، یو احساس څرګند شو چې د TCP سربیره ، دا ممکنه وه چې چمتو شوي حل وکاروئ - یو ډول کافکا.

YN: - ښه ... ما تاسو ته وویل چې زه نه غواړم د منځني سرورونو څخه کار واخلم، ځکه چې ... په کافکا کې، دا معلومه شوه چې موږ لس زره کوربه لرو؛ په حقیقت کې، موږ ډیر - لسګونه زره کوربه لرو. د کافکا سره پرته له کوم پراکسي سره ترسره کول هم دردناک کیدی شي. سربیره پردې ، خورا مهم ، دا لاهم "توپیر" ورکوي ، دا اضافي کوربه ورکوي چې تاسو ورته اړتیا لرئ. مګر زه نه غواړم دوی ولرم - زه غواړم ...

ز: "مګر په پای کې دا په هرصورت په دې ډول وګرځید."

YN: - نه، هیڅ کوربه نشته! دا ټول د Clickhouse کوربه کار کوي.

ز: - ښه، او "کیټین هاوس"، کوم چې برعکس دی - هغه چیرته ژوند کوي؟

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

YN: - د کلک هاؤس کوربه کې، دا ډیسک ته هیڅ نه لیکي.

ز: - راځئ چې فرض کړو.

مخکښ: – ته راضي يې؟ ایا موږ تاسو ته معاش درکړو؟

ز: - هو، تاسو کولی شئ. په حقیقت کې ، د ورته شی ترلاسه کولو لپاره ډیری بیسارې شتون لري ، او اوس - د TCP موضوع په اړه پخوانی ځواب زما په نظر ، دا وضعیت سره تضاد لري. دا یوازې داسې احساس کوي چې هرڅه زما په زنګونونو کې په لږ وخت کې ترسره کیدی شي.

YN: - او همدارنګه ولې ما نه غوښتل چې کافکا وکاروم، ځکه چې د کلک هاؤس ټیلیګرام چیٹ کې ډیری شکایتونه شتون درلود چې د بیلګې په توګه، د کافکا پیغامونه ورک شوي. له کافکا نه، بلکې د کافکا او کلکهوس په ادغام کې؛ یا یو څه هلته نه و نښلول شوي. په لنډه توګه، دا به اړینه وي چې د کافکا لپاره یو مراجع لیکي. زه فکر نه کوم چې ممکن یو ساده یا ډیر باوري حل وي.

ز: - ماته ووایه، ولې تاسو کوم کتار یا یو ډول عام بس هڅه نه ده کړې؟ له هغه ځایه چې تاسو وایئ چې د غیر مطابقت سره تاسو کولی شئ لاګونه پخپله د قطار له لارې واستوئ او ځواب په غیر متناسب ډول د قطار له لارې ترلاسه کړئ؟

HighLoad++، Yuri Nasretdinov (VKontakte): څنګه VK د لسګونو زرو سرورونو څخه کلیک هاوس ته ډاټا داخلوي

YN: - مهرباني وکړئ وړاندیز وکړئ چې کوم کتارونه کارول کیدی شي؟

ز: - هر، حتی د تضمین پرته چې دوی په ترتیب کې دي. یو ډول ریډیس، RMQ ...

YN: - زه یو احساس لرم چې ریډیس به ونشي کولی د دومره حجم داخلولو حتی په یوه کوربه کې (د څو سرورونو په معنی) چې کلیک هاؤس راوباسي. زه نشم کولی دا د کوم شواهدو سره بیک اپ کړم (ما دا معیار نه دی کړی)، مګر داسې ښکاري چې ریډیس دلته غوره حل نه دی. په اصولو کې، دا سیسټم د اصلاح شوي پیغام کتار په توګه ګڼل کیدی شي، مګر کوم چې یوازې د "کلک هاؤس" لپاره مناسب دی.

مخکښ: - یوري، ډیره مننه. زه وړاندیز کوم چې پوښتنې او ځوابونه دلته پای ته ورسوم او ووایم چې کوم چا چې پوښتنه کړې موږ به یې کتاب ورکړو.

YN: - زه غواړم لومړی کس ته یو کتاب ورکړم چې پوښتنه یې وکړه.

مخکښ: - په زړه پورې! غوره! په زړه پورې! ډیره مننه!

ځینې ​​اعلانونه 🙂

له موږ سره د پاتې کیدو لپاره مننه. ایا تاسو زموږ مقالې خوښوي؟ غواړئ نور په زړه پورې مینځپانګه وګورئ؟ د امر په ورکولو یا ملګرو ته وړاندیز کولو سره زموږ ملاتړ وکړئ ، کلاوډ VPS د پراختیا کونکو لپاره له $ 4.99 څخه, د ننوتلو کچې سرورونو یو ځانګړی انلاګ ، کوم چې زموږ لخوا ستاسو لپاره اختراع شوی و: د VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps په اړه بشپړ حقیقت له $ 19 څخه یا څنګه سرور شریک کړئ؟ (د RAID1 او RAID10 سره شتون لري، تر 24 کور پورې او تر 40GB DDR4 پورې).

ډیل R730xd په امستردام کې د Equinix Tier IV ډیټا مرکز کې 2 ځله ارزانه؟ یوازې دلته 2x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 تلویزیون له $199 څخه په هالنډ کې! ډیل R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - له $ 99 څخه! په اړه ولولئ د زیربنا شرکت جوړولو څرنګوالی د ډیل R730xd E5-2650 v4 سرورونو کارولو سره ټولګي د یوې پیسي لپاره د 9000 یورو ارزښت لري؟

سرچینه: www.habr.com

Add a comment