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

RabbitMQ / المتقدم: الملكية المرتبة والإعادة المحتفظ بها وقبول التعافي / الدرس 15

التدفقات والاحتفاظ وإعادة القراءة بالإزاحة

اختيار قراءة محتفظ بها غير مدمرة عند طلب إعادة مستقلة مع وضوح ضمانات البروتوكول.

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

أهداف الدرس

  • تمييز قراءة التدفق من استهلاك الصف المدمر.
  • مراجعة الاحتفاظ وإزاحات المستهلك ونطاق إزالة تكرار المنتج.

يحتفظ التدفق بالتاريخ مستقلاً عن قارئ واحد

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

يعرض البروتوكول المخصص سلوك التدفق الخاص

يمكن الوصول إلى Streams بمسارات RabbitMQ مدعومة، منها بروتوكول وعملاء مخصصون بقدرات التدفق الخاصة. لا تفترض تطابق إقرار قناة AMQP 0-9-1 أو الجلب أو TTL للصف مع البروتوكول المخصص. راجع تجاور اتصال العميل وواجهات الإزاحة ودعم الميزات للتنفيذ المختار. تقسم super streams تدفقاً منطقياً وتضيف قرارات توجيه وملكية؛ ويبقى الترتيب ضمن مسار القسم المصمم، لا عالمياً بين الأقسام. لا يحول إعلان صف تقليدي بنوع مختلف صفاً ممتلئاً قائماً إلى تدفق في المكان. خطط ترحيل البنية والمستهلك صراحة.

الإزاحة موضع وليست نسخة احتياطية

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

اختيار نطاق محتفظ به معلن محلياً

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

python اختيار إعادة غير مدمر محلي
retained = [(10, 'evt-a'), (11, 'evt-b'), (12, 'evt-c'), (13, 'evt-d')]
restart_at = 12
selected = [event_id for offset, event_id in retained if offset >= restart_at]
assert selected == ['evt-c', 'evt-d']
assert len(retained) == 4
print(selected)
الناتج المتوقع
['evt-c', 'evt-d']

يختار سجلين مع بقاء المدخلات الأربعة؛ ولا يعمل بروتوكول تدفق.

json عقد إعادة تدفق اصطناعي
{"stream":"lab.parcel-history","reader_protocol":"dedicated-stream-protocol","restart_offset":12,"stop_offset_inclusive":13,"destination_policy":"stable-operation-identity"}

النطاق واتفاق الإزاحة افتراضات تطبيق معلنة، لا إعداد عميل حي.

التحقق من تغطية الإعادة وإسقاطها

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

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

افتراض حفظ الإزاحة رسائل مصدرها إلى الأبد.

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

نسخ قواعد إقرار الصف إلى عميل تدفق دون تغيير.

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

تكرار أثر عمل خارجي عند الإعادة.

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

اختبر فهمك

1. هل تنشئ قراءة نطاق التدفق مرتين واقعتين تجاريتين مستقلتين بالضرورة؟

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

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

2. هل تستعيد إزاحة سجلات حذفها الاحتفاظ؟

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

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

أهم ما تعلمته

  • تحتفظ التدفقات بتاريخ قابل للإعادة ودلالات تقدم خاصة.
  • تحتاج تغطية الإعادة وسلامة الأثر الخارجي فحوصاً مستقلة.

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