محتويات الدورة

Apache Kafka / الأساسي: السجلات والأقسام وتقدم القارئ / الدرس 2

الأقسام والمفاتيح والترتيب

تصميم نطاق الترتيب وفهم أثر عدد الأقسام في افتراضات التوجيه.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • شرح الإزاحات والترتيب داخل القسم.
  • اختيار مفتاح يطابق التسلسل التجاري المطلوب.

الترتيب يخص القسم

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

استخدام الموضوع والقسم والإزاحة معاً

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

python إحداثيات محلية للقسم
coordinates = [('parcels', 0, 0), ('parcels', 1, 0)]
assert len(set(coordinates)) == 2
print(len(set(coordinates)))
الناتج المتوقع
2

تساوي أرقام الإزاحات لا يعني تطابق موضع السجل.

اختيار التجميع وفق قواعد العمل

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

فهم تغيير عدد الأقسام

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

python نموذج توجيه حسابي معلن
training_hash = 5
assert training_hash % 3 == 2
assert training_hash % 4 == 1
print(training_hash % 3, training_hash % 4)
الناتج المتوقع
2 1

يوضح انتقالاً يعتمد على العدد ولا ينفذ تجزئة Kafka.

الفصل بين ترتيب الوسيط واكتمال التطبيق

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

الأخطاء الشائعة وإصلاحها

اكتمال تحديثين للطرد بترتيب معكوس.

لماذا يحدث؟
إهمال ترتيب القسم في المعالجة غير المتزامنة.
كيف تصلحه؟
سلسل معالجة المفتاح أو طبق قاعدة إصدار مناسبة في الوجهة.
كيف تتجنب تكراره؟
اختبر أعمالاً متداخلة للمفتاح نفسه.

افتراض بقاء توجيه المفاتيح بعد زيادة الأقسام.

لماذا يحدث؟
اعتماد خريطة التوجيه على عدد الأقسام السابق.
كيف تصلحه؟
صمم ترحيلاً يراعي مواضع البيانات القديمة والجديدة.
كيف تتجنب تكراره؟
راجع الترتيب قبل تغيير بنية الموضوع.

تسجيل إزاحة دون الموضوع أو القسم.

لماذا يحدث؟
اعتبار الموضع المحلي فريداً عالمياً.
كيف تصلحه؟
سجل إحداثيات السجل الكاملة ومعرف الحدث التجاري.
كيف تتجنب تكراره؟
وحد سياق التشخيص في شفرة المستهلك.

اختبر فهمك

1. موضوع بأربعة أقسام وسبعة مستهلكين تقليديين؛ كم مستهلكاً يمكنه امتلاك أقسام بالتزامن؟

اعرض الحل المشروح

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

2. هل تدمج الطوابع الزمنية تاريخ قسمين في تسلسل تجاري مضمون؟

اعرض الحل المشروح

ليس بمفردها؛ فاختلاف الساعات وتساوي الأزمنة والوصول المتأخر تحتاج قواعد صريحة. قد يختار الدمج ترتيب عرض حتمياً، لكنه لا يثبت الترتيب السببي. ضع العمليات التي تحتاج تسلسلاً صارماً داخل حدود ترتيب مصممة.

أهم ما تعلمته

  • يفيد ترتيب القسم عندما تحافظ المعالجة على نطاقه.
  • يوازن اختيار المفتاح بين تجميع الأحداث وتفاوت الحمل وتعقيد الترحيل.

المراجع الرسمية