س: ما المقصود بـ Apache Flink؟
Apache Flink هو محرك مفتوح المصدر وموزع للمعالجة ذات الحالة عبر مجموعات البيانات المستمرة (التدفقات) والمحدودة (المجمعة). تم تصميم تطبيقات معالجة التدفق لتعمل بشكل مستمر، مع الحد الأدنى من وقت التعطل، ومعالجة البيانات عند تناولها. تم تصميم Apache Flink للمعالجة ذات زمن الوصول المنخفض، وإجراء العمليات الحسابية في الذاكرة، والتوافر العالي، وإزالة نقطة الفشل الفردية، والتوسع أفقيًا.
تتضمن ميزات Apache Flink إدارة الحالة المتقدمة مع ضمانات الاتساق لمرة واحدة بالضبط، ودلالات معالجة وقت الحدث مع معالجة البيانات المعقدة خارج الترتيب والمتأخرة. تم تطوير Apache Flink من أجل البث بشكل أساسي، وتوفر واجهة برمجة موحدة لكل من معالجة البث ومعالجة الدفعات.
لماذا تستخدم Apache Fink؟
تُستخدم Apache Flink لإنشاء العديد من الأنواع المختلفة من تطبيقات البث والتطبيقات المجمعة، نظرًا للمجموعة الواسعة من الميزات التي تختص بها.
بعض الأنواع الشائعة من التطبيقات التي تدعمها Apache Flink هي:
- التطبيقات القائمة على الأحداث، واستيعاب الأحداث من واحد أو أكثر من تدفقات الأحداث وتنفيذ الحسابات أو تحديثات الحالة أو الإجراءات الخارجية. تسمح المعالجة ذات الحالة بتنفيذ منطق يتجاوز تحويل الرسالة الواحدة، حيث تعتمد النتائج على تاريخ الأحداث التي تم استيعابها.
- تطبيقات تحليلات البيانات، واستخراج المعلومات والإحصائيات من البيانات. عادم ما يتم تنفيذها عن طريق الاستعلام عن مجموعات بيانات محدودة وإعادة تشغيل الاستعلامات أو تعديل النتائج لدمج بيانات جديدة. باستخدام Apache Flink، يمكن إجراء التحليل من خلال التحديث المستمر أو بث الاستعلامات أو معالجة الأحداث التي يتم تناولها في الوقت الفعلي، وإصدار النتائج وتحديثها باستمرار.
- تطبيقات مسارات البيانات، وتحويل البيانات وإثرائها لنقلها من مخزن بيانات إلى آخر. عادة ما يتم تنفيذ الاستخراج، والانتقال، والتحويل (ETL) بشكل دوري، على دفعات. باستخدام Apache Flink، يمكن أن تعمل العملية باستمرار، وتنقل البيانات بزمن انتقال منخفض إلى وجهتها.
كيف يعمل Apache Flink؟
Flink هو محرك معالجة تدفق عالي الإنتاجية وذو زمن انتقال منخفض. يتكون تطبيق Flink من رسم بياني عشوائي معقد لتدفق البيانات، يتكون من تدفقات وتحولات. يتم استيعاب البيانات من مصدر بيانات واحد أو أكثر وإرسالها إلى وجهة واحدة أو أكثر. يمكن أن تكون أنظمة المصدر والوجهة عبارة عن تدفقات أو قوائم انتظار للرسائل أو مخازن بيانات، وتشمل الملفات وقواعد البيانات الشائعة ومحركات البحث. التحويلات يمكن أن تكون ذات حالة مثل عمليات التجميع عبر النوافذ الزمنية أو اكتشاف الأنماط المعقدة.
يتم تحقيق التسامح مع الأخطاء من خلال آليتين منفصلتين: الفحص التلقائي والدوري لحالة التطبيق، التي يتم نسخها إلى وحدة تخزين دائمة، للسماح بالاسترداد التلقائي في حالة الفشل؛ نقاط الحفظ عند الطلب، حفظ صورة متسقة لحالة التنفيذ، للسماح بإيقاف واستئناف مهمة Flink الخاصة بك أو تحديثها أو تفريقها، مع الاحتفاظ بحالة التطبيق عبر التوقفات وإعادة التشغيل. آليات نقاط التفتيش ونقاط الحفظ غير متزامنة، حيث يتم أخذ نسخة احتياطية متسقة للحالة دون «إيقاف العالم»، بينما يستمر التطبيق في معالجة الأحداث.
ما هي مزايا Apache Flink؟
معالجة كل من مجموعات البيانات المستمرة (التدفقات) والمحدودة (البيانات المُجمَّعة)
يمكن لـ Apache Flink معالجة كل من مجموعات البيانات المستمرة والمحدودة، أي التدفقات والبيانات المجمعة. التدفقات المستمرة لها بداية ولكنها غير محدودة تقريبًا ولا تنتهي أبدًا. من الناحية النظرية، لا يمكن أن تتوقف المعالجة أبدًا.
البيانات المحدودة، مثل الجداول، محدودة ويمكن معالجتها من البداية إلى النهاية في وقت محدود.
يوفر Apache Flink خوارزميات وهياكل بيانات لدعم المعالجة المحدودة والمستمرة من خلال نفس واجهة البرمجة. تعمل التطبيقات التي تعالج البيانات المستمرة بلا توقُّف. التطبيقات التي تعالج البيانات المحدودة ستتوقف عن العمل عند الوصول إلى نهاية مجموعات بيانات الإدخال.
شغِّل التطبيقات على نطاق واسع
تم تصميم Apache Flink لتشغيل التطبيقات ذات الحالة على أي نطاق تقريبًا. تتم موازاة المعالجة مع آلاف المهام، ويتم توزيع أجهزة متعددة بشكل متزامن.
يتم أيضًا تقسيم الحالة وتوزيعها أفقيًا، مما يسمح بالحفاظ على عدة تيرابايت عبر أجهزة متعددة. يتم فحص الحالة إلى التخزين المستمر بشكل تدريجي.
أداء في الذاكرة
يتم تقسيم البيانات المتدفقة عبر التطبيق والحالة عبر أجهزة متعددة. وبالتالي، يمكن إكمال الحساب من خلال الوصول إلى البيانات المحلية، غالبًا في الذاكرة.
تناسق الحالة مرة واحدة بالضبط
أما التطبيقات التي تتجاوز تحويلات الرسائل الفردية فهي ذات حالة جيدة. يحتاج منطق الأعمال إلى تذكر الأحداث أو النتائج الوسيطة. يضمن Apache Flink اتساق الحالة الداخلية، حتى في حالة الفشل وعبر إيقاف التطبيق وإعادة تشغيله. يتم دائمًا تطبيق تأثير كل رسالة على الحالة الداخلية مرة واحدة بالضبط، بغض النظر عن أن التطبيق قد يتلقى نسخًا مكررة من مصدر البيانات عند الاسترداد أو عند إعادة التشغيل.
مجموعة واسعة من الموصلات
تحتوي Apache Flink على عدد من الموصلات المثبتة لأنظمة المراسلة والبث الشائعة ومخازن البيانات ومحركات البحث ونظام الملفات. بعض الأمثلة هي Apache Kafka، وتدفق بيانات Amazon Kinesis، وAmazon SQS، وActive MQ، وRabbit MQ، وNiFi، وOpenSearch وElasticSearch، وDynamoDB، وHBase، وأي قاعدة بيانات توفر عميل JDBC.
مستويات متعددة من التجريد
توفر Apache Flink مستويات متعددة من التجريد لواجهة البرمجة. من واجهة برمجة تطبيقات SQL وواجهة برمجة تطبيقات Table المتدفقة ذات المستوى الأعلى، باستخدام عمليات التجريد المألوفة مثل الجدول والانضمام والتجميع. توفر واجهة برمجة تطبيقات DataStream مستوى أقل من التجريد ولكن أيضًا مزيدًا من التحكم، مع دلالات التدفقات والنوافذ والتخطيط. وأخيرًا، توفر واجهة برمجة تطبيقات ProcessFunction تحكمًا دقيقًا في معالجة كل رسالة والتحكم المباشر في الحالة. تعمل جميع واجهات البرمجة بسلاسة مع كل من مجموعات التواريخ المستمرة (التدفقات) والمحدودة (الجداول). يمكن استخدام مستويات مختلفة من التجريد في نفس التطبيق، كأداة مناسبة لحل كل مشكلة.
لغات برمجة متعددة
يمكن برمجة Apache Flink بلغات متعددة، بداية من لغة SQL المتدفقة عالية المستوى إلى Python وScala وJava، بالإضافة إلى لغات JVM الأخرى مثل Kotlin.
ما حالات استخدام Apache Flink؟
تتضمن حالات استخدام Apache Flink ما يلي:
-
يعد اكتشاف الاحتيال واكتشاف العيوب والتنبيه المستند إلى القواعد وتخصيص تجربة المستخدم (UX) في الوقت الفعلي أمثلة على حالات الاستخدام للتطبيق القائم على الأحداث. يُعد Flink خيارًا مثاليًا لجميع حالات الاستخدام هذه التي تتطلب معالجة تدفقات الأحداث بأسلوب يستند إلى الحالات مع مراعاة التطور بمرور الوقت، أو اكتشاف الأنماط المعقدة، أو حساب الإحصائيات على مدار فترات زمنية لاكتشاف الانحرافات عن العتبات المتوقعة.
-
إن مراقبة الجودة والتحليل المخصص للبيانات المباشرة وتحليل تدفق النقرات وتقييم تجربة المنتج هي حالات استخدام لتحليلات التدفق التي يمكن لـ Flink دعمها بكفاءة. من خلال الاستفادة من المستوى العالي من التجريد لواجهة برمجة Table API أو SQL (لغة الاستعلام المهيكل)، يمكنك تشغيل التحليلات نفسها على كل من البيانات المباشرة المتدفقة ومجموعات البيانات السابقة.
-
مراقبة نظام الملفات وكتابة البيانات في أحد السجلات، والعرض المادي لتدفق الأحداث في قاعدة بيانات، وإنشاء فهرس البحث وتحسينه بشكل تدريجي، هي حالات استخدام مدعومة بكفاءة من خلال الاستخراج والانتقال والتحميل (ETL) المستمر. من خلال الاستفادة من المجموعة الواسعة من الموصلات، يمكن لـ Flink القراءة مباشرة من عدة أنواع من مخازن البيانات، واستيعاب تدفقات أحداث التغيير، وحتى التقاط التغييرات مباشرة. من خلال استيعاب التغييرات ومعالجتها باستمرار، وتحديث أنظمة الوجهة مباشرةً، يمكن لـ Flink تقليل تأخير مزامنة البيانات إلى ثوانٍ أو أقل.
من يستخدم Apache Flink؟
NortonLifeLock
NortonLifeLock شركة عالمية للأمن السيبراني وخصوصية الإنترنت تقدم خدمات لملايين العملاء لأمان الأجهزة والهوية والخصوصية عبر الإنترنت للمنزل والأسرة.
تقدم NortonLifeLock منتج VPN كخدمة مجانية للمستخدمين. وبالتالي يحتاجون إلى فرض حدود الاستخدام في الوقت الفعلي لمنع مستخدمي freemium من استخدام الخدمة عندما يتجاوز استخدامهم الحد. يتمثل التحدي الذي يواجه NortonLifeLock في القيام بذلك بطريقة موثوقة وبأسعار معقولة.
بسّطت NortonLifeLock تنفيذ التجميع على مستوى المستخدم والجهاز باستخدام Apache Flink.
Samsung SmartThings
باعتبارها شركة تابعة مستقلة لشركة Samsung، تعد SmartThings واحدة من الأنظمة البيئية الرائدة لإنترنت الأشياء في العالم، حيث تخلق الطريقة الأكثر سهولة لأي شخص لإنشاء منزل ذكي.
واجهت Samsung SmartThings مشكلات مثل تخصيص الموارد للتطبيقات الفردية. تسبب هذا في تأخير وتدهور الأداء أثناء معالجة البيانات. وقد أدى ذلك في النهاية إلى زيادة التكاليف الباهظة في الحفاظ على أعباء العمل في العمليات. كان عليهم إعادة تصميم منصة البيانات.
انتقلوا من Apache Spark إلى Apache Flink.
BT Group
BT Group هي المزود الرائد للاتصالات والشبكات في المملكة المتحدة والمزود الرائد لخدمات وحلول الاتصالات العالمية، وتخدم عملاء في 180 دولة. تشمل أنشطتها الرئيسية في المملكة المتحدة توفير الاتصالات الصوتية عبر الخطوط الثابتة والجوال والنطاق العريض والتلفاز (بما في ذلك الرياضة)، ومجموعة من المنتجات والخدمات عبر الشبكات الثابتة والمتنقلة المتقاربة للعملاء من المستهلكين والشركات والقطاع العام.
احتاجت BT إلى تطبيق لمراقبة الخدمة لدعم طرح Digital Voice، وهو منتجها الاستهلاكي الجديد الذي يتيح إجراء مكالمات صوتية عالية الدقة عبر شبكة النطاق العريض في المملكة المتحدة.
قامت BT ببناء خدمة تحليلات تعتمد على الأحداث باستخدام Apache Flink لاستيعاب بيانات الخدمة ومعالجتها وتصورها.
Autodesk
تريد Autodesk، وهي شركة رائدة في مجال التصميم ثلاثي الأبعاد وبرامج الهندسة، القيام بأكثر من مجرد إنشاء البرامج وتقديمها. كما تريد أيضًا ضمان حصول الملايين من المستخدمين العالميين على أفضل تجربة في تشغيل هذا البرنامج.
يقوم Autodesk بعمل برامج للأشخاص الذين يقومون بعمل أشياء. إنهم يخدمون أكثر من 200 مليون عميل. لقد احتاجوا إلى التخلص من المستودعات للعثور على مشكلات العملاء وإصلاحها بشكل أسرع. لقد أرادوا طريقة متسقة لجمع المقاييس وقياسها مع فريق عمليات صغير دون زيادة التكاليف أو إنشاء قفل للبيانات.
دوري الهوكي الوطني (NHL)
دوري الهوكي الوطني هو ثاني أقدم البطولات الرياضية الجماعية الأربعة الكبرى في أمريكا الشمالية. اليوم، يضم دوري الهوكي الوطني (NHL) بين أعضاءه 32 ناديًا، يعكس كل منهم التركيبة الدولية للدوري، مع تمثيل لاعبين من أكثر من 20 دولة في قوائم الفرق.
واجهت NHL العديد من التحديات التقنية مثل تحديد الميزات المطلوبة وطرق النمذجة للتنبؤ بحدث يحتوي على قدر كبير من عدم اليقين، وتحديد كيفية استخدام بيانات مستشعر PPT المتدفقة لتحديد مكان حدوث المواجهة، واللاعبين المشاركين، واحتمال فوز كل لاعب في المواجهة، كل ذلك في غضون مئات المللي ثانية.
من خلال الاستفادة من Apache Flink، تمكنت NHL ليس فقط من التنبؤ بالفائز في المواجهة، ولكن أيضًا من بناء أساس لحل عدد من المشكلات المماثلة في الوقت الفعلي وبطريقة فعالة من حيث التكلفة.
Poshmark
Poshmark هو سوق اجتماعي رائد للملابس الجديد والمستعملة للنساء والرجال والأطفال والحيوانات الأليفة والمنزل وغير ذلك. يعمل مجتمعهم الذي يضم أكثر من 80 مليون شخص في جميع أنحاء الولايات المتحدة وكندا وأستراليا والهند على تشكيل مستقبل التسوق ليكون بسيطًا واجتماعيًا ومستدامًا.
تركز Poshmark على تحقيق نمو فائق من خلال التخصيص وتعزيز تجربة المستخدم. النهج الأولي لاستخدام المعالجة المجمعة للتخصيص والأمان لم يلبي توقعات تحسين تجربة العملاء.
صممت Poshmark التخصيص في الوقت الفعلي باستخدام إثراء البيانات في الوقت الفعلي باستخدام Apache Flink.
كيف يمكن لـ AWS المساعدة في تشغيل تطبيقات Apache Flink في السحابة؟
خدمة Amazon المُدارة لـ Apache Flink هو حل مُدار بالكامل لتشغيل تطبيقات Apache Flink. تقلل خدمة Amazon المُدارة لـ Apache Flink من تعقيد إنشاء تطبيقات Apache Flink وإدارتها ودمجها مع خدمات AWS الأخرى. مع خدمة Amazon المُدارة لـ Apache Flink، لا توجد خوادم لإدارتها، ولا يوجد حد أدنى للرسوم أو تكلفة الإعداد. الإعداد متاح للغاية افتراضيًا. تتم إدارة حالة التطبيق بالكامل وتخزينها في خلفية عالية المتانة لتحمل الأخطاء. يتم التحكم في التطبيق باستخدام واجهة برمجة تطبيقات بسيطة لإيقاف التطبيق وتشغيله وتكوينه وتوسيع نطاقه.
تقدم خدمة Amazon المُدارة لـ Apache Flink Studio واجهة دفترية تفاعلية لـ Apache Flink. باستخدام دفتر Apache Zeppelin، يمكنك تشغيل كود SQL وPython وScala على Apache Flink، للتطوير والتجريب وفحص البيانات أو التصور.
تدعم Amazon EMR أيضًا Apache Flink كتطبيق YARN بحيث يمكنك إدارة الموارد إلى جانب تشغيل تطبيقات أخرى داخل المجموعة.
Apache Flink تدعم Kubernetes محليًا. يمكنك استضافة Apache Flink ذاتيًا في بيئة حاوية مثل خدمة Kubernetes المرنة بـ Amazon (Amazon EKS) أو إدارتها بالكامل بنفسك باستخدام سحابة الحوسبة المرنة من Amazon (Amazon EC2).
ابدأ استخدام Apache Flink على AWS من خلال إنشاء حساب اليوم.