أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
توفّر سياسة "الحظر المرتفع" الحماية من الارتفاعات المفاجئة في حركة المرور باستخدام العنصر <Rate>
. هذا النمط
الحد من عدد الطلبات التي تتم معالجتها بواسطة وكيل واجهة برمجة التطبيقات وإرسالها إلى إحدى الخلفيات،
للحماية من حالات تأخُّر الأداء وفترات التوقف عن العمل.
عنصر واحد (<SpikeArrest>
)
تحدِّد هذه السياسة سياسة الاعتقالات المرتفعة.
القيمة التلقائية | يمكنك الاطّلاع على علامة التبويب السياسة التلقائية أدناه. |
هل هو مطلوب؟ | اختياري |
النوع | معقد كائن |
العنصر الرئيسي | timing fixed in amara |
العناصر الفرعية |
<Identifier> <MessageWeight> <Rate> (مطلوبة)<UseEffectiveCount> |
البنية
يستخدم العنصر <SpikeArrest>
الصيغة التالية:
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <DisplayName>display_name</DisplayName> <Properties/> <Identifier ref="flow_variable"/> <MessageWeight ref="flow_variable"/> <Rate ref="flow_variable">rate[pm|ps]</Rate> <UseEffectiveCount>[false|true]</UseEffectiveCount> </SpikeArrest>
السياسة التلقائية
يُظهر المثال التالي الإعدادات التلقائية عند إضافة سياسة "سباق عقاب" إلى التدفق في واجهة مستخدم Edge:
<SpikeArrest async="false" continueOnError="false" enabled="true" name="Spike-Arrest-1"> <DisplayName>Spike Arrest-1</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <MessageWeight ref="request.header.weight"/> <Rate>30ps</Rate> <UseEffectiveCount>true</UseEffectiveCount> </SpikeArrest>
يتضمن هذا العنصر السمات التالية الشائعة لجميع السياسات:
السمة | تلقائي | مطلوب | الوصف |
---|---|---|---|
name |
لا ينطبق | مطلوب |
الاسم الداخلي للسياسة. يمكن أن تحتوي قيمة السمة اختياريًا، يمكنك استخدام العنصر |
continueOnError |
false | إجراء اختياري | يمكنك ضبطها على "خطأ" لعرض رسالة خطأ عند تعذّر تنفيذ إحدى السياسات. ويُعدّ هذا سلوكًا متوقعًا في معظم السياسات. يمكنك ضبط القيمة على "صحيح" للاستمرار في تنفيذ العملية حتى بعد تعذُّر تنفيذ سياسة. |
enabled |
صحيح | إجراء اختياري | اضبط القيمة على "true" لفرض السياسة. اضبط هذه القيمة على "false" على "إيقاف" السياسة. لن يتم فرض السياسة حتى إذا ظلت مرتبطة بتدفق. |
async |
false | منهي العمل به | تم إيقاف هذه السمة نهائيًا. |
أمثلة
توضّح الأمثلة التالية بعض الطرق التي يمكنك من خلالها استخدام سياسة "القبضة القاسية":
مثال 1
يوضح المثال التالي السعر على خمسة في الثانية:
<SpikeArrest name="Spike-Arrest-1"> <Rate>5ps</Rate> </SpikeArrest>
تعمل السياسة على تبسيط معدّل الضريبة إلى طلب واحد مسموح به كل 200 مللي ثانية. (5/1000).
مثال 2
يوضح المثال التالي السعر على 12 في الدقيقة:
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> </SpikeArrest>
يعمل هذا المثال على تخفيض السعر إلى طلب واحد مسموح به كل خمسة الثواني (60/12).
مثال 3
يقصر المثال التالي الطلبات على 12 في الدقيقة (يُسمح بطلب واحد كل خمسة ثانية، أو 60/12):
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> <Identifier ref="client_id" /> <MessageWeight ref="request.header.weight" /> </SpikeArrest>
بالإضافة إلى ذلك، يقبل العنصر <MessageWeight>
القيمة المخصّصة (
weight
) تعمل على تعديل ترجيحات الرسائل لتطبيقات أو برامج محدّدة. هذا النمط
تحكمًا إضافيًا في التقييد للكيانات التي يتم تحديدها من خلال
العنصر <Identifier>
.
مثال 4
يوضح المثال التالي تعليمات Spike Arrest للبحث عن قيمة بيئة تشغيل تم تحديدها عبر
يتم تمريره كمتغيّر تدفق request.header.runtime_rate
:
<SpikeArrest name="Spike-Arrest-1"> <Rate ref="request.header.runtime_rate" /> </SpikeArrest>
يجب أن تكون قيمة متغيّر التدفق في الشكل intpm
أو
intps
لتجربة هذا المثال، يمكنك تنفيذ طلب كما يلي:
curl http://myorg-myenv.apigee.net/price -H 'runtime_rate:30ps'
مرجع العنصر الثانوي
يصف هذا القسم العناصر الثانوية في <SpikeArrest>
.
<DisplayName>
استخدِمه مع السمة name
لتصنيف السياسة في
لإدارة الخادم الوكيل لواجهة المستخدم باستخدام اسم مختلف وطبيعي أكثر.
يُعدّ العنصر <DisplayName>
شائعًا في جميع السياسات.
القيمة التلقائية | timing fixed in amara |
هل هو مطلوب؟ | اختياريّ. إذا لم يتم حذف <DisplayName> ، يتم استخدام قيمة
يتم استخدام سمة name في السياسة |
النوع | سلسلة |
العنصر الرئيسي | <PolicyElement> |
العناصر الفرعية | لا ينطبق |
يستخدم العنصر <DisplayName>
الصيغة التالية:
البنية
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
مثال
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
لا يحتوي العنصر <DisplayName>
على سمات أو عناصر ثانوية
<Identifier>
تتيح لك اختيار طريقة تجميع الطلبات لتطبيق سياسة "الاعتقال المرتفع" استنادًا إلى على العميل. على سبيل المثال، يمكنك تجميع الطلبات حسب رقم تعريف المطوّر، وفي هذه الحالة يكون كل طلب سيتم احتساب طلبات المطوّرين ضمن "معدل الاعتقال المرتفع" ولن يتم احتساب جميع الطلبات المقدّمة إلى الخادم الوكيل.
يمكنك استخدامه مع العنصر <MessageWeight>
للحصول على نتائج أكثر دقة.
التحكم في تقييد الطلبات.
في حال ترك عنصر <Identifier>
فارغًا، يتم فرض حد لمعدّل الضريبة على جميع الطلبات.
إلى الخادم الوكيل لواجهة برمجة التطبيقات هذا.
القيمة التلقائية | timing fixed in amara |
هل هو مطلوب؟ | اختياري |
النوع | سلسلة |
العنصر الرئيسي |
<SpikeArrest>
|
العناصر الفرعية | لا ينطبق |
البنية
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Identifier ref="flow_variable"/> </SpikeArrest>
مثال 1
يطبّق المثال التالي سياسة "تثبيت الارتفاعات العالية" حسب رقم تعريف المطوّر:
<SpikeArrest name="Spike-Arrest-1"> <Identifier ref="developer.id"/> <Rate>42pm</Rate/> </SpikeArrest>
يوضّح الجدول التالي سمات <Identifier>
:
السمة | الوصف | تلقائي | التواجد في المنزل |
---|---|---|---|
ref |
تحدد المتغير الذي يتم من خلاله تجميع الطلبات التي تأتي من خلال "إزالة القبضة للسباق". يمكنك استخدام أي متغير تدفق للإشارة إلى عميل فريد، مثل تلك المتوفرة مع سياسةVerifyAPIKey يمكنك أيضًا ضبط المتغيّرات المخصّصة باستخدام سياسة JavaScript أو سياسة AssignMessage. | timing fixed in amara | مطلوب |
تمت مناقشة هذا العنصر أيضًا في المشاركة التالية في منتدى Apigee: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.
<MessageWeight>
تُستخدَم لتحديد الترجيح لكل رسالة. يعدّل حجم الرسالة تأثيره في طلب واحد بشأن حساب معدل الاعتقال المرتفع. يمكن أن يكون وزن الرسالة أي قيمة متغير التدفق، مثل عنوان HTTP، أو معلَمة طلب البحث، أو معلمة النموذج، أو محتوى نص الرسالة. يمكنك أيضًا استخدام المتغيّرات المخصّصة باستخدام سياسة JavaScript أو سياسة assignMessage:
يمكنك استخدامه مع <Identifier>
للتحكّم بشكل أكبر في الطلبات من خلال
لعملاء أو تطبيقات محددة.
على سبيل المثال، إذا كانت قيمة "تثبيت المسدس" <Rate>
هي 10pm
، وأرسل أحد التطبيقات
يبلغ حجمها 2
، ثم يُسمح فقط بخمس رسائل في الدقيقة من
هذا العميل لأن كل طلب يتم احتسابه على أنه طلبين.
القيمة التلقائية | timing fixed in amara |
هل هو مطلوب؟ | اختياري |
النوع | عدد صحيح |
العنصر الرئيسي |
<SpikeArrest>
|
العناصر الفرعية | لا ينطبق |
البنية
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <MessageWeight ref="flow_variable"/> </SpikeArrest>
مثال 1
يقصر المثال التالي الطلبات على 12 في الدقيقة (يُسمح بطلب واحد كل خمسة ثانية، أو 60/12):
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> <Identifier ref="client_id" /> <MessageWeight ref="request.header.weight" /> </SpikeArrest>
في هذا المثال، تقبل <MessageWeight>
قيمة مخصّصة (weight
في الطلب) يعمل على تعديل ترجيحات الرسائل لعملاء معينين. هذا النمط
تحكمًا إضافيًا في التقييد للكيانات التي يتم تحديدها من خلال
العنصر <Identifier>
.
يوضّح الجدول التالي سمات <MessageWeight>
:
السمة | الوصف | التواجد في المنزل | تلقائي |
---|---|---|---|
ref |
يحدد متغير التدفق الذي يحتوي على وزن الرسالة للعميل المحدد. يمكن أن يكون هذا أي متغير تدفق، مثل كمعلمة طلب بحث HTTP أو عنوان أو محتوى نص الرسالة. لمزيد من المعلومات، يُرجى مراجعة مرجع متغيّرات التدفق يمكنك أيضًا ضبط المتغيّرات المخصّصة باستخدام سياسة JavaScript أو سياسة AssignMessage. | مطلوب | لا ينطبق |
<Rate>
لتحديد المعدل الذي يمكن عنده الحد من الارتفاعات (أو الانفعالات) في حركة المرور من خلال تعيين عدد
الطلبات المسموح بها في الفواصل الزمنية في الدقيقة أو في الثانية. يمكنك أيضًا استخدام هذا العنصر في
مع <Identifier>
و<MessageWeight>
من أجل
تقييد حركة المرور بسلاسة في وقت التشغيل من خلال قبول القيم من العميل.
القيمة التلقائية | timing fixed in amara |
هل هو مطلوب؟ | مطلوب |
النوع | عدد صحيح |
العنصر الرئيسي |
<SpikeArrest>
|
العناصر الفرعية | لا ينطبق |
البنية
يمكنك تحديد الأسعار بإحدى الطرق التالية:
- معدّل ثابت تحدّده كنص للعنصر
<Rate>
- قيمة متغيرة يمكن للعميل تمريرها؛ تحديد
اسم متغيّر التدفق باستخدام السمة
ref
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Rate ref="flow_variable">rate[pm|ps]</Rate> </SpikeArrest>
يجب أن تكون قيم المعدل الصالحة (سواء المحددة كقيمة متغيرة أو في نص العنصر) مطلوبة مع التنسيق التالي:
intps
(عدد الطلبات في الثانية، يتم دمجها في فواصل زمنية من المللي ثانية)intpm
(عدد الطلبات في الدقيقة، يتم تبسيطها على فترات زمنية من الثواني)
يجب أن تكون قيمة int عددًا صحيحًا موجبًا وليس صفريًا.
مثال 1
يضبط المثال التالي المعدل على خمسة طلبات في الثانية:
<SpikeArrest name="Spike-Arrest-1"> <Rate>5ps</Rate> </SpikeArrest>
تعمل السياسة على تبسيط معدّل الضريبة إلى طلب واحد مسموح به كل 200 مللي ثانية. (5/1000).
مثال 2
يحدّد المثال التالي المعدل على 12 طلبًا في الدقيقة:
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> </SpikeArrest>
يعمل هذا المثال على تخفيض السعر إلى طلب واحد مسموح به كل خمسة الثواني (60/12).
يوضّح الجدول التالي سمات <Rate>
:
السمة | الوصف | التواجد في المنزل | تلقائي |
---|---|---|---|
ref |
تحدد متغير التدفق الذي يحدد المعدل. يمكن أن يكون هذا أي تدفق
متغيّر، مثل معلَمة طلب بحث HTTP أو العنوان أو محتوى نص الرسالة أو أي قيمة
مثل KVM. لمزيد من المعلومات، يُرجى الاطّلاع على مرجع متغيّرات التدفق.
يمكنك أيضًا استخدام المتغيّرات المخصّصة باستخدام سياسة JavaScript أو سياسة AssignMessage. إذا حددت كلاً من على سبيل المثال: <Rate ref="request.header.custom_rate">1pm</Rate> في هذا المثال، إذا لم يجتاز العميل قيمة "custom_rate" العنوان، ثم لخادم وكيل واجهة برمجة التطبيقات هو طلب واحد في الدقيقة لجميع العملاء. إذا اجتاز العميل "custom_rate" فسيصبح حد المعدل 10 طلبات في الثانية لجميع العملاء في الخادم الوكيل — إلى أن يتم طلب الطلب بدون ضبط "custom_rate" إرسال العنوان. يمكنك استخدام إذا حدّدت قيمة للعمود |
اختياري | timing fixed in amara |
<UseEffectiveCount>
يوزِّع عدد مرات إيقاف النص العائم على معالِجات معالجة الرسائل (MPs) عند استخدام التحجيم التلقائي مجموعات.
البنية
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <UseEffectiveCount>[false|true]</UseEffectiveCount> </SpikeArrest>
مثال 1
يحدّد المثال التالي القيمة "صحيح" للسمة <UseEffectiveCount>
:
<SpikeArrest name='Spike-Arrest-1'> <Rate>40ps</Rate> <UseEffectiveCount>true</UseEffectiveCount> </SpikeArrest>
العنصر <UseEffectiveCount>
اختياري. القيمة التلقائية هي false
.
عند حذف العنصر من سياسة Spike Arrest.
القيمة التلقائية | خطأ |
هل هو مطلوب؟ | اختياري |
النوع | منطقي |
العنصر الرئيسي |
<SpikeArrest>
|
العناصر الفرعية | لا ينطبق |
يوضّح الجدول التالي سمات العنصر <UseEffectiveCount>
:
السمة | الوصف | تلقائي | التواجد في المنزل |
---|---|---|---|
ref |
لتحديد المتغيّر الذي يحتوي على قيمة <UseEffectiveCount> . يمكن أن تظهر فائدة هذا بوضوح أكبر
أي متغير تدفق، مثل معلمة استعلام HTTP، أو العنوان، أو محتوى نص الرسالة. لمزيد من المعلومات،
يُرجى الاطّلاع على مرجع متغيّرات التدفق. يمكنك أيضًا ضبط المتغيّرات المخصّصة
باستخدام سياسة JavaScript أو سياسة AssignMessage. |
timing fixed in amara | اختياري |
يعتمد تأثير <UseEffectiveCount>
على قيمته:
true
: الحد الأقصى لمعدّل الارتفاع الذي يجب أن يجنيه مدير الحملة هو<Rate>
مقسومًا على العدد الحالي لـ "MP" في المجموعة نفسها. الحد المجمّع هو القيمة من<Rate>
. عند إضافة (أو إزالة) أعضاء الفريق ديناميكيًا)، يحدث الارتفاع الفردي. ستزيد حدود المعدّل (أو تنخفض)، لكن سيبقى الحدّ المجمّع كما هو.false
(هذه هي القيمة التلقائية في حال حذفها): إنّ الحدّ الأقصى لمعدّل الارتفاع لكل ميغا بكسل هو قيمة<Rate>
ببساطة. الحد المجمّع هو مجموع المعدلات لجميع أعضاء الحملة. عند إضافة (أو إزالة أعضاء البرلمان)، ستبقى الحدود الفردية لمعدّل الارتفاع كما هي، ولكن سيزداد الحد المجمَّع (أو انخفاض).
يعرض الجدول التالي تأثير <UseEffectiveCount>
في الحدّ الأقصى لمعدّل الاستخدام الفعلي الذي يبلغ
لكل عضو:
قيمة <UseEffectiveCount> |
||||||
---|---|---|---|---|---|---|
false |
false |
false |
true |
true |
true |
|
عدد وحدات الميغا بكسل | 8 | 4 | 2 | 8 | 4 | 2 |
قيمة <Rate> |
10 | 10 | 10 | 40 | 40 | 40 |
السعر الفعّال لكل ميغا بكسل | 10 | 10 | 10 | 5 | 10 | 20 |
الحد المجمَّع | 80 | 40 | 20 | *40 | *40 | *40 |
* تمامًا مثل <Rate> . |
في هذا المثال، لاحظ أنه عند انخفاض عدد أعضاء البرلمان من 4 إلى 2،
<UseEffectiveCount>
هو false
، ويظل المعدّل الفعلي لكل ميغابكسل كما هو (في
10). ولكن عندما يكون <UseEffectiveCount>
هو true
، يبدأ المعدّل الفعّال لكل ميغا بكسل من
من 10 إلى 20 عند تقليل عدد النقاط من 4 إلى 2.
متغيّرات التدفق
عند تنفيذ سياسة Spike Arrest، تتم تعبئة متغيّر التدفق التالي:
متغير | النوع | الإذن | الوصف |
---|---|---|---|
ratelimit.policy_name.failed |
منطقي | قراءة فقط | يشير إلى ما إذا كانت السياسة قد فشلت أم لا (true أو
false ). |
لمزيد من المعلومات، يُرجى الاطّلاع على مرجع متغيّرات التدفق.
مرجع الخطأ
يصف هذا القسم رموز الخطأ ورسائل الخطأ التي يتم إرجاعها ومتغيراتها. التي يتم ضبطها من خلال Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. من المهم معرفة هذه المعلومات إذا كنت تضع قواعد خطأ التعامل مع الأخطاء. لمزيد من المعلومات، يُرجى مراجعة معلومات يجب معرفتها حول أخطاء السياسة والتعامل مع المعالجة والأخطاء.
أخطاء بيئة التشغيل
يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.
رمز الخطأ | رموز حالة HTTP | السبب | إصلاح |
---|---|---|---|
policies.ratelimit.FailedToResolveSpikeArrestRate |
500 |
يحدث هذا الخطأ إذا كان المرجع إلى المتغيّر الذي يحتوي على إعداد المعدّل
داخل العنصر <Rate> إلى قيمة داخل Spike Arrest
. يُعد هذا العنصر إلزاميًا ويُستخدَم لتحديد الارتفاع المفاجئ في معدل الاعتقال في
على شكل intpm أو intps . |
build |
policies.ratelimit.InvalidMessageWeight |
500 |
يحدث هذا الخطأ إذا كانت القيمة المحدّدة للعنصر <MessageWeight> هي
متغير التدفق غير صالح (قيمة لا تمثل عددًا صحيحًا). |
build |
policies.ratelimit.SpikeArrestViolation |
429 |
تم تجاوز الحد الأقصى لمعدّل الزحف. |
أخطاء النشر
يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.
اسم الخطأ | السبب | إصلاح |
---|---|---|
InvalidAllowedRate |
إذا كان الارتفاع المفاجئ في معدّل الاعتقال المحدد في العنصر <Rate> في "تثبيت السكتة العائمة"
لا تكون السياسة عددًا صحيحًا أو إذا لم يكن المعدّل ps أو pm كلاحقة،
فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. |
build |
متغيّرات الأخطاء
يتم ضبط هذه المتغيّرات عند حدوث خطأ في بيئة التشغيل. يمكنك الاطّلاع على مقالة ما تحتاج إلى معرفته للحصول على مزيد من المعلومات. حول أخطاء السياسة.
المتغيرات | المكان | مثال |
---|---|---|
fault.name="fault_name" |
تمثّل السمة fault_name اسم الخطأ، كما هو موضّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير رمز الخطأ. | fault.name Matches "SpikeArrestViolation" |
ratelimit.policy_name.failed |
policy_name هو الاسم الذي يحدّده المستخدم للسياسة التي أدّت إلى حدوث الخطأ. | ratelimit.SA-SpikeArrestPolicy.failed = true |
مثال على استجابة الخطأ
فيما يلي مثال على الرد على الخطأ:
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.SpikeArrestViolation" }, "faultstring":"Spike arrest violation. Allowed rate : 10ps" } }
مثال على قاعدة الخطأ
في ما يلي مثال على قاعدة أخطاء للتعامل مع خطأ SpikeArrestViolation
:
<FaultRules> <FaultRule name="Spike Arrest Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "SpikeArrestViolation") </Condition> </Step> <Condition>ratelimit.Spike-Arrest-1.failed=true</Condition> </FaultRule> </FaultRules>
الرمز الحالي لحالة HTTP لتجاوز الحد الأقصى لمعدّل الزحف الذي تم ضبطه من خلال سياسة الحصة أو فترة إيقاف الارتفاع
يبلغ 429
(عدد الطلبات كبير جدًا). لتغيير رمز حالة HTTP إلى 500
(خطأ في الخادم الداخلي)، قم بتعيين
موقع features.isHTTPStatusTooManyRequestEnabled
على "false
" باستخدام
واجهة برمجة التطبيقات الخاصة بتعديل خصائص المؤسسة
على سبيل المثال:
curl -u email:password -X POST -H "Content-type:application/xml" http://api.enterprise.apigee.com/v1/organizations/myorg -d \ "<Organization type="trial" name="MyOrganization"> <Properties> <Property name="features.isHTTPStatusTooManyRequestEnabled">true</Property> . . . </Properties> </Organization>"
المخططات
يتم تحديد كل نوع سياسة من خلال مخطّط XML (.xsd
). يمكنك الرجوع إلى مخططات السياسات
المتوفرة على جيت هب.
مواضيع ذات صلة
- سياسة الحصة: الحصة للحدّ من الزيارات إلى العملاء الفرديين
- تقييد المعدّل لتقييد المعدّل نظرة عامة
- المقارنة سياسات الحصص وSpikeArrest
- نماذج عاملة للخوادم الوكيلة لواجهة برمجة التطبيقات