مدیریت حجم عظیم دادهها در شبکههای توزیعشده جهانی، یکی از بزرگترین چالشهای مهندسی است. کلادفلر (Cloudflare) که بیش از ۲۰ درصد وب را پوشش میدهد، با چالشی همیشگی روبروست: رشد نمایی ترافیک در مقابل رشد خطی سختافزار. تیم داده این شرکت برای کنترل هزینههای منابع و جلوگیری از اشباع زیرساخت، مجموعهای از تغییرات معماری را در خط لوله داده (Data Pipeline) خود پیادهسازی کرده است که در ادامه به بررسی فنی آنها میپردازیم.
تجزیه شمای یکپارچه (Monolithic Schema)
در سال ۲۰۲۲، کلادفلر تصمیم گرفت شمای واحد دادههای خود را متلاشی کند. پیش از این، تمام فیلدهای مربوط به محصولات مختلف در یک جریان (Stream) واحد قرار داشتند و مصرفکنندگان داخلی مجبور بودند تمام دادهها را دریافت کرده و سپس موارد غیرضروری را فیلتر کنند. با تبدیل این مدل به شمای اختصاصی برای هر محصول، مصرف پهنای باند در شبکه ستون فقرات (Backbone) حدود ۳۵ تا ۴۰ درصد کاهش یافت.
بهینهسازی فشردهسازی
با افزایش ترافیک در سال ۲۰۲۴، مشکل تراکم شبکه (Network Congestion) شدت یافت. برای رفع این موضوع، الگوریتم فشردهسازی از LZ4 به zstd تغییر یافت. بررسیهای متریسها نشان داد که این تغییر تأثیر محسوسی بر مصرف CPU نداشت، اما منجر به کاهش تقریباً ۴۰ درصدی در نرخ انتقال ترافیک فشرده شد. این یعنی با همان زیرساخت فعلی، امکان پشتیبانی از ۱.۵ برابر ترافیک بیشتر فراهم شد.
بازطراحی تکثیر دادهها و توازن بار (Load Balancing)
برای تضمین تابآوری در برابر حوادث منطقهای، دادهها باید در چندین منطقه متمرکز ذخیره شوند. مدل قدیمی بر اساس Double-writing بود که هر رویداد را دو بار ارسال میکرد و ترافیک را دو برابر میکرد. مدل جدید شامل موارد زیر است:
- Shared Ingest Pool: هر رویداد تنها یک بار از طریق شبکه WAN به اولین گیرنده در دسترس ارسال میشود.
- Late Replication: تکثیر دادهها به جای منبع، در اواخر خط لوله و در لایه بافرینگ (Buftee) انجام میشود.
- تأثیر: این تغییر باعث حذف حدود ۴۳ گیگابایت بر ثانیه ترافیک ترنزیت فشرده شد.
نمونهبرداری زودهنگام (Early Sampling)
برای کاهش فشار بر سیستمهای پاییندست، مکانیزم نمونهبرداری (Sampling) به ابتدای خط لوله یعنی سرویس Logfwdr منتقل شد. با استفاده از یک الگوریتم مبتنی بر ریشه دوم تعداد رکوردها برای هر کلید (Key)، نمونهای نماینده از دادهها استخراج میشود. این روش باعث شد حجم دادههای ارسالی برای مجموعهای از بزرگترین دیتاستها بیش از ۵۰ درصد کاهش یابد (حدود ۲۵ گیگابایت بر ثانیه یا ۲ پتابایت در روز).
تجمیع غیرمتمرکز (Decentralized Aggregation)
به جای محاسبه تجمیعها (Aggregations) در انتهای خط لوله، این قابلیت در تمام مراحل توزیع شد. اکنون تجمیع دادهها در مراحل زیر تکرار میشود:
- در هر نمونه از Logfwdr.
- پس از رسیدن به گیرندههای متمرکز.
- توسط Inserterهای ClickHouse.
- در نهایت در موتورهای جدولی تجمیعکننده ClickHouse.
در دیتاست ترافیک HTTP، این رویکرد باعث کاهش ترافیک از ۹ گیگابایت بر ثانیه به کمتر از ۲ گیگابایت بر ثانیه شد (کاهش ۸۰ درصدی).
نتیجهگیری و اثرات زیرساختی
ترکیب این استراتژیها منجر به حذف حدود ۷۰ گیگابایت بر ثانیه ترافیک فشرده از شبکه ستون فقرات شد. علاوه بر پهنای باند، فشار بر سختافزار نیز به شدت کاهش یافت؛ به طوری که در برخی گیرندهها، حدود ۷۵۰ CPU و ۳.۵ ترابایت حافظه RAM آزاد شد. این بهینهسازیهای ساختاری و الگوریتمی، کلادفلر را قادر میسازد تا تقاضای سختافزاری را در برابر رشد ترافیک، پایدار نگه دارد.