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