Kota politikası

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

Ne?

Bir API proxy'sinin izin verdiği istek mesajı sayısını yapılandırmak için Kota politikasını kullanın. Dakika, saat, gün, hafta veya ay gibi bir zaman dilimi. Kotayı şu değere göre ayarlayabilirsiniz: API proxy'sine erişen tüm uygulamalar için aynıdır veya kotayı aşağıdakilere göre ayarlayabilirsiniz:

  • API proxy'sini içeren ürün
  • API isteyen uygulama
  • Uygulama geliştirici
  • Başka birçok kriter

Genel trafik artışlarına karşı kendinizi korumak için Kota'yı kullanmayın. Bunun için Spike Arrest'i kullanın. politikası. Bkz. Spike Arrest politikasına tabidir.

Videolar

Bu videolar, Kota politikasıyla kota yönetimini tanıtır:

Giriş (Yeni Uç)

Giriş (Klasik Edge)

Dinamik Kota

Dağıtılan ve Eşzamanlı

Mesaj Ağırlığı

Takvim

Kayar Pencere

Flexi

Koşullu Kota

Akış Değişkenleri

Hata İşleme

Örnekler

Bu politika kodu örnekleri, kota dönemlerinin nasıl başlatılacağını ve biteceğini aşağıdaki şekilde gösterir:

Daha Fazla Dinamik Kota

<Quota name="CheckQuota"> 
  <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval>
  <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit>
  <Allow count="200" countRef="verifyapikey.verify-api-key.apiproduct.developer.quota.limit"/>
</Quota>

Dinamik kotalar, farklı Kotaları zorunlu kılan tek bir Kota politikası yapılandırmanızı sağlar Kota Politikası'na iletilen bilgilere göre ayarlanır. Kota ayarları için başka bir terim de bu bağlam da "Hizmet Planı"dır. Dinamik Kota, "Hizmet Planı" ve ardından bu ayarları zorunlu kılar.

Not: Bir öğe için hem değer hem de referans belirtirseniz başvuru önceliği alır. Referans çalışma zamanında çözümlenmezse değer: kullanılır.

Örneğin, bir API ürünü oluşturduğunuzda isteğe bağlı olarak izin verilen kotayı ayarlayabilirsiniz. zaman birimi ve aralık. Ancak API ürününde bu değerin ayarlanması, API proxy'sinde kullanımlarını zorunlu kılmaktır. Ayrıca, aşağıdaki koşulları karşılayan API proxy'sine Kota bu değerleri okur. API oluşturma bölümüne bakın ürünler hakkında daha fazla bilgi edinin.

Yukarıdaki örnekte, Kota politikasını içeren API proxy'si bir VerifyAPIKey kullanır politikasını (verify-api-key) kullanarak bir istekte geçirilen API anahtarını doğrulayın. İlgili içeriği oluşturmak için kullanılan Ardından kota politikası, kotayı okumak için VerifyAPIKey politikasındaki akış değişkenlerine erişir. değerleri için geçerlidir. VerifyAPIKey akış değişkenleri hakkında daha fazla bilgi için API Anahtarı politikasını doğrulama başlıklı makaleye bakın.

Diğer bir seçenek de, özel özellikleri tek tek geliştiriciler veya uygulamalarda ayarlayıp daha sonra Kota politikasında da kullanabilirsiniz. Örneğin her bir alt küme için farklı kota değerleri ayarlamak geliştiriciyim. Bu durumda, geliştirici için limiti, zaman birimi ve aralık. Daha sonra, aşağıdaki gibi Kota politikasında bu değerlere referans verirsiniz. aşağıda bulabilirsiniz:

<Quota name="DeveloperQuota"> 
  <Identifier ref="verifyapikey.verify-api-key.client_id"/> 
  <Interval ref="verifyapikey.verify-api-key.developer.timeInterval"/> 
  <TimeUnit ref="verifyapikey.verify-api-key.developer.timeUnit"/> 
  <Allow countRef="verifyapikey.verify-api-key.developer.limit"/> 
</Quota>

Bu örnekte, özel özelliklere başvuruda bulunmak için VerifyAPIKey akış değişkenleri de kullanılmaktadır. için de geçerli.

Kota politikasının parametrelerini ayarlamak için herhangi bir değişkeni kullanabilirsiniz. Bu değişkenler kaynak:

  • Akış değişkenleri
  • API ürünü, uygulaması veya geliştiricisindeki mülkler
  • Anahtar/değer eşlemesi (KVM)
  • Başlık, sorgu parametresi, form parametresi vb.

Her API proxy'si için Kota politikalarının diğer tüm proxy'lerde belirtildiği gibi bu politika ve proxy için benzersiz değişkenlerdir.

Başlangıç Zamanı

<Quota name="QuotaPolicy" type="calendar">
  <StartTime>2017-02-18 10:30:00</StartTime>
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

type değeri calendar olarak ayarlanmış bir Kota için açık <StartTime> değeri. Saat değeri yerel değil, GMT saatidir gerekir. Politika türü için <StartTime> değeri sağlamazsanız calendar, Edge hata veriyor.

Her uygulamanın Kota sayacı <StartTime> temel alınarak yenilenir. <Interval> ve <TimeUnit> değerleri. Bunun için Örneğin, Kota 18 Şubat 2017 tarihinde saat 10:30'da (GMT) sayılmaya başlar ve her saat 5 saat. Bu nedenle, bir sonraki yenileme 18 Şubat 2017, 15:30 (GMT) itibarıyla gerçekleşecektir.

Erişim Sayacı

<Quota name="QuotaPolicy">
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

API proxy'si, Kota politikası tarafından ayarlanan akış değişkenlerine erişebilir. Buradan: koşullu işlemeyi gerçekleştirmek için bu akış değişkenlerini API proxy'sinde kota sınırına yaklaştıkça, mevcut kota sayacını bir uygulamaya döndürün veya neden.

Politikanın akış değişkenlerine erişim, name özelliği, yukarıdaki QuotaPolicy adlı politika için akış değişkenlerine şu biçimde erişebilirsiniz:

  • ratelimit.QuotaPolicy.allowed.count: İzin verilen sayı.
  • ratelimit.QuotaPolicy.used.count: Mevcut sayaç değeri.
  • ratelimit.QuotaPolicy.expiry.time: Sayaç sıfırlandığı UTC saati.

Aşağıda açıklandığı gibi, erişebileceğiniz birçok başka akış değişkeni vardır.

Örneğin, Kotanın değerlerini döndürmek için aşağıdakiassignMessage politikasını kullanabilirsiniz yanıt başlıkları olarak akış değişkenleri:

<AssignMessage async="false" continueOnError="false" enabled="true" name="ReturnQuotaVars">
    <AssignTo createNew="false" type="response"/>
    <Set>
        <Headers>
            <Header name="QuotaLimit">{ratelimit.QuotaPolicy.allowed.count}</Header>
            <Header name="QuotaUsed">{ratelimit.QuotaPolicy.used.count}</Header>
            <Header name="QuotaResetUTC">{ratelimit.QuotaPolicy.expiry.time}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</AssignMessage>

İlk İstek

<Quota name="MyQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="10000"/>
</Quota>

Saat başına 10.000 çağrılık bir kota uygulamak için bu örnek kodu kullanın. Politika sıfırlanır kota sayacını yıkıyoruz. Sayaç 10.000 çağrılık kotaya ulaşırsa 10.000 çağrıyı aşan çağrılar reddedilir.

Örneğin, sayaç 2017-07-08 07:00:00 itibarıyla başlıyorsa 0, 2017-07-08 08:00:00 (başlangıç zamanından 1 saat sonra). İlk mesaj alınan mesaj sayısı: 2017-07-08 07:35:28 ve mesaj sayısı 10.000'e 2017-07-08 08:00:00 tarihinden önce bu sayının üzerindeki çağrılar, şu tarihe kadar reddedilir: sayısı saatin başında sıfırlanır.

Sayaç sıfırlama zamanı, <Interval> ve <TimeUnit>. Örneğin, <Interval> öğesini Saat <TimeUnit> için 12, ardından sayaç on iki saatte bir sıfırlanır. <TimeUnit> değerini dakika, saat, gün, hafta veya ay olarak ayarlayabilirsiniz.

Bu politikaya API proxy'nizin birden çok yerinde başvurabilirsiniz. Örneğin herkesin her istekte yürütülmesi için proxy PreFlow'a yerleştirin. Ya da bunu API proxy'sindeki birden fazla akışta gerçekleştirir. Bu politikayı Türkiye'de birden fazla yerde kullanıyorsanız proxy'si ise politikanın tüm örnekleri tarafından güncellenen tek bir sayaç sağlar.

Alternatif olarak, API proxy'nizde birden fazla Kota politikası tanımlayabilirsiniz. Her Kota politikası Politikanın name özelliğine göre kendi sayacını korur.

Tanımlayıcı ayarla

<Quota name="QuotaPolicy" type="calendar">
  <Identifier ref="request.header.clientId"/> 
  <StartTime>2017-02-18 10:00:00</StartTime>
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

Kota politikası varsayılan olarak API proxy'si için tek bir sayaç tanımlar. kaynağı. Alternatif olarak, <Identifier> özelliğini de kullanabilirsiniz. değerine göre ayrı sayaçlar tutmak için bir Kota politikasıyla <Identifier> özelliği için de kullanılmaktadır.

Örneğin, şunlar için ayrı sayaçlar tanımlamak üzere <Identifier> etiketini kullanın: her istemci kimliğini girin. Proxy'nize yapılan bir istekte, istemci uygulaması şunu içeren bir başlık iletir: clientID, yukarıdaki örnekte gösterildiği gibi.

<Identifier> özelliğine herhangi bir akış değişkenini belirtebilirsiniz. Örneğin, Örneğin, id adlı bir sorgu parametresinin benzersiz tanımlayıcı:

<Identifier ref="request.queryparam.id"/>

API anahtarını doğrulamak için VerifyAPIKey politikasını veya OAuthV2 politikalarını kullanıyorsanız OAuth jetonları aracılığıyla, kullanıcıyı tanımlamak için API anahtarındaki veya jetonundaki bilgileri sayaçları arasında yer alır. Örneğin, <Identifier> etiketi,client_id verify-api-key adlı VerifyAPIKey politikası:

<Identifier ref="verifyapikey.verify-api-key.client_id"></Identifier>

Her benzersiz client_id değeri artık Kota'da kendi sayacını tanımlar politikası.

Sınıf

<Quota name="QuotaPolicy">
  <Interval>1</Interval>
  <TimeUnit>day</TimeUnit>
  <Allow>
    <Class ref="request.header.developer_segment">
      <Allow class="platinum" count="10000"/>
      <Allow class="silver" count="1000" />
    </Class>
  </Allow>
</Quota>

Sınıfa dayalı bir Kota sayısı kullanarak Kota sınırlarını dinamik olarak ayarlayabilirsiniz. Bu örnekte kota sınırı, developer_segment değeri ile belirlenir. her istekle birlikte iletilir. Bu değişkenin değeri platinum olabilir veya silver. Başlıkta geçersiz değer varsa politika bir kota döndürür ihlal hatası.


Kota politikası hakkında

Kota, bir API proxy'sinin belirli bir dönemde işleyebileceği istek mesajlarının servis birimidir. Örneğin dakika, saat, gün, hafta veya ay. Politika, her sayfada gösterilen API proxy'si tarafından alınan istek sayısı. Bu olanak, API sağlayıcılarının uygulamaların belirli bir zaman aralığında yaptığı API çağrılarının sayısı. Kota politikalarını kullanarak Örneğin, uygulamaları dakikada 1 istek veya ayda 10.000 istek ile sınırlandırabilirsiniz.

Örneğin, bir Kota ayda 10.000 ileti olarak tanımlanırsa hız sınırı şu tarihten sonra başlar: mesajı görebilirsiniz. İlk oturumda 10.000 iletinin sayılıp sayılmadığı veya günü veya o dönemin son günü; Kota sayacına kadar ek istek alanına izin verilmez belirtilen zaman aralığının sonunda veya Kota açıkça belirlenene kadar Kotayı Sıfırla aracını kullanarak sıfırlama politikasına tabidir.

SpikeArrest adlı Kota’da yapılan bir varyasyon, gerçekleşebilecek trafikteki ani artışları (veya patlamaları) kullanımdaki ani artıştan, hatalı istemcilerden veya kötü amaçlı saldırılardan kaynaklanabilir. Daha fazla SpikeArrest hakkında daha fazla bilgi için Spike Arrest politikasını inceleyin.

Kotalar, bağımsız API proxy'leri için geçerlidir ve API proxy'leri arasında dağıtılmaz. Örneğin, Bir API ürününde üç API proxy'si varsa bunların üçünde de tek bir kota paylaşılmaz kota politikası yapılandırmasını da kullanabilir.

Kota politikası türleri

Kota politikası birkaç farklı politika türünü destekler: varsayılan, calendar, flexi ve rollingwindow. Her tür, kota sayacının ne zaman aşağıdaki tabloda gösterildiği gibi, sıfırlandığı zaman başlatılır:

Zaman Birimi Varsayılan (veya boş) sıfırlama takvim sıfırlandı flexi sıfırlama
dakika Sonraki dakika başlangıcı <StartTime> tarihinden bir dakika sonra İlk istekten bir dakika sonra
saat Sonraki bir saatin başında <StartTime> sonrasında bir saat İlk istekten bir saat sonra
gün Geçerli günün gece yarısı (GMT) 24 saat (<StartTime> itibarıyla) İlk istekten 24 saat sonra
hafta Gece yarısı GMT Pazar, hafta sonunda <StartTime> tarihinden bir hafta sonra İlk istekten bir hafta sonra
ay Ayın son gününün gece yarısı (GMT) <StartTime> tarihinden bir ay (28 gün) İlk istekten bir ay sonra (28 gün)

type="calendar" için <StartTime>.

Tabloda, rollingwindow türü için değer listelenmez. Kayar pencere kotalar, bir saat veya bir günlük zaman aralığı gibi bir kota "penceresi" boyutu ayarlanarak çalışır. Bir yeni istek geldiğinde politika, kotanın geçmişte aşılıp aşılmadığını belirler "pencere" kazanıyor.

Örneğin, 1.000 isteğe izin veren iki saatlik bir aralık tanımlarsınız. Yeni bir istek saat 16:45'te alınır.Politika, son iki saatlik zaman dilimi için kota sayısını hesaplar yani 14:45'ten beri gelen istek sayısıdır. Bu süre içinde kota sınırı aşılmamışsa iki saatlik bir süre içinde, isteğe izin verilir.

Bir dakika sonra, 16:46'da başka bir istek geliyor. Artık politika, 14:46'dan bu yana uygulanan kota sayısı.

rollingwindow türü için sayaç hiçbir zaman sıfırlanmaz, ancak yeniden hesaplanır.

Kota sayaçlarını anlama

Kota politikası, varsayılan olarak tek bir sayacı korur. API proxy'sinde referansta bulunmamalıdır. Kota sayacının adı şu tarihe göre belirlenir: politikanın name özelliği.

Örneğin, sınırı 5 olan MyQuotaPolicy adlı bir Kota politikası oluşturuyorsunuz. ve API proxy'sinde birden fazla akışa (Akış A, B ve C) yerleştirebilir. Her ne kadar birden çok akışta kullanılıyorsa, öğenin tüm örnekleri tarafından güncellenen tek bir sayaç sağlar. politika:

  • A Akışı yürütüldü -> MyQuotaPolicy çalıştırıldı ve sayacı = 1
  • B Akışı yürütüldü -> MyQuotaPolicy çalıştırıldı ve sayacı = 2
  • A Akışı yürütüldü -> MyQuotaPolicy çalıştırıldı ve sayacı = 3 olarak ayarlandı
  • C Akışı yürütüldü -> MyQuotaPolicy çalıştırıldı ve sayacı = 4
  • A Akışı yürütüldü -> MyQuotaPolicy çalıştırıldı ve sayacı = 5.

Kota sayacı kota sayacına ulaştığından, üç akıştan herhangi birine yönelik sonraki istek reddedildi izin vermez.

API proxy akışında birden fazla yerde aynı Kota politikasını kullanma, kotanın beklediğinizden hızlı tükenmesine neden olmamasına neden olabilir. Bu durum, The Book of Apigee Edge Antipatterns (Apigee Edge Antipatterns Kitabı).

Alternatif olarak, API proxy'nizde birden fazla Kota politikası tanımlayabilir ve farklı bir Kota politikası kullanabilirsiniz her bir akışta takip edin. Her Kota politikası, politikanın name özelliği.

Alternatif olarak Şurada <Class> veya <Identifier> öğe: Kota politikasını kullanın. Bu araçları kullanarak öğeleri varsa tek bir politika, istekte bulunan uygulamaya bağlı olarak farklı sayaçlar sağlayabilir. istekte bulunan uygulama geliştirici, istemci kimliği veya başka bir istemci tanımlayıcısı vb. Bkz. daha fazla bilgi için yukarıdaki örneklere <Class> veya <Identifier> öğeleri.

Saat gösterimi

Tüm Kota süreleri Eşgüdümlü Evrensel Saat (UTC) saat dilimi.

Kota saati gösterimi, Uluslararası standartlarda tanımlanan uluslararası standart tarih gösterimini izler Standart ISO 8601.

Tarihler yıl, ay ve gün olarak tanımlanır ve şu biçimde belirtilir: YYYY-MM-DD. Örneğin, 2015-02-04 4 Şubat 2015'i temsil eder.

Günün saati, aşağıdaki biçimde saat, dakika ve saniye olarak tanımlanır: hours:minutes:seconds Örneğin, 23:59:59, zaman dilimini temsil eder gece yarısından önce ikinci saniye.

00:00:00 ve 24:00:00 gösterimini kullanabileceğinizi unutmayın. bir tarihle ilişkilendirilebilecek iki gece yarısını birbirinden ayırt eder. Bu nedenle 2015-02-04 24:00:00, 2015-02-05 00:00:00 ile aynı tarih ve saattir. İkincisi ise genellikle tercih edilen gösterimdir.

API ürün yapılandırmasından kota ayarlarını alma

API ürün yapılandırmalarında kota sınırları belirleyebilirsiniz. Bu sınırlar otomatik olarak kotayı zorunlu kıl. Bunun yerine, bir kota politikasındaki ürün kotası ayarlarına başvurabilirsiniz. Aşağıda bazı örnekler verilmiştir: kota politikalarının referans olarak alması için ürün için bir kota ayarlamanın avantajları:

  • Kota politikaları, API ürünündeki tüm API proxy'leri için tek tip bir ayar kullanabilir.
  • Bir API ürününün kota ayarı ve kota politikaları üzerinde çalışma zamanında değişiklik yapabilirsiniz. kota değerleri otomatik olarak güncellenmiştir.

Bir API ürününden kota ayarlarını kullanma hakkında daha fazla bilgi için "Dinamik Kota" bölümüne bakın başlıklı bölüme bakın..

API ürünlerini kota sınırlarıyla yapılandırma hakkında bilgi edinmek için API ürünleri oluşturma başlıklı makaleyi inceleyin.

Öğe referansı

Bu politikada yapılandırabileceğiniz öğeler ve özellikler aşağıda verilmiştir. Bazı öğelerin birlikte kullanılması gerekmez veya gerekli değildir. Özel kullanım örneklerine göz atın. İlgili içeriği oluşturmak için kullanılan Aşağıdaki verifyapikey.VerifyAPIKey.apiproduct.* değişken aşağıdaki durumlarda varsayılan olarak kullanılabilir: "VerifyAPIKey" adlı bir API Anahtarı Doğrulama politikası , istekteki uygulamanın API anahtarını kontrol etmek için kullanılır. Değişken değerleri, anahtarın ilişkilendirildiği API ürünündeki kota ayarlarından gelir API ürününden kota ayarlarını alma konusunda açıklandığı gibi yapılandırma hakkında daha fazla bilgi edinin.

<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">
   <DisplayName>Quota 3</DisplayName>
   <Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
   <Allow>
      <Class ref="request.queryparam.time_variable">
        <Allow class="peak_time" count="5000"/>
        <Allow class="off_peak_time" count="1000"/>
      </Class>
   </Allow>
   <Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval> 
   <TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
   <StartTime>2017-7-16 12:00:00</StartTime> 
   <Distributed>false</Distributed> 
   <Synchronous>false</Synchronous> 
   <AsynchronousConfiguration> 
      <SyncIntervalInSeconds>20</SyncIntervalInSeconds> 
      <SyncMessageCount>5</SyncMessageCount> 
   </AsynchronousConfiguration> 
   <Identifier/> 
   <MessageWeight/> 
</Quota>

&lt;Quota&gt; özellikler

<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">

Aşağıdaki özellikler bu politikaya özeldir.

Özellik Açıklama Varsayılan Varlık
tür

Kota sayacının kota kullanımını ne zaman ve nasıl kontrol ettiğini belirlemek için kullanın. Görüntüleyin Kota politikası türleri başlıklı makaleyi inceleyin.

Bir type değerini atlarsanız sayaç en baştan başlar dakika/saat/gün/hafta/aydır.

Geçerli değerler şunlardır:

  • calendar: Açık bir başlangıç zamanına göre kota yapılandırın. Kota her uygulama için sayacın şuna göre yenilenir: <StartTime>, <Interval> ve Belirlediğiniz <TimeUnit> değer.
  • rollingwindow: "Kayan pencere" kullanan bir kota yapılandırma - belirler. rollingwindow ile pencerenin boyutunu en üstte olacak şekilde <Interval> ve <TimeUnit> öğeleri; örneğin, 1 gün. Bir istek geldiğinde, Edge isteğin tam zamanına bakar (ör. 17:01), bu etkinlik saati ile 17:01 arasında gelen istekleri gün boyunca (1 gün) kontrol eder ve kotanın ilgili günde açıklayacağım.
  • flexi: ilk istek mesajı bir uygulamadan alınır ve <Interval>, ve <TimeUnit> değerleri.
takvim İsteğe bağlı

Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
name

Politikanın dahili adı. name özelliğinin değeri Harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false değerine ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğe

Politikayı name özelliğine ek olarak farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.

<DisplayName>Policy Display Name</DisplayName>
Varsayılan

Yok

Bu öğeyi çıkarırsanız politikanın name özelliğinin değeri: kullanılır.

Varlık İsteğe bağlı
Tür Dize

&lt;Allow&gt; öğe

Kotanın sayı sınırını belirtir. Politikanın sayacı bu sınıra ulaşırsa değerinde olması gerekir. Sayaç sıfırlanana kadar sonraki çağrılar reddedilir.

Aşağıda, <Allow> öğesini ayarlamanın üç yolu gösterilmektedir:

<Allow count="2000"/> 
<Allow countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> 
<Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> 

Hem count hem de countRef öğesini belirtirseniz countRef öncelik kazanır. countRef çalışma zamanında çözümlenmezse count kullanılıyor.

Varsayılan: Yok
Bulunma: İsteğe bağlı
Tür: Tamsayı

Özellikler

Özellik Açıklama Varsayılan Varlık
sayı

Kota için ileti sayısını belirtmek amacıyla kullanın.

Örneğin, count özellik değeri 100, Interval/1, ve aylık TimeUnit için aylık 100 iletilik bir kota belirtir.

2000 İsteğe bağlı
countRef

Bir kotanın ileti sayısını içeren akış değişkenini belirtmek için kullanın. countRef, count özelliğine göre önceliklidir.

yok İsteğe bağlı

&lt;Allow&gt;/&lt;Class&gt; öğe

<Class> öğesi, değeri koşullandırmanıza olanak tanır bir akış değişkeninin değerine göre <Allow> öğesinin değerini belirleyin. Örneğin, <Class> öğesinin her farklı <Allow> alt etiketi, politikada farklı bir karşı bildirim kullanılır.

<Class> öğesini kullanmak için <Class> etiketine ref özelliği. Edge, daha sonra akış değişkeni kullanarak <Allow> alt etiketten birini seçerek politika sayısı. Edge, akış değişkeninin değerini class ile eşleştirir özelliğinin <Allow> özelliğine ilişkin aşağıdaki gibidir:

<Allow>
  <Class ref="request.queryparam.time_variable">
    <Allow class="peak_time" count="5000"/>
    <Allow class="off_peak_time" count="1000"/>
  </Class>
</Allow>

Bu örnekte, mevcut kota sayacı Her istekle birlikte time_variable sorgu parametresi iletildi. Bu değişkenin bir değeri olabilir peak_time veya off_peak_time. Sorgu parametresi geçersiz bir değerine ayarlanırsa politika bir kota ihlali hatası döndürür.

Varsayılan: Yok
Bulunma: İsteğe bağlı
Tür: Yok

Özellikler

Özellik Açıklama Varsayılan Varlık
referans

Bir kotanın kota sınıfını içeren akış değişkenini belirtmek için kullanın.

yok Zorunlu

&lt;Allow&gt;/&lt;Class&gt;/&lt;Allow&gt; öğe

<Allow> öğesi, kota sayacı sınırını belirtir <Class> öğesi ile tanımlanır. Her bir <Class> öğesinin farklı <Allow> alt etiketi, politikası farklı bir karşıtlığa sahiptir.

Örneğin:

<Allow>
  <Class ref="request.queryparam.time_variable">
    <Allow class="peak_time" count="5000"/>
    <Allow class="off_peak_time" count="1000"/>
  </Class>
</Allow>

Bu örnekte, Kota politikası peak_time ve off_peak_time.

Varsayılan: Yok
Bulunma: İsteğe bağlı
Tür: Yok

Özellikler

Özellik Açıklama Varsayılan Varlık
sınıf

Kota sayacının adını tanımlar.

yok Zorunlu
sayı Sayaç için kota sınırını belirtir. yok Zorunlu

&lt;Interval&gt; öğe

Saat belirlemek için belirttiğiniz TimeUnit (dakika, saat, gün, hafta veya ay) Edge'in kota kullanımını hesapladığı süre.

Örneğin, 24 içeren Interval hour TimeUnit değeri, kotanın toplam 24 saat içinde hesaplanır.

<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
Varsayılan: yok
Bulunma: Zorunlu
Tür: Tamsayı

Özellikler

Özellik Açıklama Varsayılan Varlık
referans

Verinin aralığını içeren bir akış değişkenini belirtmek için kota. ref, açık bir aralığa göre önceliklidir değer. Hem referans hem de değer belirtilirse referans önceliği alır. ref çalışma zamanında çözümlenemezse değer kullanılır.

yok İsteğe bağlı

&lt;TimeUnit&gt; öğe

Kota için geçerli olan zaman birimini belirtmek üzere kullanın.

Örneğin, 24 içeren Interval hour TimeUnit değeri, kotanın toplam 24 saat içinde hesaplanır.

<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
Varsayılan: yok
Bulunma: Zorunlu
Tür:

Dize. minute, hour, day ve week veya month.

Özellikler

Özellik Açıklama Varsayılan Varlık
referans Bir kotanın zaman birimini içeren akış değişkenini belirtmek için kullanın. ref. açık bir aralık değerine göre önceliklidir. ref çözümlenmezse değer kullanılır. yok İsteğe bağlı

&lt;StartTime&gt; öğe

type, calendar, olarak ayarlandığında tarihi belirtir tüm isteklerin bu hatadan kaynaklanmış olup olmadığına bakılmaksızın, kota sayacının (herhangi bir uygulamadan alınan)

type açıkça ayarlandığında açık bir StartTime sağlamanız gerekir calendar, için bir akış değişkenine referans kullanamazsınız. type değeri ayarlanmadığında StartTime değeri için hatası.

Örneğin:

<StartTime>2017-7-16 12:00:00</StartTime>
Varsayılan: yok
Bulunma: type, calendar olarak ayarlandığında zorunludur.
Tür:

ISO 8601'deki dize tarih ve saat biçimini belirlemenizi sağlar.

<Dağıtıldı> öğe

Edge kurulumunda istekleri işlemek için bir veya daha fazla Mesaj İşleyici kullanılabilir. Bunu ayarla öğesini true öğesine göndererek politikanın merkezi bir tüm İleti İşlemcileri arasında sürekli olarak senkronize eder. Mesaj işleyiciler kullanılabilirlik alt bölgeleri ve/veya bölgeler arasında olabilir.

Varsayılan false değerini kullanırsanız kotanızı aşabilirsiniz: Her İleti İşleyen için sayı paylaşılmaz:

<Distributed>true</Distributed>

Sayaçların senkronize edilmesini ve her istekte güncellenmesini sağlamak için <Distributed> ve <Synchronous> değerleri doğru değerine ayarlandı:

<Distributed>true</Distributed>
<Synchronous>true</Synchronous>
Varsayılan: false
Bulunma: İsteğe bağlı
Tür: Boole

&lt;Synchronous&gt; öğe

Dağıtılmış bir kota sayacını eşzamanlı olarak güncellemek için true olarak ayarlayın. Bu Sayaçta yapılan güncellemenin, bir istekte kota kontrol edildiği anda yapıldığı anlamına gelir. bağlantı kurmalısınız. Hiçbir API'ye izin vermemeniz gerekiyorsa true olarak ayarlayın çağrısından yararlanır.

Kota sayacını eşzamansız olarak güncellemek için false olarak ayarlayın. Bunun anlamı şudur: ne zaman yapılacağına bağlı olarak, kotayı aşan bazı API çağrılarının merkezi depodaki kota sayacı eşzamansız olarak güncellenir. Ancak, eşzamanlı güncellemelerin performans üzerindeki olası etkilerini görebilirsiniz.

Varsayılan eşzamansız güncelleme aralığı 10 saniyedir. Şunu kullanın: AsynchronousConfiguration öğesini kullanın.

<Synchronous>false</Synchronous>
Varsayılan: false
Bulunma: İsteğe bağlı
Tür: Boole

&lt;AsynchronousConfiguration&gt; öğe

Politika şu durumlarda dağıtılmış kota sayaçları arasındaki senkronizasyon aralığını yapılandırır. <Synchronous> yapılandırma öğesi mevcut değil veya mevcut ve ayarlanmış Hedef: false.

Verileri bir süre geçtikten sonra veya ileti sayısı metriğinden sonra senkronize etmek için SyncIntervalInSeconds veya SyncMessageCount alt öğeleri. Birbirinden bağımsızdırlar. Örneğin,

<AsynchronousConfiguration>
   <SyncIntervalInSeconds>20</SyncIntervalInSeconds>
</AsynchronousConfiguration>

veya

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>
Varsayılan: SyncIntervalInSeconds = 10 saniye
Bulunma: İsteğe bağlı; <Synchronous> şuna ayarlandığında yoksayılır: true.
Tür:

Yerleşke

&lt;AsynchronousConfiguration&gt;/&lt;SyncIntervalInSeconds&gt; öğe

Eşzamansız güncellemelerin olduğunu varsayalım.

<AsynchronousConfiguration>
   <SyncIntervalInSeconds>20</SyncIntervalInSeconds>
</AsynchronousConfiguration>

Senkronizasyon aralığı şurada açıklandığı gibi en az 10 saniye olmalıdır: Sınırlar konusu.

Varsayılan: 10
Bulunma: İsteğe bağlı
Tür:

Tamsayı

&lt;AsynchronousConfiguration&gt;/&lt;SyncMessageCount&gt; öğe

Tüm Apigee mesaj işlemcilerindeki kotalar arasında gönderilen istek sayısını belirtir güncellemelerine göz atın.

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>

Bu örnek, kota sayısının her Apigee'de 5 istekte bir güncellendiğini belirtir. Uç mesaj işlemcisi.

Varsayılan: Yok
Bulunma: İsteğe bağlı
Tür:

Tamsayı

&lt;Identifier&gt; öğe

Benzersiz reklam öğeleri oluşturmak üzere politikayı yapılandırmak için <Identifier> öğesini kullanın. bir akış değişkenine dayalı sayaçlar.

ziyaret edin. Bir akış değişkeniyle tanımlanan özellikler için benzersiz sayaçlar oluşturabilirsiniz. Örneğin, geliştirici e-posta adresini kullanarak kotayı belirli bir geliştiriciye bağlayabilirsiniz. URL parametrelerinin Google tarafından nasıl ele alınmasını istediğinizi belirtmek için İster özelleştirilebilen değişkenler ister misiniz? veya önceden tanımlanmış değişkenler (ör. API Anahtarı Doğrulama Politikası ile kullanılabilenler gibi). Şu kaynakları da inceleyin Değişkenler referansı.

Bu öğeyi kullanmazsanız politika, kota.

Bu unsura aşağıdaki Apigee Topluluk gönderisinde de değinilmektedir: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.

<Identifier ref="verifyapikey.verify-api-key.client_id"/>
.
Varsayılan: Yok
Bulunma: İsteğe bağlı
Tür:

Dize

Özellikler

Özellik Açıklama Varsayılan Varlık
referans

İstek için kullanılacak sayacı tanımlayan bir akış değişkenini belirtir. İlgili içeriği oluşturmak için kullanılan tanımlayıcı bir HTTP üstbilgisi, sorgu parametresi, form parametresi veya ileti içeriği olabilir her uygulama, uygulama kullanıcısı, uygulama geliştirici, API ürünü veya karakteristiktir.

Uygulamaları benzersiz şekilde tanımlamak için en sık kullanılan <Identifier>: client_id. client_id, API anahtarının başka bir adıdır. Google Analytics 4'te bir kuruluşta kayıtlı olan uygulamalar için oluşturulan Apigee Edge. API anahtarını veya OAuth'u etkinleştirdiyseniz bu tanımlayıcıyı kullanabilirsiniz yetkilendirme politikaları hakkında daha fazla bilgi edinin.

Bazı durumlarda Kota ayarlarının client_id kullanılabilir (örneğin, güvenlik politikası olmadığında). İçinde bu gibi durumlarda, istediğiniz API'yi almak için Erişim Varlık Politikası'nı sonra da ExtractVariables'ı kullanarak değerleri ayıklayın ve ardından ayıklanan Kota politikasındaki bağlam değişkeni Daha fazla bilgi için Varlık Erişimine Erişme bölümünü inceleyin. politikasına tabidir.

Yok İsteğe bağlı

&lt;MessageWeight&gt; öğe

Her bir iletiye atanan ağırlığı belirtmek için kullanın. Mesaj ağırlığını kullanarak (örneğin, diğerlerine göre daha fazla işlem kaynağı tüketen iletiler) isteme.

Örneğin, POST iletilerinin "ağır" ileti olarak iki kat daha fazla sayılmasını istiyorsunuz. pahalıya mal olabilir. mesaj. Bu nedenle, bir POST için MessageWeight değerini 2, İNDİRİN. MessageWeight değerini 0 olarak bile ayarlayabilirsiniz. Böylece, istekte sayacı etkiler. Bu örnekte, kota dakikada 10 ileti ise ve POST istekleri için MessageWeight değeri 2 ise kota Herhangi bir 10 dakikalık aralıkta 5 POST isteğine izin verir. Ek istek (POST veya GET) geri dönmesini sağlar.

MessageWeight öğesini temsil eden bir değer, bir akışta belirtilmelidir. değişkenidir ve HTTP üstbilgilerinden, sorgu parametrelerinden, bir XML veya JSON isteğinden akış değişkeni olabilir. Örneğin, bunu weight:

<MessageWeight ref="message_weight"/>
Varsayılan: Yok
Bulunma: İsteğe bağlı
Tür:

Tamsayı

Akış değişkenleri

Aşağıdaki önceden tanımlanmış Akış değişkenleri, Kota politikası kullanıldığında otomatik olarak doldurulur yürütülür. Akış değişkenleri hakkında daha fazla bilgi için Değişkenler referansı bölümüne bakın.

Değişkenler Tür İzinler Açıklama
ratelimit.{policy_name}.allowed.count Uzun Salt Okunur İzin verilen kota sayısını döndürür
ratelimit.{policy_name}.used.count Uzun Salt Okunur Bir kota aralığı içinde kullanılan mevcut kotayı döndürür
ratelimit.{policy_name}.available.count Uzun Salt Okunur Kota aralığındaki kullanılabilir kota sayısını döndürür
ratelimit.{policy_name}.exceed.count Uzun Salt Okunur Kota aşıldığında 1 değerini döndürür.
ratelimit.{policy_name}.total.exceed.count Uzun Salt Okunur Kota aşıldığında 1 değerini döndürür.
ratelimit.{policy_name}.expiry.time Uzun Salt Okunur

Kotanın ne zaman sona ereceğini ve ne zaman yeni olacağını belirleyen UTC saatini milisaniye cinsinden döndürür kota aralığı başlangıcı.

Kota politikası türü rollingwindow olduğunda bu değer geçerli değildir çünkü kota aralığının süresi hiçbir zaman dolmaz.

oran sınırı.{politika_adı}.tanımlayıcı Dize Salt Okunur Politikaya ekli (istemci) tanımlayıcı referansını döndürür
oran limiti.{policy_name}.class Dize Salt Okunur İstemci tanımlayıcısıyla ilişkilendirilen sınıfı döndürür
ratelimit.{policy_name}.class.allowed.count Uzun Salt Okunur Sınıfta tanımlanan izin verilen kota sayısını döndürür
ratelimit.{policy_name}.class.used.count Uzun Salt Okunur Bir sınıf içinde kullanılan kotayı döndürür
ratelimit.{policy_name}.class.available.count Uzun Salt Okunur Sınıftaki kullanılabilir kota sayısını döndürür
ratelimit.{policy_name}.class.exceed.count Uzun Salt Okunur Şuradaki sınıftaki sınırı aşan istek sayısını döndürür: geçerli kota aralığı
ratelimit.{policy_name}.class.total.exceed.count Uzun Salt Okunur Tüm isteklerde, sınıftaki sınırı aşan toplam istek sayısını döndürür kota aralıklarıdır; bu nedenle tüm listeler için class.exceed.count kota aralıkları.
oran limiti.{politika_adı}.başarısız Boole Salt Okunur

Politikanın başarısız olup olmadığını belirtir (doğru veya yanlış).

Hata referansı

Bu bölümde, bu politika bir hatayı tetiklediğinde döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için 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.FailedToResolveQuotaIntervalReference 500 <Interval> öğesi Kota politikası içinde tanımlanmamışsa gerçekleşir. Bu öğe zorunludur ve kotaya uygulanabilir zaman aralığını belirtmek için kullanılır. Zaman aralığı <TimeUnit> öğesiyle tanımlanan şekilde dakika, saat, gün, hafta veya ay olabilir.
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 <TimeUnit> öğesi Kota politikası içinde tanımlanmamışsa gerçekleşir. Bu öğe zorunludur ve kotaya uygulanacak zaman birimini belirtmek için kullanılır. Zaman aralığı dakika, saat, gün, hafta veya ay biçiminde olabilir.
policies.ratelimit.InvalidMessageWeight 500 <MessageWeight> öğesinin değeri bir akış değişkeni aracılığıyla belirtilirse gerçekleşir geçersiz (tam sayı olmayan bir değer).
policies.ratelimit.QuotaViolation 500 Kota sınırı aşıldı. Yok

Dağıtım hataları

Hata adı Neden Düzelt
InvalidQuotaInterval <Interval> öğesinde belirtilen kota aralığı farklıysa bir tam sayı görüntülerse API proxy'sinin dağıtımı başarısız olur. Örneğin, kota aralığı belirtilen <Interval> öğesinde 0.1 ise API proxy'si başarısız oldu.
InvalidQuotaTimeUnit <TimeUnit> öğesinde belirtilen zaman birimi desteklenmiyorsa API proxy'sinin dağıtımı başarısız olur. Desteklenen zaman birimleri: minute hour, day, week ve month.
InvalidQuotaType Kotanın türü, <Quota> içindeki type özelliği tarafından belirtiliyorsa öğesinin geçersiz olması durumunda API proxy'sinin dağıtımı başarısız olur. İlgili içeriği oluşturmak için kullanılan desteklenen kota türleri şunlardır: default, calendar, flexi ve rollingwindow.
InvalidStartTime <StartTime> öğesinde belirtilen saatin biçimi geçersizse API proxy'sinin dağıtımı başarısız olur. Geçerli biçim şöyledir: yyyy-MM-dd HH:mm:ss ISO 8601 tarih ve saat biçimi. Örneğin, Örneğin, <StartTime> öğesinde belirtilen zaman 7-16-2017 12:00:00 sonrasında API proxy'sinin dağıtımı başarısız olur.
StartTimeNotSupported Kota türü şu olmayan <StartTime> öğesi belirtilirse calendar türündeyse API proxy'sinin dağıtımı başarısız olur. <StartTime> öğesi yalnızca calendar kota türü için desteklenir. Örneğin, type özelliği <Quota> öğesinde flexi veya rolling window olarak değiştirilirse dağıtımı başarısız olur.
InvalidTimeUnitForDistributedQuota <Distributed> öğesi true olarak, <TimeUnit> öğesi ise second nedeniyle API proxy'sinin dağıtımı başarısız olur. second zaman birimi şunun için geçersiz: dağıtılmış bir kota kullanır.
InvalidSynchronizeIntervalForAsyncConfiguration <SyncIntervalInSeconds> öğesi için Kota politikasındaki <AsynchronousConfiguration> öğesi sıfırdan küçükse dağıtımı başarısız olur.
InvalidAsynchronizeConfigurationForSynchronousQuota Kota politikasında <AsynchronousConfiguration> öğesinin değeri true olarak ayarlanırsa bu ayar aynı zamanda <AsynchronousConfiguration> öğesi kullanılarak tanımlanmış eşzamansız bir yapılandırma varsa ve API proxy'sinin dağıtımı başarısız olur.

Hata değişkenleri

Bu değişkenler, politika bir hatayı tetiklediğinde 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, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name Matches "QuotaViolation"
ratelimit.policy_name.failed policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. ratelimit.QT-QuotaPolicy.failed = true

Örnek hata yanıtı

{  
   "fault":{  
      "detail":{  
         "errorcode":"policies.ratelimit.QuotaViolation"
      },
      "faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default"
   }
}

Örnek hata kuralı

<FaultRules>
    <FaultRule name="Quota Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "QuotaViolation") </Condition>
        </Step>
        <Condition>ratelimit.Quota-1.failed=true</Condition>
    </FaultRule>
</FaultRules>

Şemalar

İlgili konular

ResetQuota politikası

SpikeArrest politika

Karşılaştırma Kota, Ani Artışı ve Eşzamanlı Hız Sınırlaması Politikaları