کاهش ۵۰ درصدی تاخیر و کاهش ۸۵ درصدی مصرف حافظه در پایپلاین DNS کلودفلر — We halved DNS build delay and cut memory use by 85%
خلاصه
کلودفلر با بازطراحی سامانه پردازش رکوردهای DNS و استفاده از برنامهریز هدفمند (Targeted Build Planner)، توانسته است تاخیر انتشار تغییرات را به نصف رسانده و مصرف حافظه رم را به شدت کاهش دهد. این تغییرات به پردازش مقیاسپذیر دامنههای بزرگ با میلیونها رکورد کمک شایانی میکند.
تیم مهندسی Cloudflare اخیراً تغییرات بزرگی در پایپلاین انتشار DNS خود ایجاد کرده است که نشان میدهد چگونه میتوان با بهینهسازی منطق پردازش رویدادها، منابع سختافزاری را به شدت کاهش داد. در مقیاس این شرکت، پردازش تغییرات دامنهها چالشهای فنی خاصی دارد.
پسزمینه و مقیاس مسئله
سامانه Zone Builder در Cloudflare وظیفه تبدیل تغییرات رکوردها و تنظیمات DNS به دادههای قابل استفاده برای سرورهای Authoritative DNS را بر عهده دارد. تعداد رویدادهای ورودی به این سامانه از حدود ۲۵۰ تغییر در ثانیه در سال ۲۰۲۲ به حدود ۷۰۰ تغییر در ثانیه رسیده است. برخی از این دامنهها اکنون حاوی بیش از ۲۰ میلیون رکورد هستند.
در معماری قدیمی، برای هر تغییر سادهای (مانند تغییر تنظیمات منطقه)، کل منطقه بازسازی (Full Build) میشد. این کار مستلزم خواندن تمام رکوردها، تبدیل آنها به کلیدهای Quicksilver (پایگاه داده توزیعشده کلید-مقدار کلودفلر) و نگهداری کل منطقه در حافظه رم بود. برای دامنههای بزرگ با دهها میلیون رکورد، این رویکرد غیرقابل قبول و مصرفکننده حجم عظیمی از مموری بود.
معماری برنامهریز هدفمند (Targeted Build Planner)
راهحل کلودفلر، توسعه یک برنامهریز هدفمند است که کوچکترین بیلدِ ممکن و از نظر امنیتی درست را انتخاب میکند. به جای بازسازی کل منطقه، سیستم تشخیص میدهد که دقیقاً کدام رکوردها یا متادیتاها تغییر کردهاند.
- شناسایی تغییرات: رویدادهای تولید شده اکنون شامل فیلدها و تنظیمات تغییریافته هستند.
- انتخاب نوع بیلد: بر اساس نوع تغییر، سیستم یکی از پنج حالت بیلد (شامل فقط منابع، منابع و متادیتا، اپکس و متادیتا، پاکسازی، یا کل منطقه) را انتخاب میکند.
- مدیریت نامهای مشترک: گاهی چند شیء منطقه (Zone Object) برای یک نام دامنه واحد وجود دارند. سیستم با خواندن مجدد اسنپشات در لحظه اجرای بیلد، از همگامسازی متادیتای مشترک اطمینان حاصل میکند.
یکپارچهسازی و زمانبندی رویدادها
پیشتر، بخشهای مختلف از زمانبندهای مجزایی استفاده میکردند. مهندسان کلودفلر این بخش را با یک زمانبند واحد (Unified Scheduler) جایگزین کردند که میتواند رویدادهای همزمان برای یک منطقه (مانند تغییر رکورد A و تغییر Wildcard) را ترکیب کرده و در قالب یک بیلد واحد اجرا کند.
نتایج فنی و دستاوردها
این بهینهسازیها دستاوردهای چشمگیری به همراه داشت:
- کاهش مصرف حافظه: حداکثر مصرف حافظه رم تا ۸۵ درصد کاهش یافت.
- افزایش سرعت: تاخیر زمانی از لحظه ثبت تغییر DNS تا نوشتن دادهها در Quicksilver به نصف کاهش پیدا کرد.
نگاه جامعه برنامهنویسان در هکرنیوز
در بحثهای هکرنیوز، برخی کاربران پرسیدند که آیا ۷۰۰ تغییر در ثانیه برای مقیاس کلودفلر عدد پایینی محسوب میشود یا خیر. همچنین گروهی از توسعهدهندگان درباره بازگشت تمرکز صنعت به بهینهسازی مصرف حافظه (با توجه به هزینههای سختافزاری) بحث کردند و این نوع مهندسی کارآمد را تحسین نمودند.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل