ClickHouse Sharding و Replication در NFA

پرس و جو در چندین بخش
از آنجایی که NFA بیش از یک قطعه دارد، اطلاعات ترافیک و BGP را می توان در چندین سرور ClickHouse ذخیره کرد. یک گزارش در سطح شبکه ممکن است به داده هایی از همه آنها نیاز داشته باشد. جداول توزیع شده دسترسی به خوشه را به عنوان یک مجموعه منطقی از داده ها فراهم می کند. ClickHouse کارهای لازم را روی قطعات مربوطه انجام می دهد و نتایج را با هم ترکیب می کند.
برای مثال، اپراتوری که ترافیک را بر اساس آدرس IP مقصد در یک بازه زمانی معین بررسی می کند، مجبور نیست به صورت دستی یک گزارش جداگانه از هر سرور ذخیره سازی بازیابی کند. به طور مشابه، اطلاعات مسیریابی برای یک پیشوند ممکن است نیاز داشته باشد که از بخشهای مختلف هنگام مشاهده در جلسات مختلف BGP مشتق شود. پایگاه داده اجرای توزیع شده را مدیریت می کند.
جزئیات پیکربندی مربوط به درخواست ها برای چندین بخش NFA وجود دارد. برخی از درخواست های NFA استفاده می کنند IN یا JOIN سوالات فرعی شامل جداول توزیع شده ClickHouse به طور کلی الگوهای خاصی از درخواست های توزیع مضاعف را از طریق خود محدود می کند distributed_product_mode تنظیم
پیکربندی چند تکه NFA از موارد زیر استفاده می کند:
distributed_product_mode = global
این اجازه می دهد تا مربوطه توزیع شده است IN و JOIN عملیات برای استفاده از معناشناسی جهانی برای اجرای یک پرس و جو. این تنظیم باید به طور مداوم در سراسر گره های ClickHouse در پیکربندی مستند چندشارد اعمال شود. این یک الزام پیاده سازی است، نه چیزی که یک کاربر NFA معمولاً از طریق رابط گزارش با آن تعامل دارد.
مانند هر پایگاه داده توزیع شده، عملکرد پرس و جو به مقدار داده درگیر، منابع موجود و ارتباط بین سرورها بستگی دارد. تقسیم یک پرس و جو در چند سطل می تواند برای بارهای کاری تحلیلی بزرگ مفید باشد، اما هر پرس و جو سریعتر نمی شود، زیرا گره های بیشتری در دسترس هستند.
نحوه انجام تکثیر
Sharding محل ذخیره بخش های مختلف مجموعه داده را مشخص می کند. Replication کپی هایی از داده های متعلق به یک بخش خاص را حفظ می کند. NFA از نسخه های تکراری موتورهای MergeTree ClickHouse برای جداول جریان ذخیره شده هسته و BGP خود استفاده می کند.
| جدول NFA | موتور ذخیره سازی کلیک هاوس |
|---|---|
| bgp | ReplicatedMergeTree |
| data_streams1 | ReplicateAggregatingMergeTree |
| data_streams2 | ReplicateAggregatingMergeTree |
| data_streams3 | ReplicateAggregatingMergeTree |
| flows_data_1s_compact | ReplicateAggregatingMergeTree |
خانواده AggregatingMergeTree از ذخیره سازی تجمع گرا پشتیبانی می کند. نوع تکراری آن توانایی نگهداری داده های مربوطه را در چندین کپی از یک خرده اضافه می کند.
بعد از درج چه اتفاقی می افتد؟
از پیکربندی خوشه NFA استفاده می کند internal_replication=true.
هنگامی که یک بلوک از داده ها از طریق یک جدول توزیع شده درج می شود، ClickHouse قطعه مورد نظر را انتخاب می کند و بلوک را به یک کپی از آن خرده می فرستد. سپس موتور جدول تکراری همگام سازی را با دیگر کپی ها انجام می دهد.
به عنوان مثال، فرض کنید Shard 01 شامل دو ماکت باشد. یک بلوک جدید در یکی از آنها درج می شود. ClickHouse عملیات تکرار را هماهنگ می کند تا ماکت دیگر بتواند داده های مورد نیاز را دریافت کند. این دو نسخه در نهایت مجموعه دادههای منطقی یکسانی را حفظ میکنند، اگرچه همگامسازی ممکن است زمان ببرد اگر ماکت در دسترس نباشد یا دارای بک لاگ پردازش باشد. این رفتار توسط ClickHouse مدیریت می شود، نه برنامه NFA، که به طور مستقل هر رکورد را در هر replica قرار می دهد. همین اصل برای جداول جریان تکراری و BGP نیز صدق می کند.
چگونه Keeper ماکت ها را شناسایی می کند
جداول تکرار شده از یک مسیر مختصاتی استفاده می کنند که شامل شناسه بخش و نام جدول است.
به عنوان مثال، در flows_data1 جدول در Shard 01 از موارد زیر استفاده می کند:
/clickhouse/tables/01/nfa/flows_data1
جدول BGP در همان خرده از موارد زیر استفاده می کند:
/clickhouse/tables/01/nfa/bgp
اگر ماکت دیگری به Shard 01 اضافه شود، مسیرهای جدول مربوطه را به اشتراک می گذارد اما تحت شناسه replica خود ثبت می شود.
یک تکه تکه از مسیرهای مختلفی استفاده می کند:
/clickhouse/tables/02/nfa/flows_data1
/clickhouse/tables/02/nfa/bgp
این ترتیب به ClickHouse اجازه می دهد تا ماکت های حاوی داده های یکسان را از قطعات مسئول بخش های مختلف مجموعه داده تشخیص دهد. پیکربندی ClickHouse NFA شناسههای تکهای و کپی را به عنوان ماکرو ذخیره میکند. هر گره مقادیر خاص خود را دارد که مسیرهای Keeper مربوطه را مشخص می کند. مستندات ClickHouse در مورد تکثیر مکانیسم پایگاه داده زیربنایی را پوشش می دهد.
کدام توپولوژی منطقی است؟
معماری از چندین پیکربندی پشتیبانی می کند. ساده ترین، نصب پیش فرض با یک بخش است، در حالی که استقرارهای بزرگتر ممکن است از چندین بخش، چندین نسخه تکراری یا هر دو استفاده کنند. انتخاب بستگی به این دارد که آیا اپراتور به ظرفیت پایگاه داده بیشتری نیاز دارد، یک نسخه دیگر از ترافیک ذخیره شده و داده های BGP یا هر دو.
یک قطعه، یک ماکت
این نقطه شروع استاندارد است. NFA و پایگاه داده ClickHouse با یک نمونه ذخیره سازی محلی کار می کنند. ترافیک پایگاه داده بین گره ها وجود ندارد و مدیریت نسبتاً ساده است. اگر سرور منابع کافی برای تعداد صادرکنندگان، داده های ذخیره شده و حجم کاری درخواستی داشته باشد، ممکن است دلیلی برای گسترش آن وجود نداشته باشد. محدودیت این است که قطعه یک کپی پایگاه داده اضافی ندارد. اگر سرور انحصاری ClickHouse از کار بیفتد، داده های ذخیره شده آن ممکن است تا زمانی که سرویس بازیابی نشود، در دسترس نباشد.
دو قطعه، هر کدام یک ماکت
اکنون نصب NFA را در یک ارائه دهنده میزبانی در نظر بگیرید که پایگاه داده آن به محدودیت های ذخیره سازی خود نزدیک شده است. اپراتور یک سرور ClickHouse دیگر را به عنوان Shard 02 اضافه می کند. ورودی های جریان و BGP جدید که از طریق جداول توزیع شده درج شده اند را می توان با توجه به کلیدهای اشتراک گذاری مربوطه به هر قطعه اختصاص داد. هر سرور پایگاه داده بخش متفاوتی از مجموعه داده های مربوطه خود را ذخیره می کند. این منبع ذخیره سازی و پردازش اضافی را فراهم می کند، اما هیچ قطعه ای کپی اضافی ندارد. اگر قطعه ای در دسترس نباشد، ممکن است بخش داده آن در دسترس نباشد.
یک جزئیات عملیاتی در اینجا اهمیت ویژه ای دارد: قطعه جدید به طور خودکار نیمی از رکوردهای تاریخی را دریافت نمی کند. داده های موجود بر روی قطعه اصلی باقی می مانند مگر اینکه یک روش توزیع مجدد جداگانه انجام شود. بنابراین، این دو سرور ممکن است بلافاصله پس از گسترش، استفاده از دیسک متفاوتی داشته باشند.
یک خرده، دو ماکت
فرض کنید ظرفیت پایگاه داده نگرانی اصلی نیست. در عوض، اپراتور یک نسخه دیگر از اطلاعات ترافیک و مسیر ذخیره شده را درخواست می کند. سرور ClickHouse دوم را می توان به عنوان کپی 02 از قطعه موجود اضافه کرد. برخلاف شارد جدید، این سرور زیرمجموعه دیگری از رکوردهای آینده را دریافت نمی کند. به شارد موجود می پیوندد و داده های آن را همگام می کند.
پس از تکمیل فرآیند همگام سازی، دو کپی مجموعه داده های منطقی یکسانی از جمله جداول جریان تکراری و BGP را حفظ می کنند. این توافقنامه می تواند به حفظ دسترسی به داده های ذخیره شده در طول خرابی گره های پایگاه داده خاص یا عملیات تعمیر و نگهداری کمک کند. این مقدار اطلاعات تاریخی منحصر به فردی را که شارد می تواند ذخیره کند افزایش نمی دهد.
دو قطعه، هر کدام دو ماکت
نصب NFA بزرگتر ممکن است به هر دو فضای ذخیره سازی توزیع شده و افزونگی پایگاه داده نیاز داشته باشد. در این پیکربندی، خوشه شامل چهار نمونه ClickHouse است. Shard 01 دو ماکت و Shard 02 دو ماکت دارد. خردهها بخشهای مختلفی از مجموعه دادهها را ذخیره میکنند، در حالی که کپیهای درون هر خرده اطلاعات منطقی یکسانی را حفظ میکنند.
این مزیت های ظرفیت شاردینگ را با افزونگی ارائه شده توسط تکرار ترکیب می کند. زیرساخت های بیشتری برای نگهداری وجود دارد و پیکربندی به منابع شبکه، ذخیره سازی و پردازش کافی برای پرس و جوهای توزیع شده و تکرار نیاز دارد. همچنین هر شکست احتمالی را از بین نمی برد. از دست دادن هر دو کپی از یک قطعه می تواند داده های آن قطعه را غیرقابل دسترسی کند و وابستگی های مشترک هنوز باید در نظر گرفته شوند.
وقتی یک نصب NFA موجود ارتقا می یابد، چه تغییری می کند؟
برای نصب NFA موجود، ارائه پشتیبانی شاردینگ بیش از ایجاد یک تعریف خوشه ای را شامل می شود. پایگاه داده اکنون حاوی اطلاعات تاریخی در جداول ClickHouse محلی است. ارتقاء باید این جداول را با حفظ داده های ذخیره شده به ماشین های تکراری تبدیل کند. رویه ارتقاء مستند NFA این انتقال را به عنوان بخشی از آماده سازی نصب برای معماری مبتنی بر خوشه انجام می دهد.
آماده سازی کلیک هاوس
ارتقا ابتدا خدمات پایگاه داده را آماده می کند. ClickHouse Keeper راه اندازی شده و برای در دسترس بودن بررسی می شود. سپس سرور ClickHouse قبل از ادامه مهاجرت طرح آماده و تأیید می شود. اگر آماده سازی پایگاه داده با شکست مواجه شود، ارتقای طرحواره نباید ادامه یابد. ارتقاء بسته همچنین خدمات NFA را که ممکن است در جداول آسیب دیده بنویسند متوقف می کند. این از درج رکوردهای جدید در حین انتقال ساختارهای ذخیره سازی موجود جلوگیری می کند.
تبدیل جداول
جدول BGP موجود از منتقل شده است MergeTree به ReplicatedMergeTree.
جداول خلاصه جریان اصلی از آن مهاجرت کرده اند AggregatingMergeTree به ReplicatedAggregatingMergeTree.
فرآیند مهاجرت NFA جداول تکراری موقت را با استفاده از مسیرهای انتهای Keeper ایجاد می کند. سپس پارتیشن ها را از جداول موجود قبل از جایگزینی اشیاء جدول اصلی متصل می کند. وقتی منبع و مقصد از فضای ذخیرهسازی ClickHouse یکسان استفاده میکنند، پارتیشنهای پیوست شده میتوانند به جای اینکه هر ردیف از طریق یک درج منطقی جدید کپی شود، از دادههای موجود دوباره استفاده کنند. این برای تاسیساتی با مجموعه داده های تاریخی قابل توجه مرتبط است.
پس از انتقال، داده ها از طریق ساختار جدول جدید در دسترس باقی می مانند. این ارتقا همچنین جداول توزیع شده مورد نیاز برای اشتراک گذاری را ایجاد می کند.
نصب روی یک سرور باقی می ماند
ارتقاء به طور خودکار نمونه های اضافی از ClickHouse ایجاد نمی کند. سرور موجود تبدیل به Shard 01، ماکت 01 می شود nfa خوشه
داده های تاریخی در این سرور باقی می ماند. اپراتورهایی که به پایگاه داده توزیع شده نیاز ندارند می توانند به استفاده از پیکربندی تک گره ادامه دهند. بخشها یا کپیهای اضافی میتوانند بعداً زمانی که نیازهای ظرفیت یا در دسترس بودن آنها را تضمین میکند، معرفی شوند.
یک گره پایگاه داده اضافه کنید
یک سرور ClickHouse اضافی نیازی به نصب جداگانه برنامه NFA ندارد. به یک نسخه سازگار از ClickHouse و پیکربندی کلاستر صحیح نیاز دارد. گره ها باید بتوانند نام های میزبان پیکربندی شده یکدیگر را حل کنند، اتصالات پایگاه داده لازم را ایجاد کنند و با Keeper ارتباط برقرار کنند. هر گره همچنین به شناسه های خرده و کپی مناسب نیاز دارد. این شناسه ها تعیین می کنند که آیا گره یک قطعه جدید را نشان می دهد یا یک کپی دیگر از یک موجود.
افزودن قطعه
یک قطعه جدید شناسه سگمنت خود را می گیرد و به یک پارتیشن ذخیره سازی مستقل در خوشه تبدیل می شود. هنگامی که پیکربندی خوشه به روز شد و طرح NFA مورد نیاز مقداردهی اولیه شد، قطعه می تواند شروع به دریافت درج های توزیع شده جدید کند.
مقداردهی اولیه طرح توسط گره اصلی NFA از طریق هماهنگ می شود nfaadm ابزار مدیریت سرور افزودنی ClickHouse خدمات پایگاه داده را اجرا می کند، نه یک نسخه کامل دیگر از یک برنامه NFA.
توزیع مجدد داده های تاریخی یک موضوع جداگانه است. صرف افزودن قطعه، پارتیشن های موجود را از سرور اصلی جابجا نمی کند.
یک ماکت اضافه کنید
یک ماکت جدید از شناسه خرده خرده موجود استفاده می کند و یک شناسه مشابه دیگر دریافت می کند. پس از اینکه جداول تکراری مقداردهی اولیه شدند، ClickHouse می تواند داده های متعلق به آن قطعه را با سرور جدید همگام کند. زمان و منابع مورد نیاز به مقدار داده و عملکرد شبکه و ذخیره سازی موجود بستگی دارد. یک ماکت با تأخیر همگامسازی زیاد ممکن است به زمان قابل توجهی برای رسیدن نیاز داشته باشد. به محض اینکه در پیکربندی خوشه ظاهر شد، نباید فرض کرد که کاملاً همگام شده است.
راهاندازی مستند NFA شامل بررسیهایی برای تأیید فعال شدن نسخههای مورد انتظار و بازگشت صفهای تکرار آنها به حالت عادی است.
نظارت بر پایگاه داده NFA چند گره
با چندین گره پایگاه داده، نظارت بر سلامت رابط NFA و کلکتور کافی نیست. مدیران همچنین باید بررسی کنند که سرورهای ClickHouse میتوانند ارتباط برقرار کنند، درخواستهای توزیع شده به درستی اجرا میشوند، و اینکه کپیها همگام هستند.
ClickHouse جداول سیستمی را برای این بررسی ها ارائه می دهد.
system.clusters توپولوژی خوشه پیکربندی شده، از جمله خرده ها، کپی ها و اطلاعات میزبان آنها را گزارش می دهد.
system.replicas اطلاعاتی در مورد جداول تکرار شده، از جمله تعداد تکرارهای فعال، صف های تکرار، تأخیر و وضعیت فقط خواندنی ارائه می دهد.
برای یک تکه تکثیر شده سالم، کپیهای مورد انتظار باید فعال باشند و دادههای همگامسازی انباشته شده باید پس از پردازش کار معلق پاک شوند. پایگاه داده همچنین میتواند در تمام کپیهای پیکربندیشده برای مقایسه دادههای ذخیرهشده و بررسی اینکه درجهای جدید به خردههای مورد نظر میرسند، جستجو شود.
تعداد دقیق قطعات فیزیکی همیشه بین ماکت ها در هر نقطه از زمان مطابقت ندارد. ClickHouse عملیات ادغام پسزمینه را انجام میدهد و ماکتها میتوانند به طور موقت طرحبندی قسمتهای مختلفی داشته باشند در حالی که دادههای منطقی یکسانی را نشان میدهند. بنابراین، مدیران باید به جای تکیه بر یک ردیف فیزیکی منفرد یا مقایسه شمارش کسری، به سلامت نسخهها و سازگاری منطقی دادهها توجه کنند.
در دسترس بودن گارد
پیکربندی مستند شده NFA، ClickHouse Keeper را روی گره NFA اجرا می کند. سرورهای ClickHouse اضافی به این نمونه از Keeper متصل می شوند. این یک جنبه مهم در طراحی سهام است. حتی اگر پایگاه داده دارای چندین کپی باشد، آنها همچنان به سرویس هماهنگی پیکربندی شده برای عملیات مربوط به تکرار وابسته هستند. از دست دادن اتصال Keeper می تواند باعث شود جداول تکراری فقط خواندنی شوند یا بر سایر عملیاتی که نیاز به هماهنگی دارند تأثیر بگذارد.
سازمانهایی که برنامهریزی یک استقرار مقاومتر در برابر خطا را دارند، باید در دسترس بودن Keeper را به همراه سرورهای پایگاه داده ارزیابی کنند. تکثیر پایگاه داده به تنهایی نباید به عنوان در دسترس بودن کامل برای نصب NFA تلقی شود.
آنچه اپراتورها باید از معماری جدید انتظار داشته باشند
مزیت اصلی اشتراک گذاری، توانایی توزیع بارهای کاری ذخیره سازی و تحلیلی ClickHouse در سرورهای اضافی است. برای نصبی که با محدودیت های ظرفیت ذخیره سازی مواجه است، این جایگزینی برای افزایش مداوم منابع یک ماشین واحد ارائه می دهد. Replication نیاز دیگری را برآورده می کند: نگهداری نسخه های اضافی از اطلاعات ذخیره شده روی قطعه. این می تواند زمانی مفید باشد که یک سرور پایگاه داده منفرد از کار بیفتد یا نیاز به تعمیر و نگهداری داشته باشد، مشروط بر اینکه ماکت باقیمانده و خدمات پشتیبانی راه اندازی و اجرا شوند. این قابلیت ها برای داده های جریان و BGP اعمال می شود. NFA از ویژگیهای مناسب برای هر مجموعه داده برای تعیین محل قرارگیری خردهها استفاده میکند و از ماشینهای ذخیرهسازی تکراری برای نگهداری کپیهای مربوطه از دادهها استفاده میکند.
هیچ کدام از این مکانیسم ها الزامات اولیه جمع آوری جریان را تغییر نمی دهند. جمع کننده NFA هنوز به ظرفیت کافی برای دریافت و پردازش صادرات NetFlow، sFlow یا IPFIX ورودی نیاز دارد. گسترش پایگاه داده بهطور خودکار نمونههای مجموعه را اضافه نمیکند یا از تلفات قبل از رسیدن رکوردها به ذخیرهسازی جلوگیری نمیکند. Replication نیز جایگزین پشتیبان گیری نمی شود. تغییرات ناخواسته می توانند بین کپی ها منتشر شوند، بنابراین نسخه های بازیابی مستقل مرتبط باقی می مانند. در نهایت، خوشه بزرگتر نیاز به توجه عملیاتی بیشتری دارد. اتصال بین گره ها، احراز هویت، استفاده از ذخیره سازی، همگام سازی ماکت و خدمات هماهنگی بخشی از زیرساخت نظارت است. اینها دلایلی برای جلوگیری از ذخیره سازی توزیع شده نیستند. آنها عواملی هستند که باید هنگام تصمیم گیری در مورد اینکه آیا ظرفیت اضافی یا مازاد ضمانت شده است در نظر گرفته شوند.
با افزایش نیازهایتان، NFA را مقیاس کنید
معماری اشتراک گذاری و تکرار NFA به اپراتورها اجازه می دهد تا فضای ذخیره سازی ClickHouse را با تغییر نیازمندی هایشان گسترش دهند. بخشهای اضافی میتوانند جریان رو به رشد و مجموعه دادههای BGP و بارهای کاری پایگاه داده را توزیع کنند، در حالی که کپیها کپیهای اضافی از دادههای ذخیره شده را ارائه میدهند.
پیکربندی پیشفرض تک گره برای استقرارهای با منابع مناسب باقی میماند. تاسیسات موجود همچنین میتوانند به معماری خوشهآگاه ارتقا داده شوند و در عین حال دادههای تاریخی را حفظ کرده و گرههای اضافی را در صورت نیاز اضافه کنند.



