يتوفر نظام الحوسبة الموزعة Apache Storm 2.0

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

يتيح لك المشروع تنظيم المعالجة المضمونة للأحداث المختلفة في الوقت الفعلي. على سبيل المثال، يمكن استخدام Storm لتحليل تدفقات البيانات في الوقت الفعلي، وتشغيل مهام التعلم الآلي، وتنظيم الحوسبة المستمرة، وتنفيذ RPC، وETL، وما إلى ذلك. يدعم النظام التجميع، وإنشاء تكوينات متسامحة مع الأخطاء، ووضع معالجة البيانات المضمونة، كما يتمتع بأداء عالٍ يكفي لمعالجة أكثر من مليون طلب في الثانية على عقدة مجموعة واحدة.

يتم دعم التكامل مع أنظمة معالجة قوائم الانتظار المختلفة وتقنيات قواعد البيانات. تتضمن بنية Storm تلقي ومعالجة تدفقات البيانات غير المنظمة والمحدثة باستمرار باستخدام معالجات معقدة عشوائية مع القدرة على التقسيم بين المراحل المختلفة للحسابات. تم تسليم المشروع إلى مجتمع Apache بعد أن استحوذت Twitter على BackType، الشركة التي طورت الإطار في الأصل. من الناحية العملية، تم استخدام Storm في BackType لتحليل انعكاس الأحداث في المدونات الصغيرة، من خلال المقارنة السريعة للتغريدات الجديدة والروابط المستخدمة فيها (على سبيل المثال، تم تقييم كيفية إعادة بث الروابط الخارجية أو الإعلانات المنشورة على تويتر من قبل المشاركين الآخرين ).

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

تمت كتابة النظام في الأصل بلغة Clojure ويتم تشغيله داخل الجهاز الظاهري JVM. أطلقت مؤسسة Apache مبادرة لترحيل Storm إلى نواة جديدة مكتوبة بلغة Java، والتي تم اقتراح نتائجها في إصدار Apache Storm 2.0. تمت إعادة كتابة جميع المكونات الأساسية للمنصة بلغة Java. تم الاحتفاظ بدعم معالجات الكتابة في Clojure، ولكن يتم تقديمه الآن في شكل روابط. يتطلب Storm 2.0.0 Java 8. وقد تم إعادة تصميم نموذج المعالجة متعدد الخيوط بالكامل، مما يسمح لتحقيقه زيادة ملحوظة في الأداء (بالنسبة لبعض الطبولوجيا، تم تقليل التأخير بنسبة 50-80٪).

يتوفر نظام الحوسبة الموزعة Apache Storm 2.0

يوفر الإصدار الجديد أيضًا واجهة برمجة تطبيقات Streams مكتوبة جديدة تتيح لك تحديد المعالجات باستخدام عمليات نمط البرمجة الوظيفية. يتم تنفيذ واجهة برمجة التطبيقات الجديدة أعلى واجهة برمجة التطبيقات الأساسية القياسية وتدعم الدمج التلقائي للعمليات لتحسين معالجتها. أضافت Windowing API لعمليات النوافذ دعمًا لحفظ الحالة واستعادتها في الواجهة الخلفية.

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

مجالات تطبيق العاصفة:

  • معالجة تدفقات البيانات الجديدة أو تحديثات قاعدة البيانات في الوقت الحقيقي؛
  • الحوسبة المستمرة: يمكن لـ Storm تشغيل استعلامات مستمرة ومعالجة التدفقات المستمرة، وتقديم نتائج المعالجة إلى العميل في الوقت الفعلي.
  • استدعاء الإجراء البعيد الموزع (RPC): يمكن استخدام Storm لتوفير التنفيذ المتوازي للاستعلامات كثيفة الاستخدام للموارد. الوظيفة ("الطوبولوجيا") في Storm هي وظيفة موزعة عبر العقد التي تنتظر وصول الرسائل التي تحتاج إلى المعالجة. بعد تلقي الرسالة، تقوم الدالة بمعالجتها في السياق المحلي وإرجاع النتيجة. أحد الأمثلة على استخدام RPC الموزع هو معالجة استعلامات البحث بالتوازي أو تنفيذ العمليات على مجموعة كبيرة من المجموعات.

مميزات العاصفة:

  • نموذج برمجة بسيط يبسط إلى حد كبير معالجة البيانات في الوقت الحقيقي؛
  • دعم لأية لغات البرمجة. الوحدات متاحة لـ Java وRuby وPython، والتكيف مع اللغات الأخرى أمر سهل بفضل بروتوكول اتصال بسيط للغاية يتطلب حوالي 100 سطر من التعليمات البرمجية لدعمه؛
  • التسامح مع الخطأ: لتشغيل مهمة معالجة البيانات، تحتاج إلى إنشاء ملف jar مع التعليمات البرمجية. ستقوم Storm بتوزيع ملف jar هذا بشكل مستقل عبر عقد المجموعة، وتوصيل المعالجات المرتبطة به، وتنظيم المراقبة. عند اكتمال المهمة، سيتم تعطيل الكود تلقائيًا على جميع العقد؛
  • قابلية التوسع الأفقي. يتم تنفيذ جميع الحسابات في الوضع المتوازي، مع زيادة الحمل، يكفي توصيل العقد الجديدة بالمجموعة؛
  • مصداقية. تضمن Storm معالجة كل رسالة واردة بشكل كامل مرة واحدة على الأقل. ستتم معالجة الرسالة مرة واحدة فقط في حالة عدم وجود أخطاء عند المرور عبر كافة المعالجات؛ وفي حالة ظهور مشكلات، سيتم تكرار محاولات المعالجة غير الناجحة.
  • سرعة. تمت كتابة كود Storm مع أخذ الأداء العالي في الاعتبار ويستخدم النظام للمراسلة السريعة غير المتزامنة ZeroMQ.

المصدر: opennet.ru

إضافة تعليق