Apache Kafka – سير العمل

Apache Kafka

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

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

سير عمل الرسائل Pub-Sub

فيما يلي خطوات سير العمل الحكيمة لرسائل Pub-Sub –

يرسل المنتجون رسالة إلى موضوع ما على فترات منتظمة.

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

يشترك المستهلك في موضوع محدد.

بمجرد اشتراك المستهلك في موضوع ما، سيوفر كافكا الإزاحة الحالية للموضوع للمستهلك ويحفظ أيضًا الإزاحة في مجموعة Zookeeper.

سيطلب المستهلك كافكا في فترة زمنية منتظمة (مثل 100 مللي ثانية) للرسائل الجديدة.

بمجرد أن يتلقى كافكا الرسائل من المنتجين، فإنه يعيد توجيه هذه الرسائل إلى المستهلكين.

سوف يتلقى المستهلك الرسالة ويعالجها.

بمجرد معالجة الرسائل، سيقوم المستهلك بإرسال إقرار إلى وسيط كافكا.

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

سوف يتكرر هذا التدفق أعلاه حتى يتوقف المستهلك عن الطلب.

لدى المستهلك خيار الترجيع/التخطي إلى الإزاحة المطلوبة للموضوع في أي وقت وقراءة جميع الرسائل اللاحقة.

سير عمل رسائل قائمة الانتظار / مجموعة المستهلكين

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

يرسل المنتجون رسالة إلى موضوع ما في فترة زمنية منتظمة.

يقوم كافكا بتخزين كافة الرسائل في الأقسام التي تم تكوينها لهذا الموضوع المحدد على غرار السيناريو السابق.

يشترك مستهلك واحد في موضوع محدد، افترض أن الموضوع-01 مع معرف المجموعة هو المجموعة-1.

يتفاعل كافكا مع المستهلك بنفس طريقة مراسلة Pub-Sub حتى يشترك المستهلك الجديد في نفس الموضوع، الموضوع-01 بنفس معرف المجموعة مثل المجموعة-1.

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

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

تُسمى هذه الميزة أيضًا باسم مجموعة المستهلكين. وبنفس الطريقة، سيوفر كافكا أفضل ما في كلا النظامين بطريقة بسيطة وفعالة للغاية.

مهام ودور ZooKeeper

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

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

Related posts

Apache Kafka نظرة عامة

تحليل البيانات الضخمة – متخصص علوم البيانات

Cassandra – نموذج البيانات