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>
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ı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>
Politikayı name
özelliğine ek olarak
farklı, daha doğal bir ada sahip yönetim arayüzü proxy düzenleyicisi.
<DisplayName>
öğesi tüm politikalarda ortaktır.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı. <DisplayName> değerini çıkarırsanız
politikanın name özelliği kullanılıyor |
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 yok.
<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ı
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ış 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