في مايو ، تم إصدار إصدار جديد من
Apache Ignite - 2.5. تم إجراء العديد من التغييرات عليه ، ويمكن العثور على قائمة كاملة بها في ملاحظات الإصدار. وسننظر في هذه المقالة في الابتكارات الرئيسية التي تستحق الانتباه إليها.
Apache Ignite هو نظام أساسي قابل للتوسيع أفقيًا لتخزين المعاملات للمعاملات ، بالإضافة إلى الحوسبة الموزعة أعلى هذه البيانات في وضع شبه الوقت الحقيقي.
يستخدم Ignite عند الحاجة إلى قابلية التوسع الأفقية وسرعة معالجة البيانات العالية جدًا. يتم تحقيق هذا الأخير أيضًا عن طريق تحسين النظام الأساسي لتخزين البيانات مباشرة في ذاكرة الوصول العشوائي كمخزن أساسي ، بدلاً من ذاكرة التخزين المؤقت (In-Memory Computing). الميزات المميزة للمنتج هي محرك استعلام متكامل ANSI SQL 1999 ، تخزين القرص ، توسيع ذاكرة الوصول العشوائي ، عدد كبير من أدوات التكامل المدمجة وتعلم الآلة Zero-ETL.
من بين الشركات التي تستخدم Apache Ignite شركات مثل
Veon / Beeline و
Sberbank و Huawei و Barclays و Citi و Microsoft وغيرها الكثير .
خيار طوبولوجيا جديد: The Star Around ZooKeeper
أحد التغييرات الرئيسية في الإصدار 2.5 هو إصدار جديد من الهيكل. في السابق ، كان لدى Ignite طوبولوجيا "حلقة" فقط ، والتي تم استخدامها لتبادل الأحداث داخل مجموعة وقدمت قابلية للتطوير تتسم بالكفاءة والسرعة ، على مقياس يصل إلى 300 عقدة.
تم تصميم الطوبولوجيا الجديدة لتركيبات عدة مئات وآلاف العقد.
يمكنك الآن الاختيار: استخدم الطوبولوجيا القديمة ، حيث تكفي Ignite ، أو - بالنسبة للمجموعات الكبيرة -
استكمل Ignite الكبير مع ZooKeeper صغير يتم من خلاله تبادل الأحداث.

لماذا هذا وكيف يساعد؟
"الحلقة" الكبيرة لها عيب: مع الأخذ في الاعتبار تبادل الشبكة ومعالجتها ، يمكن أن يصل إخطار جميع العقد حول حدث جديد إلى ثوانٍ. هذا أمر سيئ في حد ذاته ، وإذا كنت تأخذ في الاعتبار أن احتمال فشل العقدة بسبب فشل مؤقت في الشبكة أو المعدات أو المشاكل الأخرى يزداد مع حجم الكتلة ، فإن إعادة بناء الطوبولوجيا تصبح مهمة عادية تمامًا ، خاصة على مجموعات مبنية على أجهزة رخيصة (سلعة). في "الحلقة" الكبيرة ، يقدم هذا فوضى إضافية ، ويقاطع معالجة تدفق الأحداث ويجبرها على البدء مرة أخرى ، وفي نفس الوقت نقل المعلومات حول الطوبولوجيا الجديدة.
"النجم" الجديد ، حيث توجد مجموعة ZooKeeper في المركز ، لا يسمح فقط بالحفاظ على قابلية التوسع (يمكن أيضًا أن تنمو ZooKeeper أفقيًا) ، ولكن أيضًا زيادة قابلية التوسع بشكل كبير - الكفاءة على الأحجام الكبيرة. بعد كل شيء ، بمشاركة المسؤولية عن معالجة الأحداث والعمل مع البيانات ، يمكننا تخصيص مجموعة ZooKeeper أصغر بكثير لمعالجة الأحداث ، وبالتالي تقليل اعتماد الأحداث على حجم الكتلة.
لا يؤثر هذا على تبادل البيانات بين عقد Ignite ، على سبيل المثال ، أثناء إعادة التوازن ، بالإضافة إلى تخزين البيانات أو استرجاعها ، لأن كل هذه العمليات ذهبت وتذهب حول طوبولوجيا الحدث من خلال الاتصالات المباشرة بين عقد الكتلة.
أيضًا ، لا تؤثر إضافة طوبولوجيا جديدة على الهيكل القديم بأي شكل من الأشكال - لا تزال موصى بها ، نظرًا لأنه أسهل بكثير في الصيانة وأخف وزناً ، ولا تتطلب عناصر إضافية.
ولكن إذا وصلت إلى حد توسيع "حلقة" Ignite ، فلا يمكنك المشاركة في التحسين الجزئي والقرصنة ، ولا تقم بتطبيق معرفة محددة و "عكازات". في هذه الحالة ، لديك حل متاح ومتوفر رسميًا يسهل بشكل كبير تنفيذ ودعم مثل هذه المجموعة الكبيرة.
يمكن
العثور على معلومات تفصيلية عن الطوبولوجيا الجديدة
في الوثائق .
العملاء الرقيقون: عميل Java الرقيق ، مصادقة العميل الرقيق
في الإصدار 2.4 ، تم تقديم الدعم للعملاء الرقيقين خارج JDBC / ODBC ، الذين ليسوا مشاركين كاملين في الهيكل ، هم أقل تطلبًا للموارد ، ولكن في نفس الوقت يقدمون وظائف أقل. كان العميل الرقيق الأول هو عميل .NET.
بدءًا من الإصدار 2.5 ، يتوفر أيضًا عميل رفيع لـ Java.
وهذا يسمح بإدراج Ignite في التطبيقات الحساسة للموارد ، على سبيل المثال ، في التطبيقات على الأجهزة الطرفية ، دون أي طبقات إضافية. في السابق ، كانت هذه المهمة تتطلب طبقة متوسطة ، والتي ، على سبيل المثال ، عبر REST ، تلقت الطلبات ثم استخدمت العميل الداخلي "السميك" لتبادل البيانات مع مجموعة Ignite.
يمكن استخدام العميل الرقيق عن طريق توصيل ملف JAR القياسي "بدون تبعية" القياسي ، على سبيل المثال ، من مستودع مخضرم.
مثال على استخدام عميل رفيع:
ClientConfiguration cfg = new ClientConfiguration().setAddresses("127.0.0.1:10800"); try (IgniteClient igniteClient = Ignition.startClient(cfg)) { System.out.println(">>> ."); final String CACHE_NAME = "put-get-example"; ClientCache<Integer, Address> cache = igniteClient.getOrCreateCache(CACHE_NAME); System.out.format(">>> [%s].\n", CACHE_NAME); Integer key = 1; Address val = new Address(", 20", 101000); cache.put(key, val); System.out.format(">>> [%s] .\n", val); Address cachedVal = cache.get(key); System.out.format(">>> [%s] .\n", cachedVal); } catch (...) { ... }
أيضا في الإصدار 2.4 لم يكن هناك مصادقة للعملاء رقيقة. بدءًا من الإصدار 2.5 ، ستظهر لأول مرة في Ignite مع دعم التشفير عند الوصول إلى العملاء الرقيقين.
ClientConfiguration clientCfg = new ClientConfiguration() .setAddresses("127.0.0.1:10800");
يمكن
العثور على معلومات تفصيلية
في الوثائق .
SQL: المصادقة وإدارة المستخدم ، التحميل المجمع السريع
كان محرك ANSI99 SQL الموزع تاريخياً أحد نقاط القوة والميزات المميزة المهمة لـ Apache Ignite. يسمح لـ "نافذة واحدة" ، من خلال عميل Java / .NET / C ++ أو من خلال برنامج تشغيل JDBC / ODBC ، بتنفيذ استعلامات SQL في أعلى المجموعة بأكملها ، سواء في ذاكرة الوصول العشوائي أو في Ignite Native Persمرار.
في الإصدارات 2.0-2.4 ، ركز المطورون بالإضافة إلى زيادة الإنتاجية (وهو أمر غير كافٍ على الإطلاق) ، أيضًا على تسريع تحميل البيانات الأساسية والمجمعة ودعم أكثر اكتمالًا لـ DDL ، مثل عمليات CREATE TABLE و ALTER TABLE و CREATE INDEX وما إلى ذلك. والتي يمكن أيضًا تنفيذها من خلال "نافذة واحدة" باستمرار على المجموعة.
في الإصدار 2.5 ، تم اتخاذ خطوة نحو التطوير الإضافي لـ DDL: تمت إضافة مصادقة SQL والأوامر المقابلة
CREATE USER و
ALTER USER و
DROP USER .
إذا كنت تخطط سابقًا لاستضافة Ignite SQL في DMZ معقم مع التحكم في الوصول على مستوى الخدمات المتراكبة ، يمكنك الآن زيادة الأمان باستخدام المصادقة المُدارة بواسطة SQL.
من حيث سرعة تنزيل كميات كبيرة من البيانات ، ظهر 2.5 ابتكار في 2.
الأول هو أمر
COPY SQL الجديد في JDBC ، والذي يسمح لك بنقل محتويات ملف CSV بسرعة إلى جدول.
COPY FROM "/path/to/local/file.csv" INTO city ( ID, Name, CountryCode, District, Population) FORMAT CSV
والثاني هو وضع الدفق لـ JDBC ، الذي يتم تمكينه من خلال
الأمر SET الجديد . يسمح بتحميل البيانات من خلال عمليات INSERT القياسية لتجميع السجلات الجديدة بشفافية وتحميلها على النحو الأمثل في مجموعة Ignite. يحدث نقل العمليات المتراكمة إلى الكتلة عند ملء مجموعة أو عند إغلاق اتصال JDBC.
SET STREAMING ON
التعلم الآلي: الخوارزميات الجينية ، التقسيم
يعد التعلم الآلي أحد مجالات التطوير الاستراتيجية لشركة Ignite. تقوم ML بتنفيذ نموذج Zero-ETL ، الذي يسمح بالتدريب مباشرةً على البيانات الموجودة في تخزين Ignite للمعاملات. وبذلك ، يتم توفير الكثير من الوقت والموارد في تحويل البيانات ونقل الشبكة إلى نظام تدريب.
في الإصدار 2.5 ،
تتم إضافة
الخوارزميات الجينية إلى مجموعة الأدوات التي يمكن الوصول إليها.
أيضًا ، لتحسين عملية التعلم وتقليل تبادل الشبكة ، ظهر دعم لحسابات ML ، التي تحتوي على معلومات حول الأقسام التي يتم تنفيذها عليها وقادرة على ربط معلومات إضافية بهذه الأقسام. بالنظر إلى أن الأقسام هي ذرية من حيث التوزيع ، ولا يمكن قطع قسم واحد بين عدة عقد ، وهذا يسمح لك بتحسين عملية التعلم ، مما يوفر المزيد من الضمانات للخوارزمية.
يمكن
العثور على معلومات تفصيلية
في الوثائق .
وغير ذلك الكثير
أيضا في الإصدار 2.5 يتم تنفيذه: