إصدار Memcached 1.6.0 مع تمكين دعم التخزين الخارجي

يأخذ مكانا إطلاق هام لنظام التخزين المؤقت للبيانات في الذاكرة ميمكاشد 1.6.0، والتي تعمل على البيانات بتنسيق مفتاح / قيمة وسهلة الاستخدام. عادةً ما يتم استخدام Memcached كحل خفيف لتسريع المواقع عالية التحميل عن طريق التخزين المؤقت للوصول إلى DBMS والبيانات الوسيطة. شفرة زودت تحت رخصة BSD.

الإصدار الجديد يعمل على استقرار تنفيذ التخزين "com.extstore"، والذي تم إنشاؤه الآن افتراضيًا (لتعطيله في البرنامج النصي للتكوين، يتم توفير خيار "-disable-extstore")، ولكنه يتطلب تنشيطًا صريحًا عند بدء التشغيل (ستستمر عمليات التثبيت القديمة في العمل دون تغييرات بعد التحديث). على الرغم من أن extstore يعتبر بشكل عام مستقرًا، إلا أنه ينصح بالحذر عند تنفيذه على أنظمة كبيرة جدًا.

يتيح لك Extstore استخدام محركات أقراص SSD/Flash لتوسيع حجم ذاكرة التخزين المؤقت. كما هو الحال مع ذاكرة الوصول العشوائي (RAM)، فإن وحدة تخزين الفلاش ليست دائمة ويتم إعادة ضبطها عند إعادة التشغيل. نطاق الوضع الجديد هو ضمان التخزين المؤقت الفعال للبيانات الكبيرة. عند استخدام "extstore"، يتم تخزين المفاتيح والبيانات التعريفية، كما كان من قبل، فقط في ذاكرة الوصول العشوائي (RAM)، ولكن البيانات الكبيرة المرتبطة بالمفاتيح، والتي يتجاوز حجمها الحد المحدد، يتم تخزينها في وحدة تخزين خارجية، ويبقى المؤشر فقط في ذاكرة الوصول العشوائي (RAM).

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

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

التغيير المهم الثاني في Memcached 1.6 كان إعادة صياغة كود اتصال الشبكة، والذي تم تكييفه لمعالجة الطلبات المجمعة تلقائيًا ضمن استدعاء نظام واحد. في السابق، عند إرسال أوامر GET متعددة في حزمة TCP واحدة، كان memcached يرسل النتائج باستدعاءات نظام منفصلة. في Memcached 1.6، يتم تجميع الاستجابات وإرجاعها عن طريق إرسال استدعاء نظام واحد. ونتيجة لذلك، يوجد الآن متوسط ​​1.5 مفتاح لكل استدعاء للنظام، وهو ما يوضح في الاختبارات انخفاضًا في حمل وحدة المعالجة المركزية بنسبة تصل إلى 25% وانخفاضًا في زمن الوصول بنسبة عدة بالمائة.

كما أتاحت إعادة تصميم النظام الفرعي للشبكة أيضًا الانتقال إلى التخصيص الديناميكي للمخازن المؤقتة حسب الحاجة، بدلاً من تعيين المخازن المؤقتة بشكل ثابت. أدى هذا التحسين إلى تقليل استهلاك الذاكرة أثناء انتظار أوامر جديدة من خلال اتصال أنشأه العميل من 4.5 كيلو بايت إلى 400-500 بايت، كما جعل من الممكن التخلص من العديد من استدعاءات malloc وreloc وfree، مما يؤدي إلى تجزئة الذاكرة غير الضرورية على أنظمة مع عدد كبير من الاتصالات. يعالج كل مؤشر ترابط عامل الآن مجموعته الخاصة من المخازن المؤقتة للقراءة والكتابة لاتصالات العميل النشطة. لضبط حجم هذه المخازن المؤقتة
يتم توفير الخيارين "-o resp_obj_mem_limit=N" و"-o read_buf_mem_limt=N".

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

المصدر: opennet.ru

إضافة تعليق