به گزارش از وبسایت cncf 📢

Dragonfly v2.4.0 منتشر شد! از همه مشارکت‌کنندگان برای کمک به این انتشار تشکر می‌کنیم. در این نسخه چندین قابلیت جدید و بهینه‌سازی مهم برای بهبود عملکرد دانلودهای P2P و مدیریت خوشه‌ها ارائه شده است. 🚀

الگوریتم زمان‌بندی آگاه از بار: یک الگوریتم زمان‌بندی دو مرحله‌ای معرفی شده که ترکیبی از زمان‌بندی مرکزی و زمان‌بندی ثانویه در سطح گره است تا با آگاهی از بار در زمان واقعی عملکرد دانلودهای P2P را بهینه کند. برای جزئیات بیشتر به جدول زمان‌بندی مراجعه فرمایید.

پشتیبانی از پروتکل Vortex برای انتقال فایل P2P: Dragonfly پروتکل جدید انتقال Vortex مبتنی بر TLV را معرفی می‌کند تا عملکرد دانلود در شبکه‌های داخلی بهبود یابد. این پروتکل سبک می‌تواند جایگزین gRPC برای انتقال داده بین همتایان شود. Vortex مبتنی بر TCP زمان دانلود فایل‌های بزرگ را تا 50٪ و نسخه مبتنی بر QUIC را تا 40٪ نسبت به gRPC کاهش می‌دهد و همچنین مصرف حافظه را به‌طور مؤثری کمتر می‌کند. برای اطلاعات بیشتر به مستندات پشتیبانی TCP و QUIC مراجعه کنید.

درخواست SDK: یک SDK جدید برای مسیریابی درخواست‌های کاربران به Seed Peers با استفاده از consistent hashing اضافه شده است که جایگزین روش تعادل بار پیشین در سرویس Kubernetes می‌شود.

استقرار ساده چندخوشه‌ای Kubernetes با شناسه خوشه زمان‌بندی: از ویژگی ساده‌شده‌ای پشتیبانی می‌شود که به هر خوشه یک SchedulerClusterID اختصاص می‌دهد. این روش به کاربران امکان می‌دهد وابستگی بین خوشه‌ای را مستقیماً و بدون تکیه بر ابرداده‌های مبتنی بر مکان (مثل IDC، hostname یا IP) کنترل کنند. هر Peer، Seed Peer و Scheduler می‌تواند خوشه هدف خود را از طریق SchedulerClusterID مشخص نماید که جداسازی دقیق و رفتار متقابل پیش‌بینی‌پذیر بین خوشه‌ها را تضمین می‌کند. برای راهنمایی، به Create Dragonfly Cluster Simple مراجعه کنید.

بهینه‌سازی عملکرد و منابع برای Manager و Scheduler: کارایی سرویس و مصرف منابع در اجزای Manager و Scheduler بهبود یافته و سربار CPU و حافظه به‌طور قابل توجهی کاهش یافته است تا مدیریت منابع و عملکرد کلی سیستم ارتقا یابد.

پیش گرمایش پیشرفته: انتخاب همتا بر پایه IP در عملیات پیش‌گرمایش اضافه شده و منطق انتخاب مبتنی بر اولویت پیاده‌سازی شده است که IP در اولویت بالاتر قرار دارد و پس از آن انتخاب بر اساس تعداد و درصد انجام می‌شود. امکان پیش‌گرم کردن چندین URL در یک درخواست و پیش‌گرم کردن فایل و تصویر از طریق رابط Scheduler gRPC نیز فراهم شده است.

محاسبه شناسه وظیفه بر اساس تصویر حباب SHA256: به‌جای استفاده از URL دانلود، اکنون محاسبه شناسه وظیفه مستقیماً از هش SHA256 حباب‌های تصویر پشتیبانی می‌شود تا از بارگیری‌های اضافی و تکراری هنگام دسترسی به همان حباب از رجیستری‌های مختلف جلوگیری شود.

هدایت‌های کش HTTP 307 برای دانلودهای تقسیم‌بندی‌شده: پشتیبانی از پاسخ‌های HTTP 307 (تغییر مسیر موقت) در حافظه پنهان اضافه شده تا هنگام تقسیم یک URL به چند قطعه، مقصد تغییر مسیر در کش ذخیره شود و درخواست‌های اضافی تغییر مسیر حذف شده و تأخیر کاهش یابد.

Go Client منسوخ شد و توسط Rust Client جایگزین شد: توسعه و رفع اشکالات آینده به‌طور انحصاری بر روی Rust Client متمرکز خواهد بود تا عملکرد، پایداری و اعتمادپذیری افزایش یابد. برای اطلاعات بیشتر به dragoflyoss/client مراجعه کنید. 🛠️

پیشرفت‌های اضافی:
– فعال کردن پشتیبانی از page size 64K برای ARM64 در کلاینت Dragonfly Rust.

– رفع مشکل متادیتای گمشده git commit در خروجی نسخه dfget.

– پشتیبانی از config_path پلاگین io.containerd.cri.v1.images برای پیکربندی Containerd V3.

– جایگزینی DNS resolver glibc با hickory-dns در reqwest برای پیاده‌سازی کش DNS و جلوگیری از جستجوی بیش از حد DNS هنگام دانلود قطعات.

– اضافه شدن پرچم –include-files برای دانلود انتخابی فایل‌ها از دایرکتوری و پرچم –no-progress برای غیرفعال کردن خروجی نوار پیشرفت دانلود.

– پشتیبانی از هدرهای درخواست سفارشی در عملیات باطن برای پیکربندی انعطاف‌پذیر هدرهای HTTP.

– بازسازی خروجی لاگ برای کاهش لاگ‌نویسی غیرضروری و بهبود عملکرد گزارش‌دهی.

رفع اشکال‌های قابل توجه:
– تغییر نوع فیلد پایگاه‌داده از متن به متن طولانی برای پشتیبانی از اطلاعات مربوط به کارهای پیش‌گرمایش.

– رفع panic هنگام توقف مکرر سرویس همتا در زمان خاموش شدن زمان‌بند.

– رفع مشکل احراز هویت Broker هنگام تعیین رمز عبور Redis بدون نام کاربری.

Nydus — ویژگی‌ها و بهبودها:
– Nydusd: اضافه شدن پشتیبانی از CRC32 برای RAFS V5 و V6 جهت افزایش صحت داده‌ها. 🛡️

– Nydusd: پشتیبانی از ارسال مجدد درخواست‌های FUSE در طول بازیابی nydusd برای افزایش قابلیت اطمینان.

– Nydusd: بهبود مکانیزم ذخیره وضعیت VFS برای پشتیبانی از ارتقاء داغ و بازیابی دیمون.

– Nydusify: معرفی قابلیت تبدیل معکوس Nydus-to-OCI برای بازگشت یکپارچه به فرمت OCI و پیاده‌سازی انتقال دیسک صفر برای کاهش چشمگیر استفاده از دیسک محلی هنگام کپی تصویر.

– Snapshotter: افزودن blob.meta داخلی در بوت‌استرپ برای افزایش قابلیت اطمینان در بازیابی blobs برای تصویر RAFS v6.

رفع اشکال‌های مهم در Nydus:
– Nydusd: رفع مشکل واکشی توکن auth برای فیلد access_token در احراز هویت رجیستری.

– Nydusd: اضافه کردن بازگشتی برای invalidation inode/dentry در API‌های umount.

– Nydus Image: برطرف‌سازی چندین مشکل در بهینه‌سازی زیر-دستورات و افزودن پشتیبانی از پیکربندی باطن.

– Snapshotter: پیاده‌سازی بازیابی والد تنبل برای حالت proxy جهت مدیریت snapshotهای والدین مفقود.

برای اطلاعات بیشتر درباره Nydus به وب‌سایت d7y.io مراجعه کنید. دیگر تغییرات و جزئیات کامل در فایل CHANGELOG قابل مشاهده است.

پیوندها:
وب‌سایت Dragonfly: https://d7y.io/

مخزن Dragonfly: https://github.com/dragonflyoss/dragonfly

مخزن Client Dragonfly: https://github.com/dragonflyoss/client

مخزن کنسول Dragonfly: https://github.com/Dragonflyossole

Helm charts: https://github.com/dragonflyoss/helm-charts

مخزن مانیتور Dragonfly: https://github.com/dragonflyoss/monitoring