إصدار Apache Ignite 2.9.0 - ما الجديد؟

Apache Ignite هي قاعدة بيانات موزعة مفتوحة المصدر وعالية الأداء ومصممة لتخزين وتوزيع كميات كبيرة من البيانات عبر مجموعة من العقد. نحن في سبيربنك نستخدمه بنشاط ، ولدينا فريق يعمل على تطوير هذا المنتج. في 23 أكتوبر 2020 ، تم إصدار نسخة جديدة من Apache Ignite 2.9.0. بصفتي مدير هذا الإصدار نيابة عن فريق تطوير Apache Ignite بأكمله ، أريد مشاركة المعلومات حول الابتكارات الرئيسية.



  • لقطات (نسخ احتياطي)
  • اقتفاء أثر
  • ميزات جديدة للعملاء النحيفين
  • وضع تشغيل الكتلة "للقراءة فقط"
  • تشغيل التعليمات البرمجية المخصصة في وضع الحماية
  • تشفير البيانات الشفاف: دوران المفتاح الرئيسي
  • أدوات لمقاطعة مهام وطلبات المستخدم
  • منصة جانب التخزين المؤقت (.NET)
  • ربط عقد العميل بعقد الخادم من خلال NAT




لقطات (نسخ احتياطي)



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



يمكنك البدء في إنشاء نسخة احتياطية بإحدى الطرق التالية:



  • باستخدام عنصر تحكم الأداة المساعدة لسطر الأوامر. sh: control.sh --snapshot create <snapshot name>؛
  • عملية JMX: MBean group="Snapshot", name=SnapshotMXBeanImpl, createSnapshot(<snapshot name>)؛
  • وAPI من خلال جافا: Ignite.snapshot().createSnapshot("<snapshot name>").


أين <snapshot name>هو الاسم الفريد للقطة.



بعد الانتهاء من تشكيل اللقطة في الدليل work/snapshots/<snapshot name>(بالإعدادات الافتراضية) لكل عقدة ، سيتم إعادة إنشاء بنية تخزين الملفات لهذه العقدة في لحظة بدء اللقطة. يمكن استخدام بنية الملف التي تم إنشاؤها في المستقبل للاستعادة من نسخة احتياطية عن طريق استبدال الملفات ببيانات العقدة بملفات من دليل اللقطة.



يمكنك العثور على مزيد من المعلومات التفصيلية حول التعامل مع اللقطات في الوثائق الرسمية .



اقتفاء أثر



يستمر نظام مراقبة Ignite في التحسن ، وأحد الابتكارات المهمة في الإصدار 2.9 هو نظام التتبع الفرعي. يتيح لك التتبع الحصول على معلومات مفيدة لتصحيح الأخطاء في مرحلة التطوير ولتحليل الحوادث. بمساعدة التتبع ، أصبح من الممكن جمع معلومات منخفضة المستوى موزعة حول تقدم المهام المختلفة التي تعمل في الكتلة ، واستخدام هذه المعلومات لتشخيص مشاكل الأداء. يتم تشكيل التتبع الذي يوضح مسار مهمة ما في النظام على شكل شجرة ، كل مستوى تالي منها يعطي معلومات أكثر تفصيلاً من المستوى السابق.



في Ignite 2.9.0 ، يغطي التتبع المكونات الداخلية التالية:



  • رسائل الاكتشاف
  • رسائل التواصل
  • عملية التبادل
  • المعاملات.


لعرض الآثار ، يجب تصديرها إلى نظام خارجي. لهذه الأغراض ، يستخدم Ignite مكتبة OpenCensus ، والتي توفر خارج الصندوق العديد من المصدرين لأنظمة مختلفة (على سبيل المثال ، في Zipkin).



يمكنك تحديد مقدار المعلومات التي تم تصديرها عن طريق تعيين واحد أو أكثر من المكونات المذكورة أعلاه كنطاق وتعيين تكرار أخذ العينات (الإعدادات متاحة للتغيير في وقت التشغيل).



يمكنك العثور على مزيد من المعلومات التفصيلية حول البحث عن المفقودين في الوثائق الرسمية .



ميزات جديدة للعملاء النحيفين



أصبح لدى عملاء java و .NET الرقيقين الآن وظيفة Ignite التي كانت متوفرة في السابق فقط في العميل السميك.



القدرة على استخدام:



  • cluster API & cluster group API ( .NET java):
    • ;
    • ;
    • , ;
    • ;
  • compute API ( .NET java):
    • . , p2p class loader , class-path ( );
  • Service Grid ( java):
    • Ignite. compute API, , .


بالإضافة إلى ذلك ، تلقى العميل الرقيق لـ .NET ميزة Automatic Server Node Discovery ، والتي يتم تمكينها جنبًا إلى جنب مع وظيفة إدراك القسم. عند استخدام "وعي القسم" ، يقوم العميل بإنشاء اتصال ليس مع عقدة خادم واحدة ، ولكن مع عدة عقدة في وقت واحد ، من أجل إرسال طلب ، إذا أمكن ، إلى العقدة التي هي العقدة الرئيسية للبيانات في هذا الطلب. في الوقت نفسه ، يسمح الاكتشاف التلقائي لعقد الكتلة بعدم سرد كافة عناوين عقد المجموعة في تكوين العميل. يكفي أن يتمكن العميل من الاتصال بمضيف حي واحد على الأقل باستخدام العناوين المدرجة في التكوين. سيتلقى العميل عناوين العقد المتبقية من الكتلة.



لمزيد من المعلومات حول كيفية استخدام الميزات الجديدة ، راجع الأقسام الفرعية المقابلة من جهاز java Thin Client ووثائق .NET Thin Client .



وضع تشغيل الكتلة "للقراءة فقط"



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



يمكنك العثور على مزيد من المعلومات التفصيلية حول حالات الكتلة في الوثائق الرسمية .



تشغيل التعليمات البرمجية المخصصة في وضع الحماية



يمكن لـ Ignite تشغيل تعليمات برمجية مخصصة (مثل مهام الحوسبة وأدوات الاستماع للأحداث وفلاتر متنوعة) على عقد الخادم. تم تنفيذ هذا الرمز بنفس الحقوق مثل رمز نظام Ignite وكانت واجهة برمجة تطبيقات جافا بأكملها متاحة له دون قيود. قد يؤدي الرمز غير الآمن إلى تعطيل أداء المجموعة (على سبيل المثال ، حذف ملفات بيانات Ignite ، أو إنهاء JVM ، وما إلى ذلك).



في الإصدار 2.9.0 ، أصبح من الممكن تنفيذ مثل هذا الرمز في "وضع الحماية" مع الحقوق التي تم تعيينها صراحة لموضوع الوصول الذي طلب تنفيذ هذا الرمز (على سبيل المثال ، عقدة العميل). الحقوق المعينة للموصل هي مجموعة من كائنات الفئة java.security.Permissionالتي يتم التحقق منها بواسطة جافا قبل تنفيذ بعض الإجراءات.



لكي يعمل Ignite Sandbox ، يجب تثبيت وتمكين مكونين:



  • مدير أمان جافا. مسؤول عن ترخيص الموضوعات عند إجراء مكالمات إلى مكتبات نظام جافا. معطل افتراضيا ؛
  • إشعال معالج الأمان. مسؤول عن مصادقة موضوعات الوصول. لا يتم توفير "Out of the box" مع Ignite ، ويتطلب تنفيذًا وتوصيلًا مستقلاً باستخدام مكون إضافي.


يمكنك العثور على مزيد من المعلومات التفصيلية حول Ignite Sandbox في الوثائق الرسمية .



تشفير البيانات الشفاف: دوران المفتاح الرئيسي



تشفير البيانات الشفافة (TDE) هو وظيفة تسمح لك بعدم تخزين البيانات على القرص بنص واضح. يلزم تشفير البيانات على القرص باستخدام DBMS ، على سبيل المثال ، للحصول على شهادة أمان بيانات PCI DSS. في Apache Ignite ، تم تنفيذ وظيفة TDE الأساسية (المرحلة 1) في الإصدار 2.7. في الإصدار الحالي ، تم تنفيذ المرحلة الثانية من TDE - تدوير المفتاح الرئيسي (يتم تشفير مفاتيح التخزين المؤقت المخزنة على القرص بالمفتاح الرئيسي). سيتم تنفيذ المرحلة الثالثة من TDE (دوران مفتاح ذاكرة التخزين المؤقت) في الإصدار التالي.



يمكنك العثور على مزيد من المعلومات التفصيلية حول تدوير المفتاح الرئيسي في الوثائق الرسمية .



أدوات لمقاطعة مهام وطلبات المستخدم



في الإصدارات السابقة من Ignite ، لم تكن هناك آلية متسقة لمقاطعة مهام المستخدم وطلبات المسؤول. كان لدى المستخدمين خيار إلغاء مهامهم وطلباتهم. بالنسبة للمسؤولين ، تتوفر أدوات منفصلة ، لا ترتبط بأي شكل من الأشكال مع بعضها البعض (على سبيل المثال ، كان من الممكن إجهاض المعاملات حسب القائمة ، والتصفية ، من خلال JMX أو الأداة المساعدة control.sh ، و "قتل" استعلام SQL باستخدام أمر SQL KILL QUERY). في الإصدار الحالي ، يمكن للمسؤول المقاطعة



  • أنواع مختلفة من الاستعلامات (SQL ، مسح ضوئي ، مستمر) ،
  • المعاملات ،
  • حساب المهام ،
  • إشعال الخدمات ،


باستخدام واجهة موحدة.



يمكن مقاطعة جميع هذه الأنواع من المهام والطلبات بأي من الطرق التالية:



  • أداة control.sh ؛
  • عبر JMX ؛
  • أمر SQL.


يمكنك العثور على مزيد من المعلومات التفصيلية حول مقاطعة مهام وطلبات المستخدم في الوثائق الرسمية .



منصة جانب التخزين المؤقت (.NET)



في Ignite.NET ، تمت إضافة القدرة على استخدام طبقة تخزين مؤقت إضافية على جانب منصة .NET. يتم تخزين البيانات الموجودة في ذاكرة .NET في هذه الطبقة في شكل غير متسلسل ، بحيث يمكنك قراءة البيانات المخزنة مؤقتًا بالفعل بدون استدعاء JNI وإلغاء التسلسل الإضافي. يؤدي هذا إلى زيادة سرعة القراءة غير المتعلقة بالمعاملات بشكل كبير.



لمزيد من المعلومات حول التخزين المؤقت من جانب النظام الأساسي ، راجع الوثائق الرسمية .



ربط عقد العميل بعقد الخادم من خلال NAT



في Ignite 2.9.0 ، ظهر وضع تفاعل الشبكة ، حيث يتم بدء الاتصالات بين العميل "fat" والخادم من جانب العميل فقط (لا يبدأ الخادم الاتصال بالعميل ، ولكن إذا كانت هناك حاجة للتفاعل المباشر مع العميل ، فإنه يطلب من العميل الاتصال به من خلال العميل المحدد بالفعل اتصالات العميل بالخوادم الأخرى). يسمح وضع التشغيل هذا باستخدام تكوينات الكتلة التي يوجد فيها NAT بين عقد العميل والخادم (على سبيل المثال ، عندما يعمل العملاء في بيئة افتراضية).



يمكنك العثور على مزيد من المعلومات التفصيلية حول توصيل عقد العميل من خلال NAT في الوثائق الرسمية .



خاتمة



ما سبق هو أهم التغييرات في إصدار Apache Ignite 2.9.0. لكن قائمة التغييرات لا تقتصر عليها. كالعادة ، أصلحنا العديد من الأخطاء وأجرينا العديد من التحسينات المفيدة الأخرى. يمكن العثور على قائمة كاملة بالتغييرات في ملاحظات الإصدار .



All Articles