دفق البيانات باستخدام Apache Kafka

مكتمل

تم تطوير Apache Kafka بواسطة LinkedIn في عام 2010؛ بهدف نقل البيانات على نطاق واسع جدًا في زمن انتقال منخفض للغاية مع مستوى عالٍ من التسامح مع الأخطاء. ثم تبرعت LinkedIn بالمشروع لمؤسسة Apache في عام 2012؛ ولكن لا تزال LinkedIn تستخدم Kafka في جميع أنحاء نظامها البنائي لتتبع نشاط المستخدمين، وتبادل الرسائل، وجمع المقاييس.

Kafka هو نظام أساسي للدفق الموزع تم تصميمه من أجل:

  • تبسيط مسارات البيانات
  • معالجة كميات كبيرة من البيانات في نمط دفق
  • دعم أنظمة الوقت الحقيقي وأنظمة الدفعات
  • التوسع أفقيًا بكثافة

دعنا نتعلم أولاً عن Apache Kafka وحده، ثم عن Kafka في Azure HDInsight.

مكونات Kafka

قبل أن نفهم كيف يعمل Kafka دعنا ننظر في أدوار بعض المكونات الرئيسية لـ Kafka، وكيف تتحد معًا لتوفير نظام مراسلة قابل للتطوير بدرجة عالية، ومتسامح مع الأخطاء.

الوسيط

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

رسالة

وحدة بيانات في نظام مجموعة Kafka. الرسائل في معظم الحالات هي أزواج من القيم الرئيسية.

الموضوعات والأقسام

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

المنتجون والمستهلكون

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

مجموعة المستهلكين

يمكن لأحد المستهلكين أو أكثر العمل معًا كمجموعة، واستهلاك الرسائل كمجموعة. إذا كان عدد المستهلكين يساوي عدد أقسام الموضوع، فحينئذٍ يستهلك كل مستهلك من قسم موضوع واحد منشئًا التوازي.

الاحتفاظ

يمكن الاحتفاظ بالرسائل في Kafka بشكلٍ دائم في نظام مجموعة Kafka لفترة زمنية محددة مسبقًا. بعد الوصول إلى حدود الاحتفاظ، يمكن أن تنتهي صلاحية Kafka، ويحذف تلك الرسائل.

الإزاحة

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

Zookeeper

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

كيف يمكن أن يأتي كل ذلك معًا؟

ترسل التطبيقات (المعروفة أيضًا باسم المنتجين) رسائل إلى وسيط Kafka، وتتم معالجة هذه الرسائل من قبل مستهلك واحد أو عدة مستهلكين. يتم تصنيف الرسائل في نظام المجموعة حسب الموضوعات. على سبيل المثال: يمكن لعميل إنشاء موضوع «المبيعات» لإرسال كافة الرسائل ذات الصلة بالمبيعات وهكذا. كلما زاد حجم المواضيع مع تزايد الرسائل، يتم تقسيمها إلى أقسام، ويتم نسخ هذه الأقسام كذلك عبر وسطاء Kafka للتكرار. يتم تصنيف الأقسام إلى قائدين ومتابعين. قسم القائد هو ما يقرأ منه ويكتب عليه، بينما أقسام المتابعين هي مجرد نسخ متماثلة، تلحق بحالة القائد. لتحديد القسم الذي يجب الكتابة عليه، والقراءة منه، يحتاج المنتجون والمستهلكون إلى معرفة الأقسام المصممة للقائدين. وتدير عقد Zookeeper الحالة في نظام مجموعة Kafka، ومن بين أمور أخرى تختار قادة الأقسام، وتوفر هذه المعلومات للمنتجين والمستهلكين.
يوفر Kafka ضمانات بأن الرسائل التي بها تقسيم يتم ترتيبها بنفس التسلسل الذي جاءت به. يمكن تحديد رسالة محددة بوضوح من خلال إزاحتها وهو موقعها داخل القسم. يقرأ المستهلك الرسائل من الأقسام، وبعد المعالجة، يلزم الإزاحة التي تشير إلى أن الرسالة قد تمت معالجتها بنجاح. يخزن Kafka كل سجلاته على القرص، ويحافظ على استمرارية الرسالة. في حالة توقف المستهلك لسبب ما، وتوقف المعالجة، يحتفظ Kafka بهذه الرسائل لفترة محددة مسبقاً، وبعد العودة إلى الاتصال بالإنترنت يمكن للمستهلك إعادة البدء في المعالجة من الإزاحة الملتزم بها حيث توقفت قبل الانقطاع.

How Apache Kafka works

موضوعات Kafka

موضوع Kafka هو موجز أو قائمة انتظار يتم فيها تخزين الرسائل ونشرها. يرسل المنتجون الرسائل إلى الموضوعات، ويقرأ المستهلكون من الموضوعات. كل عقدة في وسيط Kafka يمكن أن تحتوي على موضوعات متعددة.

ما هي فوائد Kafka في Azure HDInsight؟

تقدم النسخة المفتوحة المصدر من Kafka العديد من الإمكانات؛ ولكن هناك الكثير من العمل الذي ينطوي عليه إعدادها. يقدم Azure HDInsight أفضل أطر التحليلات مفتوحة المصدر على Azure، ويجعل من السهل على العملاء إعداد أنظمة المجموعات مفتوحة المصدر في غضون دقائق، بدلاً من قضاء أسابيع أو أشهر في إعدادها، ويمكنك استخدامها على الفور. HDInsight هي أيضًا مؤسسة مزودة بالمزايا التالية:

  • وهي خدمة تخضع للإدارة توفر عملية تكوين مبسطة. تكون النتيجة عبارة عن تكوين تم اختبارها ودعمها من قبل Microsoft.
  • تقدم Microsoft اتفاقية على مستوى الخدمة (SLA) بنسبة 99.9% على وقت تشغيل Spark وKafka.
  • وتستخدم Azure Managed Disks كتخزين مساعد لـ Kafka. يمكن أن توفر Managed Disks ما يصل إلى 16 تيرابايت من التخزين لكل وسيط Kafka، مع العديد من وسطاء Kafka.
  • يوفر HDInsight أفضل أمن مؤسسي باستخدام VNet، وتأمين تفصيلي دقيق باستخدام Apache Ranger، وتشفير Bring Your Own Key (BYOK) للبيانات الثابتة.
  • التوافق مع HIPAA وSOC وPCI
  • إمكانية نشر مسارات الدفق بين الطرفين مع Spark وStorage من خلال قوالب Azure Resource Manager (ARM) التلقائية في نفس الشبكة الظاهرية.
  • يمكن تحقيق قابلية وصول عالية مع Kafka MirrorMaker، التي يمكن أن تستهلك السجلات من الموضوعات على نظام المجموعة الأساسي، ومن ثم إنشاء نسخة محلية على نظام المجموعة الثانوي.
  • يسمح HDInsight لك بتغيير عدد العقد العاملة (التي تستضيف Kafka) بعد إنشاء نظام المجموعة. يمكن إجراء التحجيم من مدخل Microsoft Azure وAzure PowerShell، وواجهات إدارة Azure الأخرى. بالنسبة إلى Kafka، يجب عليك إعادة توازن النسخ المتماثلة للقسم بعد عمليات التحجيم. تسمح إعادة توازن الأقسام لـ Kafka بالاستفادة من عدد جديد من العقد العاملة.
  • يمكن استخدام سجلات Azure Monitor لمراقبة Kafka على HDInsight. يسجل Azure Monitor معلومات مستوى الجهاز الظاهري السطحي، مثل: مقاييس القرص، وبطاقة واجهة الشبكة، ومقاييس JMX من Kafka.