Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Spike Arrest politikası, <Rate>
öğesiyle trafik artışlarına karşı koruma sağlar. Bu öğe, API proxy'si tarafından işlenen ve arka uca gönderilen istek sayısını azaltarak 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 göz atı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 yöntemlerden bazıları gösterilmektedir:
1. Örnek
Aşağıdaki örnekte hız, saniyede beş olarak ayarlanmaktadır:
<SpikeArrest name="Spike-Arrest-1"> <Rate>5ps</Rate> </SpikeArrest>
Politika, hızı her 200 milisaniyede bir (1.000/5) bir isteğe izin verecek şekilde düzeltir.
2. Örnek
Aşağıdaki örnekte, hız dakika başına 12 olarak ayarlanmaktadır:
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> </SpikeArrest>
Bu örnek politika, hızı her beş saniyede bir (60/12) izin verilen bir isteğe düzeltir.
3. Örnek
Aşağıdaki örnekte, istekler dakika başına 12 (istek başına bir isteğe izin verilir) 5 saniyede bir veya 60/12 ile sınırlandırılmıştır:
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> <Identifier ref="client_id" /> <MessageWeight ref="request.header.weight" /> </SpikeArrest>
Buna ek olarak <MessageWeight>
öğesi, belirli uygulamalar veya istemciler için mesaj ağırlıklarını ayarlayan özel değeri (weight
üst bilgisi) kabul eder. Bu, <Identifier>
öğesiyle tanımlanan varlıklar için kısıtlama üzerinde ek kontrol 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 ayarlanmış bir çalışma zamanı değerini araması talimatı verilir:
<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 isteği 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>
Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı, daha doğal bir adla etiketlemek için name
özelliğine ek olarak kullanın.
<DisplayName>
öğesi tüm politikalarda ortaktır.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı. <DisplayName> özelliğini çıkarırsanı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çebilmenizi sağlar. Örneğin, istekleri geliştirici kimliğine göre gruplandırabilirsiniz. Bu durumda her geliştiricinin istekleri, proxy'ye yapılan tüm istekler değil kendi Spike Arrest oranına dahil edilir.
İstek kısıtlama üzerinde daha ayrıntılı kontrol için <MessageWeight>
öğesiyle birlikte kullanın.
<Identifier>
öğesini boş bırakırsanız bu API proxy'sine yapılan tüm istekler için 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ı her geliştirici kimliği için 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 istekleri gruplandırmasını sağlayan değişkeni tanımlar. Benzersiz bir istemciyi belirtmek için VerifyAPIKey politikasıyla sunulanlar gibi herhangi bir akış değişkenini kullanabilirsiniz. JavaScript politikasını veya assignMessage politikasını kullanarak da özel değişkenler ayarlayabilirsiniz. | Yok | Gerekli |
Bu unsur, şu Apigee Topluluğu gönderisinde de ele alınmıştır: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.
<MessageWeight>
Her mesaj için tanımlanan ağırlıklandırmayı belirtir. Mesaj ağırlığı, tek bir isteğin Spike Arrest oranının hesaplanması üzerindeki etkisini değiştirir. Mesaj ağırlığı HTTP üst bilgisi, 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 istemciler veya uygulamalardan gelen istekleri daha da azaltmak için <Identifier>
ile birlikte kullanın.
Örneğin, Spike Arrest <Rate>
10pm
ise ve bir uygulama 2
ağırlığında istekler gönderirse her istek 2 sayılır. Bu nedenle söz konusu istemciden 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 (istek başına bir isteğe izin verilir) 5 saniyede bir veya 60/12 ile sınırlandırılmıştır:
<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 değeri (istekteki weight
üstbilgisi) kabul eder. Bu, <Identifier>
öğesiyle tanımlanan varlıklar için kısıtlama üzerinde ek kontrol sağlar.
Aşağıdaki tabloda <MessageWeight>
özellikleri açıklanmaktadır:
Özellik | Açıklama | Varlık | Varsayılan |
---|---|---|---|
ref |
Belirli bir istemci için ileti ağırlığını içeren akış değişkenini tanımlar. Bu; HTTP sorgu parametresi, üstbilgi veya mesaj gövdesi içeriği gibi herhangi bir akış değişkeni olabilir. Daha fazla bilgi için Akış değişkenleri referansı bölümüne bakın. JavaScript politikasını veya assignMessage politikasını kullanarak da özel değişkenler ayarlayabilirsiniz. | Gerekli | Yok |
<Rate>
Dakika veya saniye başına izin verilen istek sayısını ayarlayarak trafik artışlarının (veya patlamalarının) sınırlanacağı hızı belirtir. Bu öğeyi, istemciden değerler kabul ederek çalışma zamanında trafiği sorunsuz bir şekilde azaltmak için <Identifier>
ve <MessageWeight>
ile birlikte de kullanabilirsiniz.
Varsayılan Değer | Yok |
Zorunlu mu? | Gerekli |
Tür | Tamsayı |
Üst Öğe |
<SpikeArrest>
|
Alt Öğeler | Yok |
Söz dizimi
Fiyatları, aşağıdaki yöntemlerden birini kullanarak belirtebilirsiniz:
<Rate>
öğesinin gövdesi olarak belirttiğiniz statik ücret- İstemci tarafından iletilebilen 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ğeri olarak veya öğenin gövdesinde tanımlanır) aşağıdaki biçime uymalıdır:
intps
(milisaniyelik aralıklara yumuşatılmış, saniyedeki istek sayısı)intpm
(dakika başına istek sayısı, saniyelik aralıklara yumuşatılır)
int değeri pozitif ve 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, hızı her 200 milisaniyede bir (1.000/5) bir isteğe izin verecek şekilde düzeltir.
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, hızı her beş saniyede bir (60/12) izin verilen bir isteğe düzeltir.
Aşağıdaki tabloda <Rate>
özellikleri açıklanmaktadır:
Özellik | Açıklama | Varlık | Varsayılan |
---|---|---|---|
ref |
Ücreti belirten bir akış değişkeni tanımlar. Bu; HTTP sorgu parametresi, üstbilgi veya mesaj gövdesi 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 da özel değişkenler kullanabilirsiniz. Bu öğenin hem Örneğin: <Rate ref="request.header.custom_rate">1pm</Rate> Bu örnekte, istemci bir "custom_rate" başlığı ilemezse API proxy'sinin ücreti, tüm istemciler için dakikada 1 istek olur. İstemci bir "custom_rate" üst bilgisi iletirse hız sınırı, "custom_rate" başlığı olmayan bir istek gönderilene kadar, proxy'deki tüm istemciler için saniyede 10 istek haline gelir. Farklı istemci türü için özel ücretler uygulamak üzere istekleri gruplandırmak amacıyla
|
İsteğe bağlı | Yok |
<UseEffectiveCount>
Otomatik ölçeklendirme gruplarını kullanırken Spike Arrest sayılarınızı Mesaj İşlemcilere (MP'ler) 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>
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. Öğe Spike Arrest politikanızdan çıkarıldığında varsayılan değer false
olur.
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 mesaj gövdesi içeriği gibi herhangi bir akış değişkeni olabilir. Daha fazla bilgi için Akış değişkenleri referansı bölümüne bakın. JavaScript politikasını veya assignMessage politikasını kullanarak da özel değişkenler ayarlayabilirsiniz. |
Yok | İsteğe bağlı |
<UseEffectiveCount>
işlevinin etkisi, değerine bağlıdır:
true
: Bir MP'nin 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ğeridir. MP'ler dinamik olarak eklendiğinde (veya kaldırıldığında) bağımsız 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ış hızı sınırı, sadece<Rate>
değeridir. Toplam sınır, tüm MP'lerin oranlarının toplamıdır. MP'ler eklendiğinde (veya kaldırıldığında) bireysel artış oranı sınırları aynı kalır ancak toplam sınır artar (veya azalır).
Aşağıdaki tabloda <UseEffectiveCount>
her MP'nin etkin hız sınırı üzerindeki etkisi gösterilmektedir:
<UseEffectiveCount> değeri |
||||||
---|---|---|---|---|---|---|
false |
false |
false |
true |
true |
true |
|
Parlamento Üyesi Sayısı | 8 | 4 | 2 | 8 | 4 | 2 |
<Rate> değeri |
10 | 10 | 10 | 40 | 40 | 40 |
MP başına Efektif Oran | 10 | 10 | 10 | 5 | 10 | 20 |
Toplam Sınır | 80 | 40 | 20 | 40* | 40* | 40* |
* <Rate> ile aynıdır. |
Bu örnekte, MP sayısı 4'ten 2'ye düşürüldüğünde ve <UseEffectiveCount>
false
olduğunda MP başına etkin oranın aynı (10'da) kaldığına dikkat edin. Ancak <UseEffectiveCount>
, true
olduğunda MP başına etkin oran 10'dan 20'ye, MP sayısı 4'ten 2'ye düşürüldüğünde 20'ye düşer.
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ı belirtir (true veya false ). |
Daha fazla bilgi için Akış değişkenleri referansı başlıklı makaleyi inceleyin.
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ve hata mesajları ile döndürülen hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
policies.ratelimit.FailedToResolveSpikeArrestRate |
500 |
Bu hata, <Rate> öğesindeki ücret ayarını içeren değişken referansı, Spike Arrest politikasındaki bir değere çözümlenemezse ortaya çıkar. Bu öğe zorunludur ve artış durdurma oranını intpm veya intps biçiminde belirtmek için kullanılır. |
build |
policies.ratelimit.InvalidMessageWeight |
500 |
Bu hata, <MessageWeight> öğesi için bir akış değişkeniyle belirtilen değer geçersiz (tam sayı olmayan bir değer) ise ortaya çıkar. |
build |
policies.ratelimit.SpikeArrestViolation |
429 |
Oran sınırı aşıldı. |
Dağıtım hataları
Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.
Hata adı | Neden | Düzelt |
---|---|---|
InvalidAllowedRate |
Spike Arrest Politikası'nın <Rate> öğesinde belirtilen artış durdurma oranı tam sayı değilse ya da oranda sonek olarak ps veya pm yoksa API proxy'sinin dağıtımı başarısız olur. |
build |
Hata değişkenleri
Bu değişkenler, bir çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdı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" } }
Hata kuralı örneği
Aşağıda, bir SpikeArrestViolation
hatasını işlemek için gereken ö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 Tutuklama politikası tarafından belirlenen hız sınırının aşılması için geçerli HTTP durum kodu 429
(Çok Fazla İstek) şeklindedir. HTTP durum kodunu 500
(Dahili Sunucu Hatası) olarak değiştirmek için
Güncelleme kuruluş özelliklerini API'yi kullanarak features.isHTTPStatusTooManyRequestEnabled
özelliğini 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ı (.xsd
) ile tanımlanır. Referans olarak, GitHub'da politika şemaları bulunabilir.
İlgili konular
- Kota politikası: Tek tek istemcilerdeki trafiği sınırlamak için kullanılan 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ışma örnekleri