Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi

Spike Arrest politikası, <Rate>
öğesiyle trafik dalgalanmalarına karşı koruma sağlar. Bu
öğesi, bir API proxy'si tarafından işlenen ve arka uca gönderilen isteklerin sayısını kısıtlar.
performans gecikmelerine ve kapalı kalma sürelerine karşı koruma sağlar.
<SpikeArrest>
öğe
Spike Arrest politikasını tanımlar.
Varsayılan Değer | Aşağıdaki Varsayılan Politika sekmesine bakın |
Zorunlu mu? | İsteğe bağlı |
Tür | Karmaşık nesne |
Üst Öğe | Yok |
Alt Öğeler |
<Identifier> <MessageWeight> <Rate> (Zorunlu)<UseEffectiveCount> |
Söz dizimi
<SpikeArrest>
öğesi şu söz dizimini kullanır:
<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>
Varsayılan Politika
Aşağıdaki örnekte, hesabınıza Spike Arrest politikası eklediğinizde varsayılan ayarlar akışı hakkında:
<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>
This element has the following attributes that are common to all policies:
Attribute | Default | Required? | Description |
---|---|---|---|
name |
N/A | Required |
The internal name of the policy. The value of the Optionally, use the |
continueOnError |
false | Optional | Set to "false" to return an error when a policy fails. This is expected behavior for most policies. Set to "true" to have flow execution continue even after a policy fails. |
enabled |
true | Optional | Set to "true" to enforce the policy. Set to "false" to "turn off" the policy. The policy will not be enforced even if it remains attached to a flow. |
async |
false | Deprecated | This attribute is deprecated. |
Örnekler
Aşağıdaki örneklerde Spike Arrest politikasının kullanım şekillerinden bazıları gösterilmektedir:
1. Örnek
Aşağıdaki örnekte bu hız saniyede beş olarak ayarlanmaktadır:
<SpikeArrest name="Spike-Arrest-1"> <Rate>5ps</Rate> </SpikeArrest>
Politika, bu hızı yumuşatarak her 200 milisaniyede bir izin verilen bir isteğe olanak tanır (1000/5).
2. Örnek
Aşağıdaki örnekte bu hız dakika başına 12 olarak ayarlanmaktadır:
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> </SpikeArrest>
Bu örnek politika, oranı yumuşatarak her beş isteğe yalnızca bir isteğe izin verir saniye (60/12).
3. Örnek
Aşağıdaki örnekte istekler dakikada 12 ile kısıtlanır (her beş isteğe bir isteğe izin verilir) saniye veya 60/12):
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> <Identifier ref="client_id" /> <MessageWeight ref="request.header.weight" /> </SpikeArrest>
Buna ek olarak, <MessageWeight>
öğesi özel bir değeri (
weight
üstbilgisi) kullanabilirsiniz. Bu
<Identifier>
öğesi.
4. Örnek
Aşağıdaki örnekte, Spike Arrest'e
request.header.runtime_rate
akış değişkeni olarak aktarılan istek:
<SpikeArrest name="Spike-Arrest-1"> <Rate ref="request.header.runtime_rate" /> </SpikeArrest>
Akış değişkeninin değeri şu biçimde olmalıdır: intpm
veya
intps
.
Bu örneği denemek için aşağıdaki gibi bir istek yürütün:
curl http://myorg-myenv.apigee.net/price -H 'runtime_rate:30ps'
Alt öğe referansı
Bu bölümde, <SpikeArrest>
alt öğeleri açıklanmaktadır.
<DisplayName>
Use in addition to the name
attribute to label the policy in the
management UI proxy editor with a different, more natural-sounding name.
The <DisplayName>
element is common to all policies.
Default Value | n/a |
Required? | Optional. If you omit <DisplayName> , the value of the
policy's name attribute is used |
Type | String |
Parent Element | <PolicyElement> |
Child Elements | None |
The <DisplayName>
element uses the following syntax:
Syntax
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
Example
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
The <DisplayName>
element has no attributes or child elements.
<Identifier>
Spike Arrest politikasının uygulanabilmesi için taleplerin nasıl gruplandırılacağını seçebilmenizi sağlar. gerekir. Örneğin, istekleri geliştirici kimliğine göre gruplandırabilirsiniz. Bu durumda her geliştiricinin talepleri, kendi Spike Arrest oranlarına dahil edilecektir. temsil eder.
Daha ayrıntılı bilgi için <MessageWeight>
öğesiyle birlikte kullanın
kontrol olanağı sunar.
<Identifier>
öğesini boş bırakırsanız tüm istekler için bir hız sınırı uygulanır
içine koymanız gerekir.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | Dize |
Üst Öğe |
<SpikeArrest>
|
Alt Öğeler | Yok |
Söz dizimi
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Identifier ref="flow_variable"/> </SpikeArrest>
1. Örnek
Aşağıdaki örnekte, geliştirici kimliği bazında Spike Arrest politikası geçerlidir:
<SpikeArrest name="Spike-Arrest-1"> <Identifier ref="developer.id"/> <Rate>42pm</Rate/> </SpikeArrest>
Aşağıdaki tabloda <Identifier>
özellikleri açıklanmaktadır:
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ref |
Spike Arrest'in gelen talepleri gruplandırdığı değişkeni tanımlar. Benzersiz bir müşteriyi belirtmek için (örneğin, VerifyAPIKey politikası. Ayrıca, JavaScript politikası veya AssignmentMessage politikası. | Yok | Zorunlu |
Bu unsur, şu Apigee Topluluk gönderisinde de ele alınmaktadır: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.
<MessageWeight>
Her ileti için tanımlanan ağırlıklandırmayı belirtir. Mesaj ağırlığı, etkiyi değiştirir artış oranı. Mesaj ağırlığı herhangi bir değer olabilir HTTP üstbilgisi, sorgu parametresi, form parametresi veya ileti gövdesi içeriği gibi bir akış değişkeni Ayrıca, JavaScript politikasını veya AssignmentMessage politikası.
İstekleri daha fazla daraltmak için <Identifier>
ile birlikte kullanın.
veya uygulamalara sahip olmanız gerekir.
Örneğin, Spike Arrest <Rate>
değeri 10pm
olduğunda bir uygulama tarafından gönderilir.
ağırlığı 2
olan isteklere sahipse, şuradan dakikada yalnızca beş iletiye izin verilir:
çünkü her istek 2 olarak sayılır.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | Tamsayı |
Üst Öğe |
<SpikeArrest>
|
Alt Öğeler | Yok |
Söz dizimi
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <MessageWeight ref="flow_variable"/> </SpikeArrest>
1. Örnek
Aşağıdaki örnekte istekler dakikada 12 ile kısıtlanır (her beş isteğe bir isteğe izin verilir) saniye veya 60/12):
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> <Identifier ref="client_id" /> <MessageWeight ref="request.header.weight" /> </SpikeArrest>
Bu örnekte, <MessageWeight>
özel bir değeri (weight
üstbilgisi) ekleyebilirsiniz. Bu
<Identifier>
öğesi.
Aşağıdaki tabloda <MessageWeight>
özellikleri açıklanmaktadır:
Özellik | Açıklama | Varlık | Varsayılan |
---|---|---|---|
ref |
Belirli bir istemcinin mesaj ağırlığını içeren akış değişkenini tanımlar. Bu değişken, HTTP sorgu parametresi, üstbilgi veya ileti gövdesi içeriği olarak değiştirebilirsiniz. Daha fazla bilgi için bkz. Akış değişkenleri referansı. Ayrıca, özelleştirilebilen değişkenleri JavaScript politikasını veya AssignmentMessage politikasını kullanarak da yapabilirsiniz. | Zorunlu | Yok |
<Rate>
izin verilen isteklerin sayısını gösterir. Bu öğeyi
<Identifier>
ve <MessageWeight>
ile birlikte şunun için:
İstemciden değer kabul ederek çalışma zamanında trafiği sorunsuz şekilde kısıtlar.
Varsayılan Değer | Yok |
Zorunlu mu? | Zorunlu |
Tür | Tamsayı |
Üst Öğe |
<SpikeArrest>
|
Alt Öğeler | Yok |
Söz dizimi
Ücretleri aşağıdaki yollardan biriyle belirtebilirsiniz:
<Rate>
öğesinin gövdesi olarak belirttiğiniz statik ücret- İstemci tarafından aktarılabilecek bir değişken değeri; tanımlama,
ref
özelliğini kullanan akış değişkeninin adı
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Rate ref="flow_variable">rate[pm|ps]</Rate> </SpikeArrest>
Geçerli ücret değerleri (değişken değer olarak veya öğenin gövdesinde tanımlanır) olmalıdır şu biçime uygun olmalıdır:
intps
(saniyedeki istek sayısı, aralıklar halinde yumuşatılmış) / milisaniye)intpm
(dakika başına istek sayısı, aralıklar halinde düzeltilmiştir / saniye)
int değeri pozitif, sıfır olmayan bir tam sayı olmalıdır.
1. Örnek
Aşağıdaki örnekte, hız saniyede beş istek olarak ayarlanmaktadır:
<SpikeArrest name="Spike-Arrest-1"> <Rate>5ps</Rate> </SpikeArrest>
Politika, bu hızı yumuşatarak her 200 milisaniyede bir izin verilen bir isteğe olanak tanır (1000/5).
2. Örnek
Aşağıdaki örnekte, hızı dakikada 12 istek olarak ayarlanmaktadır:
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> </SpikeArrest>
Bu örnek politika, oranı yumuşatarak her beş isteğe yalnızca bir isteğe izin verir saniye (60/12).
Aşağıdaki tabloda <Rate>
özellikleri açıklanmaktadır:
Özellik | Açıklama | Varlık | Varsayılan |
---|---|---|---|
ref |
Ücreti belirten bir akış değişkenini tanımlar. Herhangi bir akış olabilir
HTTP sorgu parametresi, üstbilgi veya ileti gövdesi içeriği gibi bir değişken ya da
buna dahildir. Daha fazla bilgi için Akış değişkenleri referansı bölümüne bakın.
Özelleştirilebilen değişkenleri JavaScript politikasını veya AssignmentMessage politikasını kullanarak da yapabilirsiniz. Bu öğenin hem Örneğin: <Rate ref="request.header.custom_rate">1pm</Rate> Bu örnekte, müşteri bir "custom_rate" iletmezse başlığı, ardından API proxy'si ücreti, tüm istemciler için dakikada 1 istektir. Müşteri, "custom_rate" [özel_oran] hız sınırı, bu kampanyadaki tüm müşteriler için saniyede 10 istek proxy ("custom_rate" içermeyen bir isteğe kadar) üstbilgisi gönderilir. Aşağıdakiler için özel oranlar uygulamak amacıyla istekleri gruplandırmak üzere
|
İsteğe bağlı | Yok |
<UseEffectiveCount>
Otomatik ölçeklendirme kullanılırken Spike Arrest sayınızı mesaj işlemcileri (MP) arasında dağıtır. gruplar.
Söz dizimi
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <UseEffectiveCount>[false|true]</UseEffectiveCount> </SpikeArrest>
1. Örnek
Aşağıdaki örnekte <UseEffectiveCount>
değeri doğru olarak ayarlanmaktadır:
<SpikeArrest name='Spike-Arrest-1'> <Rate>40ps</Rate> <UseEffectiveCount>true</UseEffectiveCount> </SpikeArrest>
<UseEffectiveCount>
öğesi isteğe bağlıdır. Varsayılan değer: false
Öğe, Spike Arrest politikanızdan çıkarıldığında gösterilir.
Varsayılan Değer | Yanlış |
Zorunlu mu? | İsteğe bağlı |
Tür | Boole |
Üst Öğe |
<SpikeArrest>
|
Alt Öğeler | Yok |
Aşağıdaki tabloda <UseEffectiveCount>
öğesinin özellikleri açıklanmaktadır:
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ref |
<UseEffectiveCount> değerini içeren değişkeni tanımlar. Bu özellik,
HTTP sorgu parametresi, üstbilgi veya ileti gövdesi içeriği gibi herhangi bir akış değişkeni. Daha fazla
daha fazla bilgi için Akış değişkenleri referansı bölümüne bakın. Ayrıca, özelleştirilebilen değişkenleri
JavaScript politikasını veya AssignmentMessage politikasını kullanarak da yapabilirsiniz. |
Yok | İsteğe bağlı |
<UseEffectiveCount>
işlevinin etkisi, değerine bağlıdır:
true
: MP'in artış oranı sınırı<Rate>
değerinin aynı kapsüldeki mevcut MP sayısına bölümü. Toplam sınır, /<Rate>
. MP'ler dinamik olarak eklendiğinde (veya kaldırıldığında), hız sınırları artar (veya azalır) ancak toplam sınır aynı kalır.false
(atlanırsa bu varsayılan değerdir): Her MP'nin artış hızı sınırı:<Rate>
değerini alır. Toplam sınır, tüm MP'lerin oranlarının toplamıdır. MP'ler eklendiğinde (veya kaldırıldığında) bağımsız artış oranı sınırları aynı kalır ancak toplam sınır artar (veya azalması) anlamına gelir.
Aşağıdaki tabloda, <UseEffectiveCount>
işlevinin geçerli ücret sınırı üzerindeki etkisi gösterilmektedir:
her MP:
<UseEffectiveCount> değeri |
||||||
---|---|---|---|---|---|---|
false |
false |
false |
true |
true |
true |
|
Milletvekili sayısı | 8 | 4 | 2 | 8 | 4 | 2 |
<Rate> değeri |
10 | 10 | 10 | 40 | 112 | 40 |
MP başına geçerli oran | 10 | 10 | 10 | 5 | 10 | 20 |
Toplama Sınırı | 80 | 40 | 20 | 40* | 40* | 40* |
* <Rate> ile aynıdır. |
Bu örnekte, MP'lerin sayısı 4'ten 2'ye düşürüldüğünde
<UseEffectiveCount>
false
, MP başına geçerli ücret aynı kalır (
10). Ancak <UseEffectiveCount>
true
olduğunda MP başına geçerli oran
MP sayısı 4'ten 2'ye düşürüldüğünde 10'dan 20'ye.
Akış değişkenleri
Spike Arrest politikası yürütüldüğünde aşağıdaki akış değişkeni doldurulur:
Değişken | Tür | İzin | Açıklama |
---|---|---|---|
ratelimit.policy_name.failed |
Boole | Salt Okunur | Politikanın başarısız olup olmadığını gösterir (true veya
false ) tıklayın. |
Daha fazla bilgi için Akış değişkenleri referansı bölümüne bakın.
Hata referansı
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
policies.ratelimit.FailedToResolveSpikeArrestRate |
500 |
This error occurs if the reference to the variable containing the rate setting
within the <Rate> element cannot be resolved to a value within the Spike Arrest
policy. This element is mandatory and used to specify the spike arrest rate in
the form of intpm or intps . |
build |
policies.ratelimit.InvalidMessageWeight |
500 |
This error occurs if the value specified for the <MessageWeight> element through
a flow variable is invalid (a non-integer value). |
build |
policies.ratelimit.SpikeArrestViolation |
429 |
The rate limit was exceeded. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidAllowedRate |
If the spike arrest rate specified in the <Rate> element of the Spike Arrest
Policy is not an integer or if the rate does not have ps or pm as a suffix,
then the deployment of the API proxy fails. |
build |
Fault variables
These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "SpikeArrestViolation" |
ratelimit.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | ratelimit.SA-SpikeArrestPolicy.failed = true |
Example error response
Shown below is an example error response:
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.SpikeArrestViolation" }, "faultstring":"Spike arrest violation. Allowed rate : 10ps" } }
Example fault rule
Shown below is an example fault rule to handle a SpikeArrestViolation
fault:
<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>
Kota veya Ani artış politikası tarafından belirlenen hız sınırını aşmak için geçerli HTTP durum kodu
429
(Çok Fazla İstek). HTTP durum kodunu 500
olarak değiştirmek için
(Dahili Sunucu Hatası),
false
için features.isHTTPStatusTooManyRequestEnabled
özelliğini kullanarak
Kuruluş özelliklerini güncelleme API'si.
Örneğin:
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>"
Şemalar
Her politika türü bir XML şemasıyla (.xsd
) tanımlanır. Referans olması amacıyla politika şemaları
GitHub'da bulabilirsiniz.
İlgili konular
- Kota politikası: Kota politikası, bireysel istemcilerde trafiği sınırlandırmak için
- Hız sınırlaması için hız sınırlandırma genel bakış
- Karşılaştırma Kota ve SpikeArrest Politikaları
- API proxy'lerinin çalışma örnekleri