Tongcheng Travel JuiceFS را به CephFS برای مدیریت صدها میلیون فایل انتخاب کرد.

Tongcheng Travel یک رهبر بازار در صنعت سفر آنلاین چین است. این یک فروشگاه یکجا برای نیازهای سفر کاربران است. به عنوان یک شرکت فناوری محور، با استفاده از داده های بزرگ و قابلیت های هوش مصنوعی، Tongcheng Travel می تواند ترجیحات و رفتارهای کاربران را بهتر درک کند و محصولات و خدمات سفارشی شده را به آنها ارائه دهد.
همانطور که تجارت ما به سرعت رشد کرد، داده های بدون ساختار ما از 1 میلیارد فایل فراتر رفت. در سال 2022، ما سرویس ذخیره سازی اشیاء خود را ساختیم. در آن زمان، ما از CephFS به عنوان سیستم فایل توزیع شده خود استفاده می کردیم. با این حال، با ادامه رشد حجم داده ها، پیچیدگی بالا و چالش های عملیاتی CephFS به یک گلوگاه تبدیل شد. با در نظر گرفتن عواملی مانند قابلیت مشاهده، پایداری و کارایی مدیریت، ما به JuiceFS، یک سیستم فایل توزیع شده بومی ابری منبع باز تغییر دادیم..
در حال حاضر، ما یک پلتفرم ذخیرهسازی درجه سازمانی در JuiceFS ایجاد کردهایم که شامل بیش از 20 سیستم فایل و بیش از 2000 نقطه نصب مشتری است. این پلتفرم به طور موثر صدها میلیون فایل و صدها ترابایت داده را مدیریت می کند. عملیات روزانه فقط به یک پرسنل نیاز دارد. این پلتفرم در سناریوهای متعددی از جمله برنامههای هوش مصنوعی، محیطهای ابری کانتینری و فضای ذخیرهسازی مشترک در سطح برنامه اعمال میشود.
در این مقاله، چرایی جایگزینی CephFS را با JuiceFS، نحوه ساخت یک پلتفرم ذخیره سازی با JuiceFS و برنامه های خود برای آینده را بررسی خواهیم کرد.
انتخاب سیستم فایل: CephFS در مقابل JuiceFS
قبل از استفاده از JuiceFS، ما از Ceph برای ارائه خدمات ذخیره سازی شی و سیستم فایل توزیع شده استفاده می کردیم. بعداً از CephFS به JuiceFS مهاجرت کردیم.
معایب CephFS
ما متوجه شدیم که Ceph دارای این اشکالات است:
- پشته فنی پیچیده آن چالش هایی را برای بهره برداری و نگهداری ایجاد می کند که به تخصص و تجربه قابل توجهی نیاز دارد.
- از نظر قابلیت نگهداری و توسعه اکوسیستم دارای کاستی های خاصی است. این امر چالش های اساسی برای تضمین ثبات روزانه ایجاد می کند.
مزایای JuiceFS
JuiceFS چندین مزیت را ارائه می دهد:
- طراحی متادیتا و جداسازی داده آن به خوبی با ذخیره سازی اشیاء موجود و سیستم های پایگاه داده توزیع شده ما هماهنگ است. این تیم را قادر می سازد تا از تخصص فنی خود برای عیب یابی و تجزیه و تحلیل عملکرد استفاده کند.
- این یک مجموعه ابزار بالغ، سازگاری خوب با POSIX و پشتیبانی قوی بومی ابری دارد. رابط ذخیره سازی ظروف JuiceFS (CSI) گزینه های نصب انعطاف پذیری را ارائه می دهد.
- این یکپارچه با پشته فناوری موجود ما یکپارچه شده است. ما یک خوشه S3 بر اساس SeaweedFS، همراه با یک پروکسی S3 سازگار با SeaweedFS و Ceph ساختیم. خوشه S3 از مکانیزم Master-Replica برای فعال کردن Failover در لایه پروکسی استفاده کرد. برای مدیریت ابرداده، از یک پایگاه داده توزیع شده داخلی (DCDB) با نحو سازگار با MySQL استفاده کردیم.
ساخت پلتفرم با JuiceFS
در طول فرآیند توسعه پلتفرم، مشاهده پذیری، یکپارچه سازی برنامه، استقرار و ایمنی داده ها حوزه های اصلی تمرکز بودند. ما سیستم را با دقت طراحی و بهینه کردیم تا از نظارت جامع و مدیریت خدمات کارآمد اطمینان حاصل کنیم.
قابلیت مشاهده:
ما داشبوردهای نظارتی را برای ردیابی جامع معیارهای مهم ایجاد کردیم. این پلتفرم با سیستم هشدار داخلی شرکت یکپارچه شده و قوانینی را برای معیارهای کلیدی مانند ظرفیت و تاخیر رابط تنظیم می کند.
ما همچنین یک ابزار کشف خودکار برای شناسایی خودکار مشتریان فعال از موتور ابرداده و به روز رسانی سیستم نظارت داخلی در زمان واقعی ایجاد کردیم.
یکپارچه سازی و استقرار برنامه:
ما ابزارهای کاربر پسند را برای ساده سازی یکپارچه سازی و استقرار برنامه ارائه کردیم. این ابزارها پیچیدگی عملیاتی را کاهش دادند.
ایمنی داده ها:
ما پشتیبانگیری جامعی را برای سیستمهای فایل حیاتی برای اطمینان از یکپارچگی و در دسترس بودن دادهها پیادهسازی کردیم.
از نظر نظارت بر محتوای خاص آلارم ها، ما عمدتاً روی سمت سرور تمرکز می کنیم. معیارهای کلیدی شامل تاخیر متوسط ابرداده و خدمات S3، میزان موفقیت درخواست و شرایط غیرعادی است. این معیارها برای ارزیابی عملکرد و ثبات سیستم حیاتی هستند.
خوشههای JuiceFS با دسترسی بالا: استقرار Single-IDC
یک سناریوی معمولی که به آن می پردازد، خوشه تک IDC Kubernetes است. Kubernetes خود یک خوشه چند IDC نیست. در عوض، هر مرکز داده یک خوشه مستقل را مستقر می کند و یک معماری تک IDC را تشکیل می دهد. در این راهاندازی، منابع و سرویسهای مختلف Kubernetes معمولاً به یک مرکز داده محدود میشوند تا از تأخیر، مصرف پهنای باند و پیچیدگی شبکه که توسط ارتباطات متقابل IDC معرفی میشود، جلوگیری شود. در Kubernetes، JuiceFS در درجه اول نیاز به ذخیره سازی دائمی را به جای اشتراک گذاری داده ها برطرف می کند..
علاوه بر این، برای برنامههایی با الزامات عملکرد بالاتر، ترافیک باید در همان مرکز داده باقی بماند تا از هزینههای تاخیر و پهنای باند مرتبط با انتقال IDC جلوگیری شود. بنابراین، در این سناریوها، یک راه حل تک IDC اتخاذ می شود، که در آن سرویس های مرتبط با JuiceFS به عنوان خوشه های مستقل در هر مرکز داده مستقر می شوند. این تضمین می کند که ذخیره سازی داده ها و وظایف محاسباتی در یک مرکز داده انجام می شود و عملکرد را به حداکثر می رساند و تأخیر را کاهش می دهد.
این رویکرد برای خوشههای داخلی Kubernetes و سناریوهای مشابه مناسب است، که در درجه اول به نیازهای ذخیرهسازی مداوم برنامههای حالت دار میپردازد. با نگه داشتن ترافیک در همان IDC، از گلوگاه های عملکردی ناشی از انتقال بین IDC جلوگیری می کند. این امر ثبات و عملکرد سیستم را تضمین می کند.
خوشه JuiceFS با در دسترس بودن بالا: حلقه بسته Cross-IDC
این مدل استقرار عمدتاً برای برنامه هایی طراحی شده است که در چندین مرکز داده مستقر هستند و به داده های مشترک نیاز دارند. این برنامه ها نیاز به دسترسی به یک سیستم فایل دارند و همچنین دارای الزامات دسترسی بالا هستند. اگر سرویس در یک مرکز داده با مشکل مواجه شود، نمیتوان همه برنامهها را ملزم کرد که به مرکز داده دیگری سوئیچ کنند. بنابراین، ما یک مدل استقرار متقابل IDC را برای خوشه خدمات باطن اتخاذ می کنیم.
در این مدل، سیستم های ذخیره سازی اشیا، مانند خوشه S3 و DCDB، در مراکز داده مستقر می شوند. به طور خاص، گره اصلی S3 در هر IDC مستقر شده است تا دسترسی به سرویس جهانی را تضمین کند. علاوه بر این، کپیهای داده در مراکز داده متعدد ذخیره میشوند تا قابلیت اطمینان دادهها و تحمل خطا را بهبود بخشند. DCDB همچنین از یک استراتژی استقرار متقابل IDC پیروی می کند که خدمات آن در هر مرکز داده مستقر شده است و کپی های داده از طریق مکانیسم تکرار داخلی آن در بین مراکز داده هماهنگ می شوند.
برای بهینهسازی مسیرهای ترافیک و کاهش تأخیر و هزینههای ناشی از انتقال بین IDC، درخواستهای مشتری را در شرایط عادی به مرکز داده محلی محدود میکنیم. ترافیک از طریق تعادل بار به گره خدمات محلی S3 هدایت می شود. این نه تنها عملکرد را تضمین می کند، بلکه ترافیک غیرضروری cross-IDC را نیز کاهش می دهد. با این حال، با توجه به نیازهای همگام سازی و تکرار داده ها در خوشه cross-IDC، همچنان ترافیک متقابل IDC در داخل خوشه وجود خواهد داشت.
در صورت خرابی، مانند مشکل با سرویس S3 در یک مرکز داده، میتوانیم ورودی ترافیک را به مرکز دیگری تغییر دهیم. این مکانیسم شکست بیشتر در دسترس بودن خوشه را تضمین می کند.
مزایای JuiceFS
معماری JuiceFS با ذخیره سازی اشیاء موجود و سیستم های پایگاه داده توزیع شده ما بسیار سازگار است و فرآیند یکپارچه سازی را روان می کند. کل پروژه فقط شامل دو نفر بود. در عرض شش ماه تکمیل شد و از CephFS به JuiceFS تبدیل شد. بر اساس JuiceFS، ما با موفقیت یک پلتفرم ذخیره سازی درجه سازمانی ایجاد کردیم که به طور قابل توجهی قابلیت مشاهده، پایداری و کارایی مدیریت سیستم ذخیره سازی را بهبود بخشید.
مزایای اصلی تغییر از CephFS به JuiceFS:
-
مقیاس پذیری و انعطاف پذیری
- مقیاس بندی یکپارچه ظرفیت ذخیره سازی و مدیریت آسان رشد سریع داده ها بدون توقف یا اختلال در خدمات موجود.
- سازگاری بهتر با محاسبات ابری و محیط های کانتینری، تسهیل عملیات در محیط های ابری چند ابری یا ترکیبی.
-
عملیات ساده شده
- ویژگیهای قابل مشاهده جامع که به راحتی در سیستمهای سازمانی داخلی ادغام میشوند.
- عملیات ساده شده، افزایش تضمین ثبات.
-
ایمنی و قابلیت اطمینان داده ها
- تحمل خطای داده قوی تر، بازیابی خودکار خرابی و تضمین در دسترس بودن داده بالا.
- قابلیت های پشتیبان گیری و بازیابی فاجعه قوی برای اطمینان از امنیت و قابلیت اطمینان طولانی مدت داده ها.
در حال حاضر، JuiceFS راه حل های ذخیره سازی قوی را در سناریوهای متعدد ارائه می دهد. نیازهای برنامه های مختلف را برآورده می کند:
- پلت فرم ابر کانتینری: به عنوان زیرساخت اساسی، JuiceFS به طور موثر از ذخیره سازی دائمی برای مراکز ابری پشتیبانی می کند، به ویژه امکان ماندگاری داده ها را برای برنامه های حالت دار از طریق CSI. این نیازهای اصلی برای ذخیره سازی مداوم در محیط های کانتینری را برطرف می کند.
- کلان داده و پلتفرم هوش مصنوعی: در برنامه های کاربردی داده های بزرگ و هوش مصنوعی، JuiceFS پشتیبانی کارآمدی را برای ذخیره سازی عظیم داده ارائه می دهد. به خصوص در طول آموزش مدل و پردازش داده ها، عملکرد ذخیره سازی به طور قابل توجهی بهبود یافته و الزامات ذخیره سازی داده در مقیاس بزرگ را برآورده می کند.
- سناریوهای فایل مشترک برنامه: JuiceFS چندین نمونه برنامه را قادر می سازد تا به راحتی منابع فایل را به اشتراک بگذارند. این جایگزین روشهای سنتی انتقال داده میشود و تبادل داده و اشتراک منابع بین برنامهها را بهینه میکند.
- پشتیبان گیری سرد داده ها: اگرچه ذخیره سازی اشیا به طور گسترده ای پذیرفته شده است، برخی از کاربران هنوز رابط های سیستم فایل را ترجیح می دهند. JuiceFS راه حل های قابل اعتماد پشتیبان گیری از داده ها را برای این سناریوها ارائه می دهد که از قابلیت اطمینان و دسترسی طولانی مدت داده ها اطمینان می دهد.
برنامه های آینده
درباره موتور ابرداده توزیع شده
ما متوجه شده ایم که برخی از سناریوها به عملکرد فراداده بالاتری نیاز دارند. برای این موارد، ممکن است از Redis استفاده کنیم. با این حال، Redis در حال حاضر با تنگناهای ظرفیت مواجه است، زیرا تنها از یک گره برای ذخیره سازی داده ها در خوشه استفاده می کند و مقیاس پذیری افقی آن را محدود می کند.
Redis همچنین دارای چالش های عملیاتی است. در نتیجه، تیم ما در حال توسعه یک سیستم ذخیره سازی کلید-مقدار توزیع شده است.
درباره حافظه پنهان توزیع شده
ما قصد داریم تا ذخیره سازی توزیع شده را برای مدیریت موثرتر ذخیره سازی داده ها و نیازهای دسترسی در سناریوهای کلان داده معرفی کنیم. این امر باعث بهبود عملکرد و پایداری سیستم می شود.
اگر سوالی در مورد این مقاله دارید، می توانید به بحث های JuiceFS در GitHub و انجمن در Slack بپیوندید.