معالجة أخطاء الاتصال العابرة لقاعدة بيانات Azure ل PostgreSQL - الخادم المرن

يطبق على: قاعدة بيانات Azure لـ PostgreSQL - الخادم المرن

توضح هذه المقالة كيفية معالجة الأخطاء العابرة المتصلة بقاعدة بيانات Azure لخادم PostgreSQL المرن.

الأخطاء العابرة

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

معالجة الأخطاء العابرة

يجب معالجة الأخطاء العابرة باستخدام منطق إعادة المحاولة. الحالات التي يجب وضعها في الاعتبار:

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

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

  • الانتظار لمدة 5 ثوانٍ قبل إعادة المحاولة الأولى.
  • لكل إعادة محاولة تالي، قم بزيادة الانتظار بشكل أسي، حتى 60 ثانية.
  • قم بتعيين الحد الأقصى لعدد مرات إعادة المحاولة، وعند هذه النقطة يعتبر تطبيقك أن العملية فشلت.

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

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

عندما يتصل برنامجك بقاعدة بيانات Azure لخادم PostgreSQL المرن من خلال برنامج وسيط تابع لجهة خارجية، اسأل المورد عما إذا كان البرنامج الوسيط يحتوي على منطق إعادة المحاولة للأخطاء العابرة.

تأكد من اختبار منطق إعادة المحاولة. على سبيل المثال، حاول تنفيذ التعليمات البرمجية الخاصة بك أثناء توسيع نطاق موارد الحوسبة أو خفضها لمثيل الخادم المرن ل Azure Database for PostgreSQL. يجب أن يتعامل تطبيقك مع وقت التعطل القصير الذي تمت مواجهته أثناء هذه العملية دون أي مشكلات.