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>
<Quota> ö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 Geçerli değerler şunlardır:
|
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ı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile 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 özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğ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 |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<Allow> öğ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, |
2000 | İsteğe bağlı |
countRef |
Bir kotanın ileti sayısını içeren akış değişkenini belirtmek için kullanın.
|
yok | İsteğe bağlı |
<Allow>/<Class> öğ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 |
<Allow>/<Class>/<Allow> öğ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 |
<Interval> öğ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. |
yok | İsteğe bağlı |
<TimeUnit> öğ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. |
Ö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ı |
<StartTime> öğ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 |
<Synchronous> öğ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 |
<AsynchronousConfiguration> öğ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 |
<AsynchronousConfiguration>/<SyncIntervalInSeconds> öğ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ı |
<AsynchronousConfiguration>/<SyncMessageCount> öğ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ı |
<Identifier> öğ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.
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 Bazı durumlarda Kota ayarlarının
|
Yok | İsteğe bağlı |
<MessageWeight> öğ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ü |
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. |
build |
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. |
build |
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). |
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ığı 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.
|
build |
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 .
|
build |
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 .
|
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 şö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.
|
build |
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.
|
build |
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. |
build |
InvalidSynchronizeIntervalForAsyncConfiguration |
<SyncIntervalInSeconds> öğesi için
Kota politikasındaki <AsynchronousConfiguration> öğesi sıfırdan küçükse
dağıtımı başarısız olur. |
build |
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. |
build |
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
Karşılaştırma Kota, Ani Artışı ve Eşzamanlı Hız Sınırlaması Politikaları