الحدود القصوى لمعدّل الطلبات

تُجمِّع Google Ads API طلبات الحدّ الأقصى لمعدّل الطلبات حسب طلبات البحث في الثانية لكلّ رقم تعريف عميل (CID) ورمز مميّز للمطوّر، ما يعني أنّ القياس يتمّ بشكل مستقلّ على كلّ من أرقام تعريف العملاء والرموز المميّزة للمطوّرين. تستخدم Google Ads API خوارزمية مخزن الرموز المميّزة لقياس الطلبات وتحديد حدّ أقصى مناسب لمعدّل الطلبات في الثانية ، لذا سيختلف الحدّ الأقصى الدقيق حسب حمل الخادم الإجمالي في أيّ وقت معيّن.

إنّ الغرض من فرض الحدود القصوى لمعدّل الطلبات هو منع مستخدم واحد من تعطيل الخدمة للمستخدمين الآخرين من خلال إغراق خوادم Google Ads API بكمية كبيرة من الطلبات (إمّا عن قصد أو عن غير قصد).

سيتمّ رفض الطلبات التي تنتهك الحدود القصوى لمعدّل الطلبات مع ظهور الخطأ: RESOURCE_TEMPORARILY_EXHAUSTED.

يمكنك التحكّم في تطبيقك وتخفيف الحدود القصوى لمعدّل الطلبات من خلال تقليل عدد الطلبات بشكل نشط والحدّ من معدّل الطلبات في الثانية من جهة العميل.

هناك عدد من الطرق لتقليل فرص تجاوز الحدّ الأقصى لمعدّل الطلبات. يمكن أن يساعدك التعرّف على مفاهيم أنماط التكامل في المؤسسات (EIP) مثل المراسلة وإعادة التسليم والحدّ من معدّل الطلبات، في إنشاء تطبيق عميل أكثر فعالية.

في ما يلي أفضل الممارسات المقترَحة مرتّبة حسب درجة التعقيد، مع وضع الاستراتيجيات الأبسط في الأعلى والبنيات الأكثر فعالية ولكنّها متطورة بعد ذلك:

الحدّ من المهام المتزامنة

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

يُنصح بضبط حدّ أعلى معقول لإجمالي عدد المهام المتزامنة التي ستُرسِل طلبات (على مستوى جميع العمليات والأجهزة)، وتعديل هذا الحدّ للأعلى لتحسين معدّل نقل البيانات بدون تجاوز الحدّ الأقصى لمعدّل الطلبات.

علاوةً على ذلك، يمكنك الحدّ من معدّل الطلبات في الثانية من جهة العميل (اطّلِع على الحدّ من معدّل الطلبات وأدوات الحدّ من معدّل الطلبات).

تجميع الطلبات في دفعة واحدة

ننصحك بتجميع عمليات متعدّدة في طلب واحد. ينطبق ذلك بشكل أساسي على طلبات MutateFoo. على سبيل المثال، إذا كنت تعدِّل حالة عدّة نماذج من AdGroupAd، بدلاً من استدعاء MutateAdGroupAds مرة واحدة لكلّ AdGroupAd، يمكنك استدعاء MutateAdGroupAds مرة واحدة، وتمرير عدّة operations. راجِع إرشادات العمليات المجمّعة للاطّلاع على بعض الأمثلة الإضافية.

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

الحدّ من معدّل الطلبات وأدوات الحدّ من معدّل الطلبات

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

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

الإضافة إلى قائمة المحتوى التالي

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

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

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