Google Cloud / المتوسط: عقود الخدمات وتشغيلها / الدرس 11
تسليم Pub/Sub وعدم تكرار الأثر
اربط التسليم والإقرار والترتيب والإعادة وأثر التطبيق دون وعد مرة واحدة للأعمال.
في هذه الصفحة
أهداف الدرس
- تمييز الموضوع والاشتراك وتقدم المستهلك.
- شرح التسليم المكرر وتوقيت الإقرار.
- نمذجة عدم تكرار المعالجة والصف المحدود.
للاشتراك حالة تسليم مستقلة
ينشر المنتج الرسائل إلى موضوع، وتحدد الاشتراكات طريقة استقبالها وتتبعها. يتقاسم مستهلكو الاشتراك الواحد عمله عادة، بينما قد تسلم الاشتراكات المنفصلة الرسائل إلى تطبيقات مستقلة. اختر pull أو push أو التصدير المدعوم وفق العقد الموثق، لا بافتراض أن كل قارئ يرى كل رسالة مستقلا.
يختلف نجاح النشر من نجاح أثر الأعمال. قد يتكرر التسليم تحت السلوك العادي مرة واحدة على الأقل، وقد تنشئ إعادة النشر تكرارا بطبقة أخرى. حدد هوية حدث تطبيق مستقرة ومخطط الحمولة والاحتفاظ ومالك المستهلك قبل الاعتماد على الصف كمصدر حقيقة.
يحتاج المعالج الواعي بالتكرار تصميما دائما فعليا
يحفظ البرنامج الأول مجموعة معرفات أحداث اصطناعية ويحسب كل حدث مرة. يوضح مفهوم مفتاح عدم التكرار ولا يضمن حذفه موزعا. تفقد المجموعة المحلية عند إعادة العملية وقد تتسابق العاملات عليها. في الواقع تحتاج علامة المعالجة وأثر الأعمال إلى بروتوكول ذري أو اتساق مبرر آخر.
أقر الرسالة وفق سياسة النجاح المقصودة فقط. قد يفقد الإقرار قبل تسجيل المطلوب بأمان عملا، وقد ينتج عن تسجيل الأثر ثم فشل الإقرار محاولة مكررة. عالج الرسائل السامة وخطأ المخطط والآثار الجزئية بإعادة محدودة ومسار مراجعة، لا بحلقة انهيار مفتوحة.
deliveries = [("event-a", 10), ("event-a", 10), ("event-b", 20)]
seen = set()
total = 0
for event_id, amount in deliveries:
if event_id in seen: continue
seen.add(event_id)
total += amount
print(f"deliveries={len(deliveries)} unique={len(seen)} total={total}")
deliveries=3 unique=2 total=30
تمثل ثلاثة تسليمات حدثين بمجموع 30، والمجموعة ليست حلا إنتاجيا.
لضمان التسليم نطاق صريح
التسليم مرة واحدة قدرة اختيارية موثقة للاشتراكات المدعومة من نوع pull، بما فيها StreamingPull، بشروط إقليمية. ليست خاصية عامة لـpush أو كل تصدير. ولا تجعل نشرات فريدة مستقلة أو أثر قاعدة مرة واحدة للتطبيق. اقرأ متطلبات الإقرار ونقطة النهاية الحالية للعميل المحدد.
الترتيب عقد اختياري آخر بمفتاح وترتيبات إقليمية؛ وليس FIFO عالميا افتراضيا لكل الرسائل. قد يؤثر انقضاء مهلة الإقرار وتشبع التدفق وفشل المستهلك في التقدم. افصل الترتيب ووحدانية التسليم وعدم تكرار الأثر وذرية معاملة الأعمال كمتطلبات مستقلة.
قياس الوصول والمعالجة بوحدات
يفترض البرنامج الثاني وصول120 رسالة في الدقيقة وقدرة معالجة100، فينمو المتراكم عشرين كل دقيقة تحت نموذج ثابت مبسط. لا يقيس إنجاز Pub/Sub أوحصته أوالاحتفاظ الفعلي. قد تزيد الإعادات الوصول والعمل الفعالين، فيقلل معدل الحدث الفريد وحده تقدير حمل المستهلك.
استخدم ضبط التدفق وتزامنا محدودا لحماية الذاكرة والخدمات التابعة. قد تخفي زيادة مهلة الإقرار العرض دون إصلاح البطء. تتبع عمر الأقدم غير المقر والمتراكم وأخطاء المعالجة وتشبع الاعتماد بمقاييس موثقة. ولتوجيه الميت وسلوك محاولات التسليم صلاحيات وإعدادات ودلالة خاصة.
arrivals_per_minute = 120
processed_per_minute = 100
minutes = 5
growth = max(0, arrivals_per_minute - processed_per_minute)
print(f"growth_per_minute={growth} added_backlog={growth * minutes}")
growth_per_minute=20 added_backlog=100
تضيف خمس دقائق مئة رسالة تحت المعدلين المخترعين الثابتين.
يشمل عقد المستهلك الإعادة والتعافي
حدد تغير المخطط وإعادة البث وانقضاء الاحتفاظ وهوية المستهلك ومراجعة الميت. قد تعيد replay الأحداث القديمة قصدا، فيجب أن يطابق أفق عدم تكرار التطبيق الحاجة العملية. احم منح الموضوع والاشتراك مستقلة عن سلطة المستهلك على قاعدة الهدف.
اختبر المكرر وغير المرتب والمتأخر والمعيب والجزئي في بيئة معزولة مخولة قبل التنفيذ. وثق حد الإقرار وسلوك إعادة التشغيل. لا ينشر الدرس رسالة ولا يفتح اشتراكا ولا يفحص ضمان تسليم سحابي؛ الذي ينفذ هو الأمثلة المحلية فقط.
الأخطاء الشائعة وإصلاحها
تعد الراية معالجة قاعدة مرة واحدة.
- لماذا يحدث؟
- اختلط النقل بمعاملة الأعمال.
- كيف تصلحه؟
- صمم الهوية والأثر والعلامة الذرية.
- كيف تتجنب تكراره؟
- راجع تكرار الناشر والإعادة.
يقر قبل تسجيل العمل.
- لماذا يحدث؟
- سبق التقدم حد النجاح الدائم.
- كيف تصلحه؟
- اربط الإقرار بسياسة المعالجة.
- كيف تتجنب تكراره؟
- اختبر جانبي الانهيار.
ينمو التراكم رغم مهلة أكبر.
- لماذا يحدث؟
- بقيت السعة أو التشبع.
- كيف تصلحه؟
- قسالمعدلات والتدفق والإعادة والتابع.
- كيف تتجنب تكراره؟
- استخدم قبولا محدودا ودليل صحة.
اختبر فهمك
1. تحدث رسالة القاعدة وتنهار قبل الإقرار. ماالمطلوب للتالي؟
اعرض الحل المشروح
قد يكون تحديث القاعدة السابق ملتزما بالفعل. يجب أن يحدد المستهلك حدث التطبيق نفسه ويتجنب تكرار أثر غير قابل للتكرار، باستخدام اتساق دائم لا set داخل عملية. أقر وفق حد النجاح المحدد. لا تثبت إعدادات التسليم وحدها معاملة ذرية مع قاعدة التطبيق، ولا تزيل نشرات مكررة ذات معرفات نقل مختلفة.
2. لماذا يحتاج المرتب سياسة فشل وإعادة؟
اعرض الحل المشروح
يقيد الترتيب علاقات تسليم مدعومة، لكن قد يفشل مستهلك أو يفوته الإقرار أو يواجه حمولة خاطئة أو أثرا مجهول الالتزام. حدد الإعادات والسام وأخطاء التابع وتقدم كل مفتاح. لا تفسر الترتيب كتحقق بيانات أوإنجاز بلا حد أوضمان نجاح كل فعل أعمال مرة واحدة. يحتاج هذا المعنى بروتوكول التطبيق نفسه.
أهم ما تعلمته
- التسليم والترتيب والإقرار والأثر عقود منفصلة.
- ينجو عدم التكرار من الفشل المستهدف.
- لا يفحص النموذج المحلي ضمان Pub/Sub أوحصته.