Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info

Spike Arrest politikası, <Rate>
öğesiyle trafik artışlarına karşı koruma sağlar. Bu öğe, bir API proxy'si tarafından işlenen ve arka uca gönderilen isteklerin sayısını kısıtlayarak performans gecikmeleri ve çalışmama süresine karşı koruma sağlar.
<SpikeArrest>
öğesi
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, Edge kullanıcı arayüzünde akışınıza Spike Arrest politikası eklediğinizde varsayılan ayarlar gösterilmektedir:
<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>
Bu öğe, tüm politikalarda ortak olan aşağıdaki özelliklere sahiptir:
Özellik | Varsayılan | Zorunlu mu? | Açıklama |
---|---|---|---|
name |
Yok | Zorunlu |
Politikanın dahili adı. İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı, doğal bir dille etiketlemek için |
continueOnError |
yanlış | İsteğe bağlı | Politika başarısız olduğunda hata döndürmek için "false" değerine ayarlayın. Bu, çoğu politika için beklenen bir durumdur. Bir politika başarısız olsa bile akış yürütmenin devam etmesi için değeri "true" olarak ayarlayın. |
enabled |
true | İsteğe bağlı | Politikayı uygulamak için "true" (doğru) değerine ayarlayın. Politikayı "kapalı" hale getirmek için "false" değerine ayarlayın. Politika, bir akışa bağlı kalsa bile zorunlu kılınmaz. |
async |
yanlış | Kullanımdan kaldırıldı | Bu özellik kullanımdan kaldırıldı. |
Örnekler
Aşağıdaki örneklerde, Spike Arrest politikasını kullanabileceğiniz bazı yöntemler gösterilmektedir:
1. Örnek
Aşağıdaki örnekte, saniye başına beş olarak ayarlanmıştır:
<SpikeArrest name="Spike-Arrest-1"> <Rate>5ps</Rate> </SpikeArrest>
Politika, hızı 200 milisaniye (1000/5) her birine izin verilen bir istek olacak şekilde düzleştirir.
2. Örnek
Aşağıdaki örnekte ücret, dakika başına 300 olarak belirlenmiştir:
<SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArreast"> <DisplayName>SpikeArreast</DisplayName> <Rate>300pm</Rate> </SpikeArrest>
Etkili oran 300 dk.'dır. Yani pakete 200 milisaniyede bir yeni jeton eklenir. Paket boyutu her zaman messagesPerPeriod
değerinin% 10'u olacak şekilde yapılandırılır. Bu nedenle, messagesPerPeriod
değeri 300 olduğunda paket boyutu 30 jetondur.
3. Örnek
Aşağıdaki örnekte, istekler dakika başına 12 ile sınırlandırılmıştır (beş saniyede bir istek veya 60/12 ile izin verilir):
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> <Identifier ref="client_id" /> <MessageWeight ref="request.header.weight" /> </SpikeArrest>
Ayrıca <MessageWeight>
öğesi, belirli uygulamalar veya istemciler için ileti ağırlıklarını ayarlayan özel bir değeri (weight
başlığı) kabul eder. Bu, <Identifier>
öğesiyle tanımlanan öğeler için akış kontrolü üzerinde ek denetim sağlar.
4. Örnek
Aşağıdaki örnekte, Spike Arrest'e request.header.runtime_rate
akış değişkeni olarak iletilen istek aracılığıyla ayarlanan bir çalışma zamanı değeri araması talimatı verilmektedir:
<SpikeArrest name="Spike-Arrest-1"> <Rate ref="request.header.runtime_rate" /> </SpikeArrest>
Akış değişkeninin değeri intpm
veya
intps
biçiminde olmalıdır.
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>
öğesinin alt öğeleri açıklanmaktadır.
<DisplayName>
Yönetim kullanıcı arayüzü proxy düzenleyicisinde politikayı farklı ve daha doğal bir adla etiketlemek için name
özelliğine ek olarak kullanın.
<DisplayName>
öğesi tüm politikalar için ortaktır.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı. <DisplayName> değerini atlarsanız politikanın name özelliğinin değeri kullanılır |
Tür | Dize |
Üst Öğe | <PolicyElement> |
Alt Öğeler | Yok |
<DisplayName>
öğesi şu söz dizimini kullanır:
Söz dizimi
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
Örnek
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
<DisplayName>
öğesinin özelliği veya alt öğesi yoktur.
<Identifier>
Spike Arrest politikasının istemciye göre uygulanabilmesi için isteklerin nasıl gruplandırılacağını seçmenize olanak tanır. Örneğin, istekleri geliştirici kimliğine göre gruplandırabilirsiniz. Bu durumda, her geliştiricinin istekleri proxy'ye yapılan tüm istekler yerine kendi ani artış durdurma oranına göre sayılır.
İstek azaltma üzerinde daha ayrıntılı kontrol için <MessageWeight>
öğesiyle birlikte kullanın.
<Identifier>
öğesini boş bırakırsanız söz konusu API proxy'sine yapılan tüm istekler için tek bir hız sınırı uygulanır.
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, Spike Arrest politikası geliştirici kimliği başına uygulanmaktadır:
<SpikeArrest name="Spike-Arrest-1"> <Identifier ref="developer.id"/> <Rate>42pm</Rate/> </SpikeArrest>
Aşağıdaki tabloda <Identifier>
öğesinin özellikleri açıklanmaktadır:
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ref |
Spike Arrest'in gelen istekleri gruplandıracağı değişkeni tanımlar. Benzersiz bir müşteriyi belirtmek için herhangi bir akış değişkenini (ör. VerifyAPIKey politikasında kullanılabilenler) kullanabilirsiniz. JavaScript politikasını veya AssignMessage politikasını kullanarak da özel değişkenler ayarlayabilirsiniz. | Yok | Zorunlu |
Bu öğe, aşağıdaki Apigee Topluluğu yayınında da ele alınmıştı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ığı belirtir. Mesaj ağırlığı, tek bir isteğin ani artış durdurma oranının hesaplanmasına olan etkisini değiştirir. Mesaj ağırlığı, HTTP üstbilgisi, sorgu parametresi, form parametresi veya mesaj gövdesi içeriği gibi herhangi bir akış değişkeni olabilir. JavaScript politikasını veya AssignMessage politikasını kullanarak da özel değişkenler kullanabilirsiniz.
Belirli istemcilere veya uygulamalara göre istekleri daha da azaltmak için <Identifier>
ile birlikte kullanın.
Örneğin, ani artış durdurma <Rate>
değeri 10pm
ise ve bir uygulama 2
ağırlığına sahip istekler gönderiyorsa her istek 2 olarak sayıldığı için söz konusu müşteriden dakikada yalnızca beş mesaja izin verilir.
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 dakika başına 12 ile sınırlandırılmıştır (beş saniyede bir istek veya 60/12 ile izin verilir):
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> <Identifier ref="client_id" /> <MessageWeight ref="request.header.weight" /> </SpikeArrest>
Bu örnekte <MessageWeight>
, belirli istemciler için mesaj ağırlıklarını ayarlayan özel bir değeri (istekteki weight
başlığı) kabul eder. Bu, <Identifier>
öğesiyle tanımlanan öğeler için akış kontrolü üzerinde ek denetim sağlar.
Aşağıdaki tabloda <MessageWeight>
öğesinin özellikleri açıklanmaktadır:
Özellik | Açıklama | Varlık | Varsayılan |
---|---|---|---|
ref |
Belirli istemcinin ileti ağırlığını içeren akış değişkenini tanımlar. Bu, HTTP sorgu parametresi, üstbilgi veya ileti gövdesi içeriği gibi herhangi bir akış değişkeni olabilir. Daha fazla bilgi için Akış değişkenleri referansı başlıklı makaleyi inceleyin. JavaScript politikasını veya AssignMessage politikasını kullanarak da özel değişkenler ayarlayabilirsiniz. | Zorunlu | Yok |
<Rate>
Dakika veya saniye aralıkları içinde izin verilen istek sayısını ayarlayarak trafik ani artışlarının (veya patlamalarının) sınırlandırılma hızını belirtir. İstemciden gelen değerleri kabul ederek çalışma zamanında trafiği sorunsuz bir şekilde azaltmak için bu öğeyi <Identifier>
ve <MessageWeight>
ile birlikte de kullanabilirsiniz.
Varsayılan Değer | Yok |
Zorunlu mu? | Zorunlu |
Tür | Tamsayı |
Üst Öğe |
<SpikeArrest>
|
Alt Öğeler | Yok |
Söz dizimi
Fiyatları aşağıdaki yöntemlerden biriyle belirtebilirsiniz:
<Rate>
öğesinin gövdesi olarak belirttiğiniz statik bir fiyat- İstemci tarafından iletilebilecek bir değişken değeri;
ref
özelliğini kullanarak akış değişkeninin adını tanımlayın
<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ımlanmış) aşağıdaki biçime uygun olmalıdır:
intps
(saniye başına istek sayısı, milisaniyelik aralıklarla yumuşatılmış)intpm
(dakika başına istek sayısı, saniyelik aralıklarla yumuşatılmış)
int değeri sıfır olmayan pozitif bir tam sayı olmalıdır.
1. Örnek
Aşağıdaki örnekte, hız saniye başına beş istek olarak ayarlanmıştır:
<SpikeArrest name="Spike-Arrest-1"> <Rate>5ps</Rate> </SpikeArrest>
Politika, hızı 200 milisaniye (1000/5) her birine izin verilen bir istek olacak şekilde düzleştirir.
2. Örnek
Aşağıdaki örnekte, hız dakikada 12 istek olarak ayarlanmıştır:
<SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArreast"> <DisplayName>SpikeArreast</DisplayName> <Rate>300pm</Rate> </SpikeArrest>
Bu örnek politika, hızı beş saniye (60/12) içinde izin verilen bir istek olacak şekilde yumuşatır.
Aşağıdaki tabloda <Rate>
öğesinin özellikleri açıklanmaktadır:
Özellik | Açıklama | Varlık | Varsayılan |
---|---|---|---|
ref |
Oran belirleyen bir akış değişkenini tanımlar. Bu, HTTP sorgu parametresi, başlık veya ileti gövde içeriği gibi herhangi bir akış değişkeni ya da KVM gibi bir değer olabilir. Daha fazla bilgi için Akış değişkenleri referansı başlıklı makaleyi inceleyin.
JavaScript politikasını veya AssignMessage politikasını kullanarak özel değişkenler de kullanabilirsiniz. Hem Örneğin: <Rate ref="request.header.custom_rate">1pm</Rate> Bu örnekte, istemci bir "custom_rate" başlığı geçirmezse API proxy'sinin hızı tüm istemciler için dakikada 1 istek olur. İstemci bir "custom_rate" üstbilgisi gönderirse "custom_rate" üstbilgisi içermeyen bir istek gönderilene kadar proxy'deki tüm istemciler için hız sınırı saniyede 10 istek olur. Farklı müşteri türleri için özel ücretleri zorunlu kılmak amacıyla istekleri gruplandırmak için
|
İsteğe bağlı | Yok |
<UseEffectiveCount>
Otomatik ölçeklendirme grupları kullanılırken ani artış durdurma sayılarınızı Mesaj İşleyenler (MP'ler) arasında dağıtır.
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>
true olarak ayarlanmıştır:
<SpikeArrest name='Spike-Arrest-1'> <Rate>40ps</Rate> <UseEffectiveCount>true</UseEffectiveCount> </SpikeArrest>
<UseEffectiveCount>
öğesi isteğe bağlıdır. Öğe, ani artış önleme politikanızdan çıkarıldığında varsayılan değer false
olmaktadır.
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, HTTP sorgu parametresi, üstbilgi veya ileti gövdesi içeriği gibi herhangi bir akış değişkeni olabilir. Daha fazla bilgi için Akış değişkenleri referansı başlıklı makaleyi inceleyin. JavaScript politikasını veya AssignMessage politikasını kullanarak da özel değişkenler ayarlayabilirsiniz. |
Yok | İsteğe bağlı |
<UseEffectiveCount>
değerinin etkisi şu şekildedir:
true
: Bir MP'nin ani artış oranı sınırı,<Rate>
değerinin aynı kapsüldeki mevcut MP sayısına bölünmesiyle elde edilir. Toplam sınır,<Rate>
değerinin toplamıdır. Dinamik olarak eklenen (veya kaldırılan) MP'lerin tek tek ani artış oranı sınırları artar (veya azalır), ancak toplam sınır aynı kalır.false
(atlanırsa varsayılan değerdir): Her MP'nin ani artış oranı sınırı,<Rate>
değerinin basitçe kendisidir. Toplam sınır, tüm MP'lerin ücretlerinin toplamıdır. MP'ler eklendiğinde (veya kaldırıldığında) bu MP'lerin bireysel ani artış oranı sınırları aynı kalır ancak toplam sınır artar (veya azalır).
Aşağıdaki tabloda, <UseEffectiveCount>
'ün her MP'nin etkin ücret sınırı üzerindeki etkisi gösterilmektedir:
<UseEffectiveCount> değeri |
||||||
---|---|---|---|---|---|---|
false |
false |
false |
true |
true |
true |
|
MP sayısı | 8 | 4 | 2 | 8 | 4 | 2 |
<Rate> değeri |
10 | 10 | 10 | 40 | 112 | 40 |
MP başına etkin oran | 10 | 10 | 10 | 5 | 10 | 20 |
Toplam Sınır | 80 | 40 | 20 | 40* | 40* | 40* |
* <Rate> ile aynı. |
Bu örnekte, MP sayısı 4'ten 2'ye düşürüldüğünde ve <UseEffectiveCount>
false
olduğunda MP başına etkili oranın aynı (10) kaldığını görebilirsiniz. Ancak <UseEffectiveCount>
true
olduğunda, milletvekili sayısı 4'ten 2'ye düştüğünde milletvekili başına etkin ücret 10'dan 20'ye çıkar.
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ı (true veya false ) belirtir. |
Daha fazla bilgi için Akış değişkenleri referansı başlıklı makaleyi inceleyin.
Hata referansı
Bu bölümde, döndürülen hata kodları, hata mesajları ve hata değişkenleri açıklanmaktadır. bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi edinmek için bkz. Bilmeniz gerekenler Politika hataları ve Kullanım sorun.
Çalışma zamanı hataları
Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
policies.ratelimit.FailedToResolveSpikeArrestRate |
500 |
Bu hata, ücret ayarını içeren değişkene yapılan referansın
<Rate> öğesi içindeki artış, Spike Arrest içindeki bir değere çözümlenemez.
politikası. Bu öğe zorunludur ve şu öğede artış durdurma oranını belirtmek için kullanılır:
intpm veya intps biçiminde olmalıdır. |
build |
policies.ratelimit.InvalidMessageWeight |
500 |
Bu hata, <MessageWeight> öğesi için belirtilen değer
bir akış değişkeni geçersiz (tam sayı olmayan bir değer). |
build |
policies.ratelimit.SpikeArrestViolation |
429 |
Oran sınırı aşıldı. |
Dağıtım hataları
Bu politikayı içeren bir proxy dağıttığınızda bu hatalar oluşabilir.
Hata adı | Neden | Düzelt |
---|---|---|
InvalidAllowedRate |
Ani artış durdurma oranı, Spike Arrest'in <Rate> öğesinde belirtiliyorsa
Politika tam sayı değil veya ücretin son eki ps ya da pm yoksa
API proxy'sinin dağıtımı başarısız olur. |
build |
Hata değişkenleri
Bu değişkenler, çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla bilgi edinin.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, hatanın şurada belirtildiği gibi adıdır: Yukarıdaki Çalışma zamanı hataları tablosu. Hata adı son parça hata kodu vardır. | fault.name Matches "SpikeArrestViolation" |
ratelimit.policy_name.failed |
policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. | ratelimit.SA-SpikeArrestPolicy.failed = true |
Örnek hata yanıtı
Aşağıda örnek bir hata yanıtı gösterilmektedir:
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.SpikeArrestViolation" }, "faultstring":"Spike arrest violation. Allowed rate : 10ps" } }
Örnek hata kuralı
Aşağıda, bir SpikeArrestViolation
hatasını işleyecek örnek bir hata kuralı gösterilmektedir:
<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ış durdurma politikası tarafından belirlenen bir hız sınırının aşılması için geçerli HTTP durum kodu 429
'tür (Çok Fazla İstek). HTTP durum kodunu 500
(Dahili sunucu hatası) olarak değiştirmek için
Update organization properties API'yi kullanarak features.isHTTPStatusTooManyRequestEnabled
mülkünü false
olarak ayarlayın.
Ö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 olarak kullanabileceğiniz politika şemalarını GitHub'da bulabilirsiniz.
İlgili konular
- Kota politikası: Müşterilerdeki trafiği sınırlamak için kota politikası
- Hız sınırlamasına genel bakış için Hız sınırlaması
- Kota ve SpikeArrest Politikalarını Karşılaştırma
- API proxy'lerinin çalışan örnekleri