Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne
Bir API proxy'sinin dakika, saat, gün, hafta veya ay gibi bir süre boyunca 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 veya şu ölçütlere göre ayarlayabilirsiniz:
- API proxy'sini içeren ürün
- API isteyen uygulama
- Uygulama geliştirici
- Diğer birçok kriter
Genel trafik artışlarına karşı korumak için Kota'yı kullanmayın. Bunun için Spike Arrest politikasını kullanın. Spike Arrest politikasını inceleyin.
Videolar
Bu videolarda, Kota politikasıyla kota yönetimi tanıtılmaktadır:
Giriş (Yeni Edge)
Giriş (Klasik Edge)
Dinamik Kota
Dağıtılmış ve Eşzamanlı
Mesaj Ağırlığı
Takvim
Kayan Pencere
Esnek
Koşullu Kota
Akış Değişkenleri
Hata İşleme
Örnekler
Bu politika kodu örnekleri, kota dönemlerinin aşağıdaki kriterlere göre nasıl başlatılıp sonlandırılacağını gösterir:
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ı uygulayan tek bir Kota politikası yapılandırabilmenizi sağlar. Bu bağlamda Kota ayarları için diğer bir 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 başvuru belirtirseniz önceliği referans alır. Referans çalışma zamanında çözümlenemezse değer kullanılır.
Örneğin, bir API ürünü oluştururken 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ı, ilgili değerlerin API proxy'sinde kullanılmasını zorunlu kılmaz. Ayrıca API proxy'sine, bu değerleri okuyan bir Kota politikası eklemeniz gerekir. Daha fazla bilgi için API ürünleri oluşturma bölümüne bakın.
Yukarıdaki örnekte, Kota politikasını içeren API proxy'si, istekte geçirilen API anahtarını doğrulamak için verify-api-key
adlı bir VerificationAPIKey politikası kullanır. Daha sonra Kota politikası, API ürününde ayarlanan kota değerlerini okumak için VerificationAPIKey politikasındaki akış değişkenlerine erişir. VerificationAPIKey akış değişkenleri hakkında daha fazla bilgi için API Anahtarı politikasını doğrulama konusuna bakın.
Diğer bir seçenek de bireysel geliştiriciler veya uygulamalarda özel özellikler belirleyip bu değerleri Kota politikasında okumaktır. Örneğin, geliştirici başına farklı kota değerleri belirlemek isteyebilirsiniz. Bu durumda, geliştiricide sınır, zaman birimi ve aralığı içeren özel özellikler ayarlarsınız. Daha sonra Kota politikasında aşağıda gösterildiği 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ştiricide ayarlanan özel özelliklere referans vermek için ValidAPIKey akış değişkenleri de kullanılmaktadır.
Kota politikasının parametrelerini ayarlamak için herhangi bir değişkeni kullanabilirsiniz. Bu değişkenler şunlardan gelebilir:
- 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 diğer tüm kota politikalarındaki diğer tüm Kota politikalarıyla aynı değişkene referans veren bir Kota politikası ekleyebilirsiniz. Kota politikası da bu politika ve proxy için benzersiz değişkenlere referans verebilir.
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. Saat değeri yerel saat değil, GMT saatidir. calendar
türündeki bir politika için <StartTime>
değeri sağlamazsanız Edge bir 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, 15:30'da (GMT) olacaktır.
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ığında politikayı izlemek, geçerli 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ğini temel aldığından, yukarıdaki QuotaPolicy
adlı politika için akış değişkenlerine şu
şekilde erişirsiniz:
ratelimit.QuotaPolicy.allowed.count
: İzin verilen sayı.ratelimit.QuotaPolicy.used.count
: Mevcut sayaç değeri.ratelimit.QuotaPolicy.expiry.time
: UTC saatiyle sayacın sıfırlandığı saat.
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 başlıkları olarak döndürmek için aşağıdaki AttributionMessage 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>
Saat başına 10.000 çağrılık bir kota uygulamak için bu örnek kodu kullanın. Politika, her saatin üst kısmındaki kota sayacını sıfırlar. Sayaç 10.000 çağrı kotasına saat bitmeden ulaşırsa 10.000'in üzerindeki çağrılar reddedilir.
Örneğin, sayaç 2017-07-08 07:00:00
saatinde başlarsa 2017-07-08 08:00:00
tarihinde (başlangıç zamanından 1 saat sonra) 0'a sıfırlanır. İlk mesaj 2017-07-08 07:35:28
saatinde alınırsa ve mesaj sayısı 2017-07-08 08:00:00
tarihinden önce 10.000'e ulaşırsa bu sayıyı aşan aramalar, saatin sonunda sayı sıfırlanana kadar reddedilir.
Sayaç sıfırlama süresi, <Interval>
ve <TimeUnit>
kombinasyonuna bağlıdır. Örneğin, <Interval>
değerini <TimeUnit>
saatlik süre için 12 olarak ayarlarsanız sayaç her on iki saatte bir sıfırlanır.
<TimeUnit>
değerini dakika, saat, gün, hafta veya ay olarak ayarlayabilirsiniz.
Bu politikaya API proxy'nizde birden fazla yerde başvurabilirsiniz. Örneğin, her istekte yürütülmesi için bunu Proxy PreFlow'a yerleştirebilirsiniz. Alternatif olarak, API proxy'sindeki birden fazla akışa da yerleştirebilirsiniz. Bu politikayı proxy'de birden fazla yerde kullanırsanız politikanın tüm örnekleri tarafından güncellenen tek bir sayaç bulunur.
Alternatif olarak, API proxy'nizde birden fazla Kota politikası tanımlayabilirsiniz. Her Kota politikası, politikanın name
özelliğine bağlı olarak kendi sayacını tutar.
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>
Varsayılan olarak Kota politikası, 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 Kota politikasıyla <Identifier>
özelliğini kullanabilirsiniz.
Örneğin, <Identifier>
etiketini her istemci kimliği için ayrı sayaçlar tanımlamak üzere kullanın. Ardından, proxy'nize gönderilen bir istekte istemci uygulaması, yukarıdaki örnekte gösterildiği gibi clientID
öğesini içeren bir başlık iletir.
<Identifier>
özelliği için herhangi bir akış değişkenini 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 ValidAPIKey politikasını veya OAuth jetonları içeren OAuthV2 politikalarını kullanıyorsanız aynı Kota politikası için ayrı sayaçlar tanımlamak amacıyla API anahtarı ya da jetondaki bilgileri kullanabilirsiniz. Örneğin, aşağıdaki <Identifier>
etiketi, verify-api-key
adlı bir VerificationAPIKey politikasının client_id
akış değişkenini kullanır:
<Identifier ref="verifyapikey.verify-api-key.client_id"></Identifier>
Artık her benzersiz client_id
değeri Kota politikasında kendi sayacını tanımlıyor.
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ıf tabanlı bir kota sayısı kullanarak kota sınırlarını dinamik olarak ayarlayabilirsiniz. Bu örnekte, kota sınırı her istekte geçirilen developer_segment
üst bilgisinin değeriyle belirlenir. Bu değişken, platinum
veya silver
değerine sahip olabilir. Başlık geçersiz bir değere sahipse 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 belirli bir dönem boyunca işleyebileceği istek mesajı servis birimidir. Politika, API proxy'si tarafından alınan istek sayısını hesaplayan sayaçlar sağlar. Bu özellik, API sağlayıcıların belirli bir zaman aralığı boyunca uygulamalar tarafından yapılan API çağrısı sayısına yönelik sınırları zorunlu kılmasını sağlar. Kota politikalarını kullanarak uygulamaları dakikada 1 istek veya ayda 10.000 istekle sınırlandırabilirsiniz.
Örneğin, bir Kota ayda 10.000 mesaj olarak tanımlanırsa hız sınırlaması 10.000. mesajdan sonra başlar. Bu dönemin ilk gününde veya son gününde 10.000 mesajın sayılması önemli değildir. Kota sayacı, belirtilen zaman aralığının sonunda otomatik olarak sıfırlanana veya Kotayı Sıfırla politikası kullanılarak Kota açıkça sıfırlanana kadar ek istek alanına izin verilmez.
SpikeArrest adı verilen bir kota varyasyonu kullanımdaki ani artıştan, hatalı istemcilerden 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 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'niz varsa üçü de aynı kota politikası yapılandırmasını kullanıyor olsa bile üçü de tek bir kota paylaşılmaz.
Kota politikası türleri
Kota politikası birkaç farklı politika türünü destekler: varsayılan, calendar
, flexi
ve rollingwindow
. Aşağıdaki tabloda gösterildiği gibi her tür, kota sayacının ne zaman başladığını ve ne zaman sıfırlandığını tanımlar:
Zaman Birimi | Varsayılan (veya boş) sıfırlama | takvim sıfırlandı | flexi sıfırlama |
---|---|---|---|
dakika | Sonraki dakika başlangıcı | <StartTime> itibarıyla bir dakika sonra |
İlk istekten bir dakika sonra |
saat | Sonraki bir saatin başı | <StartTime> itibarıyla bir saat sonra |
İlk istekten bir saat sonra |
gün | Geçerli günün gece yarısı GMT'si | 24 saat sonra (<StartTime> ) |
İlk istekten 24 saat sonra |
hafta | Gece yarısı GMT Pazar hafta sonunda | Bir hafta (<StartTime> itibarıyla) |
İlk istekten bir hafta sonra |
ay | Ayın son gününün gece yarısı (GMT) | <StartTime> tarihinden sonra bir ay (28 gün) |
İlk istekten bir ay (28 gün) sonra |
type="calendar"
için <StartTime>
değerini belirtmeniz gerekir.
Tablo, rollingwindow
türünün değerini listelemez. Periyodik pencere kotaları, bir saatlik veya bir günlük pencere gibi bir kota "penceresi"nin boyutunu ayarlayarak çalışır. Yeni bir istek geldiğinde politika, geçmiş zaman aralığı içinde kotanın aşılıp aşılmadığını belirler.
Örneğin, 1.000 isteğe izin veren iki saatlik bir aralık tanımlayabilirsiniz. 16:45'te yeni bir istek gelir.Politika, son iki saatlik zaman aralığı için kota sayısını, yani 14:45'ten bu yana gerçekleşen isteklerin sayısını hesaplar. Bu iki saatlik süre içinde kota sınırı aşılmazsa isteğe izin verilir.
Bir dakika sonra saat 16:46'da başka bir istek daha gelir. Politika artık sınırın aşılıp aşılmadığını belirlemek için saat 14:46'dan itibaren kota sayısını hesaplıyor.
rollingwindow
türünde sayaç hiçbir zaman sıfırlanmaz ancak her istekte yeniden hesaplanır.
Kota sayaçlarını anlama
Varsayılan olarak bir Kota politikası, API proxy'sinde kaç kez referansta bulunduğunuzdan bağımsız olarak tek bir sayaç tutar. Kota sayacının adı, politikanın name
özelliğine bağlıdır.
Örneğin, 5 istekle sınırlı olan MyQuotaPolicy
adlı bir Kota politikası oluşturuyor ve bu politikayı API proxy'sinde birden fazla akışa (Akış A, B ve C) yerleştiriyorsunuz. Birden fazla akışta kullanılmasına rağmen, politikanın tüm örnekleri tarafından güncellenen tek bir sayaç sağlar:
- A akışı yürütüldü -> MyQuotaPolicy yürütüldü ve sayacı = 1
- B akışı yürütüldü -> MyQuotaPolicy yürütüldü ve sayacı = 2
- A akışı yürütüldü -> MyQuotaPolicy yürütüldü ve sayacı = 3
- C akışı yürütüldü -> MyQuotaPolicy yürütüldü ve sayacı = 4
- A akışı yürütüldü -> MyQuotaPolicy yürütüldü ve sayacı = 5
Üç akıştan herhangi birine yapılan sonraki istek, kota sayacı sınırına ulaştığı için reddedilir.
Bir API proxy akışında aynı Kota politikasını birden fazla yerde kullanmak, kotanın beklediğinizden daha hızlı tükenmesine neden olabilir. Bu durum, Apigee Edge Antipatterns Kitabı'nda açıklanan bir kalıp karşıtlığıdır.
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 bağlı olarak kendi sayacını kullanır.
Alternatif olarak, tek bir politikada birden çok benzersiz sayaç tanımlamak için Kota politikasındaki <Class>
veya <Identifier>
öğelerini kullanabilirsiniz. Bu öğeler kullanılarak tek bir politika, istekte bulunan uygulamaya, istekte bulunan uygulama geliştiricisine, istemci kimliğine veya başka bir istemci tanımlayıcısına ve daha fazlasına göre farklı sayaçlar sağlayabilir. <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 süresi gösterimi, Uluslararası Standard ISO 8601'de tanımlanan uluslararası standart tarih gösterimine uyar.
Tarihler şu biçimde yıl, ay ve gün olarak tanımlanır: YYYY-MM-DD
.
Örneğin, 2015-02-04
4 Şubat 2015'i temsil eder.
Günün saati, şu 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ı ayırt etmek için iki gösterimin (00:00:00
ve 24:00:00
) bulunduğunu unutmayın. Bu nedenle 2015-02-04
24:00:00
, 2015-02-05 00:00:00
ile aynı tarih ve saattir. İkincisi genellikle tercih edilen nottur.
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 kotayı otomatik olarak zorunlu kılmaz. Bunun yerine, bir kota politikasındaki ürün kota ayarlarına başvurabilirsiniz. Kota politikaları için üründe kota belirlemenin sağladığı bazı avantajlar şunlardır:
- Kota politikaları, API ürünündeki tüm API proxy'lerinde tek tip bir ayar kullanabilir.
- Bir API ürünündeki kota ayarında çalışma zamanında değişiklik yapabilirsiniz ve değere başvuran kota politikaları otomatik olarak güncellenmiş kota değerlerine sahip olur.
Bir API ürününden kota ayarlarını kullanma hakkında daha fazla bilgi edinmek 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ı
Bu politikada yapılandırabileceğiniz öğeler ve özellikler aşağıda verilmiştir. Bazı öğe kombinasyonlarının karşılıklı olarak birbirini dışladığını veya gerekli olmadığını unutmayın. Özel kullanım örneklerine bakın. İstekte uygulamanın API anahtarını kontrol etmek için "VerifyAPIKey" adlı bir API Anahtarını 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ığı şekilde anahtarın ilişkilendirildiği API ürünündeki kota ayarlarından alınır.
<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 sayacının kota kullanımını ne zaman ve nasıl kontrol ettiğini belirlemek için kullanın. Daha fazla bilgi için Kota politikası türleri bölümüne bakın. Bir Geçerli değerler şunları içerir:
|
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ı. İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için |
Yok | Gerekli |
continueOnError |
Bir politika başarısız olduğunda hata döndürülmesi için Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özellik kullanımdan kaldırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğesi
Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name
özelliğine ek olarak kullanın.
<DisplayName>Policy Display Name</DisplayName>
Varsayılan |
Yok Bu öğeyi çıkarırsanız politikanın |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<Allow> öğesi
Kota için sayı sınırını belirtir. Politikanın sayacı bu sınır değerine ulaşırsa 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
belirtirseniz öncelik countRef
olur. countRef
çalışma zamanında çözümlenemezse count
değeri kullanılır.
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Tamsayı |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
adet |
Kota için bir ileti sayısı belirtmek amacıyla kullanın. Örneğin, |
2.000 | İsteğe bağlı |
countRef |
Bir kotanın ileti sayısını içeren bir akış değişkeni belirtmek için kullanın.
|
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ızı sağlar. 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. Edge daha sonra politikanın izin verilen sayısını belirlemek amacıyla <Allow>
alt etiketlerinden birini seçmek için akış değişkeninin değerini kullanır. Edge, akış değişkeninin değerini, aşağıda gösterildiği gibi <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, geçerli kota sayacı her istekte geçirilen time_variable
sorgu parametresinin değeriyle belirlenir. Bu değişken, peak_time
veya off_peak_time
değerine sahip 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 |
---|---|---|---|
referans |
Bir kotanın kota sınıfını içeren bir akış değişkeni belirtmek için kullanın. |
yok | Gerekli |
<Allow>/<Class>/<Allow> öğesi
<Allow>
öğesi, <Class>
öğesi tarafından tanımlanan kota sayacı için belirlenen sınırı belirtir. Politika, <Class>
öğesinin her bir <Allow>
alt etiketi için farklı bir sayaç kullanır.
Ö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ı kullanır.
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 | Gerekli |
adet | Sayaç için kota sınırını belirtir. | yok | Gerekli |
<Interval> öğesi
Edge'in kota kullanımını hesapladığı dönemi belirlemek için belirttiğiniz TimeUnit
ile eşlenecek bir tam sayı (örneğin, 1, 2, 5, 60 vb.) belirtmek için kullanın.
Örneğin, TimeUnit
değeri hour
olan 24
Interval
değeri, kotanın 24 saatlik bir süre içinde hesaplanacağı anlamına gelir.
<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
Varsayılan: | yok |
Bulunma: | Gerekli |
Tür: | Tamsayı |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
referans |
Bir kotanın aralığını içeren akış değişkeni belirtmek için kullanın. |
yok | İsteğe bağlı |
<TimeUnit> öğesi
Kota için geçerli olan zaman birimini belirtmek üzere kullanın.
Örneğin, TimeUnit
değeri hour
olan 24
Interval
değeri, kotanın 24 saatlik bir süre içinde hesaplanacağı anlamına gelir.
<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
Varsayılan: | yok |
Bulunma: | Gerekli |
Tür: |
Dize. |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
referans | 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ümlenemezse değer kullanılır. |
yok | İsteğe bağlı |
<StartTime> öğesi
type
, calendar,
değerine ayarlandığında herhangi bir uygulamadan istek alınıp alınmadığından bağımsız olarak, kota sayacın saymaya başlayacağı tarihi ve saati belirtir.
type
açıkça calendar,
olarak ayarlandığında açık bir StartTime
sağlamanız gerekir. Akış değişkenine başvuru kullanamazsınız. type
değeri ayarlanmadığında StartTime
değeri belirtirseniz bir hata alırsınız.
Örneğin:
<StartTime>2017-7-16 12:00:00</StartTime>
Varsayılan: | yok |
Bulunma: | type , calendar olarak ayarlandığında zorunludur. |
Tür: |
ISO 8601 tarih ve saat biçimindeki dize. |
<Dağıtılmış> öğe
Edge kurulumunda, istekleri işlemek için bir veya daha fazla Mesaj İşleyici kullanılabilir. Politikanın merkezi bir sayaç sağlaması ve tüm Mesaj İşleyicileri genelinde sürekli olarak senkronize etmesi gerektiğini belirtmek için bu öğeyi true
olarak ayarlayın. Mesaj işlemcileri, farklı kullanılabilirlik alt bölgeleri ve/veya bölgeler olabilir.
Varsayılan false
değerini kullanıyorsanız her bir Mesaj İşleyicinin sayısı paylaşılmadığından kotanızı aşabilirsiniz:
<Distributed>true</Distributed>
Sayaçların senkronize edilmesini ve her istekte güncellenmesini sağlamak için <Distributed>
ve <Synchronous>
değerlerini true olarak ayarlayın:
<Distributed>true</Distributed> <Synchronous>true</Synchronous>
Varsayılan: | false |
Bulunma: | İsteğe bağlı |
Tür: | Boole |
<Synchronous> öğesi
Dağıtılmış bir kota sayacını eşzamanlı olarak güncellemek için true
olarak ayarlayın. Bu, sayaç güncellemesinin, API'ye yapılan bir istekte kota kontrol edilirken yapıldığı anlamına gelir. Kotayı aşan API çağrılarına izin vermemeniz şartsa bu değeri true
olarak ayarlayın.
Kota sayacını eşzamansız olarak güncellemek için false
olarak ayarlayın. Yani merkezi depodaki kota sayacının eşzamansız olarak güncellendiği zamana bağlı olarak, kotayı aşan bazı API çağrılarının sonuçlanması mümkündür. Ancak eşzamanlı güncellemelerle ilgili olası performans etkileriyle karşılaşmazsınız.
Varsayılan eşzamansız güncelleme aralığı 10 saniyedir. Bu eşzamansız davranışı yapılandırmak için AsynchronousConfiguration
öğesini kullanın.
<Synchronous>false</Synchronous>
Varsayılan: | false |
Bulunma: | İsteğe bağlı |
Tür: | Boole |
<AsyncConfiguration> öğesi
<Synchronous>
politika yapılandırma öğesi mevcut olmadığında veya mevcut olduğunda ve false
değerine ayarlandığında dağıtılmış kota sayaçları arasındaki senkronizasyon aralığını yapılandırır.
SyncIntervalInSeconds
veya SyncMessageCount
alt öğelerini kullanarak belirli bir süre veya mesaj sayısından sonra senkronize edebilirsiniz.
Birbirini dışlar. Örneğin,
<AsynchronousConfiguration> <SyncIntervalInSeconds>20</SyncIntervalInSeconds> </AsynchronousConfiguration>
veya
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
Varsayılan: | SyncIntervalInSeconds = 10 saniye |
Bulunma: | İsteğe bağlı; <Synchronous> , true olarak ayarlandığında yoksayılır. |
Tür: |
Yerleşke |
<AsyncConfiguration>/<SyncIntervalInSeconds> öğesi
eşzamansız 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ığı gibi en az 10 saniye olmalıdır.
Varsayılan: | 10 |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
<AeşzamansızConfiguration>/<SyncMessageCount> öğesi
Tüm Apigee mesaj işlemcilerinde kota güncellemeleri arasındaki istek sayısını belirtir.
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
Bu örnek, her Apigee Edge mesaj işlemcisinde kota sayısının her 5 istekte bir güncellendiğini belirtir.
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.
Bu öğeyi kullanmazsanız politika, kotaya uygulanan tek bir sayaç kullanır.
Bu unsur, şu Apigee Topluluğu gönderisinde de ele alınmıştır: http://community.become.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. Tanımlayıcı; her uygulama, uygulama kullanıcısı, uygulama geliştirici, API ürünü veya diğer özellikler için benzersiz bir HTTP üst bilgisi, sorgu parametresi, form parametresi veya mesaj içeriği olabilir. Uygulamaları benzersiz şekilde tanımlamak için en yaygın olarak kullanılan Bazı durumlarda (ör. güvenlik politikasının geçerli olmadığı) |
Yok | İsteğe bağlı |
<Messageweight> öğesi
Her mesaja atanan ağırlığı belirtmek için kullanın. Örneğin, diğerlerinden daha fazla 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 "ağır" veya pahalı olarak saymak istersiniz. Dolayısıyla, MessageWeight
değerini POST için 2 ve GET için 1 olarak ayarlarsınız. Dilerseniz isteğin sayacı etkilememesi için MessageWeight
değerini 0 olarak da ayarlayabilirsiniz. Bu örnekte, kota dakikada 10 mesaj ve POST istekleri için MessageWeight
değeri 2
ise kota, herhangi bir 10 dakikalık aralıkta 5 POST isteğine izin verir. Sayaç sıfırlama işlemleri reddedilmeden önceki tüm ek istekler (POST veya GET).
MessageWeight
değerini temsil eden değer bir akış değişkeniyle belirtilmelidir ve HTTP üst bilgilerinden, sorgu parametrelerinden, XML veya JSON istek yükünden ya da diğer herhangi bir akış değişkeninden çıkarılabilir. Örneğin, bunu weight
adlı bir üstbilgide ayarlarsını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ış Akış 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ığı içinde kullanılan geçerli 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ıktan sonra 1 değerini döndürür. |
ratelimit.{policy_name}.total.exceed.count | Uzun | Salt Okunur | Kota aşıldıktan sonra 1 değerini döndürür. |
ratelimit.{policy_name}.expiry.time | Uzun | Salt Okunur |
Kotanın süresinin dolacağı ve yeni kota aralığının başladığı zamanı belirleyen UTC zamanını milisaniye cinsinden döndürür. Kota politikası türü |
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 | İ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 | 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ında sınıftaki sınırı aşan isteklerin toplam sayısını döndürür. Böylece tüm kota aralıkları için class.exceed.count toplamıdır. |
ratelimit.{policy_name}.failed | 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 Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
policies.ratelimit.FailedToResolveQuotaIntervalReference |
500 | <Interval> öğesi Kota politikası kapsamında tanımlanmazsa meydana gelir. Bu öğe zorunludur ve kota için geçerli olan zaman aralığını belirtmek için kullanılır. Zaman aralığı, <TimeUnit> öğesiyle tanımlandığı gibi dakika, saat, gün, hafta veya ay olabilir. |
build |
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference |
500 | <TimeUnit> öğesi Kota politikası kapsamında tanımlanmazsa meydana gelir. Bu öğe zorunludur ve kota için geçerli olan zaman birimini belirtmek için kullanılır. Zaman aralığı dakika, saat, gün, hafta veya ay cinsinden olabilir. |
build |
policies.ratelimit.InvalidMessageWeight |
500 | Bir akış değişkeni aracılığıyla belirtilen <MessageWeight> öğesinin değeri geçersizse (tam sayı olmayan bir değer) ortaya çıkar. |
build |
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ığı tam sayı değilse API proxy'sinin dağıtımı başarısız olur. Örneğin, <Interval> öğesinde belirtilen kota aralığı 0, 1 ise API proxy'sinin dağıtımı başarısız olur.
|
build |
InvalidQuotaTimeUnit |
<TimeUnit> öğesinde belirtilen zaman birimi desteklenmiyorsa API proxy'sinin dağıtımı başarısız olur. Desteklenen zaman birimleri şunlardır: minute , hour , day , week ve month .
|
build |
InvalidQuotaType |
<Quota> öğesindeki type özelliği tarafından belirtilen kota türü geçersizse API proxy'sinin dağıtımı başarısız olur. Desteklenen kota türleri şunlardır: default , calendar , flexi ve rollingwindow .
|
build |
InvalidStartTime |
<StartTime> öğesinde belirtilen saatin biçimi geçersizse API proxy'sinin dağıtımı başarısız olur. Geçerli biçim, ISO 8601 tarih ve saat biçimi olan yyyy-MM-dd HH:mm:ss şeklindedir. Örneğin, <StartTime> öğesinde belirtilen zaman 7-16-2017 12:00:00 ise API proxy'sinin dağıtımı başarısız olur.
|
build |
StartTimeNotSupported |
Kota türü calendar türünde olmayan <StartTime> öğesi belirtilirse API proxy'sinin dağıtımı başarısız olur. <StartTime> öğesi yalnızca calendar kota türü için desteklenir. Örneğin, <Quota> öğesinde type özelliği flexi veya rolling window olarak ayarlanırsa API proxy'sinin dağıtımı başarısız olur.
|
build |
InvalidTimeUnitForDistributedQuota |
<Distributed> öğesi true , <TimeUnit> öğesi ise second değerine ayarlanırsa API proxy'sinin dağıtımı başarısız olur. second zaman birimi dağıtılmış kota için geçersiz. |
build |
InvalidSynchronizeIntervalForAsyncConfiguration |
Kota politikasındaki <AsynchronousConfiguration> öğesi içinde yer alan <SyncIntervalInSeconds> öğesi için belirtilen değer sıfırdan küçükse API proxy'sinin dağıtımı başarısız olur. |
build |
InvalidAsynchronizeConfigurationForSynchronousQuota |
Aynı zamanda <AsynchronousConfiguration> öğesi kullanılarak tanımlanmış eşzamansız yapılandırmaya sahip bir Kota politikasında <AsynchronousConfiguration> öğesinin değeri true olarak ayarlanırsa API proxy'sinin dağıtımı başarısız olur. |
build |
Hata değişkenleri
Bu değişkenler, bu politika bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name Matches "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" } }
Hata kuralı örneği
<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
Kota, Artış Arrest ve Eşzamanlı Hız Sınırı Politikalarının Karşılaştırması