يطور مشروع Dragonfly أسرع لاستبدال Redis و Memcached

يتوفر الإصدار الأول من نظام التخزين المؤقت في الذاكرة Dragonfly ، مما يوفر دعمًا لبروتوكولات Memcached و Redis ، ولكنه يسمح بتنفيذ الاستعلامات بأداء أعلى بكثير وباستهلاك أقل للذاكرة. يتعامل النظام مع البيانات بتنسيق المفتاح / القيمة ويمكن استخدامه كحل خفيف لتسريع عمل المواقع المحملة بشكل كبير ، وتخزين الاستعلامات البطيئة في نظام DBMS والبيانات الوسيطة في ذاكرة الوصول العشوائي. تمت كتابة كود Dragonfly بلغة C / C ++ وتوزيعه بموجب BSL (ترخيص مصدر الأعمال).

تم اقتراح BSL من قبل مؤسسي MySQL كبديل لنموذج Open Core. يكمن جوهر BSL في أن كود الوظيفة الموسعة متاح مبدئيًا للتعديل ، ولكن لبعض الوقت يمكن استخدامه مجانًا فقط بشرط أن يخضع لشروط إضافية ، والتي تتطلب شراء ترخيص تجاري لتجاوزه. تتطلب شروط الترخيص الإضافية لمشروع Dragonfly تحويل الرمز إلى ترخيص Apache 2.0 فقط في 1 يونيو 2027. حتى ذلك الوقت ، يسمح الترخيص باستخدام الرمز فقط لضمان تشغيل خدماته ومنتجاته ، ولكنه يحظر استخدامه لإنشاء خدمات سحابية مدفوعة تعمل كإضافة إلى Dragonfly.

تدعي Dragonfly أنها أسرع نظام تخزين في الذاكرة في العالم ، وفقًا للمطورين والمعايير. مقارنةً بـ Redis ، حقق Dragonfly زيادة في الأداء بمقدار 25 ضعفًا وخفضًا في استهلاك الذاكرة بمقدار 2 أضعاف في ظل أحمال العمل المعتادة. يمكن لخادم Dragonfly واحد معالجة ملايين الطلبات في الثانية ، على سبيل المثال ، في بيئة Amazon EC6 c16gn.3.8xlarge ، تم تحقيق XNUMX مليون طلب في الثانية.

يطور مشروع Dragonfly أسرع لاستبدال Redis و Memcached

في اختبارات التخزين التي تبلغ 5 جيجا بايت ، تطلبت Dragonfly ذاكرة أقل بنسبة 30٪ من Redis. أثناء إنشاء اللقطات بواسطة الأمر "bgsave" ، يزداد استهلاك الذاكرة ، ولكن في لحظات الذروة يظل أقل بثلاث مرات تقريبًا من Redis ، وتكون عملية كتابة اللقطة نفسها أسرع بكثير (في الاختبار ، تمت كتابة لقطة في Dragonfly في 30 ثانية ، وريديس - في 42 ثانية).

يطور مشروع Dragonfly أسرع لاستبدال Redis و Memcached

يتم تحقيق الأداء العالي بفضل بنية متعددة الخيوط دون مشاركة الموارد (لا شيء مشترك) ، مما يعني أن معالجًا منفصلاً يحتوي على جزء خاص به من البيانات متصل بكل مؤشر ترابط ، ويعمل بدون كائنات المزامنة وأقفال الدوران. تستخدم أقفال VLL خفيفة الوزن لضمان الذرية عند التعامل مع مفاتيح متعددة. من أجل التخزين الفعال للمعلومات في الذاكرة ، يتم استخدام بنية لوحة القيادة ، والتي تنفذ نوعًا من جداول التجزئة المقسمة.

من بين الميزات المتوفرة في الإصدار الأول ، تمت الإشارة إلى دعم بروتوكول RESP2 و 130 أمرًا من Redis ، وهو ما يتوافق تقريبًا مع وظائف إصدار Redis 2.8. بالإضافة إلى ذلك ، يدعم Dragonfly جميع أوامر memcached باستثناء CAS (check-and-set) ، ويوفر دعمًا للعمليات غير المتزامنة لإنشاء لقطات ، ويوفر استهلاكًا للذاكرة يمكن التنبؤ به ، ويوفر مترجم Lua 5.4 مضمنًا ، ويدعم أنواع البيانات المعقدة مثل التجزئة ، المجموعات والقوائم (ZSET و HSET و LIST و SETS و STRING).

بشكل منفصل ، يتوفر وضع التخزين المؤقت ، حيث يتم استبدال البيانات القديمة تلقائيًا بأخرى جديدة بعد استنفاد الذاكرة الخالية. من الممكن الارتباط ببيانات العمر التي تعتبر خلالها البيانات ذات صلة. يمكن مسح حالة التخزين على القرص في الخلفية لاستردادها لاحقًا بعد إعادة التشغيل. لإدارة النظام ، يتم توفير وحدة تحكم HTTP (ترتبط بمنفذ TCP 6379) وواجهة برمجة تطبيقات لإرجاع المقاييس المتوافقة مع Prometheus. في الإصدارات المستقبلية ، نخطط لتوسيع دعم أوامر Redis وتنفيذ القدرة على نسخ التخزين لتجاوز الفشل وموازنة التحميل.

المصدر: opennet.ru

إضافة تعليق