ما نظام Kafka؟
Apache Kafka هو مخزن بيانات موزع محسّن لاستيعاب البيانات المتدفقة ومعالجتها في الوقت الفعلي. البيانات المتدفقة هي بيانات يجري إنشاؤها باستمرار عن طريق الآلاف من مصادر البيانات التي ترسل في العادة سجلات البيانات بشكل متزامن. تحتاج منصة التدفق إلى التعامل مع هذا التدفق المستمر للبيانات، ومعالجة البيانات بطريقة تسلسلية ومتزايدة.
يوفر Kafka ثلاث وظائف رئيسة لمستخدميه:
- النشر والاشتراك في تدفقات السجلات
- تخزين تدفقات السجلات بشكل فعال بالترتيب الذي أُنشأت به
- معالجة تدفقات السجلات في الوقت الفعلي
يُستخدم Kafka بشكل أساسي لإنشاء مسارات للبيانات المتدفقة في الوقت الفعلي والتطبيقات التي تتكيف مع تدفقات البيانات. فهو يجمع بين المراسلة والتخزين ومعالجة التدفق للسماح بتخزين البيانات التاريخية والبيانات في الوقت الفعلي وتحليلها.
فيمَ يُستخدم Kafka؟
يُستخدم Kafka لإنشاء مسارات للبيانات المتدفقة في الوقت الفعلي وتطبيقات التدفق في الوقت الفعلي. يقوم مسار البيانات بمعالجة البيانات ونقلها بموثوقية من نظام إلى آخر. أما تطبيق التدفق، فهو تطبيق يستهلك تدفقات البيانات. على سبيل المثال، إذا كنت ترغب في إنشاء مسار بيانات يأخذ بيانات نشاط المستخدم بغرض تتبُّع كيفية استخدام الأشخاص لموقعك الإلكتروني في الوقت الفعلي، فسيُستخدم Kafka لاستيعاب البيانات المتدفقة وتخزينها مع تقديم قراءات للتطبيقات التي تشغل مسار البيانات في الوقت نفسه. غالبًا ما يُستخدم Kafka أيضًا باعتباره حل وسيط رسائل، الذي يكون عبارة عن نظام أساسي يعالج الاتصالات بين تطبيقين ويتوسط بينهما.
كيف تعمل Kafka؟
يجمع Kafka بين نموذجين للمراسلة، وهما قائمة الانتظار من ناحية والاشتراك والنشر من ناحية أخرى، لتوفير الفوائد الرئيسة لكل منهما للمستهلكين. تسمح قائمة الانتظار بتوزيع معالجة البيانات عبر العديد من مثيلات المستهلكين، ما يجعلها قابلة للتوسع بدرجة كبيرة. ومع ذلك، فإن قوائم الانتظار التقليدية ليست متعددة المشتركين. يدعم نهج النشر والاشتراك تعدد المشتركين، ولكن نظرًا إلى أن كل رسالة تذهب إلى كل مشترك، فإنه يتعذر استخدامه لتوزيع العمل عبر عمليات متعددة العاملين. يستخدم Kafka نموذج السجلات المقسَّمة لدمج هذين الحلين معًا. والسجل هو عبارة عن سلسلة مرتبة من السجلات التي تنقسم بدورها إلى مقاطع أو أقسام تتوافق مع المشتركين المختلفين. هذا يعني أنه يمكن أن يكون هناك العديد من المشتركين في الموضوع نفسه ويُعيَّن كل منهم إلى قسم للسماح بقابلية توسع أعلى. وأخيرًا، يوفر نموذج Kafka إمكانية إعادة التشغيل، ما يسمح للعديد من التطبيقات المستقلة التي تقرأ تدفقات البيانات بالعمل بشكل مستقل بمعدلها الخاص.
قائمة الانتظار
النشر والاشتراك
ما فوائد نهج Kafka؟
قابلية التكيف
يسمح نموذج السجلات المقسَّمة لنظام Kafka بتوزيع البيانات عبر خوادم متعددة، ما يجعله قابلاً للتوسع بما يتجاوز ما يمكن تعيينه إلى خادم واحد.
السرعة
يفصل Kafka تدفقات البيانات بحيث يكون هناك زمن استجابة منخفض للغاية، ما يجعله شديد السرعة.
قابلية التحمل
تُوزع الأقسام ويُجرى نسخ متماثل لها عبر العديد من الخوادم، وتُكتب جميع البيانات على القرص. يساعد ذلك في الحماية من حالات فشل الخادم، ما يجعل البيانات متسامحة للغاية مع الأخطاء وذات قدرة صمود عالية.
كيف تتكامل هيكلة Kafka مع النماذج المختلفة؟
يعالج Kafka النموذجين المختلفين من خلال نشر السجلات إلى موضوعات مختلفة. يحتوي كل موضوع على سجل مقسَّم، وهو سجل إسناد مهيكل يتتبع جميع السجلات بالترتيب ويلحق سجلات جديدة في الوقت الفعلي. تُوزع هذه الأقسام ويُجرى نسخ متماثل لها عبر خوادم متعددة، ما يسمح بقابلية التوسع العالية والتسامح مع الأخطاء والمعالجة المتوازية. يُعيَّن لكل مستهلك قسم في الموضوع، ما يسمح بتعدد المشتركين مع الحفاظ على ترتيب البيانات. من خلال الجمع بين نموذجَي المراسلة هذين، يقدم Kafka مزايا كليهما. يعمل Kafka أيضًا كنظام تخزين ذي قابلية كبيرة للتوسع والتسامح مع الأخطاء من خلال كتابة جميع البيانات وإجراء نسخ متماثل لها على القرص. بشكل افتراضي، يحتفظ Kafka بالبيانات المخزنة على القرص حتى نفاد المساحة، ولكن يمكن للمستخدم أيضًا تعيين حد للاحتفاظ بالبيانات. يحتوي Kafka على أربع واجهات برمجة تطبيقات (API):
- واجهة برمجة تطبيقات المنتِج: تُستخدم لنشر تدفق من السجلات لموضوع Kafka محدد.
- واجهة برمجة تطبيقات المستهلك: تُستخدم للاشتراك في الموضوعات ومعالجة تدفقات السجلات الخاصة بها.
- واجهة برمجة تطبيقات التدفقات: تمكِّن التطبيقات من العمل كمعالجات تدفق تستقبل تدفق الإدخال من موضوع واحد أو أكثر وتحوله إلى تدفق إخراج ينتقل إلى موضوع إخراج مختلف، سواء كان واحدًا أو أكثر.
- واجهة برمجة تطبيقات الموصل: تسمح للمستخدمين بأتمتة إضافة تطبيق أو نظام بيانات آخر إلى موضوعات Kafka الحالية بسلاسة.
ما الاختلافات بين Apache Kafka وRabbitMQ؟
RabbitMQ هو وسيط رسائل مفتوح المصدر يستخدم نهج قائمة انتظار الرسائل. تُوزع قوائم الانتظار عبر مجموعة من العُقد ويُجرى لها نسخ متماثل بشكل اختياري، حيث لا تُسلم كل رسالة إلا إلى مستهلك واحد فقط.
السمات |
Apache Kafka |
RabbitMQ |
البنية |
يستخدم نظام Kafka نموذج السجلات المقسَّمة، الذي يجمع بين نهج قائمة انتظار الرسائل ونهج الاشتراك والنشر. |
يستخدم RabbitMQ قائمة انتظار الرسائل. |
قابلية التوسع |
يوفر Kafka قابلية التوسع من خلال السماح بتوزيع الأقسام عبر خوادم مختلفة. |
يزيد عدد المستهلكين في قائمة الانتظار لتوسيع نطاق المعالجة عبر هؤلاء المستهلكين المتنافسين. |
الاحتفاظ بالرسائل |
يستند إلى السياسات. فمثلاً، يمكن تخزين الرسائل ليوم واحد. ويمكن للمستخدم تكوين هذه الفترة الزمنية الخاصة بالاحتفاظ. |
يستند إلى الإقرارات، ما يعني أن الرسائل تُحذف بمجرد استهلاكها. |
المستهلكون المتعددون |
يمكن للمستهلكين المتعددين الاشتراك في الموضوع نفسه؛ لأن Kafka يسمح بإعادة تشغيل الرسالة نفسها لفترة زمنية معينة. |
لا يمكن أن يتلقى المستهلكون المتعددون الرسالة نفسها؛ لأن الرسائل تُزال بمجرد استهلاكها. |
الاستنساخ |
يُجرى نسخ متماثل للموضوعات تلقائيًا، ولكن يمكن للمستخدم تكوين الموضوعات يدويًا لإيقاف النسخ المتماثل. |
لا يُجرى نسخ متماثل للرسائل تلقائيًا، ولكن يمكن للمستخدم تكوينها يدويًا لتفعيل النسخ المتماثل. |
ترتيب الرسائل |
يتلقى كل مستهلك المعلومات بالترتيب بسبب هيكلة السجلات المقسَّمة. |
تُسلم الرسائل إلى المستهلكين بترتيب وصولهم إلى قائمة الانتظار. إذا كان هناك مستهلكون متنافسون، فسيعالج كل مستهلك مجموعة فرعية من تلك الرسالة. |
البروتوكولات |
يستخدم Kafka بروتوكولاً ثنائيًا عبر بروتوكول التحكم في الإرسال (TCP). |
بروتوكول قائمة انتظار الرسائل المتقدم (AMQP) بدعم من المكونين الإضافيين MQTT وSTOMP. |
كيف تساعدك AWS في تلبية متطلبات Kafka؟
اقرأ المزيد حول كيفية نشر Kafka يدويًا على AWS هنا.
تقدم AWS أيضًا Amazon MSK، الخدمة المُدارة بالكامل الأكثر توافقًا وتوافرًا وأمانًا لـ Apache Kafka، ما يمكِّن العملاء من ملء مخازن البيانات، وتدفق التغييرات من قواعد البيانات وإليها، وتشغيل تطبيقات تعلّم الآلة والتحليلات. مع Amazon MSK، يمكن للعملاء قضاء وقت أقل في إدارة البنية التحتية ووقت أكبر في إنشاء التطبيقات. تعرَّف على المزيد حول Amazon MSK.