Kota politikası

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

Ne?

Bir API Proxy'sinin bir süre boyunca (ör. dakika, saat, gün, hafta veya ay) izin verdiği istek mesajı sayısını yapılandırmak için kota politikasını kullanın. Kotayı, API proxy'sine erişen tüm uygulamalar için aynı olacak şekilde ayarlayabilir veya aşağıdakilere göre ayarlayabilirsiniz:

  • API proxy'sini içeren ürün
  • API'yi isteyen uygulama
  • Uygulama geliştirici
  • Diğer birçok ölçüt

Genel trafik artışlarına karşı koruma sağlamak için kotayı kullanmayın. Bunun için Spike Arrest politikasını kullanın. Spike Arrest politikasını inceleyin.

Videolar

Aşağıdaki videolarda, kota politikası ile kota yönetimi hakkında bilgi verilmektedir:

Giriş (Yeni Edge)

Giriş (Klasik Edge)

Dinamik Kota

Dağıtılmış ve Eşzamanlı

Mesaj Ağırlığı

Takvim

Kaydırma aralığı

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 sonlandırılacağını aşağıdaki şekilde göstermektedir:

Daha 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, kota politikasına iletilen bilgilere göre farklı kota ayarlarını zorunlu tutan tek bir kota politikası yapılandırmanıza olanak tanır. Bu bağlamda kota ayarları için kullanılan bir diğer terim de "Hizmet Planı"dır. Dinamik kota, uygulamaların "Hizmet Planı"nı kontrol eder ve ardından bu ayarları uygular.

Not: Bir öğe için hem değer hem de referans belirtirseniz referans öncelikli olur. Referans çalışma zamanında çözülmezse değer kullanılır.

Örneğin, API ürünü oluşturduğunuzda isteğe bağlı olarak izin verilen kota sınırını, zaman birimini ve aralığı ayarlayabilirsiniz. Ancak bu değerlerin API ürününde ayarlanması, API proxy'sinde kullanılmasını zorunlu kılmaz. Ayrıca, API proxy'sine bu değerleri okuyan bir kota politikası da eklemeniz gerekir. Daha fazla bilgi için API ürünleri oluşturma başlıklı makaleyi inceleyin.

Yukarıdaki örnekte, kota politikasını içeren API proxy'si, bir istekle iletilen API anahtarını doğrulamak için verify-api-key adlı bir VerifyAPIKey politikası kullanır. Kota politikası daha sonra API ürününde ayarlanan kota değerlerini okumak için VerifyAPIKey politikasındaki akış değişkenlerine erişir. VerifyAPIKey akış değişkenleri hakkında daha fazla bilgi için API anahtarını doğrulama politikası başlıklı makaleyi inceleyin.

Diğer bir seçenek de, geliştiriciler veya uygulamalar için özel özellikler ayarlamak ve ardından bu değerleri kota politikasında okumaktır. Örneğin, geliştirici başına farklı kota değerleri belirlemek istiyorsunuz. Bu durumda, geliştirici için sınır, zaman birimi ve aralığı içeren özel özellikler ayarlarsınız. Ardından, Kota Politikası'nda aşağıdaki gibi bu değerlere referans verirsiniz:

<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, geliştirici için ayarlanan özel özelliklere referans vermek amacıyla VerifyAPIKey akış değişkenleri de kullanılır.

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

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

Her API proxy için, diğer tüm proxy'lerdeki diğer tüm kota politikalarıyla aynı değişkene referans veren bir kota politikası ekleyebilirsiniz. Kota politikası, söz konusu politika ve proxy'ye özgü değişkenleri de referans alabilir.

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 bir <StartTime> değeri tanımlamanız gerekir. Zaman değeri, yerel saat değil, GMT saatidir. calendar türündeki bir politika için <StartTime> değeri sağlamazsanız Edge hata verir.

Her uygulamanın kota sayacı, <StartTime>, <Interval> ve <TimeUnit> değerlerine göre yenilenir. Bu örnekte, kota 18 Şubat 2017 saat 10:30'da (GMT) saymaya başlar ve 5 saatte bir yenilenir. Bu nedenle, bir sonraki yenileme 18 Şubat 2017'de saat 15:30 (GMT) olacak.

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. Koşullu işlem gerçekleştirmek, kota sınırına yaklaştıkça politikayı izlemek, mevcut kota sayacını bir uygulamaya döndürmek veya başka nedenlerle API proxy'sinde bu akış değişkenlerine erişebilirsiniz.

Politikanın akış değişkenlerine erişim, politikaların name özelliğine dayalı olduğundan, yukarıdaki QuotaPolicy adlı politikanın akış değişkenlerine şu biçimde erişirsiniz:

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

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

Örneğin, kota akışı değişkenlerinin değerlerini yanıt üstbilgileri olarak döndürmek için aşağıdaki AssignMessage politikasını kullanabilirsiniz:

<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>

Bir saatte 10.000 arama kotası uygulamak için bu örnek kodu kullanın. Politika, her saatin başında kota sayacını sıfırlar. Sayaç, saat sona ermeden önce 10.000 arama kotasına ulaşırsa 10.000'den fazla arama reddedilir.

Örneğin, sayaç 2017-07-08 07:00:00'te başlarsa 2017-07-08 08:00:00'te (başlangıç zamanından 1 saat sonra) 0'a sıfırlanır. İlk mesaj 2017-07-08 07:35:28 saatinde alınır ve mesaj sayısı 2017-07-08 08:00:00 saatinden önce 10.000'e ulaşırsa sayı saatin başında sıfırlanana kadar bu sayının üzerindeki aramalar reddedilir.

Sayaç sıfırlama zamanı, <Interval> ve <TimeUnit> kombinasyonuna dayalıdır. Örneğin, <Interval> değerini <TimeUnit> saat için 12 olarak belirlerseniz 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'nizdeki birden fazla yerde referans verebilirsiniz. Örneğin, her istekte yürütülmesi için bunu Proxy Ön Akış'ına yerleştirebilirsiniz. Alternatif olarak, API proxy'sinde birden fazla akışa yerleştirebilirsiniz. Bu politikayı proxy'de birden fazla yerde kullanırsanız politika, tüm örnekleri tarafından güncellenen tek bir sayaç tutar.

Alternatif olarak, API proxy'nizde birden fazla kota politikası tanımlayabilirsiniz. Her kota politikasının, politikanın name özelliğine göre kendi sayacı vardır.

Tanımlayıcıyı ayarlama

<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>

Varsayılan olarak, kota politikası bir isteğin kaynağından bağımsız olarak API proxy'si için tek bir sayaç tanımlar. Alternatif olarak, <Identifier> özelliğinin değerine göre ayrı sayaçlar tutmak için <Identifier> özelliğini bir kota politikasıyla birlikte kullanabilirsiniz.

Örneğin, her istemci kimliği için ayrı sayaçlar tanımlamak üzere <Identifier> etiketini kullanın. İstemci uygulaması, proxy'nize gönderilen bir istek üzerine yukarıdaki örnekte gösterildiği gibi clientID değerini içeren bir başlık iletir.

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

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

API anahtarını doğrulamak için VerifyAPIKey politikasını veya OAuth jetonlarıyla OAuthV2 politikalarını kullanıyorsanız aynı kota politikası için ayrı sayaçlar tanımlamak amacıyla API anahtarındaki veya jetondaki bilgileri kullanabilirsiniz. Örneğin, aşağıdaki <Identifier> etiketi, verify-api-key adlı bir VerifyAPIKey politikasının client_id akış değişkenini kullanır:

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

Her benzersiz client_id değeri artık kota politikasında kendi sayacını tanımlar.

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ımı kullanarak kota sınırlarını dinamik olarak ayarlayabilirsiniz. Bu örnekte, kota sınırı her istekle birlikte iletilen developer_segment başlığının değerine göre belirlenir. Bu değişkenin değeri platinum veya silver olabilir. Başlıkta geçersiz bir değer varsa politika, kota ihlali hatası döndürür.


Kota politikası hakkında

Kota, bir API proxy'sinin dakika, saat, gün, hafta veya ay gibi bir dönemde işleyebileceği istek mesajlarının bir bölümüdür. Politika, API proxy'sinin aldığı istek sayısını sayan sayaçlar tutar. Bu özellik, API sağlayıcıların belirli bir zaman aralığında uygulamalar tarafından yapılan API çağrılarının sayısına sınırlama getirmelerine olanak tanır. Örneğin, kota politikalarını kullanarak uygulamaları dakika başına 1 istekle veya ayda 10.000 istekle sınırlayabilirsiniz.

Örneğin, kota aylık 10.000 ileti olarak tanımlanırsa hız sınırlaması 10.000. iletiden sonra başlar. 10.000 mesajın ilgili dönemin ilk gününde mi yoksa son gününde mi sayıldığı önemli değildir. Kota sayacı, belirtilen zaman aralığının sonunda otomatik olarak sıfırlanana veya Kotayı sıfırlama politikası kullanılarak açıkça sıfırlanana kadar ek istek alanına izin verilmez.

Kota'nın bir varyasyonu olan SpikeArrest, kullanımdaki ani artış, hatalı istemciler veya kötü amaçlı saldırılardan kaynaklanabilecek trafik artışlarını (veya patlamalarını) önler. SpikeArrest hakkında daha fazla bilgi için SpikeArrest politikası başlıklı makaleyi inceleyin.

Kotalar, API proxy'leri için ayrı ayrı geçerlidir ve API proxy'leri arasında dağıtılmaz. Örneğin, bir API ürününde üç API proxy'niz varsa üçü de aynı kota politikası yapılandırmasını kullansa bile tek bir kota üçü arasında paylaşılmaz.

Kota politikası türleri

Kota politikası, varsayılan, calendar, flexi ve rollingwindow olmak üzere çeşitli politika türlerini destekler. Her tür, kota sayacını ne zaman başlatacağını ve ne zaman sıfırlayacağını aşağıdaki tabloda gösterildiği gibi tanımlar:

Zaman Birimi Varsayılan (veya null) sıfırlama takvimi sıfırlama flexi sıfırlama
dakika Sonraki dakikanın başlangıcı <StartTime>'ten bir dakika sonra İlk istekten bir dakika sonra
saat Sonraki saatin başında <StartTime> saat sonra İlk istekten bir saat sonra
gün Geçerli günün gece yarısı (GMT) <StartTime> tarihinden 24 saat sonra İlk istekten 24 saat sonra
hafta Haftanın sonundaki Pazar günü gece yarısı (GMT) <StartTime> tarihinden bir hafta sonra İlk istekten bir hafta sonra
ay Ayın son gününün GMT'de gece yarısı <StartTime>'ten bir ay (28 gün) sonra İlk istekten bir ay (28 gün) sonra

type="calendar" için <StartTime> değerini belirtmeniz gerekir.

Tabloda rollingwindow türü için değer listelenmiyor. Kaydırma penceresi kotaları, bir saat veya bir gün gibi bir kota "penceresinin" boyutunu ayarlayarak çalışır. Yeni bir istek geldiğinde politika, kotanın geçmişteki bir "dönemde" aşılıp aşılmadığını belirler.

Örneğin, 1.000 isteğe izin veren iki saatlik bir zaman aralığı tanımlarsınız. 16:45'te yeni bir istek gelir.Politika, son iki saatlik zaman aralığı için kota sayısını (yani 14:45'ten sonraki isteklerin sayısını) hesaplar. Bu iki saatlik süre içinde kota sınırı aşılmış değilse isteğe izin verilir.

Bir dakika sonra, 16:46'da başka bir istek gelir. Artık politika, sınırın aşılıp aşılmadığını belirlemek için 14:46'dan sonraki kota sayısını hesaplar.

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

Kota sayaçları hakkında

Varsayılan olarak, bir kota politikası, API proxy'sinde kaç kez referans verdiğinizden bağımsız olarak tek bir sayaç kullanır. Kota sayıcısının adı, politikanın name özelliğine dayanır.

Örneğin, 5 istek sınırına sahip MyQuotaPolicy adlı bir kota politikası oluşturup API proxy'sinde birden fazla akışa (A, B ve C akışı) yerleştirirseniz. Birden fazla akışta kullanılsa da politikanın tüm örnekleri tarafından güncellenen tek bir sayaç tutar:

  • A akışı yürütülür -> MyQuotaPolicy yürütülür ve sayacı = 1 olur
  • B akışı yürütülür -> MyQuotaPolicy yürütülür ve sayacı = 2 olur
  • A akışı yürütülür -> MyQuotaPolicy yürütülür ve sayacı = 3 olur
  • C akışı yürütülür -> MyQuotaPolicy yürütülür ve sayacı = 4 olur
  • A akışı yürütülür -> MyQuotaPolicy yürütülür ve sayacı = 5

Kota sayacı sınırına ulaştığı için üç akıştan herhangi birine gönderilen sonraki istek reddedilir.

API proxy akışında aynı kota politikasının birden fazla yerde kullanılması, kotanın beklenenden daha hızlı tükenmesine neden olabilir. Bu, The Book of Apigee Edge Antipatterns (Apigee Edge Antipatterns Kitabı) adlı makalede açıklanan bir anti-pattern'dir.

Alternatif olarak, API proxy'nizde birden fazla kota politikası tanımlayabilir ve her akışta farklı bir politika kullanabilirsiniz. Her kota politikası, politikanın name özelliğine göre kendi sayacını korur.

Dilerseniz tek bir politikada birden fazla benzersiz sayaç tanımlamak için kota politikasındaki <Class> veya <Identifier> öğelerini de kullanabilirsiniz. Bu öğeleri kullanarak tek bir politika, isteği gönderen uygulamaya, isteği gönderen uygulama geliştiriciye, istemci kimliğine veya diğer istemci tanımlayıcılarına göre farklı sayaçlar tutabilir. <Class> veya <Identifier> öğelerini kullanma hakkında daha fazla bilgi için yukarıdaki örneklere bakın.

Zaman gösterimi

Tüm kota süreleri Eşgüdümlü Evrensel Zaman (UTC) saat dilimine ayarlanır.

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

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

Saat, aşağıdaki biçimde saat, dakika ve saniye olarak tanımlanır: hours:minutes:seconds. Örneğin, 23:59:59, gece yarısından bir saniye önceki zamanı temsil eder.

Bir tarihle ilişkilendirilebilecek iki gece yarısını birbirinden ayırmak için 00:00:00 ve 24:00:00 olmak üzere iki gösterim kullanılabileceğini unutmayın. Bu nedenle 2015-02-04 24:00:00, 2015-02-05 00:00:00 ile aynı tarih ve saattir. Genellikle tercih edilen gösterim budur.

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

API ürün yapılandırmalarında kota sınırlarını ayarlayabilirsiniz. Bu sınırlar kotayı otomatik olarak uygulamaz. Bunun yerine, kota politikasındaki ürün kotası ayarlarına referans verebilirsiniz. Kota politikalarının referans alabileceği ürüne kota belirlemenin bazı avantajlarını aşağıda bulabilirsiniz:

  • Kota politikaları, API ürünündeki tüm API proxy'lerinde tek bir ayar kullanabilir.
  • Bir API ürününde kota ayarıyla ilgili çalışma zamanında değişiklik yapabilirsiniz. Değere atıfta bulunan kota politikaları, otomatik olarak güncellenmiş kota değerlerine sahiptir.

API ürününden kota ayarlarını kullanma hakkında daha fazla bilgi için yukarıdaki "Dinamik Kota" örneğine 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ı

Aşağıda, bu politikada yapılandırabileceğiniz öğeler ve özellikler verilmiştir. Bazı öğe kombinasyonlarının birbirini hariç tuttuğunu veya gerekli olmadığını unutmayın. Belirli kullanım örneklerini inceleyin. İstekte uygulamanın API anahtarını kontrol etmek için "VerifyAPIKey" adlı bir API Anahtarı Doğrulama politikası kullanıldığında aşağıdaki verifyapikey.VerifyAPIKey.apiproduct.* değişkenleri varsayılan olarak kullanılabilir. Değişken değerleri, API ürün yapılandırmasından kota ayarlarını alma bölümünde açıklandığı gibi, anahtarın ilişkili olduğu API ürünündeki kota ayarlarından gelir.

<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>

<Quota> özellikleri

<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 sayıcısının kota kullanımını ne zaman ve nasıl kontrol edeceğini belirlemek için kullanılır. Daha fazla bilgi için Kota politikası türleri bölümüne bakın.

Bir type değerini atlarsanız sayaç dakikanın/saatin/günün/haftanın/ayın başından başlar.

Geçerli değerler şunlardır:

  • calendar: Kotayı açık bir başlangıç zamanına göre yapılandırın. Her uygulamanın kota sayacı, belirlediğiniz <StartTime>, <Interval> ve <TimeUnit> değerlerine göre yenilenir.
  • rollingwindow: Kota kullanımını belirlemek için "geçişli pencere" kullanan bir kota yapılandırın. rollingwindow ile <Interval> ve <TimeUnit> öğelerini kullanarak zaman aralığının boyutunu belirlersiniz. Örneğin, 1 gün. Bir istek geldiğinde Edge, isteğinin tam saatini (ör. 17:01) inceler, bu saat ile önceki günün 17:01'i (1 gün) arasında gelen isteklerin sayısını sayar ve bu aralık içinde kotanın aşılıp aşılmadığını belirler.
  • flexi: Bir uygulamadan ilk istek mesajı alındığında sayıcıyı başlatan ve <Interval>, ile <TimeUnit> değerlerine göre sıfırlayan bir kota yapılandırın.
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

<Allow> öğesi

Kotanın sayı sınırını belirtir. Politikanın sayacı bu sınır değerine ulaşırsa sayaç sıfırlanana kadar sonraki aramalar reddedilir.

<Allow> öğesini ayarlamayla ilgili üç yöntem aşağıda 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 öncelikli olur. countRef çalışma zamanında çözülmezse count değerinin kullanılır.

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

Özellikler

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

Kota için bir ileti sayısı belirtmek üzere kullanılır.

Örneğin, count özelliğinin değeri 100, Interval özelliğinin değeri 1 ve TimeUnit özelliğinin değeri month ise aylık 100 mesaj kotası belirtilmiş olur.

2000 İsteğe bağlı
countRef

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

yok İsteğe bağlı

<Allow>/<Class> öğesi

<Class> öğesi, <Allow> öğesinin değerini bir akış değişkeninin değerine göre koşullandırmanıza olanak tanır. Politika, <Class> öğesinin her farklı <Allow> alt etiketi için farklı bir sayaç tutar.

<Class> öğesini kullanmak için <Class> etiketinde ref özelliğini kullanarak bir akış değişkeni belirtin. Ardından Edge, politikanın izin verilen sayısını belirlemek için <Allow> alt etiketinden birini seçmek üzere akış değişkeninin değerini kullanır. Edge, aşağıdaki gibi akış değişkeninin değerini <Allow> etiketinin class özelliğiyle eşleştirir:

<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 iletilen time_variable sorgu parametresinin değerine göre belirlenir. Bu değişkenin değeri peak_time veya off_peak_time olabilir. Sorgu parametresi geçersiz bir değer içeriyorsa politika 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
ref

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

yok Zorunlu

<Allow>/<Class>/<Allow> öğesi

<Allow> öğesi, <Class> öğesi tarafından tanımlanan bir kota sayıcısının sınırını belirtir. Politika, <Class>'un her farklı <Allow> alt etiketi için farklı bir sayaç tutar.

Ö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 adlı iki kota sayacı tutar.

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

Özellikler

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

Kota sayıcısının adını tanımlar.

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

<Interval> öğesi

Edge'in kota kullanımını hesapladığı bir dönem belirlemek için, belirttiğiniz TimeUnit ile eşlenecek bir tam sayı (ör. 1, 2, 5, 60 vb.) belirtmek amacıyla kullanılır (dakika, saat, gün, hafta veya ay).

Örneğin, hour TimeUnit değerine sahip 24 Interval, kotanın 24 saat boyunca hesaplanacağı anlamına gelir.

<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
ref

Bir kotanın aralığını içeren bir akış değişkeni belirtmek için kullanın. ref, açık aralık değerine göre önceliklidir. Hem referans hem de değer belirtilirse referans öncelikli olur. ref çalışma zamanında çözülmezse değer kullanılır.

yok İsteğe bağlı

<TimeUnit> öğesi

Kota için geçerli zaman birimini belirtmek üzere kullanılır.

Örneğin, hour TimeUnit değerine sahip 24 Interval, kotanın 24 saat boyunca hesaplanacağı anlamına gelir.

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

Dize. minute, hour, day, week veya month arasından seçim yapın.

Özellikler

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

<StartTime> öğesi

type calendar, olarak ayarlandığında, herhangi bir uygulamadan istek alınıp alınmadığına bakılmaksızın kota sayıcısının saymaya başlayacağı tarihi ve saati belirtir.

Örneğin:

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

ISO 8601 tarih ve saat biçiminde dize.

<Distributed> öğesi

Edge kurulumu, istekleri işlemek için bir veya daha fazla Mesaj İşleyici kullanabilir. Politikanın merkezi bir sayaç tutması ve bu sayacı tüm Mesaj İşleyicileriyle sürekli olarak senkronize etmesi gerektiğini belirtmek için bu öğeyi true olarak ayarlayın. Mesaj işleyiciler, kullanılabilirlik bölgeleri ve/veya bölgeler arasında olabilir.

false varsayılan değerini kullanırsanız her Mesaj İşleyicinin sayısı paylaşılmadığı için kotanızı aşabilirsiniz:

<Distributed>true</Distributed>

Sayaçların senkronize edildiğinden ve her istekte güncellendiğinden emin olmak için <Distributed> ve <Synchronous> değerlerini true olarak ayarlayın:

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

<Synchronous> öğesi

Dağıtılmış kota sayacını senkronize olarak güncellemek için true olarak ayarlayın. Bu, sayacın güncellenmesinin API'ye yapılan bir istekte kotanın kontrol edildiği anda yapıldığı anlamına gelir. Kotanın üzerindeki API çağrılarına izin vermemeniz gerekiyorsa true olarak ayarlayın.

Kota sayacını eşzamansız olarak güncellemek için false olarak ayarlayın. Bu, merkezi depoda kota sayacının ne zaman asenkron olarak güncellendiğine bağlı olarak, kotayı aşan bazı API çağrılarının geçebileceği anlamına gelir. Ancak eşzamanlı güncellemelerle ilişkili olası performans etkileriyle karşılaşmazsınız.

Varsayılan asenkron güncelleme aralığı 10 saniyedir. Bu asenkron davranışı yapılandırmak için AsynchronousConfiguration öğesini kullanın.

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

<AsynchronousConfiguration> öğesi

Politika yapılandırma öğesi <Synchronous> mevcut değilse veya mevcut olup false değerine ayarlanmışsa dağıtılan kota sayaçları arasında senkronizasyon aralığını yapılandırır.

SyncIntervalInSeconds veya SyncMessageCount alt öğelerini kullanarak bir süre veya mesaj sayısı geçtikten sonra senkronize edebilirsiniz. Bu iki grup birlikte kullanılamaz. Örneğin,

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

veya

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

Yerleşke

<AsynchronousConfiguration>/<SyncIntervalInSeconds> öğesi

Asenkron güncellemelerin 10 saniyelik bir aradan sonra gerçekleştirildiği varsayılan davranışı geçersiz kılmak için bunu kullanın.

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

Senkronizasyon aralığı, Sınırlar konusunda açıklandığı şekilde en az 10 saniye olmalıdır.

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

Tamsayı

<AsynchronousConfiguration>/<SyncMessageCount> element

Kota güncellemeleri arasında tüm Apigee mesaj işleyicilerinde istek sayısını belirtir.

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

Bu örnekte, kota sayısının her Apigee Edge mesaj işleyicisinde 5 istekte bir güncellendiği belirtilmektedir.

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

Tamsayı

<Identifier> öğesi

Politikayı, bir akış değişkenine göre benzersiz sayaçlar oluşturacak şekilde yapılandırmak için <Identifier> öğesini kullanın.

Bir akış değişkeni tarafından tanımlanan özellikler için benzersiz sayaçlar oluşturabilirsiniz. Örneğin, belirli bir geliştiriciye kota bağlamak için geliştirici e-posta adresini kullanabilirsiniz. Özelleştirilebilen değişkenler veya önceden tanımlanmış değişkenler (ör. Verify API Key politikası ile kullanılabilenler) kullanıp kullanmadığınıza bakılmaksızın, kota tanımlamak için çeşitli değişkenler kullanabilirsiniz. Değişkenler referansı bölümünü de inceleyin.

Bu öğeyi kullanmazsanız politika, kotaya uygulanan tek bir sayaç kullanır.

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.

<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
ref

İstek için kullanılacak sayacı tanımlayan bir akış değişkeni belirtir. Tanımlayıcı, her uygulamaya, uygulama kullanıcısına, uygulama geliştiricisine, API ürününe veya başka bir özelliğe özgü bir HTTP başlığı, sorgu parametresi, form parametresi ya da mesaj içeriği olabilir.

Uygulamaları benzersiz şekilde tanımlamak için en yaygın olarak kullanılan <Identifier>, client_id'dir. client_id, Apigee Edge'de bir kuruluşa kaydedilen uygulama için oluşturulan API anahtarının veya tüketici anahtarının başka bir adıdır. API'niz için API anahtarını veya OAuth yetkilendirme politikalarını etkinleştirdiyseniz bu tanımlayıcıyı kullanabilirsiniz.

Bazı durumlarda, güvenlik politikası bulunmadığında olduğu gibi client_id'nin kullanılamadığı yerlerde kota ayarları alınmalıdır. Bu durumlarda, uygun API ürün ayarlarını almak için Erişim Varlık Politikası'nı kullanabilir, ardından ExtractVariables'ı kullanarak değerleri ayıklayabilir ve ayıklanan bağlam değişkenini kota politikasında kullanabilirsiniz. Daha fazla bilgi için Erişim Varlığı Politikası'na bakın.

Yok İsteğe bağlı

<MessageWeight> öğesi

Her iletiye atanan ağırlığı belirtmek için kullanılır. Örneğin, diğerlerinden daha fazla bilgi işlem kaynağı tüketen istek mesajlarının etkisini artırmak için mesaj ağırlığını kullanın.

Örneğin, POST mesajlarını GET mesajlarına kıyasla iki kat daha "ağır" veya pahalı olarak saymak istiyorsunuz. Bu nedenle, MessageWeight değerini POST için 2'ye, GET için 1'e ayarlarsınız. İsteğin sayacı etkilememesi için MessageWeight değerini 0 olarak bile ayarlayabilirsiniz. Bu örnekte, kota dakikada 10 mesajsa ve POST istekleri için MessageWeight değeri 2 ise kota, 10 dakikalık herhangi bir aralıkta 5 POST isteğine izin verir. Sayaç sıfırlanmadan önce yapılan ek POST veya GET istekleri reddedilir.

MessageWeight değerini temsil eden bir değer, bir akış değişkeni ile belirtilmelidir ve HTTP üstbilgilerinden, sorgu parametrelerinden, XML veya JSON istek yükünden ya da başka bir akış değişkeninden alınabilir. Örneğin, weight adlı bir başlıkta ayarlarsanız:

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

Tamsayı

Akış değişkenleri

Bir kota politikası yürütüldüğünde aşağıdaki önceden tanımlanmış Flow değişkenleri otomatik olarak doldurulur. Akış değişkenleri hakkında daha fazla bilgi için Değişkenler referansı başlıklı makaleyi inceleyin.

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ığında kullanılan mevcut kotayı döndürür
ratelimit.{policy_name}.available.count Uzun Salt Okunur Kota aralığındaki mevcut kota sayısını döndürür
ratelimit.{policy_name}.exceed.count Uzun Salt Okunur Kota aşıldıktan sonra 1 döndürür.
ratelimit.{policy_name}.total.exceed.count Uzun Salt Okunur Kota aşıldıktan sonra 1 döndürür.
ratelimit.{policy_name}.expiry.time Uzun Salt Okunur

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

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

ratelimit.{policy_name}.identifier Dize Salt Okunur Politikaya ekli (istemci) tanımlayıcı referansını döndürür
ratelimit.{policy_name}.class Dize Salt Okunur Müşteri tanımlayıcısıyla ilişkili 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ıftaki 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 Geçerli kota aralığında sınıftaki sınırı aşan isteklerin sayısını döndürür
ratelimit.{policy_name}.class.total.exceed.count Uzun Salt Okunur Tüm kota aralıkları genelinde sınıftaki sınırı aşan isteklerin toplam sayısını döndürür. Yani tüm kota aralıkları için class.exceed.count değerinin toplamıdır.
ratelimit.{policy_name}.failed Boole Salt Okunur

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

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 politikası

Kota, ani artış durdurma ve eşzamanlı oran sınırı politikalarını karşılaştırma