انتشار Dragonfly 1.0، یک سیستم کش داده در حافظه

سیستم کش و ذخیره سازی درون حافظه Dragonfly منتشر شده است که داده ها را در قالب کلید/مقدار دستکاری می کند و می تواند به عنوان یک راه حل سبک وزن برای سرعت بخشیدن به کار سایت های با بارگذاری بالا، ذخیره پرس و جوهای کند در DBMS و داده های میانی در RAM استفاده شود. Dragonfly از پروتکل‌های Memcached و Redis پشتیبانی می‌کند، که به شما امکان می‌دهد از کتابخانه‌های کلاینت موجود استفاده کنید و پروژه‌ها را با استفاده از Memcached و Redis به Dragonfly بدون کارکرد مجدد کد منتقل کنید.

در مقایسه با Redis، Dragonfly به افزایش 2 برابری عملکرد (6 میلیون درخواست در ثانیه) برای بارهای کاری معمولی در محیط Amazon EC16 c25gn.3.8xlarge دست یافت. در مقایسه با Memcached در محیط AWS c6gn.16xlarge، Dragonfly توانست 4.7 برابر بیشتر درخواست نوشتن در ثانیه (3.8 میلیون در مقابل 806 هزار) و 1.77 برابر بیشتر درخواست خواندن در ثانیه (3.7 میلیون در مقابل 2.1 میلیون) انجام دهد.

انتشار Dragonfly 1.0، یک سیستم کش داده در حافظه

در آزمایش‌های ذخیره‌سازی 5 گیگابایت داده، Dragonfly به 30 درصد حافظه کمتری نسبت به Redis نیاز داشت. هنگام ایجاد عکس های فوری با دستور "bgsave"، مصرف حافظه افزایش می یابد، اما در لحظات اوج تقریباً سه برابر کمتر از Redis باقی می ماند، و عملیات ضبط عکس فوری بسیار سریعتر است (در آزمایش، یک عکس فوری در Dragonfly در 30 نوشته شد. ثانیه، در حالی که Redis - در 42 ثانیه).

انتشار Dragonfly 1.0، یک سیستم کش داده در حافظه

کارایی بالا به لطف معماری چند رشته ای بدون اشتراک منابع (اشتراک گذاری شده-هیچ چیز) به دست می آید، به این معنی که به هر رشته یک پردازنده جداگانه با بخش خاص خود از داده اختصاص داده می شود که بدون mutexes و قفل چرخشی کار می کند. برای اطمینان از اتمی بودن هنگام کار با کلیدهای متعدد، از قفل های سبک وزن VLL استفاده می شود. برای ذخیره کارآمد اطلاعات در حافظه، از ساختار dashtable استفاده می شود که نوعی جدول هش پارتیشن بندی شده را پیاده سازی می کند.

برخی از ویژگی های Dragonfly:

  • حالت کش، که به طور خودکار داده های قدیمی را با داده های جدید پس از اتمام حافظه آزاد جایگزین می کند.
  • پشتیبانی از اتصال به داده ها در طول عمری که داده ها مرتبط در نظر گرفته می شوند.
  • پشتیبانی از حالت فلاشینگ ذخیره سازی روی دیسک در پس زمینه برای بازیابی بعدی پس از راه اندازی مجدد.
  • وجود یک کنسول HTTP (به پورت TCP 6379 متصل می شود) برای مدیریت سیستم و یک API برای معیارهای برگشتی، سازگار با Prometheus.
  • پشتیبانی از 185 دستور Redis، که تقریباً معادل عملکرد نسخه Redis 5 است.
  • از تمام دستورات Memcached به جز CAS (بررسی و تنظیم) پشتیبانی می کند.
  • پشتیبانی از عملیات ناهمزمان برای ایجاد عکس های فوری.
  • مصرف حافظه قابل پیش بینی
  • مترجم داخلی Lua 5.4.
  • از انواع داده های پیچیده مانند هش ها، مجموعه ها، لیست ها (ZSET، HSET، LIST، SETS و STRING) و داده های JSON پشتیبانی می کند.
  • پشتیبانی از تکرار ذخیره سازی برای تحمل خطا و متعادل کردن بار.

کد Dragonfly به زبان C/C++ نوشته شده است و تحت مجوز BSL (مجوز منبع تجاری) توزیع شده است. مجوز BSL توسط بنیانگذاران MySQL به عنوان جایگزینی برای مدل Open Core پیشنهاد شد. ماهیت BSL این است که کد عملکرد پیشرفته در ابتدا برای اصلاح در دسترس است، اما برای مدتی فقط در صورت رعایت شرایط اضافی که نیاز به خرید مجوز تجاری برای دور زدن دارد، می توان از آن به صورت رایگان استفاده کرد. شرایط مجوز اضافی برای پروژه Dragonfly مستلزم انتقال کد به مجوز آپاچی 2.0 در 15 مارس 2028 است. تا این زمان، مجوز استفاده از کد را فقط برای اطمینان از عملکرد خدمات و محصولات خود مجاز می‌داند، اما استفاده برای ایجاد سرویس‌های ابری پولی را که به عنوان یک افزونه برای Dragonfly عمل می‌کنند، ممنوع می‌کند.

نسخه Dragonfly 1.0 به دلیل اجرای پشتیبانی از تکثیر داده ها از سرور اولیه به سرور ثانویه قابل توجه است. با این حال، Dragonfly را می توان طوری پیکربندی کرد که به عنوان یک ذخیره سازی ثانویه استفاده شود که داده ها را از یک سرور اصلی بر اساس Dragonfly یا بر اساس Redis دریافت می کند. API مدیریت تکرار با Redis سازگار است و بر اساس استفاده از دستورات ROLE و REPLICAOF (SLAVEOF) است.

منبع: opennet.ru

اضافه کردن نظر