تشخيص واستكشاف أخطاء توفر Azure Cosmos DB SDKs في البيئات متعددة المناطق وإصلاحها

ينطبق على: NoSQL

توضح هذه المقالة سلوك أحدث إصدار من Azure Cosmos DB SDKs عندما ترى مشكلة في الاتصال بمنطقة معينة أو عند حدوث تجاوز فشل منطقة.

تمنحك جميع Azure Cosmos DB SDKs خيارا لتخصيص التفضيل الإقليمي. تُستخدم الخصائص التالية في حزم SDK مختلفة:

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

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

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

إذا لم تقم بتعيين منطقة مفضلة، فسيتم تعيين عميل SDK افتراضياً على المنطقة الأساسية:

نوع الحساب القراءات الكتابات
منطقة كتابة واحدة المنطقة الأساسية المنطقة الأساسية
مناطق كتابة متعددة المنطقة الأساسية المنطقة الأساسية

ملاحظة

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

تحذير

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

في ظل الظروف العادية، سيتصل عميل SDK بالمنطقة المفضلة (إذا تم تعيين تفضيل إقليمي) أو بالمنطقة الأساسية (إذا لم يتم تعيين تفضيل)، وستقتصر العمليات على تلك المنطقة، ما لم يكن هناك أي من السيناريوهات التالية تحدث.

في هذه الحالات، يعرض العميل الذي يستخدم Azure Cosmos DB SDK السجلات ويتضمن معلومات إعادة المحاولة كجزء من معلومات تشخيص العملية:

  • الخاصية RequestDiagnosticsString على الاستجابات في NET. V2 SDK.
  • خاصية التشخيص في الاستجابات والاستثناءات في NET. V3 SDK.
  • طريقة الحصول على تشخيص () في الاستجابات والاستثناءات في Java V4 SDK.

عند تحديد المنطقة التالية بترتيب التفضيل، سيستخدم عميل SDK قائمة منطقة الحساب، مع إعطاء الأولوية للمناطق المفضلة (إن وجدت).

للحصول على تفاصيل شاملة عن ضمانات اتفاقية مستوى الخدمة (SLA) أثناء هذه الأحداث، راجع اتفاقيات مستوى الخدمة للتوفر.

إزالة منطقة من الحساب

عند إزالة منطقة من حساب Azure Cosmos DB، سيكتشف أي عميل SDK يستخدم الحساب بنشاط إزالة المنطقة من خلال رمز استجابة الخلفية. يقوم العميل بعد ذلك بوضع علامة على نقطة النهاية الإقليمية على أنها غير متوفرة. يقوم العميل بإعادة محاولة العملية الحالية ويتم توجيه جميع العمليات المستقبلية بشكل دائم إلى المنطقة التالية بترتيب التفضيل. في حالة احتواء قائمة التفضيلات على إدخال واحد فقط (أو كانت فارغة) ولكن الحساب به مناطق أخرى متاحة، فسيتم توجيهها إلى المنطقة التالية في قائمة الحسابات.

إضافة منطقة إلى حساب

كل 5 دقائق، يقرأ عميل Azure Cosmos DB SDK تكوين الحساب ويحدث المناطق التي يدركها.

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

إذا قمت بتكوين العميل بحيث يفضل الاتصال بمنطقة لا يمتلكها حساب Azure Cosmos DB، يتم تجاهل المنطقة المفضلة. إذا أضفت هذه المنطقة لاحقاً، يكتشفها العميل وسيتحول إلى تلك المنطقة بشكل دائم.

فشل في منطقة الكتابة في حساب منطقة كتابة واحدة

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

الانقطاع الإقليمي

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

ضمانات تناسق الجلسة

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

مشكلات الاتصال العابرة على بروتوكول تحكم الإرسال

في السيناريوهات التي تم فيها تكوين عميل Azure Cosmos DB SDK لاستخدام بروتوكول TCP، لطلب معين، قد تكون هناك حالات تؤثر فيها ظروف الشبكة مؤقتا على الاتصال بنقطة نهاية معينة. يمكن أن تظهر حالات الشبكة المؤقتة هذه على أنها انتهاء مهلة بروتوكول تحكم الإرسال وأخطاء الخدمة غير متوفرة (بروتوكول نقل نص تشعبي 503). سيعيد العميل، إن أمكن، محاولة الطلب محلياً على نفس نقطة النهاية لبضع ثوانٍ.

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

الخطوات التالية