SpikeArrest politikası

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

Edge kullanıcı arayüzündeki Çivi Sabitleme simgesi

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ı. name özelliğinin değeri harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içerebilir. Bu değer 255 karakteri aşamaz.

İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı, doğal bir dille etiketlemek için <DisplayName> öğesini kullanın.

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 &lt;PolicyElement&gt;
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 ref hem gövdesini tanımlarsanız ref değeri uygulanır ve akış değişkeni şöyle olduğunda öncelikli olur: bu verileri kullanabilirsiniz. (Değişken ref içinde tanımlandığında tersi doğrudur değeri, istekte belirtilmemiştir.)

Ö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 <Identifier> aracını kullanabilirsiniz: son derece önemlidir.

ref için bir değer belirtir ancak fiyatı <Rate> öğesi ve istemci bir değer iletmez. Bu durumda Spike Arrest politikası hata verir.

İ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.
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).
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.

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.

'nı inceleyin.

Ö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