حدود المعدَّل

وتعمل واجهة برمجة تطبيقات "إعلانات Google" على تجميع طلبات تحديد المعدّل حسب طلبات البحث في الثانية (QPS) لكل رقم تعريفي للعميل ورمز مميز للمطوِّر، ما يعني أنّه يتم فرض قياس حصة القراءة المجانية بشكل مستقل على كلٍّ من الأرقام التعريفية للعملاء والرموز المميّزة للمطوِّرين. تستخدم واجهة برمجة التطبيقات في "إعلانات Google" خوارزمية مجموعة بيانات الرمز المميّز لقياس الطلبات وتحديد حد عدد طلبات البحث في الثانية المناسب، وبالتالي سيختلف الحدّ الأقصى المسموح به استنادًا إلى إجمالي التحميل على الخادم في أي وقت.

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

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

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

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

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

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

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

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

بالإضافة إلى ذلك، يمكنك التحكم في عدد الطلبات في الثانية (QPS) من جهة العميل (راجِع محددات التقييد ومعدّل البحث).

طلبات التجميع

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

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

حدود التقييد ومعدّل السرعة

بالإضافة إلى الحد من إجمالي عدد سلاسل الرسائل في تطبيق العميل، يمكنك أيضًا تنفيذ مُحدِّدات المعدّل من جهة العميل. قد يضمن ذلك خضوع جميع سلاسل العمليات و / أو المجموعات لحدّ معيّن من عدد الطلبات في الثانية (QPS) من جانب العميل.

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

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

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

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

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